Skip to content

Latest commit

 

History

History
126 lines (100 loc) · 9.4 KB

File metadata and controls

126 lines (100 loc) · 9.4 KB

08 · 路线图 · 技术选型 · 风险

1. 技术选型

本节承接你的纠正——从目标出发选最佳实践,不被初始约束锁死。核心结论:高强度抗检测目标使"Playwright 为控制面"不可作为唯一/最强传输,必须引入裸 CDP 档;语言选择藏在接口后以降低后悔成本。

1.1 传输层选型(决定性依据:2026 基准)

传输 过第③层(自动化协议) 维护/生态 许可 适配档 结论
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)。

1.2 语言/运行时选型

组件 选择 理由 备选
控制面 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
Loading
  • 推荐:直接按目标架构起步——Phase 1 就是"薄 Go 核心 + 一个 Python nodriver 驱动",避免后续大改写。
  • 若要最快见效:先 Python 一体化跑通高强度闭环,再沿 BrowserNode 契约收敛。因为接口是不变量,两条路低后悔。

2. 分期路线图(里程碑)

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/对象存储"]
Loading

认知可插拔是横切关注点: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 作为"蓝图是否成立"的第一个硬验证。


3. 风险与开放问题

# 风险 影响 缓解
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 风控)?

4. 相对初版蓝图的关键修订(因你的纠正而变)

初版(受"Node+patchright"约束) 修订版(目标优先)
传输 单一 Playwright/patchright 栈 可插拔隐身阶梯 T0–T3,高强度用裸 CDP
抗检测天花板 未突破第③层 高强度档突破第③层(nodriver 系)
语言 纯 Node Go 核心 + 多语言驱动(接口不变量隔离)
心智 被用户选项限制 从成功标准反推最佳实践
Agent 位置(v2) 认知面内嵌于底座 底座无内置 Agent,经 Cognition Port 可插拔(10)
批量(v2) 仅提及工作队列 参数模板自动生成 + 表格导入批量 0 Token(11)
多模态(v2) 定位器提及多模态 显式多模态感知/融合子系统 + 复杂页面处理册(12)

验收检查表(本篇)

  • 选型有一手基准支撑,且明确"为何不只用 Playwright"(对应你的纠正)。
  • 给出两条落地路径且论证低后悔(接口不变量)。
  • 里程碑映射到成功标准,M1 为首个硬验证闭环。
  • 风险含军备竞赛/许可/自愈成本/合规/形状一致性并各有缓解。
  • 开放问题清单化,交由人类做默会判断。