Browser Agent 实施与验证记录

本页只记录 Computer Use 目标设计 的实施任务、验证命令和 review 结论,不修改概念设计。第一项任务交付内置浏览器 Browser Agent 的低成本 baseline。

TASK 1 · COMPLETE

任务 1:DOM-first Browser Agent baseline

批准的设计:docs/reference/design/integrations/computer-use.html

基线:717d4e17。实现从隔离 worktree 和分支 codex/browser-agent-20260814 开始。

生产文件:openprogram/programs/agentic_functions/browser_agent/__init__.pyopenprogram/programs/_registry.pyopenprogram/programs/__init__.pyopenprogram/agent/authority.py

测试文件:tests/unit/test_browser_agent.py

行为契约

Public-entry RED

python -m pytest -q tests/unit/test_browser_agent.py 必须先证明以下缺口:

安全、取消、错误与并发边界

明确排除

桌面级 Computer Use、GUI Harness 视觉 pipeline、权限卡片新 UI、永久 origin grant、tab lease、多窗口路由重构、Windows、OS keychain/keyring、浏览器 profile 迁移均不属于任务 1。

Full gate manifest

安装版 E2E 验证

测试对象:/Applications/OpenProgram.app 0.6.1。测试没有用 Electron 源码启动;桌面进程和 18101 worker 均来自应用包,worker Python 为 Contents/Resources/runtime/python/cpython-3.12.10-macos-aarch64-none/bin/python3.12

隔离方式:使用 profile browser-agent-installed-20260814 和端口 18101,避免影响同时运行的其他 OpenProgram worker。模型配置来自该 profile 的本地副本。

场景运行证据结论
DOM-first 表单Session local_38e090f085;输入 browser-agent-installed-final,点击 pushState,url_contains ?p=1 通过;2 次页面写动作,0 次 screenshot,0 个 tool error。PASS
单图视觉输入Session local_7a8021f999;tool trace 为 observe → screenshot → verify;恰好 1 次 screenshot,返回 ImageContentmime_type='image/png',无 validation error。PASS
模型原生 vision 判断模型基于该 screenshot 判断当前 viewport 含浅色紫色渐变区域。该项是模型语义判断,不是 DOM assertion。已获得视觉结果
确定性完成判定同一视觉 session 的 title_contains Desktop Transfer Acceptance 返回 passed=true,Runtime 因此输出 status=succeededreason_code=verified。该 assertion 只验证标题,不单独证明渐变判断正确。PASS,证据范围受限

安装版缺陷闭环

缺陷修复验证
ToolReturnmedia_type 构造 provider 图片,截图调用触发缺少 mime_type 的 Pydantic validation error。3c850a91 改为 provider 类型要求的 mime_type;screenshot 未传 frame ID 时复用最新 observation,并继续限制同一 frame 只截图一次。Browser/tool runtime 相关测试 74 passed;安装版视觉 trace 中 PNG image block 成功到达模型。
自动检测到 provider.json 提供的 minimax-cn-coding-plan 后,create_runtime() 仍直接索引六项内置表,抛出 KeyError2acf630b 将动态 provider 路由到通用 API Runtime,并规范化带 provider 前缀的 model。Provider routing 6 passed;安装版 session 成功创建 minimax-cn-coding-plan:MiniMax-M3 Runtime。
桌面内嵌 runtime 只安装基础 wheel,没有 Playwright Python 包,CDP session 无法创建。334d0abc 让桌面 runtime 安装 wheel 的 [browser] extra,并在构建时导入检查 playwright.sync_api;不下载 Playwright Chromium。发布回归测试、Bash 语法和 Ruff 通过;安装包内嵌 Python 导入通过;DOM 与视觉 E2E 均通过。

本地 macOS 构建未签名。依赖安装同时报告 Web 依赖 8 个 high severity、Desktop 依赖 2 个 moderate 与 5 个 high severity;本任务未执行会改写依赖树的 npm audit fix

任务账本

项目证据状态
Base commit717d4e17记录完成
REDpython -m pytest -q tests/unit/test_browser_agent.py:9 failed,缺失公开模块与全部约束。记录完成
GREEN / affectedFocused browser/browser-control group:51 passed;registry/tool-selection group:25 passed。通过
Specification review独立只读 review 对实现提交 37b2c37c 逐项核对 8 条行为契约与安全边界;zero remaining findings。PASS
Quality review首轮 CHANGES_REQUIRED 的取消、URL scheme、cleanup 三项已由 af33c608 修复。Fresh review 对候选 d0996f7b 复核全部 changed boundary,确认此前 KeyboardInterrupt 结论为误判;zero remaining findings。PASS
Full gateReviewed candidate:browser/browser-control 58 passed;registry/tool-selection 25 passed;Ruff passed;docs 0 broken links;diff check passed。通过