Skip to content

v0.3.0 — 看屏幕、记忆与技能、证据溯源

Latest

Choose a tag to compare

@yeahhe365 yeahhe365 released this 08 Nov 19:45
· 1 commit to main since this release

WebDroid Agent v0.3.0

自 v0.2.0 以来的第一个功能版本。这一版的核心变化是让 Agent 真正"看屏幕"再决定动作:先用结构化 UI 树做差分,判断上一步到底有没有生效,再据此决定是否重试或重新读屏,而不是盲目等待固定时间。同时补上记忆检索、技能复用、证据溯源,以及围绕运行控制的一轮安全加固。

951 个测试通过(98 个文件),lint 与构建干净,入口 chunk 348.34 KiB / 400 KiB,总量 942.00 KiB / 1100 KiB。

👁 屏幕观测与自检

  • 动作效果差分(actionEffect.ts):对比动作前后的结构化 UI 树,把结果归类为 no_effect / partial / done,并直接呈现到步骤卡片上。没生效的点击不再被当成成功。
  • 稳定元素引用 + tap_ref:每次读屏为可交互元素分配稳定 ref,模型可以直接 tap_ref 而不用重新算坐标。引用过期会以 action_stale 失败并触发重读,而不是点到错误位置。
  • 自适应等待(screenSettle.ts):把固定的动作后等待换成截图轮询,画面稳定即返回,上限为设定值的 3 倍。慢设备不再被截断,快设备不再空等。
  • 屏幕状态诊断(screenDiagnosis.ts):区分黑屏、截图不可用、界面无变化等状态;连续多帧黑屏会判定为采集失败(capture_unavailable),而不是误报"没有可操作元素"。
  • UI 树质量分级(treeQuality.ts):按树的可用性调整注入 prompt 的节点数量,避免把噪声塞满上下文。
  • 限额提示识别(limitNotice.ts):识别应用自身的"今日次数已用完"类提示,以 reviewKind: 'limit' 停下交给人,而不是继续重试。

🧠 记忆与技能

  • 记忆检索(memoryIndex.ts):BM25 检索历史记忆,只注入最相关的少量条目,并限制总字符数。
  • 敏感信息过滤(sensitiveFilter.ts):命中密钥类内容时拒绝写入记忆。
  • 技能草稿与复用(skillDraft.ts / skillStore.ts):把跑通的流程整理成技能建议;只做建议,不自动重放。

🔍 证据溯源

  • 证据账本(evidenceLedger.ts)+ 答案接地(grounding.ts):记录每一步实际观察到的内容,检查模型结论是否有对应证据。目前只记录告警,不静默改写模型输出。
  • 不可信内容包裹(untrusted.ts):把屏幕文本、应用名等设备侧内容包进 <untrusted>,并附上统一的提示规则,降低提示注入风险。

🎛 运行控制与安全

  • 结构化 review 类型 + 协作式暂停:暂停会等在途的那一步结束再停,不会丢步骤;补充了 limit 类型。
  • 风险分级策略:allow < confirm < take_over < block 四档,用户可选择 宽松 / 标准 / 严格。
  • 失败分类体系(failureTaxonomy.ts):给每个失败打上机器可读的类型,并白名单化可自动恢复的类别(含新增的 action_stale)。
  • 本地模型代理加固:共享 token 校验、host 白名单、默认只监听回环;proxyToken.ts 负责令牌。
  • 密钥保管(secretVault.ts)+ 已解析密钥不进设备 argv。

🎨 界面

  • 设置页重做:首屏引导卡改为单列清单——整行即按钮,单一强调色(靛紫=可交互,绿色=已完成,琥珀=仅缺 WebUSB 时出现),三段进度条取代漂浮提示。
  • 浮层体系统一:所有弹层走同一个栈,带焦点陷阱与 toast。
  • 快捷键、可拖拽分栏、共享滚动锁;懒加载 chunk 失败自动重试。
  • 主题首帧即生效,不再闪白。
  • 品牌 logo 替换并补齐 favicon 尺寸。

🧪 工程与测试

  • 构建体积预算:scripts/bundle-budget.mjs 在 npm run build 与 CI 中强制校验(入口 400 / 单 chunk 500 / 总量 1100 KiB)。
  • 回放测试:脚本化设备后端 + 模型客户端,离线重放动作与坐标 fixture;CI 校验 fixture 不含像素、schema 版本齐全。
  • 真实设备验证矩阵:docs/device-verification-matrix.md,明确哪些结论需要硬件验证。
  • CSS 死代码审计脚本,CI 运行于 Node 22 与 24。

🌐 部署

📦 升级提示

  • 版本 0.2.0 → 0.3.0。
  • 改动 295 个文件,+32188 / -3091。
  • 新增 1 个配置项 safetyStrictness(宽松 / 标准 / 严格,默认标准);其余观测能力按内置默认值工作,不需要额外配置。
  • 动作协议新增 tap_ref(共 24 个动作类型);旧的 interact / call_api 仍被接受但转换为人工接管。

Full Changelog: v0.2.0...v0.3.0