42 lines
3.8 KiB
Markdown
42 lines
3.8 KiB
Markdown
# 本机学习浏览器工作进程
|
||
|
||
维护后台通过标准输入输出的逐行 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 或上次确认视为当前账号自动核验结果。
|