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.pyCLI 工具已验证可工作 - ✅ CDP insertText → Angular change detection → send button → waitForResponse → extract
- ✅ 从 Gemini Web 拿到回复
- ❌ GFW 对 gemini.google.com SSL 有间歇性阻断,需等待恢复
CDP 向 Gemini UI 发送 prompt 的关键点:
- Angular 变更检测: 必须 dispatch
new Event('input', {bubbles: true, composed: true}) - 大文本粘贴: 通过 clipboard API + Ctrl+V(>50KB 时)
- 发送按钮 aria-label:
"傳送" or "发送" or "Send" - 回复提取:
.model-response-text→ climb tomodel-messagecontainer → innerText --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 并发 + 裁决)