Repository navigation
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。
🌐 部署
- 线上地址迁到 **https://webdroid-agent.pages.dev**(新 Pages 项目,与仓库同名,push 自动部署)。
- 旧地址
webadb-autoglm.pages.dev仍可访问,已标注为弃用。
📦 升级提示
- 版本
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