Codex 校核(2026-10-09) 本页是 2026-06-28 的设计与单次运行记录,不代表当前环境已验证。Google 的 Gemini API 价目表列有部分模型的免费层;API key 与“必须付费”不能等同,免费额度、地区和具体账户可用性仍须分别核对。网页端 Pro / Extended Thinking 的权限也不能从“网页免费”推导。 Chrome for Testing 官方说明将它定位为与正式 Chrome 发布对齐、面向测试且不自动更新的浏览器,并未支持下文“网络栈被裁剪”的断言。VLESS/Reality、浏览器到本地 HTTP/SOCKS 代理、TLS 的故障位置应按实际配置分别验证;原诊断中的协议冲突与 GFW 根因属于当时的推测。Chromium 错误定义中 -100 是 CONNECTION_CLOSED(TCP FIN),不能仅据此断定 SSL 或封锁原因。原记录保留供复盘,不能作为当前部署已跑通的证明。

ziwang-Physics/AgentChat → Hermes Alaya 融入方案

项目概况

来源: https://github.com/ziwang-Physics/AgentChat 定位: Chrome CDP + Playwright 驱动的 Gemini Web 自动化交互系统 + MultiAgent v3 DAG Pipeline Stars: 191 ★ / 34 Forks / 24 Commits (活跃) 语言: Python (daemon) + Node.js (CDP bridge)

可复用的三个层级

Layer 1: Chrome CDP Daemon(基础设施层)

当前对标: Hermes 已有 mcp_vs_* (vibesurfer) + mcp_obscura_* (Obscura) 浏览器操控,但缺少长期 Chrome 生命周期管理。

可借鉴的设计:

  • daemon 模式: Python Playwright launch() + while True: sleep + heartbeat
  • 心跳监控 + 自动重启(MAX_CRASH_RESTARTS=3 策略)
  • 安全 CDP: --remote-debugging-address=${LOCALIP} 仅绑定本地
  • PID 文件放 ~/.local/state/agentchat/(非 /tmp,权限 0600)
  • 启动时清理 SingletonLock/SingletonSocket/SingletonCookie

Hermes 实现思路:

  • cronjob + background terminal 或 systemd —user service
  • 统一 Chrome 实例供多个 skill 共享(参考 _bridge_singleton 模式)

Layer 2: Gemini Web Bridge(单模型使用层)

当前对标: 用 Gemini API 需要付费 + API key。Web 版免费且支持 Pro Extended Thinking。

验证结果:

  • ✅ gemini-cdp-cli.py CLI 工具已验证可工作
  • ✅ CDP insertText → Angular change detection → send button → waitForResponse → extract
  • ✅ 从 Gemini Web 拿到回复
  • ❌ GFW 对 gemini.google.com SSL 有间歇性阻断,需等待恢复

CDP 向 Gemini UI 发送 prompt 的关键点:

  1. Angular 变更检测: 必须 dispatch new Event('input', {bubbles: true, composed: true})
  2. 大文本粘贴: 通过 clipboard API + Ctrl+V(>50KB 时)
  3. 发送按钮 aria-label: "傳送" or "发送" or "Send"
  4. 回复提取: .model-response-text → climb to model-message container → innerText
  5. --headless=new 是新 headless 模式的关键(旧 --headless 触发 Chrome 3 层 fail-safe)

选择器维护(Gemini UI 常更新):

  • 模型选择器: button[aria-label*="Open mode picker"]
  • 当前模式: button[aria-label*="Open mode picker"].textContent
  • 发送按钮: button[aria-label*="傳送"], button[aria-label*="发送"], button[aria-label*="Send"]
  • 停止按钮: button[aria-label*="停止"], button[aria-label*="Stop"]
  • 回复文本: .model-response-text
  • 输入框: .ql-editor, [contenteditable="true"][role="textbox"], rich-textarea

Layer 3: MultiAgent DAG Pipeline(架构层)

最有价值的部分。ziwang-Physics 的 3-Mode DAG 可以直接映射到 Hermes 的多 Agent 体系:

ziwang-Physics                  Hermes Alaya
────────────────────────────────────────────────────
Phase 1: 路由评估               Alaya 判断路由 (直接/分发给 Anchor/Manas)
  ├─ SIMPLE (极罕见)             →  直接回复
  ├─ PARALLEL (默认>90%)         →  delegate_task 并发
  └─ CONSENSUS (分歧时触发)       →  裁决机制

Phase 2: 3 Expert Nodes 并发     Async subagent 并发 (delegate_task)
  ├─ ChatGPT — 工程实践           →  可映射任意模型
  ├─ Kimi — 学术文献              
  └─ Gemini — 推理深度            

Phase 3: 矩阵压缩                Alaya 汇总 共识区/特色区/冲突区

Phase 4: One-Shot Judge         DeepSeek V4 API / Gemini 裁决
  ├─ Independence Check (防共享幻觉)
  ├─ Scoring + Conflict Graph
  ├─ Condorcet 门控
  └─ ∞ 收敛

关键设计决策:

  • Sandwich Prompt: 核心问题 80%, 视角偏移 15%, 交叉覆盖 5%
  • 3 Worker (非 5): 实测 Claude 85% 不可用, Qianwen 非安全场景边际低
  • Early Exit: P2 一致性 ≥ 2/3 且置信 ≥ 0.7 直接返回
  • Condorcet 门控: p<0.5(困难) → 深度思考; p>0.5 → 选择性扩展

中国网络环境的技术攻坚

3 层级联故障 (Chrome 导航失败)

Layer 1: GFW → SSL 握手失败 (net_error -100) Layer 2: 安全组件初始化失败 (Safe Browsing / Component Updater) Layer 3: Fail-safe 阻断所有导航 (DataProtectionNavigationObserver)

关键修复方案

# === 切断 Google 云端依赖链(绝对不可省略)===
--disable-features=OptimizationHints,Translate,HttpsUpgrades
--disable-background-networking
--disable-client-side-phishing-detection
--disable-field-trial-config
--disable-component-update
--disable-sync
 
# === headless 稳定性 ===
--headless=new                   # 必须用新版 headless!
--ozone-platform=headless
--use-angle=swiftshader-webgl
 
# === 代理配置 ===
--proxy-server=http://${LOCALIP}:7895
--proxy-bypass-list=<-loopback>

代理警告

  • 必须用标准 HTTP/SOCKS5 代理
  • ❌ 不要用 VLESS Reality (TLS spoofing 与 Chrome BoringSSL 冲突)
  • ❌ 不要用 Chrome for Testing (CfT) v150 网络栈精简导致 TLS 差异
  • ✅ Playwright Chromium v149+ 的标准构建

当前状态 (2026-06-28)

已验证

  • Chrome CDP daemon 成功启动 (Chrome 148)
  • Gemini 页面成功加载 (当代理正常时)
  • CDP insertText → Angular 事件触发 → 发送 → 提取回复 完整链路
  • CLI 工具 gemini-cdp-cli.py 可用
  • 修复: setup.sh bash bug, daemon UnboundLocalError, URL /u/0→/app, 模型选择器适配

阻塞项

  • GFW 对 gemini.google.com SSL 间歇性阻断(时好时坏)
  • 需要代理正常时才能使用
  • index.js 新 tab 导航仍失败(ERR_CONNECTION_CLOSED)— 改用 Python CDP 方案

待做

  • 将 Chrome daemon 设为 systemd —user service 或 Hermes cronjob
  • 编写 Hermes skill 封装 gemini-cdp-cli.py 调用
  • 实现 MultiAgent DAG 的 Alaya 版(delegate_task 并发 + 裁决)