assistant/tools/learning/README.md

42 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 本机学习浏览器工作进程
维护后台通过标准输入输出的逐行 JSON 调用此 Node.js 进程。浏览器、登录资料和截图在维护者本机,工作进程不会调用模型或存储平台密码。
输入为 `{ "id": "request-id", "method": "capture", "params": { "task_id": "task-id" } }`。输出为相同 `id` 的 `result`,或包含 `message`、`code` 的 `error`。标准输出只用于协议,进程按顺序处理请求。
关闭标准输入或标准输出管道断开会立即关闭浏览器上下文,使执行中的试跑自然中断;所有关闭入口等待同一个清理过程,不会重放动作。调用方应等待工作进程实际退出,再重开同一资料目录。
## 方法
- `open`:传入 `task_id`、`account_key`、`entry_url`,打开固定账号资料目录,进入等待人工登录与确认阶段。
- `ready`:传入 `identity_label`,明确记录维护者人工确认。首版没有自动平台身份核验器,不能把该记录解释为自动认证成功。
- `capture`:采集已确认页面的文本、候选定位和视口截图,返回 `capture_id` 与证据路径。
- `action`:执行最近一次采集中的 `fill`、`click`、`read`。定位重新核验;普通动作要求唯一目标。
- `verify`:从入口运行已生成的固定步骤,用参数替换填写值,核对指定输出文本并保存实际页面证据。
- `close`:关闭会话、释放账号占用,保留资料目录。
- `status`:查询当前会话是 `awaiting_user`、`observing` 还是 `closed`。
## 配置与边界
- `ASSISTANT_LEARNING_HOME`:学习资料根目录,默认 `.runtime/learning`。账号目录使用入口 origin 与 `account_key` 的固定 SHA-256 标识;同账号不能被不同活跃任务同时使用。
- `ASSISTANT_BROWSER_CHANNEL`:浏览器通道,默认 `chromium`。开发机可指定已安装的 `msedge`;无浏览器时返回明确错误,不自动下载安装。
- `ASSISTANT_BROWSER_HEADLESS=1`:仅供隔离验收使用。正常维护登录使用有头浏览器。
- 首版限制在入口的同一 origin,尚不支持跨域 SSO 跳转;需扩展站点范围时先补明确的范围契约。
- 首版操作只涵盖普通文本填写、同站点链接、明确的搜索与展开按钮及读取;关注、私信、发送、提交、支付、删除不在运行范围内。自动步骤期间拦截非 GET/HEAD/OPTIONS 请求。
- 人工确认前不采集页面;采集跳过敏感表单和输入值,截图遮盖输入区。手机号、验证码、密码不得作为步骤参数或人工确认标签。
- 验证至少需要一个非空输出预期。结果中 `os`、浏览器版本和时间由实际执行进程生成,失败不会被记录成通过。
## 本机隔离回归
安装项目依赖及相应浏览器后运行:
```text
node tools/learning/test-browser-worker.mjs
```
Windows 默认使用已安装的 Edge,其他系统默认使用 Playwright Chromium,可通过 `ASSISTANT_BROWSER_CHANNEL` 覆盖。脚本启动仅绑定回环地址的临时页面,以独立子进程通过真实 JSONL 协议调用工作进程,不访问内容平台、模型或商家数据库。
测试使用工作区 `.tmp/worker-regression-*` 下的新资料目录,覆盖人工确认门禁、账号互斥、敏感字段过滤、发送阻止、参数化实际读回、错误及空预期、关闭重开 Cookie 复用、协议错误恢复、关闭状态,以及试跑中收到 EOF 后及时退出并由新进程重开原资料目录。成功后清理本轮目录;失败时保留证据。加 `--keep-artifacts` 可保留成功证据和 `report.json`。
界面中,“固定规则校验”可独立执行;“浏览器试跑”要求该学习任务已打开会话并由维护者人工确认当前账号。关闭后重新打开仍要确认,不能把持久化 Cookie 或上次确认视为当前账号自动核验结果。