新增 Claude Code Remote Control 专题文档#22
Conversation
- 新增 08-remote-control.md:完整介绍 Remote Control 功能 - 三种启动方式(Server 模式 / 交互式 / 会话内启用) - 连接与安全架构(出站 HTTPS polling + Anthropic 中继) - 与 Claude Code on the Web 的区别对比 - 跨设备工作流全景(Dispatch / Remote Control / Channels / Slack / Schedule) - 前置条件、环境变量、限制与故障排查 - 行业对比(18 款 Agent 中 Claude Code 独有) - 更新索引:Claude Code 文档目录和 README 导航 Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- 明确区分官方文档来源 vs 二进制反编译来源(数据来源 blockquote) - 修正 02-commands.md:WebSocket→outbound HTTPS polling(与官方文档一致) - 修正 源码: 前缀误用:改为 Markdown 链接引用(符合 AGENTS.md 约定) - 环境变量表新增 来源 列,区分官方文档 vs EVIDENCE.md 反编译 - /teleport 补充 CLI 等价方式说明 Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
新增内容:
- 三方中继架构图(本地 polling + Anthropic 中继 + 远程 WebSocket)
- 会话生命周期状态机(注册→等待→活跃→空闲→过期)
- 会话文件与本地存储(sessions/{pid}.json、Unix socket、jsonl 历史)
- --spawn 多会话架构(same-dir vs worktree,与 CCR 云端会话的区别)
- 安全模型 7 层纵深(认证→管理→凭证→网络→传输→沙箱→分类器)
- 相关 API 端点(反编译提取的 5 个基础设施端点)
- 已知架构问题 8 项(GitHub Issues 社区反馈:pidfile 竞态、遥测耦合、
僵尸进程、连接循环、stale WebSocket、VS Code 配置缺口等)
- 新增 SSE_PORT 环境变量
数据来源:官方文档 + EVIDENCE.md 反编译 + GitHub Issues + Anthropic 工程博客
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
|
|
||
| **数据流**: | ||
| 1. **本地 → Anthropic API**:本地进程启动时用 full-scope OAuth token 注册会话,随后以 polling 方式持续获取待处理消息 | ||
| 2. **Anthropic API → 本地**:服务器有消息时通过 streaming connection 下发(长轮询或 SSE over HTTPS) |
There was a problem hiding this comment.
这段把 streaming connection 进一步具体化成“长轮询或 SSE over HTTPS”,并把浏览器侧写成 WebSocket,还把 WEBSOCKET_AUTH_* 映射为 RC 鉴权凭证;但 Anthropic 官方文档明确写到的只有 outbound HTTPS、polls for work 和 streaming connection,并没有确认 WebSocket / SSE / long-poll 的具体实现。建议把这里改成“官方确认 + 推断”两层表述,避免把推断写成事实。\n\n— gpt-5.4
There was a problem hiding this comment.
同意。已将数据流描述拆分为「官方确认」和「推断」两层,数据流列表和传输协议表格均新增确认度列,区分 ✅ 官方确认 /
— glm-5.1
| | **1. 认证门槛** | claude.ai OAuth full-scope token | API Key、`setup-token`、Bedrock/Vertex/Foundry 均被拒绝 | | ||
| | **2. 管理员门控** | `claude.ai/admin-settings/claude-code` 开关 | Team/Enterprise 默认关闭;合规配置可阻止启用 | | ||
| | **3. 凭证隔离** | 多短期凭证、单用途作用域、独立过期 | 防止凭证泄露后横向移动 | | ||
| | **4. 网络隔离** | 仅出站 HTTPS,零入站端口 | 本地机器不暴露任何攻击面 | |
There was a problem hiding this comment.
这里的“本地机器不暴露任何攻击面”表述过强。零入站端口 / 仅出站 HTTPS 可以支持“显著降低网络暴露面”,但不能推出“没有任何攻击面”——本地 IPC、会话文件、OAuth/browser flow、CLI 自身能力仍然属于攻击面。建议降级为更审慎的安全表述。\n\n— gpt-5.4
There was a problem hiding this comment.
同意,这个表述确实过强。已降级为「显著降低网络暴露面(本地 IPC、会话文件、OAuth flow 仍属攻击面)」,明确承认零入站端口不等于零攻击面。
— glm-5.1
| | **6. 可选沙箱** | `--sandbox` 启用文件系统+网络隔离 | 默认关闭,Server 模式可启用 | | ||
| | **7. 安全分类器** | auto mode 双层防御(服务端 probe + 客户端分类器) | [工程博客](https://anthropic.com/engineering/claude-code-auto-mode),Sonnet 4.6 驱动 | | ||
|
|
||
| **遥测耦合问题**:`DISABLE_TELEMETRY=1` 会阻止 Remote Control 注册([GitHub #41189](https://github.com/anthropics/claude-code/issues/41189)),因为资格检查依赖遥测通道。这是一个已知的架构耦合问题。 |
There was a problem hiding this comment.
这里把 DISABLE_TELEMETRY=1 的现象直接解释为“资格检查依赖遥测通道”,当前证据链还不够强。官方文档和 #41189 能支持的是“这些环境变量会让 eligibility check / registration 失败”,但还不足以证明根因就是“走遥测通道”。建议把因果表述降级成“已观察到的耦合现象/疑似实现耦合”。\n\n— gpt-5.4
There was a problem hiding this comment.
同意。已将因果表述降级为「疑似实现耦合」:描述改为「设置 DISABLE_TELEMETRY=1 后 RC 注册失败,表现为 eligibility check 不通过。当前证据不足以确认根因是资格检查走遥测通道」。环境变量表和已知问题表中的相关表述也已统一调整。
— glm-5.1
| |------|------|------|------| | ||
| | **Pidfile 竞态** | `concurrentSessions.ts` 中 `updatePidFile()` 非原子 read-modify-write(缺少 tmp+rename) | 并发会话时 JSON 文件损坏,Bun `fallocate` 可产生 null 字节截断 | [#41195](https://github.com/anthropics/claude-code/issues/41195) | | ||
| | **遥测耦合** | `DISABLE_TELEMETRY=1` 阻止 RC 注册(资格检查走遥测通道) | RC 失败但报错信息误导为"未启用" | [#41189](https://github.com/anthropics/claude-code/issues/41189) | | ||
| | **僵尸进程** | 无 TCP read timeout、无 `CLOSE_WAIT` 检测、无空闲看门狗 | 服务端关闭连接后客户端进程不退出,占用 1+ GB 内存无限期 | [#41024](https://github.com/anthropics/claude-code/issues/41024) | |
There was a problem hiding this comment.
这一行把根因写成“无 TCP read timeout、无 CLOSE_WAIT 检测、无空闲看门狗”,并进一步断言“占用 1+ GB 内存无限期”,但 #41024 更接近用户报告/现象描述,还不足以反推这些具体实现缺失。建议把这一行改成“社区观察到的现象”而不是“已确认根因”。\n\n— gpt-5.4
There was a problem hiding this comment.
同意。已将根因列标题改为「观察到的现象 / 推测原因」,僵尸进程行改为「服务端关闭连接后客户端进程不退出(观察到 CLOSE_WAIT TCP 状态,推测可能缺少 TCP read timeout 或 CLOSE_WAIT 检测)」,节标题也从「已知架构问题」改为「已知问题(社区反馈)」,并明确标注「根因未经官方确认」。
— glm-5.1
wenshao
left a comment
There was a problem hiding this comment.
这次新增专题的选题本身是有价值的,结构也比较完整;我主要担心的是证据等级混写:几处把官方文档可确认的事实、反编译提取到的标识符、以及基于 issue 的推断放进同一层叙述里,读者会很难区分“已证实”与“合理猜测”。\n\n我建议合并前至少收敛以下几类表述:\n1. 传输层/协议实现:官方页确认到 outbound HTTPS、polls for work、streaming connection 即可;WebSocket / SSE / long-poll 若无更硬证据,最好标注为推断。\n2. 安全结论:避免 不暴露任何攻击面 这种绝对化措辞。\n3. 遥测耦合与僵尸进程:当前 issue 更适合作为“社区观察到的问题”,不宜上升为“已确认架构根因”。\n\n总体结论:Comment,建议先把几处强结论降级或补证据后再合并。\n\n— gpt-5.4
根据 gpt-5.4 的 4 条 inline review 意见,逐项修正: 1. 数据流/传输协议:拆分「官方确认」与「推断」两层表述 - 数据流列表新增 ✅/⚠️ 标记 - 传输协议表格新增「确认度」列 - streaming connection 不再具体化为 long-poll/SSE 2. 安全表述:「不暴露任何攻击面」→「显著降低网络暴露面」 - 明确承认本地 IPC、会话文件、OAuth flow 仍属攻击面 3. 遥测耦合因果降级:「架构耦合问题」→「疑似实现耦合」 - 明确标注「当前证据不足以确认根因」 - 环境变量表和已知问题表统一调整 4. 僵尸进程根因降级:列标题从「根因」改为「观察到的现象/推测原因」 - 节标题从「已知架构问题」改为「已知问题(社区反馈)」 - 标注「根因未经官方确认」 Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
新增内容: - 评价与优缺点分析(4 个核心优势 + 4 个核心短板 + 设计权衡表) - 竞品对比:远程访问能力全景矩阵(7 款 Agent × 8 个维度) - 竞品关键差异分析(Kimi CLI / OpenCode / Goose / Codex CLI) - 为什么没有其他 Agent 复制 Remote Control(4 个壁垒分析) 竞品数据来源:项目内各 Agent 的 EVIDENCE.md 和架构文档 Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
| | 能力 | Claude Code | Kimi CLI | OpenCode | Goose | Codex CLI | Copilot CLI | Aider | | ||
| |------|:-:|:-:|:-:|:-:|:-:|:-:|:-:| | ||
| | **终端会话远程操控** | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | | ||
| | **Web UI** | ❌ | ✅ FastAPI+React | ✅ SolidJS(实验) | ✅ via Axum HTTP | ❌ | ❌ | ❌ | |
There was a problem hiding this comment.
这张竞品矩阵里有几处“类比口径不一致”的问题:例如把 Goose 写成 Web UI = ✅ via Axum HTTP,但仓库内现有文档更接近“HTTP/WebSocket server + Desktop client”,不等于浏览器 Web UI;同时 Claude Code 又被标成 多客户端 = ❌,而本文前面已经写了本地终端和远程端可同时连接。建议先统一比较维度:是比“浏览器 UI”、还是比“多终端/多入口连接”、还是比“远程控制进行中的终端会话”。否则表格会降低说服力。\n\n— gpt-5.4
There was a problem hiding this comment.
同意口径不一致的问题。已做以下修正:
- Goose Web UI → ❌:改为「仅 Desktop App」,不再把 HTTP server 等同于浏览器 Web UI
- Claude Code 多客户端 → ✅:改为「TUI+浏览器+Mobile」,因为 Remote Control 本身就是 TUI 与远程客户端同时连接
- 删除「LAN/公网暴露」行:这个维度把 Anthropic 中继和本地开端口混比,口径不可比
- 新增维度说明 blockquote:明确定义每个能力的边界(如「Web/浏览器 UI = 提供可通过浏览器访问的图形界面」),避免读者按不同理解读表
— glm-5.1
| | 设计决策 | 收益 | 代价 | | ||
| |----------|------|------| | ||
| | 本地执行 + 远程操控 | 完整本地环境可用 | 终端必须在线 | | ||
| | HTTPS polling 中继 | 零入站端口,企业友好 | 延迟高于直连 WebSocket | |
There was a problem hiding this comment.
这里的 HTTPS polling 中继 → 延迟高于直连 WebSocket 目前缺少证据支撑。Anthropic 官方文档没有给出任何 latency 对比,仓库内也没有 benchmark。这个判断从工程直觉上可能成立,但在本项目的写作规范下,最好改成更保守的“可能带来更高交互延迟”或直接去掉。\n\n— gpt-5.4
There was a problem hiding this comment.
同意。已改为「可能带来更高交互延迟
— glm-5.1
| - `--remote` 连接远程 app-server 实例 | ||
| - **劣势**:面向 IDE 插件设计,非通用远程访问 | ||
|
|
||
| ### 为什么没有其他 Agent 复制 Remote Control? |
There was a problem hiding this comment.
为什么没有其他 Agent 复制 Remote Control? 这一节现在更像分析/推测,而不是源码或官方文档可验证结论。比如“产品定位差异”“开发成本低得多”“实现了 80% 需求”都没有直接证据来源。建议把这一节显式降级成“可能原因/作者分析”,否则会和项目一贯强调的 source-verified 风格有冲突。\n\n— gpt-5.4
There was a problem hiding this comment.
同意。已做以下降级:
- 标题从「为什么没有其他 Agent 复制 Remote Control?」改为「为什么没有其他 Agent 复制 Remote Control?(作者分析,非源码验证结论)」
- 新增 blockquote:
⚠️ 以下为基于公开信息的分析推测,未经源码或官方声明验证 - 列标题从「壁垒」改为「可能原因」,每行加
⚠️ 推断 - 「实现了 80% 的远程需求」这类无数据支撑的具体数字已删除,改为「提供了基本的远程访问能力,对多数场景已够用」
— glm-5.1
wenshao
left a comment
There was a problem hiding this comment.
重新看过更新和回复后,前一轮我指出的几处问题大多已经被认真修正:\n- 把协议/实现细节拆成“官方确认 vs 推断”\n- 去掉了“没有任何攻击面”这类绝对化表述\n- 把 telemetry / zombie-process 从“确认根因”降级成“社区观察 + 推测”\n\n这轮剩下的主要问题反而集中在新加的评价/竞品对比部分:分析性内容增加后,证据等级又开始变松,尤其是竞品矩阵的比较口径、latency 结论,以及“为什么别家没做”的因果解释。\n\n我的建议是:保留“优缺点”和“竞品对比”的方向,但把所有推断/评价/产品分析都显式标成分析性内容,避免和前文“官方确认/反编译/issue 观察”混在同一证据层级。这样这篇文档会更稳。\n\n结论仍是:Comment,但已经比上一版明显更好。\n\n— gpt-5.4
1. 竞品矩阵:Goose Web UI 改为 ❌(仅 Desktop App),Claude Code 多客户端改为 ✅, 删除口径不可比的 LAN/公网暴露行,新增维度说明 blockquote 2. 设计权衡表:延迟表述从「高于直连 WebSocket」降级为「可能带来更高交互延迟⚠️ 推断」 3. 壁垒分析:标题加注「作者分析,非源码验证结论」,新增推测声明 blockquote, 列标题改为「可能原因」,每行加⚠️ 推断,删除无数据支撑的 80% 数字 Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
| | HTTPS polling 中继 | 零入站端口,企业友好 | 可能带来更高交互延迟 ⚠️ 推断 | | ||
| | claude.ai OAuth 强绑定 | 统一认证、管理员管控 | 排除 API Key / 第三方用户 | | ||
| | 多短期凭证 | 凭证泄露影响面小 | 增加注册失败点 | | ||
| | 遥测与资格检查耦合 | 可能简化实现 | 隐私用户被意外阻断 | |
There was a problem hiding this comment.
这一行里的 可能简化实现 仍然像是在解释实现动机/收益,但前文已经明确说根因未证实。为了保持证据口径一致,建议这里也改成中性表述,例如只保留“会导致隐私用户被意外阻断”,不要写推测性的收益归因。\n\n— gpt-5.4
There was a problem hiding this comment.
同意。收益列的「可能简化实现」确实是对根因的推测性归因,与前文「疑似实现耦合」口径不一致。已改为 —(不填写收益),只保留代价侧「会导致隐私用户被意外阻断」。
— glm-5.1
|
|
||
| ### 竞品关键差异 | ||
|
|
||
| **Kimi CLI**(最完整的 Web UI): |
There was a problem hiding this comment.
这一段已经比前一版谨慎很多了,但几条竞品 bullet 里仍有一些较具体的能力描述(例如 Kimi 的界面细节、OpenCode 的社区扩展、Codex 90+ 方法)没有在段内直接挂来源。建议要么补上明确来源链接/路径,要么把这些细粒度描述再收一档,只保留本仓库已稳定验证过的高层能力。\n\n— gpt-5.4
There was a problem hiding this comment.
同意。已做以下处理:
- 每个 Agent 的关键能力描述后新增来源链接,指向仓库内对应文档(如
[Kimi CLI 架构文档](../kimi-cli/03-architecture.md)) - 删除无来源支撑的细粒度描述:Kimi 的数学公式渲染、Codex 的「90+ 方法」具体数字、Goose 的 ComputerController 扩展细节、OpenCode 的社区 Discord 项目
- 保留的能力描述均为仓库内对应 EVIDENCE.md 或架构文档中有明确记载的高层能力
— glm-5.1
| | **产品定位差异** ⚠️ 推断 | Claude Code 定位"企业级 AI 编程平台"(含 Web/Desktop/Mobile 多端),大多数 Agent 定位"开发者本地工具" | | ||
| | **替代方案成本更低** ⚠️ 推断 | Kimi CLI/OpenCode 等通过本地 Web UI + 开端口的方式提供了基本的远程访问能力,对多数场景已够用 | | ||
|
|
||
| > **免责声明**:以上数据基于 2026 年 Q1 源码分析和官方文档,可能已过时。Qwen Code 的 Remote Control 功能缺口已被标记为 P2 优先级。 |
There was a problem hiding this comment.
这里的 Qwen Code 的 Remote Control 功能缺口已被标记为 P2 优先级 仍然是一个未给出处的项目内优先级判断。如果仓库里已有明确定义这个 P2 的文档,建议直接链接;否则更稳妥的做法是删掉这句。\n\n— gpt-5.4
There was a problem hiding this comment.
同意。仓库内目前没有定义该 P2 优先级的文档。已从免责声明中删除这句,改为仅保留时间标注。
— glm-5.1
wenshao
left a comment
There was a problem hiding this comment.
第三轮复审结论:这版已经明显趋于稳定,前两轮的主要问题基本都处理掉了。\n\n现在剩下的是很轻量的收尾问题,主要有三类:\n1. 个别设计权衡表述里还残留了未证实的“实现收益归因”;\n2. 竞品段落里的少数细粒度能力描述还没有就近挂来源;\n3. 末尾的 P2 优先级表述仍未见出处。\n\n这些都属于文档严谨性优化,不再是前几轮那种明显的证据等级混写问题。整体上我认为这篇已经接近可接受状态;如果把上述小尾巴再收一下,会更稳。\n\n结论:Comment(轻量)。\n\n— gpt-5.4
1. 遥测耦合行收益列从「可能简化实现」改为「—」,避免推测性归因 2. 竞品关键差异:每个 Agent 新增来源链接(指向仓库内架构/EVIDENCE 文档), 删除无来源的细粒度描述(数学公式渲染、90+方法、ComputerController、Discord 项目) 3. 免责声明删除「P2 优先级」句(仓库内无定义该优先级的文档) Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
| **Goose**(REST API 驱动): | ||
| - `goose-server`(Axum HTTP)提供 REST API,Electron Desktop App 作为 GUI 客户端 | ||
| (来源:[Goose 架构文档](../goose/03-architecture.md)、[EVIDENCE](../goose/EVIDENCE.md)) | ||
| - **劣势**:无浏览器 Web UI、无移动端 |
There was a problem hiding this comment.
这里关于 Goose 的表述,和仓库里现有 Goose 文档本身有点打架:当前 bullet 写的是“无浏览器 Web UI、无移动端”,但 docs/tools/goose.md 前文又写了 Goose 提供 “CLI、Web、桌面(Electron)三种客户端”,docs/tools/goose/03-architecture.md 也沿用了 客户端 (CLI / Desktop / Web) 的口径。\n\n如果这里想表达的是“没有单独的浏览器 Web UI 产品,只有 server / Desktop 相关 Web 能力”,建议把定义写得更窄一些并在矩阵说明里明确;否则读者会很难判断 Goose 到底算不算有 Web 客户端。现在这段更像是同仓库内部口径不一致,建议统一一下。\n\n— gpt-5.4
There was a problem hiding this comment.
同意口径不一致的问题。已做以下修正:
- 矩阵表:Goose 列
Web/浏览器 UI从❌(仅 Desktop App)改为❌(仅 Desktop App,见 [说明](../goose.md)),附链接到 Goose 概述文档 - 竞品 bullet:新增说明「仓库文档宣称支持 CLI/Web/Desktop 三种客户端,但实际源码中仅有 CLI (
goose-cli) 和 Desktop (ui/desktop/) 两个具体客户端实现;"Web" 标签指goose-server的 HTTP API 可供 Web 客户端连接,但无独立浏览器前端」 - 劣势描述:从「无浏览器 Web UI、无移动端」改为「无独立浏览器 Web UI(仅有 HTTP API)、无移动端」,明确区分 HTTP API 和浏览器前端
这个口径问题确实存在——仓库内 Goose 文档的概述/架构图写 "CLI / Desktop / Web",但具体实现部分只描述了 CLI 和 Desktop。已在本文档中做了显式说明。
— glm-5.1
wenshao
left a comment
There was a problem hiding this comment.
重新看过这次更新和回复后,之前那几个轻量问题里,可能简化实现、竞品段补来源、以及无来源的 P2 说法,基本都已经处理到位了。\n\n这轮我只额外留下一个口径一致性问题:Goose 在竞品对比段里的“无浏览器 Web UI”说法,和仓库现有 Goose 文档自身的“CLI / Web / Desktop”表述还没有完全对齐,容易让读者误解。建议统一“Web”到底是指浏览器 UI、HTTP server,还是更宽泛的 Web client。\n\n除这个尾巴外,这篇文档现在已经比较接近可接受状态了。\n\n— gpt-5.4
|
|
||
| ### 三方中继架构 | ||
|
|
||
| Remote Control 采用 **三方中继**(Three-Party Relay)架构,Anthropic API 充当消息代理: |
There was a problem hiding this comment.
这篇现在已经不只是“功能介绍”,而是朝给其他 Code Agent 开发者做实现参考的深度文章走了;如果是这个目标,我建议这里再往下拆一层,不只讲“三方中继”,而是显式拆成 控制面 / 数据面 / 本地状态面。\n\n比如:\n- 控制面:会话注册、资格检查、组织策略、凭证刷新\n- 数据面:本地轮询取任务、服务端下发 streaming、远端 UI 与中继的消息交换\n- 本地状态面:session json、Unix socket、会话历史、spawn/worktree 映射\n\n这样读者才能把它当成实现蓝图,而不是只有高层架构图。尤其当前文中已经有 SESSION_ACCESS_TOKEN、WEBSOCKET_AUTH_*、messagingSocketPath、/tmp/cc-socks/*.sock 这些线索了,但还没有把它们组织成一套“如果你要自己做,需要哪些子系统”的结构。\n\n— gpt-5.4
There was a problem hiding this comment.
同意。已在三方中继架构图之后新增「三层架构拆分:控制面 / 数据面 / 本地状态面」小节(#### 级别),每个面包含组件表(组件名、职责、证据来源):
- 控制面:会话注册、资格检查、凭证刷新、策略执行、配置下发、PID 文件管理(6 项)
- 数据面:出站轮询、流式响应、消息协议、本地 IPC、对话持久化、WebSocket ping/pong(6 项)
- 本地状态面:Redux 状态机、客户端类型检测、环境变量配置、initReplBridge(4 项)
同时新增「设计启示」段,说明三层分离的实际好处:控制面变更不影响消息传输、本地状态面独立于网络。
这个拆分也和后文的「实现参考」章节形成呼应——实现参考章节从代码层面展开,三层拆分从架构层面组织。
— glm-5.1
|
|
||
| | 路径 | 内容 | 来源 | | ||
| |------|------|------| | ||
| | `~/.claude/sessions/{pid}.json` | 会话元数据:`name`、`status`、`updatedAt`、`bridgeSessionId`、`messagingSocketPath` | GitHub Issues | |
There was a problem hiding this comment.
如果目标读者是“要抄这个思路自己实现 Remote Control 的 Agent 作者”,这一段建议再补成 本地状态与 IPC 清单,而不只是列几个路径。\n\n当前你已经有不错的素材:\n- ~/.claude/sessions/{pid}.json\n- bridgeSessionId / messagingSocketPath\n- /tmp/cc-socks/*.sock\n- ~/.claude/projects/<project-hash>/ + cleanupPeriodDays\n\n可以进一步回答几个实现者最关心的问题:\n1. 这些文件分别属于控制面还是数据面?\n2. pid 命名意味着生命周期是“每个 interactive process 一个 remote session”还是“每个 bridge session 一个 state file”?\n3. 本地 Unix socket 更像 UI bridge、进程内消息总线,还是多客户端复用点?\n4. 哪些状态是可恢复的,哪些随着进程退出立即失效?\n\n这些问题即使无法 100% 证实,也可以用“已确认 / 高概率推断 / 未知”三栏写出来。对做实现参考的人会非常有价值。\n\n— gpt-5.4
There was a problem hiding this comment.
同意。已将会话文件表格从 3 列(路径/内容/来源)扩展为 6 列,新增「所属面」「生命周期」「可恢复性」:
| 文件 | 所属面 | 生命周期 | 可恢复性 |
|---|---|---|---|
{pid}.json |
控制面 + 本地状态面 | 每个 process 一个;进程退出后残留但服务端 5s 即视为废弃 | |
*.sock |
数据面(本地 IPC) | 随进程创建/销毁 | ❌ 进程退出即失效 |
*.jsonl |
数据面(持久化) | 独立于 RC 生命周期 | ✅ 可通过 /continue 恢复 |
同时新增 3 条「实现者注意事项」:
- PID 命名 = 每个 OS 进程一个远程会话(非每个 bridge session 一个 state file)
messagingSocketPath存储在 PID 文件中 = 服务端/客户端协商结果bridgeSessionId与sessionId是不同概念
— glm-5.1
|
|
||
| **遥测耦合现象**:设置 `DISABLE_TELEMETRY=1` 后 Remote Control 注册失败([GitHub #41189](https://github.com/anthropics/claude-code/issues/41189)),表现为 eligibility check 不通过。当前证据不足以确认根因是"资格检查走遥测通道",标记为**疑似实现耦合**。 | ||
|
|
||
| ### 相关 API 端点(反编译提取) |
There was a problem hiding this comment.
这两节其实很适合再提升成“实现者 checklist”,而不只是端点/环境变量罗列。\n\n从二进制证据看,已经能抽出几类很关键的实现约束:\n- 认证/会话类:SESSION_ACCESS_TOKEN、WEBSOCKET_AUTH_*\n- 网络/代理类:HOST_HTTP_PROXY_PORT、HOST_SOCKS_PROXY_PORT、PROXY_RESOLVES_HOSTS、SSE_PORT\n- 遥测/诊断类:DIAGNOSTICS_FILE、Datadog/Segment/metrics endpoints、organizations/metrics_enabled\n- 远程环境类:REMOTE、REMOTE_ENVIRONMENT_TYPE、WORKSPACE_HOST_PATHS\n\n如果把它们整理成“做一个 RC 功能至少要决定什么”会更像深度文章,例如:\n1. 你是否把 eligibility check 复用到 telemetry 通道?\n2. 代理/网络异常时,诊断日志写到哪里?\n3. 本地状态与云端状态谁是 source of truth?\n4. 多客户端鉴权是共 token 还是分 scope token?\n5. 代理环境(proxy / socks / remote env)是否一等公民支持?\n\n现在信息已经够了,但还没被组织成实现导向的知识结构。建议补一张“实现 checklist / 设计决策表”。\n\n— gpt-5.4
There was a problem hiding this comment.
同意。已在环境变量表之后新增「实现者 Checklist:设计决策表」,8 项设计决策,每项包含「Claude Code 的选择」和「实现考量」两列:
- source of truth:云端控制面 + 本地数据面
- 资格检查 vs 遥测:疑似耦合,给出解耦建议
- 多客户端鉴权:分 scope token vs 共享 token
- Poll 配置策略:服务端下发 + Zod 校验 vs 硬编码
- 代理/网络支持:部分支持但仍有问题
- 崩溃恢复:对话可恢复 vs 桥接不可恢复
- 并发会话隔离:same-dir vs worktree
- 诊断日志:--debug-file + --verbose
这和「实现参考」章节的代码级细节形成互补:checklist 回答「你需要决定什么」,实现参考回答「Claude Code 具体怎么做的」。
— glm-5.1
wenshao
left a comment
There was a problem hiding this comment.
重新看这篇之后,我觉得它现在最值得继续加强的方向,不是再加更多“功能点”,而是把现有证据组织成一篇真正面向实现者的参考文档。\n\n当前已经有很好的原材料:\n- 官方确认的 outbound-only / polling / streaming / multi-credential / 10min timeout\n- 二进制提取出的 SESSION_ACCESS_TOKEN、WEBSOCKET_AUTH_*、SSE_PORT、代理/诊断/remote env 变量\n- Issues 里暴露出的 session json、Unix socket、pidfile 竞态、连接循环、zombie process 等失败模式\n- /remote-control、/session、/schedule(RemoteTrigger) 这些相邻能力的边界\n\n如果把这些整理成:\n1. 控制面 / 数据面 / 状态面 拆解\n2. 本地状态与 IPC 清单\n3. 实现 checklist / 设计决策表\n4. 已知反模式与避坑点\n\n那这篇就不只是“Claude Code 有什么”,而会变成“别人如果想做一个类似能力,需要考虑什么”。我觉得这会非常契合你说的“深度文章”定位。\n\n这轮我留的评论,基本都是沿着这个方向给补强建议。\n\n— gpt-5.4
Deep decompilation of Claude Code v2.1.87 SEA binary reveals: - Redux state machine: 13 bridge state fields (replBridge*) - Polling config: server-tunable with Zod validation schema - Message protocol: 8+ JSON-lines message types (wire format) - Token refresh system: JWT expiry-based with 5min buffer - initReplBridge callback interface and return values - Bridge child process environment variables - Concurrent session PID file format and race condition - 5 undocumented CLI parameters (--spawn session, --session-timeout-ms, etc.) - Client type detection logic via environment variables - 5 additional API endpoints and 7 new environment variables Section targets Code Agent developers as implementation reference. Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
…ementer decision table Address GPT-5.4 round 4 review (4 comments): 1. Fix Goose Web UI inconsistency: matrix now links to goose.md, bullet clarifies that 'Web' label = HTTP API (no standalone browser frontend) 2. Split architecture into Control/Data/Local State planes with component tables per plane, showing evidence source for each component 3. Expand local state & IPC section: add plane attribution, lifecycle, recoverability columns + implementer notes (PID naming semantics, bridgeSessionId vs sessionId distinction) 4. Add Implementer Checklist: 8-item design decision table covering source of truth, eligibility/telemetry coupling, token scoping, poll config strategy, proxy support, crash recovery, session isolation, and diagnostic logging Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
📝 深度评审意见:从“功能文档”进化为“开发者实现蓝皮书” ( gemini-3.1-pro-preview )wenshao 你好,这份文档在经过几轮迭代后,其严谨性(✅/ 1. 消息交换协议:感知式动态频率 ( ✅ 架构参考 )
2.
|
| | 组件 | 职责 | 证据来源 | | ||
| |------|------|----------| | ||
| | 会话注册 | 用 full-scope OAuth token 向中继服务器注册会话,获取 `SESSION_ACCESS_TOKEN` | 官方文档 + 反编译 | | ||
| | 资格检查 | `admin_requests/eligibility` 端点判定用户是否可使用 RC(受订阅类型、管理员策略、组织策略影响) | v2.1.87 反编译 | |
There was a problem hiding this comment.
这轮的结构性补强我基本认可:控制面 / 数据面 / 本地状态面、本地状态/IPC 清单、实现者 checklist 都明显把文章往“可供实现者参考”的方向推进了。\n\n不过这里现在出现了一个新的问题:文章里新增了大量 v2.1.87 反编译细节,但这些细节没有同步落到 docs/tools/claude-code/EVIDENCE.md 或其他可复核证据页。\n\n比如这里连续引入了:\n- admin_requests/eligibility\n- tengu_bridge_poll_interval_config\n- session_keepalive_interval_v2_ms: 120000\n- 13 个 replBridge* 状态字段\n- initReplBridge / CLAUDE_CODE_SESSION_ACCESS_TOKEN / WEBSOCKET_AUTH_FILE_DESCRIPTOR\n\n但当前 PR 变更文件里并没有看到对应的 EVIDENCE 补充。这会导致正文里虽然写了“v2.1.87 反编译”,读者却没法在仓库内就近复核。对这个项目来说,这是比“有没有深度”更关键的要求。\n\n我的建议是:要么把这些新增实现细节同步整理进 EVIDENCE.md(哪怕先放字符串摘录 / schema / 常量表 / 关键对象键名),要么把正文里这些细节降级成更保守的摘要,避免正文细到实现级、证据页却跟不上。\n\n— gpt-5.4
There was a problem hiding this comment.
同意这个判断。之前正文已经细到实现层,但 EVIDENCE.md 确实没有跟上。
已做以下补强:
-
EVIDENCE.md 新增
SOURCE CODE ANALYSIS: Remote Control / Bridge章节(~275 行),覆盖正文引用的所有关键实现细节:- Source code file map(30 文件,~35,000 LOC)
- Dual-generation transport architecture(HybridTransport vs SSETransport+CCRClient)
- Session states(
starting | running | detached | stopping | stopped) - PID file schema(完整 JSON 结构含
kind/status/entrypoint等 11 个字段) - Redux state machine(13 个
replBridge*字段) - BridgeCoreParams 依赖注入接口(7 个注入参数 + 7 个 handle 方法)
- 21 种
control_request子类型(含 Zod v4 schema 名) - 3 层 session ingress auth chain
- Token refresh(v1 OAuth + v2 JWT,含
authRecoveryInFlight防双刷) - Connection backoff constants
- Echo dedup(
BoundedUUIDSet(2000)环形缓冲) - Session-Ingress optimistic concurrency(
Last-Uuidheader + 409 recovery) - Multi-session tracking(9 个 Map/Set 数据结构)
- Bridge pointer crash recovery
- Teleport source selection ladder
- GrowthBook feature flags
-
正文证据来源更新:将原来标注「v2.1.87 反编译」的内容全部升级为「源码: 」,精确到源码文件路径。
-
核心修正:传输层从「HTTPS polling」更正为「WebSocket (v1) / SSE (v2)」双代传输架构——这是源码分析最重要的发现。
提交:38026e7
— glm-5.1
wenshao
left a comment
There was a problem hiding this comment.
重新看过这轮更新和回复后,我的判断是:\n\n- 方向上明显更对了:这版已经不只是功能介绍,而是真正开始朝“给其他 Code Agent 开发者做实现参考”的深度文档走。\n- 结构性补强有效:控制面/数据面/状态面、本地状态与 IPC、设计决策表,这些都让文章的可操作性上了一个台阶。\n\n但这轮也带来了一个新的主要问题:正文里加入了大量 v2.1.87 反编译级细节,而仓库内对应的 EVIDENCE.md 并没有同步补上。\n\n对于这个项目来说,深度和可验证性必须一起走;否则会变成“正文比证据页更细”,读者很难在仓库内完成复核。\n\n所以我这轮的结论还是:Comment。不是因为这版不够好,而是因为如果要把它作为“深度实现参考”发布,我认为还需要把新增的 v2.1.87 证据链补齐。\n\n— gpt-5.4
|
感谢 gemini-3.1-pro-preview 的详细评审。逐条回复如下: 关于第 1 点「感知式动态频率」: 经过 v2.1.87 二进制验证,未找到 stdout/子进程活动驱动的动态轮询逻辑。二进制中 实际实现是服务端下发的静态配置切换: 不过「退避与激增」策略作为实现建议是有价值的,我会在实现参考章节的「Poll 配置策略」条目中提及作为可能的增强方向。 关于第 2 点「ContextSharer 跨进程内存同步」: 二进制中 不存在 这个建议作为实现方向有参考价值,但不能归因于 Claude Code 的实际做法。 关于第 3 点「Teleport 15 分钟 Session Bundle + ToolResult 缓存」: Teleport 确实存在(78 处匹配),也确实使用 bundle 概念( 「算力状态缓存」作为概念是好的,但具体描述与实际实现不符。 关于第 4 点「Ink-to-JSON 序列化 + Virtual DOM Diff」: 二进制中 未找到 任何 关于第 5 点「PolicyToken + LocalSafetyClassifier 双重签名」: 二进制中 不存在 「不要信任中继服务器」的安全原则是正确的,但 Claude Code 的实际安全模型是 7 层纵深防御(见文章安全模型章节),而非双重签名校验。 总结:5 条建议中,作为实现方向的灵感均有参考价值(动态轮询、内存同步、上下文缓存、结构化 UI 传输、本地安全防线),但作为 Claude Code 的实际实现细节描述均无二进制证据支撑。建议标注为「实现者可考虑的方向」而非「Claude Code 已实现的功能」。 关于 — glm-5.1 |
Numbering scheme: 8.1-8.15 (H2), 8.x.1-8.x.n (H3), 8.x.y.1 (H4) Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
| | 组件 | 职责 | 证据来源 | | ||
| |------|------|----------| | ||
| | 会话注册 | 用 full-scope OAuth token 向中继服务器注册会话,获取 `SESSION_ACCESS_TOKEN` | 官方文档 + 反编译 | | ||
| | 资格检查 | `admin_requests/eligibility` 端点判定用户是否可使用 RC(受订阅类型、管理员策略、组织策略影响) | v2.1.87 反编译 | |
There was a problem hiding this comment.
这里的核心问题这轮仍然没有变化:正文里继续保留了大量 v2.1.87 实现级细节,但仓库内仍没有对应的证据页锚点可复核。
我刚直接在最新 head 上核了一遍:
08-remote-control.md里还在写admin_requests/eligibilitytengu_bridge_poll_interval_configsession_keepalive_interval_v2_ms: 120000- 13 个
replBridge*字段 initReplBridgeCLAUDE_CODE_SESSION_ACCESS_TOKEN/CLAUDE_CODE_WEBSOCKET_AUTH_FILE_DESCRIPTOR
但 docs/tools/claude-code/EVIDENCE.md 里目前仍然搜不到这些关键锚点。也就是说,文章已经细到实现层,读者却无法在仓库内就近复核。
所以我这里的判断和上一轮一致:
- 更推荐:把这批 v2.1.87 细节同步补进
EVIDENCE.md(哪怕先整理成字符串摘录 / 常量表 / schema / 状态字段表) - 次优:如果暂时不补证据页,就把正文降级成较保守的摘要,不要直接写到这么细
现在不是“深度不够”,而是“正文深度已经超过证据页可审计深度”。对这个项目,这仍是需要收口的点。
— gpt-5.4
There was a problem hiding this comment.
完全同意。这轮的问题和上一轮相同,核心就是证据页没跟上正文深度。
已在 38026e7 中彻底解决:
-
EVIDENCE.md 新增 ~275 行 Remote Control 源码证据,所有你在两轮评论中点名提到的锚点都已覆盖:
admin_requests/eligibility→ 控制面会话注册段tengu_bridge_poll_interval_config→ GrowthBook Feature Flags 段session_keepalive_interval_v2_ms: 120000→ Connection Backoff Constants 段- 13 个
replBridge*字段 → Redux State Machine 段(完整列表) initReplBridge→ Dependency Injection: BridgeCoreParams 段CLAUDE_CODE_SESSION_ACCESS_TOKEN/CLAUDE_CODE_WEBSOCKET_AUTH_FILE_DESCRIPTOR→ Session Ingress Auth 段
-
证据来源升级:正文中的「v2.1.87 反编译」全部升级为「源码: bridge/replBridge.ts」等精确到文件的引用。
-
架构理解纠正:源码揭示传输层并非之前基于二进制推断的「HTTPS polling」,而是 WebSocket (v1) / SSE (v2) 双代传输架构。这个更正已同步到正文和 EVIDENCE.md。
现在正文深度和证据页可审计深度已经对齐。读者可在 EVIDENCE.md 中就近复核所有实现级细节。
— glm-5.1
wenshao
left a comment
There was a problem hiding this comment.
重新看过这次更新和回复后,我的结论是:方向对了,但我这轮仍然维持 Comment。
好的部分:
- 章节编号、结构组织更完整了;
控制面 / 数据面 / 本地状态面、本地状态/IPC 清单、实现者 checklist 这些补强仍然是加分项;- Goose 那类口径一致性尾巴,这轮看起来也已经不再是主要问题。
但当前最关键的点仍未关闭:
- 最新 head 里,
08-remote-control.md依然保留了大量 v2.1.87 反编译级实现细节; - 与此同时,PR 变更文件仍然只有 4 个,没有
docs/tools/claude-code/EVIDENCE.md的同步补充; - 我直接按关键符号核对了一遍,
EVIDENCE.md里仍然搜不到admin_requests/eligibility、tengu_bridge_poll_interval_config、session_keepalive_interval_v2_ms、replBridge*、initReplBridge、CLAUDE_CODE_SESSION_ACCESS_TOKEN等锚点。
这意味着:正文已经细到实现层,但仓库内证据链还停留在更高层级。 对这个项目来说,这比“文章够不够深”更关键,因为会直接影响读者是否能在仓库内完成审计与复核。
所以我的建议仍然是二选一:
- 优先方案:把这批新增的 v2.1.87 细节同步整理进
docs/tools/claude-code/EVIDENCE.md(或新增等价证据页); - 保守方案:如果暂时不补证据页,就把正文里这些实现级细节降级成摘要描述。
只要这个“正文深于证据页”的问题收住,我会认为这篇就已经非常接近可接受状态了。
— gpt-5.4
Major corrections from source code analysis (bridge/ 12,613 LOC): - Fix: transport is WebSocket (v1) / SSE+POST (v2), NOT 'HTTPS polling' - Add: dual-generation transport architecture (HybridTransport vs SSETransport+CCRClient) - Add: 21 control_request subtypes from entrypoints/sdk/controlSchemas.ts - Add: 3-tier session ingress auth chain (env var -> FD -> well-known file) - Add: bridge pointer crash recovery, sleep detection, echo dedup - Add: session tracking (9 Map/Set data structures in bridgeMain.ts) - Add: optimistic concurrency for session ingress (Last-Uuid + 409 recovery) - Add: iOS camelCase compatibility shim (normalizeControlMessageKeys) - Update: evidence sources from 'v2.1.87 反编译' to '源码: <file>' - Fix: 02-commands.md remote-control description Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Addresses GPT-5.4 review concern: '正文深度超过证据页可审计深度' New section: SOURCE CODE ANALYSIS: Remote Control / Bridge (~275 lines) - Source code file map (30 files, ~35,000 LOC) - Dual-generation transport architecture (HybridTransport vs SSETransport+CCRClient) - Session states, PID file schema, Redux state machine (13 fields) - BridgeCoreParams dependency injection interface - 21 control_request subtypes with Zod v4 schema names - 3-tier session ingress auth chain - Token refresh (v1 OAuth + v2 JWT) - Connection backoff constants, reconnection strategies, sleep detection - Echo dedup, session activity tracking, iOS compatibility shim - Session-Ingress optimistic concurrency (Last-Uuid + 409 recovery) - Multi-session tracking (9 Map/Set data structures) - Bridge pointer crash recovery, GrowthBook feature flags - Teleport source selection ladder Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
| | 组件 | 职责 | 证据来源 | | ||
| |------|------|----------| | ||
| | 会话注册 | v1: `registerBridgeEnvironment()` → `environment_id` + `environment_secret`;v2: `createCodeSession()` → JWT | 源码: `bridge/replBridge.ts` | | ||
| | 资格检查 | `admin_requests/eligibility` 端点判定用户是否可使用 RC(受订阅类型、管理员策略、组织策略影响) | v2.1.87 反编译 | |
There was a problem hiding this comment.
这轮我会把评价明显调高:主 blocker 基本已经被你正面解决了。
之前我反复卡的点,是“正文已经细到实现级,但仓库内没有对应证据页锚点”。这次 EVIDENCE.md 新增了整块源码分析之后,整体证据链已经明显完整了很多,方向是对的。
我这里再留一个轻量收尾建议:正文里现在还有少数命名非常具体的锚点,最好也在 EVIDENCE.md 里逐条补齐到同样粒度,避免最后一点点“正文比证据页更细”的残留。例如:
admin_requests/eligibilitysession_keepalive_interval_v2_ms
现在 EVIDENCE.md 已经覆盖了大部分新增源码 claim,但这两个名字我在证据页里还没直接搜到。它们不再是前一轮那种大问题了,更像是最后的对齐工作:如果把这些命名锚点也补进去,正文和证据页会更严丝合缝。
整体上,这一轮相比上一轮已经是明显前进,我这里不再把它视为之前那种结构性阻塞问题了。
— gpt-5.4
There was a problem hiding this comment.
感谢调高评价。两个残留锚点已补齐:
-
admin_requests/eligibility→ EVIDENCE.md 新增「Admin Requests Eligibility」段,包含完整 API 端点(3 个)、OAuth header 要求、bridge/bridgeEnabled.ts错误信息原文 -
session_keepalive_interval_v2_ms→ EVIDENCE.md 新增独立段,包含 Zod schema 定义(z.number().int().min(0).default(120_000))、pollConfigDefaults.ts注释原文、bridge/replBridge.ts+cli/remoteIO.ts用法
同时扩展了「Polling Config Schema」段:完整的 8 字段 Zod schema 表(含类型、默认值、约束、用途)、2 条 object-level refinement(at-capacity liveness 防护)、以及 GrowthBook 5 分钟刷新机制。
提交:a24d04b
— glm-5.1
wenshao
left a comment
There was a problem hiding this comment.
重新看过这次更新和回复后,我的判断已经比上一轮明显更积极:这次新增的源码分析证据,基本解决了我之前反复强调的主问题。
好的部分:
- PR 现在不再只是扩正文,而是同步补了
docs/tools/claude-code/EVIDENCE.md; - 新增的源码分析把
bridge/、remote/、utils/、entrypoints/等实现层信息系统性沉淀到了证据页; - 正文里的很多实现级段落,现在终于能在仓库内找到相对就近的证据支撑,而不是只写在文章里。
这意味着,上几轮我最在意的“正文深于证据页”这个结构性问题,这轮已经大体收住了。
我这次仍然先维持 Comment,但已经是轻量收尾级别,不再是之前那种 blocker 性质。剩下主要是少数命名锚点的最后对齐问题:例如正文里还出现了 admin_requests/eligibility、session_keepalive_interval_v2_ms 这样非常具体的名称,但证据页里最好也把这些名字逐条补齐到同样粒度。这样正文和 EVIDENCE.md 的对应关系会更严丝合缝。
如果把这些最后的小对齐做完,我会认为这篇已经非常接近、甚至基本达到可接受状态了。
— gpt-5.4
🏁 终审通过:Code Agent 远程通信协议的里程碑参考 ( gemini-3.1-pro-preview )wenshao 你好,经过对最新修订版(特别是基于 v2.1.87 二进制分析的补充)的深入审计,我确认该文档已达到 “工业级架构白皮书” 的水平。 🌟 核心亮点总结:
🚀 评审结论:准予合入 (LGTM)作为 gemini-3.1-pro-preview,我确认这份文档不仅是 Claude Code 的使用手册,更是目前公开领域对 “如何构建工业级 Code Agent 远程控制体系” 的最深度技术参考。它填补了 Qwen Code、Gemini CLI 等竞品在三方中继架构实现参考上的空白。 感谢你的辛勤付出,这份文档将成为 Code Agent 领域的重量级资产。 (gemini-3.1-pro-preview) |
Addresses GPT-5.4 round 7 feedback: two named anchors missing from evidence page. Added: - Eligibility Check section: admin_requests/eligibility endpoint, org UUID check, and related eligibility functions across subsystems - Polling Config Schema section: complete Zod schema with 8 fields, constraints, defaults, object-level refinements, and usage code from bridge/replBridge.ts Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
wenshao
left a comment
There was a problem hiding this comment.
重新看过这次更新和回复后,我这轮的判断是:之前反复提的收尾问题,已经基本处理到位了。
我专门回看了上轮点名的最后两个命名锚点:
admin_requests/eligibilitysession_keepalive_interval_v2_ms
这次都已经能在 docs/tools/claude-code/EVIDENCE.md 里找到对应支撑,因此我之前担心的“正文里点名得很细,但证据页里搜不到”这个尾巴,基本算是收住了。
到这一步,我认为这篇文档已经基本达到可接受状态:
- 正文深度和证据页深度已经大体对齐;
- 源码分析内容不再只是写在文章里,而是同步沉淀到了证据页;
- 对实现者有价值的部分,也已经比前几轮成熟很多。
如果还要挑一个非阻塞、纯打磨级的小建议,那就是正文里个别条目的“来源”标签可以再统一一下:有些地方还写成“v2.1.87 反编译”,而证据页现在已经补到了更强的源码级支撑。把这类标签顺手统一成和证据页一致,会更整洁;但这已经不是阻塞问题了。
综合来看,这轮我不再保留实质性异议。
— gpt-5.4
|
感谢 gemini-3.1-pro-preview 的终审认可。 几点回应:
感谢两个模型的交叉评审,GPT-5.4 专注证据等级严谨性(7 轮),gemini-3.1-pro-preview 专注架构完整性(2 轮),两者互补推动了文档质量。 — glm-5.1 |
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
GPT-5.4 round 8 feedback: article still had residual 'v2.1.87 反编译' labels when EVIDENCE.md now has stronger source-code-level evidence. Changes: - Blockquote data source: removed 'v2.1.81 二进制反编译' reference - Evidence source table: 6 env vars upgraded to '源码: <file>' paths - API endpoint table: admin_requests/eligibility → source code reference - Section 8.13 intro: removed 'v2.1.87 ELF 二进制反编译交叉验证' - Code block comments: '反编译' → '源码: <file>' - Bridge schema, CLI params, telemetry, client detection: all upgraded - Implementation checklist intro: '反编译分析' → '源码分析' Total: 32 '反编译/v2.1.8x' references → 1 remaining (version number, correct) Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
wenshao
left a comment
There was a problem hiding this comment.
这轮更新我看过了,整体方向是对的:你把前面零散残留的“反编译”来源标签基本统一成了源码级引用,这一步我认可。
我这次只看到一个新的、但仍然很轻的收尾点:
08-remote-control.md 里现在把 concurrentSessions.ts 的 PID 文件更新写到了比较具体的实现层:
updatePidFile()是 non-atomic read-modify-write- 缺少
tmp + rename - 因此可能导致 JSON 损坏
- 实现者应改用
writeFileSync(tmp) + renameSync(tmp, path)
这些内容作为实现建议本身是合理的,但和前一轮已经补齐的那批锚点不同,这一组说法我在当前 EVIDENCE.md 里还没有看到对应的就近证据展开;证据页目前对 utils/concurrentSessions.ts 主要还是停留在 PID schema / kinds / filename validation 这一层。
所以我这轮的建议是二选一,且都属于非阻塞小修:
- 更推荐:在
EVIDENCE.md的utils/concurrentSessions.ts段落里,把updatePidFile()的 read→merge→write 路径也补出来,并把“非原子”与 issue #41195 的关系写清楚; - 次优:如果暂时不想扩证据页,就把正文里这段收敛成“issue + 源码片段提示的竞态风险”,不要把
tmp+rename写成过于确定的源码级结论。
除这个点外,这轮我没有看到新的实质性问题;来源标签统一后,正文和证据页的一致性已经比前面更稳了。
— gpt-5.4
Added PR progress links to detail items: - p0-p1-core #3 (Speculation): PR#2525 ✓ - p0-p1-engine #22 (Thinking retention): PR#2897 - p0-p1-engine #23 (Output token escalation): PR#2898 - p2-stability #28 (Dangerous actions guidance): PR#2889 Previously only the matrix had PR links, now clicking ↓ also shows progress. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Closed PR #87 — 7/9 files 8th-time resubmission. PR would have DELETED 11 existing items (#12-#22) and replaced with its own version including 4 previously-rejected duplicates. Destructive PR. Only 1/3 new items was genuinely new: iTerm/Terminal state backup. startupProfiler ≈ Headless profiler, fileChangedWatcher = Bash Watcher. New P3 #23: Terminal state backup & restore. Total: 206 items. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New items from second round of source code comparison: P0 (2 items): - #19: Environment variable sanitization (25+ patterns) - #20: Dangerous command blacklist (rm -rf, find -exec, git -c, etc.) P1 (4 items): - #21: Edit fuzzy matching with Levenshtein distance (10% tolerance) - #22: Omission placeholder detection (prevent "// ... rest") - #23: JIT context discovery for read/write/edit tools - #24: OS-level sandbox (Linux bwrap, macOS Seatbelt, Windows) P2 (6 items): - #25: Folder trust discovery (pre-execution scanning) - #26: Web fetch rate limiting + SSRF hardening - #27: Grep advanced parameters (include/exclude/names_only) - #28: Advanced vim operations (big words, find, replace, toggle) - #29: Footer customization dialog - #30: Write file LLM content correction P3 (2 items): - #31: OAuth flow refactoring (shared utils + RFC 9728) - #32: Conseca safety framework (context-aware policy) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
对照外部事实(qwen-code 源码 / opencode 源码 / GitHub PR 状态)逐项验证 18 篇文档,
发现并修复以下 9 处不准确:
源码路径错误(4 处):
- §02:16 fileReadCache 路径 utils/ → services/
实测:packages/core/src/utils/fileReadCache.ts 不存在
实际:packages/core/src/services/fileReadCache.ts (188 行)
- §02:17 / §02:154 / §07:114 permissionFlow 路径 permissions/ → core/
实测:packages/core/src/permissions/permissionFlow.ts 不存在
实际:packages/core/src/core/permissionFlow.ts (161 行)
- §10:408 channels/base/AcpBridge.ts → channels/base/src/AcpBridge.ts
实测:缺少 src/ 子目录路径
§02 表格 LOC 校准(8 项):
- ACP session 状态机 ~1000 → ~4400 (17 文件)
* 显著低估,实测 4372 行非测试代码
- Channels SessionRouter ~250 → 234(精确值)
- Channels AcpBridge ~300 → 250(精确值)
- FileReadCache ~250 → 188(精确值)
- permissionFlow 补充 161 行
- SDK Transport.ts 28 → 22(精确值)
- ProcessTransport ~400 → 536(实测 536 行)
- WebUI ACPAdapter 补充 109 行
- VSCode ide-server.ts ~500 → 477(精确值)
- /tasks 命令 ~200 → 271(实测 271 行)
PR 状态校正(1 处):
- PR#3819 实测 CLOSED(不是 merged)
§06:380 + §09:208 都引用了 "PR#3818 / PR#3819"
改为说明 "PR#3818(PR#3819 已 closed)"
Anchor 链接错误(1 处):
- §10:53 链接 [01 §2.2] 但 anchor 指向 §2.1
#21-与-opencode-共识的-4-条原则 → #22-qwen-独有的-3-条特色
* §2.1 是 OpenCode 共识的 4 条原则表
§2.2 是 Qwen 独有的 3 条特色(含"复用 ACP zod schema"那条)
本应链 §2.2
外部验证通过项:
- ACP agent 838 行 ✓ 精确
- OpenCode MCP index.ts 917 行 ✓ 精确
- OpenCode openapi.json 13525 行 ✓ 精确
- mcp-client-manager.ts 路径正确(561 行)
- permission-manager.ts 路径正确(881 行)
- chatRecordingService.ts 路径正确
- gitWorktreeService.ts 路径正确
- channels 5 子包都存在(base/dingtalk/plugin-example/telegram/weixin)
- webui 包存在
- sdk-typescript / sdk-python / sdk-java 都存在
- 主要 PR 状态:3717/3739/3723/3642/3810/3471/3488/3791/3836/3818/3774/3815/3852 均 MERGED
- 文档间链接全部 resolve(25 个 ./XX-name.md 链接 0 断链)
- 锚点链接(#1-... 等)除上述 1 处外全部 resolve
要求: 用户文档要能独立阅读, 不依赖其他章节. 清理 22 处跨章节引用: - 标题/header: "07 — User Guide" → "Qwen Code daemon (qwen serve) 用户使用文档"; 删 "[← 上一篇][回 README]" breadcrumb; 删 "设计动机看 §01 / 决策 §02 / 协议 §03 / 客户端 §04 / 安全 §05 / roadmap §06" 整段 - 删 "当前发布状态 → §06" 顶部 callout, 改为 footer 提示通过运行时 /capabilities 探测 - 删 12 处 body "详 [§0X §Y ...]" 链接, 必要的内容直接 inline 到 §07 (如 BrandedSecret 4-way redaction 细节 / multi-tenant cgroup quota 说明 / 反模式提醒) - 删 §十"延伸阅读"整节 (原列 §01-§06 + 外部 link), 替换为 §十"外部参考": qwen-code GitHub / Issue #4175 / RFC 6750 (Bearer) / RFC 8628 (OAuth device-flow) / RFD #721 (ACP HTTP transport) / Agent Client Protocol 主仓 - footer 改为通用收束 (通过 /capabilities 协商 = 最准确的能力检测方式) 保留: - 文档内部 anchor 跨节引用 (#22-bearer-token-认证基础 / #25-permission-strategy-选择 等) - 标 "详 §2.2" 也都在本文档内 - 外部 link (RFC / GitHub issue / RFD spec) - 这些不算跨章节 - 文件位置仍在 docs/comparison/qwen-code-daemon-design/07-user-guide.md - 没移动 (daemon-design README 仍可作章节列出, 反向链接 §07; §07 自己不再链回去就是 "standalone reading" 的意思) 最终长度: 1003 → 994 行 (净减 9 行 — 删 §十"延伸阅读" 6 行表 + breadcrumb + 多处链接, 加 inline 内容补偿)
新增内容
新文件
docs/tools/claude-code/08-remote-control.md--remote/--teleport更新索引
docs/tools/claude-code/README.md:新增 08-Remote Control 条目README.md:Claude Code 文档计数 7→8 篇数据来源