通过 chatgpt-web 桥(MCP / REST)把本地 agent 接入 ChatGPT 网页版:网页端当大脑,本地只做传输与执行。 触发:「推进/继续网页端会话」「让网页端设计、本地执行」「协作/对等/共同推进」「对等模式/让两边辩一下/协作评审」「共同协作/本地跑任务它维护模型」「用网页端的资料/只读拉取」「把网页版接进 harness」「conversation_id 续接」「网页版比较聪明所以用它」。 不适用:让网页端直接执行本地 shell/文件操作——桥只承载文本,网页端永远没有本地工具。
71
86%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
| 你说 | 模式 | 本地做什么 |
|---|---|---|
| 「推进网页端 XXX 项目/会话」 | A 推进 | 发「继续」式最小提示往前推;纠偏算在内(只给事实不给方案);判断何时真结束,没结束就不停 |
| 「让网页端 GPT 指挥现在这个项目」 | B 指挥循环 | 它出指令 → 本地执行 → 回帖事实到同一 conv → 直到它说完成 |
| 「协作/对等/共同推进 XX」 | C 协作 | 取长补短:交锋(因模型不同/权限不同有信息差)+ 执行(永远本地,禁止交给网页端) |
| 「用网页端 XXX 的资料/看它怎么说的」 | D 只读 | 只拉取不发送:会话记录、项目文件、记忆——零写操作 |
会话定位:指明 conversation_id/标题就精确命中;没指明 → 按项目名归类(list_conversations + list_projects 匹配);仍不确定 → 先问用户再发,不猜。首轮新会话:用户说了项目就带 project_id(名字即可),没说 = 独立会话。
网页端是大脑,本地是手和邮差。
触发:推进/继续已有网页端会话、网页端设计本地执行的回合制循环、「协作/对等/共同」类取长补短(C 协作模式:交锋+本地执行)、conversation_id 专线续接。
不适用:
安全与验证:所有写操作(新建会话、删除会话)都是真实网页操作;删除类工具需服务端显式 W2A_ENABLE_DESTRUCTIVE=1。本地侧只验证 conversation_id 续接正确、tab 复用正确,不替网页端校验其输出内容的正确性——那是它自己的责任。
网页端永远不会主动发起下一轮——本地收到回帖不等于回合结束。每轮拿到回文后,先对照本模式的终止条件判断;不满足就继续发下一轮,直到终止条件命中或用户叫停。「它回完了」不是停止理由,「终止条件命中」才是。
等回复纪律(2026-09-11 定型,网页端裁决后才收敛的坑):
get_conversation 核实尾部,否则产生重复发送(2026-09-12 实证:被打断的发送已完整落盘)。同理,not_ready / Turn reconciliation failed / generation_stuck 等报错也可能已送达(同日实证:两次 not_ready 报错均落盘,造成同一里程碑重复上报)——任何报错后重发前必须先核实把已有网页任务往前推一格:
继续 / 按你的结论推进 / 下一步这条线判断错了,事实是 X —— 让它自己想修法list_conversations 找目标网页端设计 → 本地执行 → 回帖 → 网页端继续设计:
chat_completion(可带 project_id 让会话落进项目),存下返回的 conversation_id 作为专线用户说「协作/对等/共同」即进入本模式。两个成分缺一不可:
适用前提:token 不缺、本地智力被认可、两边互有知识盲区。任何其他场景回到 A/B。
协议(防坍缩结构,顺序不可省):
proposed → accepted / rejected / deferred / escalated。反驳先 steelman(复述对方论点的最强版本),再给证据反驳;只有新证据能翻案,自信语气不算证据。[OBS] 任务来源|事前预测(若有)|真实结果(保留原文摘录)|知情度标签;需要模型修订时发 [UPDATE-REQUEST]。信封格式(每轮本地发给网页端的消息):
[PEER R{n}] {议题}
我的立场: …
依据: …
对你上轮的反驳: (先复述你的最强版本)…
我可能盲的地方: …
需要你侧的数据: …
待裁决: …(无则省)终止:双方书面确认收敛,或分歧报告交付用户,或用户喊停。只交换一轮不是对等协作——议题未达终态前本地侧必须继续发下一轮。
用途:把网页端已积累的东西当本地输入——会话历史、项目文件、Memory、它的既有结论。零发送、零新会话、零 Memory 写入。
list_conversations / get_conversation / list_projects / get_project_files / get_memories(MCP 走共享 utility 槽,不占会话 tab)get_conversation 返回 {messages:[], total:0} ≠ 会话被锁/被删——桥会把后端 404 conversation_inaccessible 静默映射成空,conversation_id 抄错一位就触发。以 list_conversations 的 id 逐字符为准,或从已打开 tab 的 /c/{id} URL 取127.0.0.1:9222(browser-level flatten attach,不占用桥的 tab),在 chatgpt.com 页内 fetch /api/auth/session 拿 token 后 fetch /backend-api/conversation/{id},看真实 status——区分 404(ID 错) / 429(限流) / mapping 结构变化conversation_id 续接;首轮创建后可省略(同 session 自动续),跨 session 必须显式带project_id(gizmo id 或精确项目名,桥会校验,传错直接报错而不是落错项目);不传 = 独立会话,别指望项目记忆W2A_ENABLE_DESTRUCTIVE=1request_pace_*/W2A_PACE_*)——别写循环猛发绕过它,限流会连累所有通道| 场景 | 通道 | 说明 |
|---|---|---|
| 串行推进会话 | REST POST /v1/chat/completions + conversation_id | daemon 复用会话 tab |
| agent 工具态 | MCP chatgpt-web → stdio chatgpt-web2api-mcp(推荐,harness-bound) | chat_completion + 读工具 |
| 读会话/列项目 | MCP get_conversation / list_* | 走共享 utility 槽,不占会话 tab |
chatgpt-web2api-mcp(随会话生灭,首调自动拉起 Chrome,不用零进程);共享 daemon 才用 SSE :8090<本仓库>/mcp/chatgpt-web-bridge/start.ps1(Chrome 独立进程 + REST :8080 + MCP :8090);venv 在仓库外时由 W2A_VENV 解析chatgpt-web2api ensure(daemon 挂了/重启后跑一次即可,幂等带锁;stdio 模式不需要)http://127.0.0.1:9222/json/listexamples/install-other-devices.md(桥已 vendored 在 mcp/chatgpt-web-bridge/,随本仓库同步)84f8ee2
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.