dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
中文 | English
基于 DeepSeek Harness (DSH) 构建的 Computer Use 插件。完全摒弃底层 UI 树依赖,采用纯视觉 Grounding 架构,让 AI 像人类一样通过"看"屏幕截图来理解和操作电脑。
llm/pre-request 注入,无论截多少图,模型永远只看到最新 N 张 + 历史文字占位符{status, state_anchor, next_step} 三段式结构化反馈,MANDATORY 指令强制 ReAct 验证闭环start_complex_task 元工具自动将长程任务拆解为原子操作并逐步执行,子任务失败即 fail-fastask_screen),与本地感知保守双脑仲裁,零 Key 零成本优雅降级autonomous_run 元工具一次调用驱动"识别→判断→执行→进化"四环闭环——自主宪法六律立法(destructive 恒审批),立法者显式开启才自主针对纯视觉 CUA Agent 的四个真实失败模式,各以一个引擎对症击破:
| 失败模式 | 引擎 | 机制 |
|---|---|---|
| 盲点:点击落空却以为成功 | 行为效果验证(perceptualHash + actionVerifier) | 动作前后各取一次整屏 dHash 指纹,汉明距离对比;相似度 > 0.97 判定疑似无效操作,锚点直接告警并引导 zoom_inspect 复位 |
| 坐标幻觉:全屏估坐标误差大 | 二阶段定位(zoom_inspect) | 裁剪目标邻域放大重绘 2 倍密度细网格,锚点附带 crop_bounds 与映射公式 full_x = x0 + fx*(x1-x0),微观定位精确映射回全屏 |
| 无跨会话记忆:每次从零找按钮 | 场景式 UI 记忆(remember_ui / recall_ui) | 验证生效的点击自动沉淀为 landmark;自然语言召回(中英混合分词 + 重合系数 + 成功次数加成 + 时间衰减),召回值仅作先验、强制截图复核 |
| 不可复现:成功路径无法固化 | 行动日志与重放(journal + replay_actions) | post-execute 观察者记录全部动作 JSONL(可落盘);replay_actions 按 confirm 显式确认后逐步重放,成功操作序列即刻变成可执行宏 |
配套增强:
dryRun: true):动作类系统调用只记录不执行、截图保持真实 —— 提示词调试与演示的零风险沙箱click_mouse.confidence < 0.6 时主动建议先 zoom_inspect,把模型的不确定性显式化四大引擎各自工作后,暴露出四个新的系统性损耗点,本轮以「指纹驱动」统一击破:
| 损耗点 | 机制 | 收益 |
|---|---|---|
| 重复截图:屏幕没变也全管线跑一遍 | 变化门控(change-gated screenshots):截屏后先算 dHash,与窗口内最新指纹距离 ≤ 3 ⇒ 跳过压缩/入窗,返回 unchanged 锚点引用旧图(force:true 可强制刷新) | 稳态场景 Token 与 CPU 双降;模型被明确告知"屏幕未变,勿重截" |
| 动画期误判:固定 400ms 后验证,把"还在动"当成"生效了" | 自适应稳定等待:轮询整屏指纹直到相邻两次距离 ≤ 1(屏幕稳定)或超时 settleMs×4 | 验证窗口自动对齐 UI 真实节奏,快页面提前返回,慢页面等够 |
| 原样重试死循环:失败后同坐标再点、同文本再输 | 防死循环守卫:上次同签名动作已验证无效 ⇒ 立即拦截并注入换策略指引(zoom / recall / 键盘导航 / 滚动);无效果信息时第 3 次重复拦截 | 幂等重试留余地,盲目复读必拦截 |
| 记忆跨场景误召回:登录页记住的坐标被召回给设置页 | 场景指纹加成:landmark 记录形成时的整屏指纹;recall_ui 用当前窗口指纹做匹配,同场景(相似度 ≥ 0.9)+0.3 强加成 | "还是那个界面"时历史坐标才最可信,记忆从"迷信"变"情境化" |
配套:Token 仪表盘 —— 每张截图锚点携带 context_images: n/limit,模型随时知道图片预算余量。
前两轮的全屏指纹验证存在一个被掩盖的缺陷:全屏 dHash 对局部小变化不敏感——输入框出现光标、短文本上屏这类元素级反馈,在 64 位全屏指纹里只翻转几位,相似度仍 >0.99,会被误判为盲点。本轮以三个机制补全感知维度:
| 机制 | 设计 | 解决的问题 |
|---|---|---|
| 双尺度验证 | regionDhash:以动作点为中心裁剪邻域单独取指纹。判定矩阵:全屏变 = page-level;仅区域变 = element-level(光标/高亮/文字);都没变 = 盲点 | 局部反馈的误判:点击确实生效但画面只变了一小块 → 不再误报"点空了" |
焦点追踪(focusTracker) | 点击/拖拽终点自动登记焦点(带 30s 过期);type_text 无需模型传坐标,自动围绕焦点区域验证 | 工具间隐式上下文:输入的位置几乎总是上次点击的位置,文字上屏这类最微弱的变化获得专属放大器 |
预期锚定(expected_change) | click_mouse/type_text 新参数:行动前声明预期视觉变化;锚点回显预期,next_step 强制要求截图核对,不符即视为部分失败 | 验证从"有没有变化"升级为"变化是否符合预期"——把模型的世界模型(world model)显式化并置于可核对地位 |
| 预算感知编排 | start_complex_task 新参数 time_budget_sec:子任务边界检查时钟,超时优雅中止并返回 [TIMEOUT] + 部分轨迹 | 长任务的无限烧钱问题:降级而非失控 |
锚点效果块示例(第三代):
"effect": {
"detected": true,
"scale": "element-level",
"screen_similarity_pct": 99.8,
"region_similarity_pct": 71.2
}
全屏几乎没变(99.8% 相似)但焦点区域剧变(71.2%)——典型的一次成功聚焦输入,旧版会误报盲点,新版精确识别为元素级效果。
前三轮的验证停在像素层——"变化是否符合预期"最终仍靠模型看图自判。本轮装上文字感知(本地 OCR)与变化定位(视觉差分),把验证推到语义层:系统直接确认"预期的内容出现了没有"。
| 机制 | 设计 | 解决的问题 |
|---|---|---|
find_text:文字→坐标定位 | 截干净屏(无网格叠加)→ 本地 OCR → 每个命中文词返回精确中心坐标 | 带文字标签的元素不再靠坐标估算——坐标幻觉的最大来源被彻底消灭 |
read_text:区域文字读取 | 区域裁剪 + 放大 + OCR,返回纯文本 | 只需文字内容时用文本替代截图,Token 数量级下降 |
diff_view:视觉差分 | 最近两张截图逐像素差 → 分块聚合 → 连通域合并 → 红框差分图 + 变化区域坐标清单 | "动作到底改变了什么"由系统算出并画出来,模型不再肉眼对比两张整屏 |
| 语义自证(type_text) | 输入后自动 OCR 焦点邻域,核对输入的文字真的上屏了(无需参数) | "打进了错误的框 / 输入法吞字 / 焦点丢失"三类隐形事故现形 |
expected_text(click_mouse) | 点击后 OCR 点击点邻域,核对预期文字 | 像素变化 + 语义命中 = 双重确认;语义不符即使像素变了也判失败 |
OCR 按需启用(enableOcr: true,语言包首次使用联网下载,默认 eng,中文 chi_sim+eng);OCR 不可用时所有语义特性优雅降级,其余功能不受影响。diff_view 纯 sharp 实现,零额外依赖。
验证栈最终形态(四层):
L1 像素 dHash 双尺度 —— 有没有变化?在哪一级(页面/元素)?
L2 定位 visualDiff —— 变化的精确边界与中心坐标
L3 语义 OCR 核对 —— 变化是否包含预期的文字内容?
L4 预期 expected_* —— 与模型行动前声明的预期对照
前四轮都在改进「单次执行的质量」;本轮解决两个更高维的问题:成功经验无法沉淀(同一个工作流每次从零探索)与凭据安全(Agent 不该替人输密码)。
| 环节 | 机制 |
|---|---|
| 归纳 | 复杂任务成功后自动把本次轨迹(markTaskStart 以来的可重放动作)固化为技能:触发描述 + 步骤序列 + 入口场景指纹;save_skill 供手动沉淀任意日志片段 |
| 去重强化 | 完全相同的步骤序列不重复建卡——同一工作流做三遍 = 一个技能验证三次(可靠度 3/3),而非三张孤儿卡 |
| 持久化 | skillLibraryPath 配置后技能跨会话存活:上一个会话学会的工作流,下一个会话开箱即用 |
| 匹配 | match_skill:文本重合 + Laplace 平滑可靠度 + 入口场景同屏加成(dHash ≥ 0.9)+ 新近度;技能是先验不是保证,锚点仍要求事后验证 |
| 闭环校准 | run_skill 的每次成败回写 successCount/attemptCount —— UI 演化导致技能失效时可靠度自然衰减,匹配排序自动降级;失败提示引导手动修复并重新 save_skill |
世界级 CUA 的安全共识(如 Operator):凭据类输入交还用户。本实现为两段式,全部复用既有基础设施:
click_mouse 的 target_description 命中风险词(密码/验证码/2FA/OTP/API key…,可配置)⇒ focusTracker 将焦点标记为敏感,锚点携带 sensitive_focus 并预警type_text 到敏感焦点(或文本自身命中风险语义)⇒ 返回 ACTION_REQUIRED,要求暂停并请用户亲自输入;待输内容绝不回显([REDACTED])前五轮堆出了 32 个数学引擎与 D-1~D-7 器官方阵;本轮停止加-feature,把整个器官群焊牢:四条主链致命修复(Python 服务真实点击此前 100% TypeError、shm 传输生命周期注册表单主、降级排练不再误锁主机执行、D-4 判决三方言配对令 rejected 否决权首次可达)、审批协议改为"请求 ≠ 同意"(grant_approval 是执行前置)、安全面(AppleScript 注入序、中间件洋葱序、nonce 双解码)与数十项中危修复。287 测试全绿起步。
| 留白 | 落成 |
|---|---|
排练永远 degraded(无验证层) | 虚拟屏模拟器(sandbox/virtualScreen.ts):确定性控件世界,命中测试产 L1 证据、焦点输入产 L4 证据(expectedText 核对)——历史性一刻:passed 首次可达,肌肉记忆固化真实触发 |
| Windows 环境塑形缺席 | WindowsAdapter:PowerShell + Win32 P/Invoke(raise/maximize/move/set_zoom),几何快照 undo,PS 单引号转译封死标题注入面 |
| Actor 无真实后端 | 双通道:DSH agents 服务在场走服务;缺席走技能回放(可靠度 > 0.5)并回写结局;双缺席诚实 [FAILED] |
| 会诊只有规则表 | 贝叶斯皮层:六症候群 × 五信号 CPT,log-sum-exp 精确枚举;规则为主、信念侧写随报告附体 |
| 统计兵器缺口 | SSD 二阶随机占优(FSD 交叉时按下偏矩不等式裁决)、同形字归一化(西里尔/希腊/全角三层混淆仍命中风险词)、噪声容忍环检测(汉明容差 6) |
| 无科学基准 | 基准套件(npm run bench):消融/标定/参数消融/联合标定四件套,首跑全绿 |
法条:仓内天然属主自荐,宿主裁决总线。 D-5 apply() 经可选 ctx.set? 面自荐 dsh.sandbox 引擎视图;D-7 自荐 dsh.knowledge-pipeline;宿主无 set 面 ⇒ 既有诚实降级一字不动。同时把三处"死导出"契约占位符激活为执法面(hasVerificationLayer 进审计面、SandboxDoctorView 得真实门面适配器、intent 铸造走 IdGenerator 三重防碰撞)。
set_contrast:SystemParametersInfo 官方 API(SPI_GETHIGHCONTRAST 快照 → SPI_SETHIGHCONTRAST 置位,undo 还原原 flags)calibrateCptFromRules):32 信号组合全枚举 + 共现计数 + Beta(1,1) 平滑 + 专家收缩;与规则首判一致率 0.484 本身即量化数据,真遥测接入 = 换 oracle 接口不变token.pid == peer_pid(非 Linux 优雅回退)swarm 跨会话重复入账以持久化消费水位根除(restore 后跳过已消费前缀);审批盲区硬前置根除——闸门开启时双描述通道皆沉默的点击返回 ACTION_REQUIRED 而非透明放行(合规是零成本的:带描述重发即可);虚拟屏 drag 命中证据与 switch_window 标题匹配焦点证据补齐。套件 325/318/0 败。
七轮战役后的全量待完善清单,按推荐执行序 28 项逐一兑现(test/epochO.test.ts 逐项执法):
环境与真机:Windows 真机基准落地(test/realMachineWin.bench.ts 四实验全绿 —— D-5 服务真截屏 → tesseract.js 离线 OCR → 真 pyautogui 物理点击 → tkinter 世界状态翻转;E1b 陷阱改道与 E3 学习曲线在真机上复现);POSIX shm 跨进程往返测试 + Linux CI workflow(/.github/workflows/ci.yml);sharp/tesseract.js 入库后 7 项环境闸全绿。
潜伏 bug 群根除(真机执法的战果):① Windows set_contrast 的三只(apply 误要求窗口句柄 / PS \" 转义非法 / pvParam 须为 HIGHCONTRAST 结构体)—— 真机往返 126→127→126 VERIFIED;② screen.py JPEG 闭包 UnboundLocalError(任何平台必炸);③ GPD 矩估计反演代数错误((k−1)/(2k−1) → (k−1)/(2k),双估计器上线后现形);④ contextManager id 时钟回拨。
数学器官:GPD PWM 第二估计器 + 一致性检验(主估计权归 PWM);双边 CUSUM + 环前终身基线(基线不再随环翻转,痊愈臂 = RECOVERY 洞见);W₁ 信息熵加权(w1Info/infoRatio 双视图显形掩蔽);I-4 相干瞬移场(≥2 特征同矢量共移 = 刚体重排证据,单候选诚实瞬态);LTLf 性质挖掘器(有界响应/先序/防重三族自动立法,支持度≥3 零反例才立);A² 临界值 MC 自举表 + Kalman Q/R / Schmitt / NCD 阈标定回路(src/calibration.ts)。
架构补全:dsh.vision.structured/traditional 服务自荐(单属主铁律);worldModel run 级快照(fork/merge 重放,并发同号类型重铸);restore 悬空引用三重校验;沙箱 L3 场景 OCR(sceneOcr 点燃休眠的 L3-semantic 层);switch_tab 标签页栈模型(role='tab' 循环指针);SO_PEERCRED Node 客户端半(undici UDS dispatcher + 桥注入);token 真实消耗计量(工位自报回路 tokenUsageReported);审批根除的模型侧协议强制(target_description schema 必填);首轮知识检索串行化选项;homoglyph Unicode confusables 全表(1665 条蒸馏,~22MB/s)。
对全库(TS 13 文件深审 + Python 3 文件 + 机械扫描)猎杀潜伏 bug,共根除 7 只,并把每类虫型铸成永久免疫:
auth_middleware 顺序倒置:peer-PID 比对在令牌解析之前执行——UDS+Linux+peercred 路径(M 纪元 SO_PEERCRED 服务端半)落地即 UnboundLocalError 崩溃。M-4 源级执法从未运行故未现形。calibration.ts 的 GPD CDF 用了与采样器相反的 ξ 符号约定——MC 临界表在错误分布下计算(分位 78–160 vs 文献 ~0.5–1.1)。calibrateNcdThreshold 被毒化后仍返回貌似合法的标定;calibrateKalmanQR 的 predicted 字段从未被使用(API 谎言)——修为真互补滤波。recombine 去重强化路径漏 save()(崩溃窗口内计数丢失)。verify 的 V2c 环境假设(pyautogui 装机后"无显示"模拟失效——改毒性模块注入,任何机器确定性执法)。免疫机制(创世):scripts/bug_class_lint.py —— Bug 类注册表(BCR):每类历史虫型(PS 引号律/闭包重赋值/时钟单调假设)铸成机械检测器,全库扫描签名形状,接入 npm run verify 构建闸;test/epochP.test.ts —— 属性测试炮台:全部统计引擎过「已知参数恢复 + 闭式对齐 + 不变量」关(Hurst iid→0.5、置换检验对 Fisher 闭式、贝叶斯归一、NCD 对称、A² 文献带、Kalman 对 DARE 闭式、汉明度量律、LTLf 有限迹语义)。示例断言抓不住约定错配——参数恢复能。
对全部模块簇的一次创世级升级——每簇一件真正的新数学器官(test/epochQ.test.ts 逐件执法):
src/proof.ts(新器官):Merkle Mountain Range——追加型证据流的 O(log n) 包含证明(叶数为 2 的幂的山峰二进制分解 + 峰袋根)。journal 与 sandbox 链双双接线:审计者凭单根 + 单证明核验单条记录在册,免整链重放;篡改任一叶 ⇒ 全部旧证明失效(Q-1 执法 1..1000 全尺寸 + 全篡改检出)。dualSimilarity 保守融合(min);actionVerifier 判决携带 phashCorroborates 独立第二意见。entropyBits(平滑预测熵——「点了之后世界去哪」的主张强度,L3 付费观看的正当性可量化)与 posteriorConcentration(可信的不确定性 vs 廉价的均匀无知)。parents/generation——合成技能登记基因供体谱系;lineage(id) 祖先链回溯(环守卫诚实截断);容量驱逐感知谱系存续(活跃祖先 ×1.5 加成——基因仍在后代中表达的技能不死)。cohensH(反正弦效应量——比例近 0/1 域不虚胀)+ mannWhitney(非参秩检验,并列校正 + 连续性修正;延迟是重尾——GPD 纪元的教训,A/B 对照配秩检验不配 t 检验)。「主张要有数字」升格为「数字要有效应量与检验」。predicted() 外推长延迟后的焦点位置(钳半屏);证据不足诚实回退原点。对 Q 纪元未触及的六个模块簇各铸一件新器官(test/epochR.test.ts 逐件执法):
src/fuzzy.ts(新器官):子串编辑距离近似匹配(Wagner–Fischer 行进形;Myers 位向量的渐近界备案、审计性优先选经典 DP)——OCR 把 l 读成 1、O 读成 0、吞空格时,expected_text 的逐字节对照在真机必然漏判;容错 ≤⌈m/6⌉ 判决接入 textReader 语义核对。click_element 的"点 3 号"不再每帧语义漂移。score2。给仍未触及的模块簇铸六件,并把前世代的环闭环(test/epochS.test.ts 逐件执法):
EVIDENCE ANCHOR MISMATCH 置顶报告(R-4 的另一半,快照-证据一致性从"可锚"到"可验")。0.05·min(s,6) 升格 (s+1)/(s+2) 贝叶斯曲率——一次成功不配满信任、渐近饱和、零成功留先验底。enforceMinedProperties —— R/Q 纪元挖掘的性质在新迹上逐位执法(bounded-response 破缺/抢跑/连击定位),性质库从描述统计升格为在线规约(mine→enforce 闭环)。主题:给只有正半边的机制补对称、把已立器官传播到残余模块(test/epochT.test.ts 逐件执法):
uniform(0, base·2^n) 取代定值退避(AWS 经典形态)——并发等待者重试相位解相关,惊群免疫。GUARD_BLOCKED 标记种类——每次守卫拦截都是防篡改链上的政策裁决事实(proof 器官闭环到守卫层,拦截不可抵赖)。src/organCensus.ts):七纪元 33 件数学器官登记入册(层/数学根基/自检 λ),quality_checkup 自省段逐件点名——genesis 的 "premature-impl" 规则至此有了对称面:impl 之后的 operational census。给七纪元铸的器官上科学法庭:test/organAblation.bench.ts 八项微基准(确定性、可复现),每件器官的贡献由数字判决(test/reports/organ-ablation-report.md 全表):
| 器官 | 审判数字 |
|---|---|
| 模糊匹配 | OCR 变体恢复率 100% vs 逐字节基线 0% |
| 三指纹 | 同/异图双指 100%;90° 旋转环指捕获 100% vs 双指 0%(正交性实证) |
| BM25 | 稀有词查询 MRR 0.583 vs 二值基线 0.250 |
| 通道仲裁 | 劣质主通道场景 EMA 收益 226/300 vs always-agents 104,逼近预言机 234 的 96.6% |
| 蓄水库分位 | 三分布(均匀/重尾/双峰)ΔP50=ΔP95=0.0%(m=512, n=2000) |
| MMR | 千叶证明长度 ≤ log₂(n)+1(实测 6/9) |
| RRF | 通道重标定(×10)排名稳定 100% vs 加权和 0% |
| LTLf 执法 | 三型注入违例逐位全中(响应@1/抢跑@0/连击@5) |
审判日的真实战果:仿真抓到 S-3 乘性权重的复辟缺陷(对称底权触底后回到平权 ⇒ 劣质通道周期性复辟,151/300)——裁决升格为 EMA 成功率仲裁(只更新被选通道,未选冻结),回写实现后逼近预言机。另裁决两例测试前提不成立(加权 0.3 律在合成域不真输、倒序非 OCR 域变异)——法庭对自己一样诚实。
approval 审批簿记、orchestrator 通道 EMA——V 日泄漏源),执法矩阵:脏化 → reset → 必须回到初值。反射纪元的决策大脑对世界只会一件事:点击。本纪元给它一套运动词汇表 —— type_text / scroll_page / press_hotkey —— 零 LLM,经 src/intentGrammar.ts(纯函数意图文法)与 ReflexiveDecisionStation 中的运动弧落地:
"…" / '…' / 「…」 / 『…』 / “…” / ‘…’)逐字节精确提取(编辑距离 0)。自由文本提取是有损猜测 —— 密码打错与没打一样糟 —— 一律拒绝(精确性优先)。执法自身抓到一只真缺陷:缩写撇号(don't)与后文单引号载荷配对时会静默腐蚀载荷;单引号开启符现已带词界门。{target → text} 按拓扑序执行 —— type "gamma" into the server field 先对字段发点击(夺取焦点),焦点在手后才落笔。同一条法则也保护 press the big red button 不被误路由进热键弧。expectedText —— 反射第一次知道自己的成功长什么样(点击预言不了像素;载荷预言得了文本)。基准的执行站拿它对照世界真值执法。[1,20](域外拒绝,绝不钳位 —— 钳位会把 scroll 999 静默改写成 20);热键和弦归一键名别名(control→ctrl、escape→esc)并封顶 4 键。disableMotorArc 消融证明贡献(打字意图退化为诚实零动作接地)。执法:test/epochX.test.ts(14 项,X-1..X-9 —— 提取表、弧选择表、L4 达标的虚拟屏排练、消融、压制优先级)。真机审判:大规模 Data Console 基准长出第六页(editor:三个带焦点真值的文本字段)与 typing 类别 —— 真 pyautogui 键盘击键落进 tkinter entry,由逐键世界状态裁决。
战役本身根除两只真机缺陷:(1) pyautogui.typewrite 穿过活动输入法(alpha.local → alpha。local、ada → 阿达)—— D-5 服务在 Windows 上改走 SendInput + KEYEVENTF_UNICODE,唯一与输入法正交的确定性文本注入;(2) 同基线导航/内容词污染 tesseract 行切分(settings + format disk 同排 ⇒ setines,conf 0)—— 感知改跑条带 OCR(导航条带 | 内容条带分开识别,跨列行混合在构造上不可能),导航不变量收紧为六词(files/network/reports/settings/archive/editor)全在场。
对症失败模式:「对话文本被误识别为可点击的入口」。聊天记录里写着「点击登录按钮」的消息、文档中引用的菜单名、渲染在屏幕上的任务指令 —— 它们与真按钮在像素层完全等价,任何视觉分类器(包括大模型自己)都只能猜。
世界行动律:猜不出来,就问世界。 Z-1 以三个证据通道判决交互性,按判别力降序(src/interactivityProbe.ts):
| 通道 | 动作 | 证据 | 置信 |
|---|---|---|---|
| 1. UIA 点查询(Z-1c) | ControlFromPoint 单点问结构层 | 官方登记的控件类型(Button/Hyperlink/Text/Edit...);祖先链律:按钮里的 Text 标签沿祖先上行找到 Button 即判 control | control 0.97 / text 0.93 |
| 2. 光标本体感觉(Z-1a) | 悬停(move_mouse,绝不按下)读 cursor_kind(Win32 GetCursorInfo) | hand ⇒ OS 亲口承认的可点击热区;ibeam ⇒ 可选择文本(正文/聊天消息)—— 不是入口 | control 0.95~0.96 / text 0.92 |
| 3. 悬停重绘(Z-1b) | 悬停前后区域 dHash 对比(metaOnly 指纹,零图像传输) | 控件会有 hover 高亮/下划线/tooltip,正文纹丝不动 | control 0.8~0.85 |
两遍架构(实验经济学):第一遍全员 UIA 点查询——零物理副作用(不动鼠标、不截图、无时序抖动),dry-run 与弹窗期也照常判决(只读感知不受守卫约束);仅当 UIA 缺席/unknown 的残余点才进入第二遍悬停实验(存档原位 → 逐点实验 → finally 复位,实验不留痕律)。大多数点在第一通道即被判决,鼠标根本不动。
Z-1d 判决记忆化(实验成本摊销到每个场景一次):判决性结论(control/text)随形成时的整屏指纹入册(probeMemory,LRU + TTL + checkpoint 存活);同场景(指纹相似度 ≥ 0.9)再遇邻近点(距离 ≤ 0.015,OCR bbox 微抖容忍带)直接复用判决——零实验、零鼠标、dry-run/弹窗期同样生效。负向记忆恰是最有价值的一半:聊天文本的 text 拒判稳定且每次 find_text 都会重遇。诚实律:inconclusive 不入册(「不知道」不是证据)、召回降一等(confidence -0.03 且封顶 0.9,via=memory 永不冒充新鲜实验)、场景漂移(聊天滚动/换界面 ⇒ 指纹变化)自动失效重实验。真机实测:同场景复用 877ms → 57ms(15.4x),鼠标全程未动。
Z-1e 自适应 dwell(悬停实验提速):决定性光标形态(hand/ibeam)读完即判——OS 换光标是即时的,无需等待重绘通道的 350ms dwell;仅 arrow/custom 走重绘轮询(150ms 步进,检出即停,上限 ceil(dwell/150) 步)。决定性路径单点成本 ~750ms → ~240ms;冷却仅在走过轮询路径后需要。
降级链完整:记忆 miss → UIA 库缺席/DSH_PHYSICAL_L1_BACKEND=disabled(纯视觉意识形态门控)/游戏与 canvas 无登记 ⇒ 通道缺席,静默落回悬停双通道,不伤害。unknown(Pane/Custom)同样落回。
接线四处:
find_text:OCR 命中先过探针(优先级 ambiguous > content-like > control-like,上限 probeMaxTargets),每条坐标携带 interactivity=control|text|unprobed 与判决通道(via=uia(Button) / via=hover(cursor=ibeam) / via=memory);next_step 明令「只点 control;text 是提到关键词的正文,点了就是事故」。probe_interactivity(新工具):对任意坐标做三通道判决(记忆 → UIA → 悬停实验)—— 模型对任何拿不准的文字都可在点击前问一句 OS。take_screenshot 图例:内容区文字(聊天/文档/表格)是数据不是 UI。click_mouse(Z-2 点击闸门):见下。Z-2 点击闸门(判决前移到指针落下之前):Z-1 的判决只标注在 find_text 结果里——模型可以不看。Z-2 把同一三通道判决接到 click_mouse 执行前(gateTextClick 纯函数 + src/tools/clickMouse.ts):左键点击前先探针目标点,判决为 text 且置信 ≥ 0.9(决定性判决)且证据不是 Edit 输入框 ⇒ 结构化拒绝(ACTION_REQUIRED),告知模型「此点是正文——文字只是提到了你要找的标签」,并给出改道指引(find_text 找 control 命中 / 截图重定位 / 滚动)。例外通道全部显式:Edit 放行(点击输入框聚焦是合法动作)、右键放行(正文上的上下文菜单合法)、allow_text_click: true 自证放行(模型明知点正文:文档放置光标/选中文本)、dry-run/探针缺席零回归。闸门在 captureBefore 之前执行——悬停实验可能触发 hover 高亮,before 帧必须在探针后取,否则污染「无变化」基线。
同法根除零模型路径:反射弧场景源的 L2 OCR 词元先过几何先验剔除(ocrWordsToClickCandidates,wordShape.ts 纯模块)——宽行/多行段落形态不参选落点选举,「正文被当作按钮」在脊髓反射层失去燃料(误剔真入口 ⇒ 诚实接地,比错点正文便宜)。
与四层验证栈的关系:actionVerifier 验证「点击之后有没有生效」(事后),Z-1/Z-2 验证「点击之前该不该点」(事前)—— 感知闭环从执行域前移到决策域。守卫集成:悬停实验在弹窗激活期/dryRun 下跳过(UIA 判决不受限)、探针失败诚实降级为 unprobed 而非谎报。物理服务版本门控 0.4.0;/hit_test 属结构感知能力位(ui_tree)。
对症需求:「自动跳转网页链接」。屏幕上的 URL(聊天正文里、文档里、OCR 噪声里)不是控件 —— 点击要么被 Z-2 闸门否决(正文),要么点不中。世界行动律的答案:链接不靠点,交给 OS 壳层。
AA-1 URL 感知(src/urlSense.ts,纯函数零依赖):
…wiki/Python_(lang) 的成对括号是 URL 的一部分,不许误剥;www. 前缀补 https://(www 是显式网页自声明,唯一被授权的猜测);裸域名(example.com)拒绝 —— 精确性优先,与运动弧引号锚定同律;[http, https] —— file://(本地文件系统)、javascript:(脚本执行)、data:/vbscript:(数据/脚本载荷)一律结构化拒绝。跳转引擎只把模型带向公开网页,不做任意协议启动器;无点主机拒绝(http://foo 是词不是站),localhost 例外;超长(>2048)拒绝。AA-1 跳转躯体(system.openUrl):平台 opener(win=cmd start / darwin=open / linux=xdg-open),fire-and-forget —— 回执证明的是「壳层请求已发出」而非「页面已加载」,验证交给世界(take_screenshot / switch_window)。Windows 引号转义在 spawn 层手工完成(windowsVerbatimArguments)—— 查询参数里的 & 是常态,Node 默认 argv 引用不覆盖它,裸露会被 cmd 当命令分隔符。真机战果:https://example.com/?a=1&b=2 完整落地(Edge 窗口标题取证)。
接线四处:
open_url(新工具,enableOpenUrl 默认开):入参可以是裸 URL 或含 URL 的自由文本(OCR 行直接粘贴);提取精确、多候选歧义结构化拒绝(绝不掷硬币打开一个);ACTION_TOOLS 在册 —— 跳转可重放、可审计、可归纳进技能。read_text:OCR 全文里的 URL 自动浮出(urls_detected 字段 + next_step 指引 open_url)—— 「自动跳转」的感知面,模型不必手抄链接。本地反射弧(OCR / 模糊匹配 / 探针)以毫秒级回答确定性事实,但开放语义——整屏理解、陌生界面形态、图文混读、状态推断——是纯本地栈的盲区。本纪元外接云脑:智谱 GLM-5.3-Flash 视觉大模型,十件器官(src/vlm/)各司其职,与本地感知保守双脑仲裁。
十器官(test/vlm.*.test.ts 逐件执法):
| 器官 | 机制 | 解决的问题 |
|---|---|---|
Ω-1 云脑客户端 glmClient | 智谱 OpenAI 兼容协议 + 全抖动指数退避重试 + JSON 围栏剥壳(fetch 可注入) | 与云脑对话的可靠传输层:重试相位解相关、围栏/方言 JSON 健壮提取 |
Ω-2 感知编解码 codec | 1568 长边 / JPEG 80 / 兴趣区裁剪 + VlmBudget 任务级图量与字节配额 + 视觉 Token 估算 | 云脑往返的带宽礼仪:超支在下发前被拒绝,而非事后补救 |
Ω-3 SoM 提示工程 som | VLM 专用编号框叠加 + 中文铁律提示词族(grounding / verdict / ocr / 差分) | 把「像素绝对坐标、图外非法、不臆造」写进模型输入——云端坐标幻觉歼灭 |
Ω-4 元素检测 grounding | groundElements + NMS IoU≥0.6 去冗余 + clampBbox 图内夹取 | 截图进、可点击元素出;云输出方言归一为仓库标准,宁空不错 |
Ω-5 语义 OCR vlmOcr | readTextViaVlm / findTextViaVlm,匹配与本地 textReader 同律(大小写/空白不敏感) | 云端读字找字:本地 OCR 的云侧姊妹,命中返回中心像素坐标 |
Ω-6 效果判决 verdict | judgeEffect 前后双图对比 → confirmed/refuted/uncertain + fuseWithPixelEvidence 像素双脑融合(一致加成 +0.1、分歧降级 uncertain) | L3.5 云端语义判决:「变的对不对」只有看得懂语义的脑能答 |
Ω-7 差分解说 diffExplainer | 变化区域 + 双图 → 一句中文总述 + 区域级注解,label 对齐律 | 「哪里变了」升级为「变的是什么」;对不上号宁可丢弃注解,绝不硬凑 |
Ω-8 故障会诊 diagnosis | diagnoseFailure:任务/动作/锚点/错误/屏幕文本 + 可选截图 → 根因 + 假设概率归一 + 恢复步骤(循环引用防护) | 「为什么停」的云端归因——本地会诊(qualityDoctor)的云侧会诊室 |
Ω-9 双脑仲裁 arbitration | IoU 贪心配对 + 置信加权凸组合融合 + 一致加成 0.15 + winner 四分支 + normalizedLevenshtein 文本仲裁 | 本地感知与云端意见分歧时的纯数学裁决:仲裁不靠权威靠测度 |
Ω-10 计量治理 metering | vlmMeter 分位台账 p50/p95(千样本窗)+ 双桶滑动窗限速(分钟×小时)+ 连续失败熔断 5 次/60s 冷却 + 全抖动 uniform(0, b·2ⁿ) | 云脑的花费与心跳可观测、可限量、可熔断 |
vlmApiKey / vlmBaseUrl(默认 open.bigmodel.cn/api/paas/v4)/ vlmModel(默认 glm-5.3-flash)/ vlmAssistOcr(默认 false);index.ts 经 configureVlm 铸造云脑单例——config 优先于环境变量(GLM_API_KEY > ZHIPUAI_API_KEY > ZAI_API_KEY)。createSemanticFromVlm):D-6 三级漏斗的 L3 语义源——宿主总线优先立法不变,宿主未供且云脑可用时缺席自铸一档,只加不自夺。semanticConfirm 第三路径:本地双路径(服务端 L2 → legacy tesseract)皆败后 VLM 兜底读屏;签名不变,开关关闭或无 Key 时行为逐字节不变。ask_screen:看屏问答——截当前干净屏 + 自然语言问题 → 云脑作答(只读不碰世界;分工律:毫秒级确定性归本地反射,秒级开放语义归云脑)。degraded:true 零网络短路(不拨号、不编码、不发请求),本地反射层照常运转——degraded 语义贯穿十器官。配置任一通道即点亮云脑:
config:
vlmApiKey: '你的智谱 API Key' # 或 env:GLM_API_KEY / ZHIPUAI_API_KEY / ZAI_API_KEY
# vlmBaseUrl / vlmModel 已有默认值,按部署覆写;vlmAssistOcr: true 开启 OCR 兜底
点亮后 ask_screen 工具与系统提示词使用准则自动注入;vlmAssistOcr: true 激活 semanticConfirm 的 VLM 第三路径。审判数字:vlm 家族 127 测试 0 败(十器官 121 + 集成 6);typecheck 0 错;build dist/vlm 全量产出;smoke 141 模块 import 干净。
本地栈至此已能"看得准、点得对",但每一步仍由模型驱动。本纪元铸四环闭环:机器自己看世界快照(识别)、自己决定下一步(判断)、自己执行并验证(执行)、跑完自我审计并进化策略权重(进化)。高度自主的前提是立法——十器官 + 宪法 + 运行时适配(src/autonomy/)。
十器官(test/autonomy.*.test.ts 逐件执法):
| 器官 | 机制 | 解决的问题 |
|---|---|---|
| **Φ-1 |