本节承接你的纠正——从目标出发选最佳实践,不被初始约束锁死。核心结论:高强度抗检测目标使"Playwright 为控制面"不可作为唯一/最强传输,必须引入裸 CDP 档;语言选择藏在接口后以降低后悔成本。
| 传输 | 过第③层(自动化协议) | 维护/生态 | 许可 | 适配档 | 结论 |
|---|---|---|---|---|---|
| vanilla Playwright | ❌ | 官方,强 | Apache-2.0 | — | 仅基线,不用于抗检测 |
| rebrowser-playwright | ❌(≈vanilla) | 停更(2024) | 未声明 | — | 不选 |
Patchright(channel=chrome) |
部分(靠真 Chrome) | 活跃 | Apache-2.0 | T1 均衡 | 选:主流站够用、drop-in |
| nodriver | ✅(基准唯一 0 拦截) | 活跃 | AGPL-3.0 | T2 高强度参考实现 | 选(本地个人无碍;服务分发需评估) |
| mochi(Bun,pipe) | ✅(设计对齐:一致性DAG/pipe/行为合成) | 新(v0.x) | MIT | T2 备选(TS 生态) | 观察/备选:成熟后可替换 nodriver |
| camoufox | 部分(Firefox TLS 白名单效应) | 活跃 | MPL-2.0 | T3 特定站 | 按站点选用 |
| curl_cffi | n/a(无浏览器) | 活跃 | MIT | T0 无JS | 选:静态页极省成本 |
| CloakBrowser | 部分(≈curl 基准) | macOS 构建滞后 | 自定义二进制 | 备选 | 暂不依赖 |
决定: 默认隐身阶梯 = curl_cffi(T0) → Patchright(T1) → nodriver 系(T2) → T2+代理轮换/camoufox 按需(T3);自动选档 + 升级记忆(03 §3)。传输统一在 BrowserNode gRPC 契约之后(04 §4),可随生态演进替换(如 mochi 成熟即可平替 T2)。
| 组件 | 选择 | 理由 | 备选 |
|---|---|---|---|
控制面 praxisd |
Go | 单二进制守护、并发/池管理强、贴合 go/src、清晰 Orchestrator↔Robot 边界 |
Python(若走 MVP 一体化) |
| T2/T3 驱动 | Python(nodriver 参考) | 现阶段过第③层最强、生态成熟 | Bun(mochi,MIT) / 自研 Go CDP |
| T1 驱动 | Node 或 Python(Patchright) | drop-in、channel=chrome |
— |
| T0 驱动 | 任意(curl_cffi/tls-client) | 无浏览器、极轻 | — |
| 认知(外部,不属于底座) | 可插拔 Agent 驱动;脱离模式默认 healer/explorer 模型可配置,子 Agent Fable 5 | 底座无内置 Agent(I-6);经 Cognition Port 接入(10) | Cursor/Codex/Claude/openclaw/通用 |
两条落地路径(同一目标架构,不同起步):
flowchart LR
subgraph FAST["快路径(MVP):Python 一体化"]
F["nodriver+patchright+curl_cffi<br/>+browser-use/stagehand 探索器<br/>+Python MCP"]
end
subgraph TARGET["目标架构:Go 核心+多语言驱动"]
T["praxisd(Go) + gRPC 驱动子进程"]
end
FAST -->|按同一 BrowserNode 契约抽出驱动<br/>核心逐步换 Go| TARGET
- 推荐:直接按目标架构起步——Phase 1 就是"薄 Go 核心 + 一个 Python nodriver 驱动",避免后续大改写。
- 若要最快见效:先 Python 一体化跑通高强度闭环,再沿
BrowserNode契约收敛。因为接口是不变量,两条路低后悔。
flowchart TB
M0["M0 · 骨架与契约<br/>定 BrowserNode gRPC + 技能包 schema + praxisd 骨架"] --> M1
M1["M1 · 高强度闭环(垂直切片)<br/>T2 nodriver 驱动 + 一致性自检 + 一个真实电商站<br/>explore→crystallize→shadow replay(0Token)"] --> M2
M2["M2 · 自愈与韧性<br/>多模态定位器 + L1/L2/L3 + 回写升版 + skill diff"] --> M3
M3["M3 · 隐身阶梯完备<br/>T0/T1/T3 + 自动选档 + 升级记忆 + 行为合成成熟"] --> M4
M4["M4 · 编排与治理<br/>队列/排程/Vault/观测/审批点/护栏 + 批量与参数模板(11)"] --> M5
M5["M5 · Agent 接口与驱动可插拔<br/>MCP 高/低层工具 + Cognition Port + Cursor/Codex/Claude/openclaw 适配器(10) + 多模态(12)"] --> M6
M6["M6(可选) · 服务化<br/>mTLS gRPC + 多形状一致执行节点 + Postgres/对象存储"]
认知可插拔是横切关注点:Cognition Port 的接口应在 M0 契约里就占位(与 BrowserNode 并列),M1 先用最简单的一个适配器(如 Cursor inbound + 一个 outbound healer)跑通,M5 补齐多适配器。这样 I-6 从第一天就成立,避免后期把 Agent 硬塞回底座。
每个里程碑的验收锚点(对应 00 §5 成功标准):
| 里程碑 | 主要验收 |
|---|---|
| M1 | SC1(NL→完成)、SC2(0 Token 影子回放)、SC3 初步(单站 T2 不被拦)、SC9 雏形(无内置 Agent) |
| M2 | SC7(自愈+回写)、SC2 稳定(换参复用)、SC11(多模态复杂页) |
| M3 | SC3/SC4(多站选档 + 硬目标边界与升级) |
| M4 | SC5(生命周期/恢复)、SC8(护栏/机密/审批)、SC10(批量+模板) |
| M5 | SC6(本 AI 经 MCP 跑通 A/B/C 三旅程)、SC9(多 Agent 驱动 outbound 自愈) |
首个可 Demo 的"闭环"= M1:单一真实电商站,一次探索 → 结晶 → 0 Token 影子回放成功,且 T2 不被拦。建议把 M1 作为"蓝图是否成立"的第一个硬验证。
| # | 风险 | 影响 | 缓解 |
|---|---|---|---|
| R1 | 军备竞赛:检测方持续进化,T2/T3 时效性衰减 | 抗检测能力过期 | 传输可插拔 + 定期重探针 + 关注 nodriver/mochi 上游;把"过哪层"做成可测基准纳入 CI |
| R2 | nodriver AGPL | 未来服务化分发有开源义务 | 本地个人使用无碍;服务化前评估:替换 mochi(MIT)/自研 Go CDP,或履行 AGPL |
| R3 | 自愈成本失控:L2/L3 频发使"0 Token"名不副实 | 经济性受损 | Token 计量守门(05 §6) + 信任分触发重探索 + 强化 L1 多模态定位 |
| R4 | 结晶质量:探索侥幸成功但无法确定性复现 | 技能不可靠 | Trialing 影子回放门禁(07 §8) + 断言强制生成 |
| R5 | 默会知识缺口:参数化/成功判据/排序偏好被 Agent 猜错 | 结果不符预期 | 发布前人类审校点 + 审批点 + 输出 schema 显式化(贯穿) |
| R6 | 合规/ToS:目标站条款或法律边界 | 法律风险 | Site Policy + 硬挑战升级人工 + 责任使用护栏(00 §6) + 部署前合规评估 |
| R7 | 形状一致性破坏:将来服务化用 Linux headless 集群 | 隐身回退 | 强制"每执行节点真实宿主+真实 Chrome+headful"(05 §8) |
| R8 | 视觉定位鲁棒性:视觉锚点跨分辨率/主题漂移 | 兜底失效 | 视觉仅兜底、AX 优先;锚点用相对布局+多模板 |
| R9 | 多语言运维复杂度(Go+Python 驱动) | 本地部署门槛 | 驱动打包为受控子进程/容器;提供 MVP 单语言快路径备选 |
| R10 | Agent 驱动可移植性:各家 Agent 的接口/能力差异大 | 适配器碎片化 | 认知请求厂商无关 + 能力协商裁剪 + 结构化返回(10);新增 Agent 只写一个适配器 |
| R11 | openclaw 等 Agent 的安全风险:历史 CVE、系统级权限 | 主机被攻陷 | 隔离/非特权环境运行、上下文脱敏、写动作审批、全程审计(10 §8) |
| R12 | 批量自愈成本失控:某行反复触发 outbound 自愈 | 批量烧钱 | 每步/每 Run token 预算硬上限 + dry-run + 一次修复全批受益(11 §6) |
| R13 | 批量副作用:写动作类技能批量误执行 | 业务事故 | 业务键去重 + 幂等 + 高风险动作审批 + 部分失败隔离(11) |
开放问题(需你拍板或后续验证):
- O1:起步走"目标架构(Go 核心)"还是"MVP(Python 一体化)"?(我推荐目标架构起步,见 §1.2)
- O2:首个验证站点选哪个(决定 M1 的 T 档与风控强度)?
- O3:是否需要 T3 代理/身份轮换(涉及成本与合规),还是本地单身份先行?
- O4:人类审批点的粒度(仅"下单/支付",还是所有写操作)?
- O5:脱离模式默认 healer 用哪个 Agent 驱动(Codex mcp-server / Claude API / 本地 openclaw)?子 Agent 已定 Fable 5。
- O6:批量默认并发与身份数上限(成本 vs 吞吐 vs 风控)?
| 项 | 初版(受"Node+patchright"约束) | 修订版(目标优先) |
|---|---|---|
| 传输 | 单一 Playwright/patchright 栈 | 可插拔隐身阶梯 T0–T3,高强度用裸 CDP |
| 抗检测天花板 | 未突破第③层 | 高强度档突破第③层(nodriver 系) |
| 语言 | 纯 Node | Go 核心 + 多语言驱动(接口不变量隔离) |
| 心智 | 被用户选项限制 | 从成功标准反推最佳实践 |
| Agent 位置(v2) | 认知面内嵌于底座 | 底座无内置 Agent,经 Cognition Port 可插拔(10) |
| 批量(v2) | 仅提及工作队列 | 参数模板自动生成 + 表格导入批量 0 Token(11) |
| 多模态(v2) | 定位器提及多模态 | 显式多模态感知/融合子系统 + 复杂页面处理册(12) |
- 选型有一手基准支撑,且明确"为何不只用 Playwright"(对应你的纠正)。
- 给出两条落地路径且论证低后悔(接口不变量)。
- 里程碑映射到成功标准,M1 为首个硬验证闭环。
- 风险含军备竞赛/许可/自愈成本/合规/形状一致性并各有缓解。
- 开放问题清单化,交由人类做默会判断。