|
|
||
|---|---|---|
| .. | ||
| README.md | ||
| browser-worker.mjs | ||
| test-browser-worker.mjs | ||
README.md
本机学习浏览器工作进程
维护后台通过标准输入输出的逐行 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、浏览器版本和时间由实际执行进程生成,失败不会被记录成通过。
本机隔离回归
安装项目依赖及相应浏览器后运行:
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 或上次确认视为当前账号自动核验结果。