@@ -12,19 +12,19 @@ Cloud CLI Proxy 是一个面向单宿主机的容器化 SSH 云主机平台,
1212
1313## Current State
1414
15- ** Shipped:** v3.2 多形态容器接入 (2026-05-08, tag v3.4.0)
15+ ** Shipped:** v3.4 多形态容器接入 (2026-05-08, tag v3.4.0)
1616
17- v3.2 扩展容器接入方式:Cloud 版 SSH Proxy 支持 full port forwarding(VS Code Remote-SSH),本地版 ` cloud-claude local ` 支持 Dev Containers 工作流,doctor 新增 remote-ssh 维度和 sshd_config 主动验证。
17+ v3.4 扩展容器接入方式:Cloud 版 SSH Proxy 支持 full port forwarding(VS Code Remote-SSH),本地版 ` cloud-claude local ` 支持 Dev Containers 工作流,doctor 新增 remote-ssh 维度和 sshd_config 主动验证。
1818
19- ** v3.2 ship 总览:**
19+ ** v3.4 ship 总览:**
2020- 7 phases (38-44, 含 3 gap closure), 14 plans
2121- 61 commits, 84 files (+12,724 / -968 lines)
2222- Codebase: Go 40,702 + Shell 2,594 ≈ 43,300+ LOC
2323- 2026-05-07 → 2026-05-08 (2 days)
2424- 13/13 REQ satisfied;13/13 集成接线 WIRED;3/3 E2E 流程 complete
2525- 11 项人工验证 deferred-to-ship(Phase 38 x3 / Phase 39 x5 / Phase 43 x3)
2626
27- ### v3.2 关键交付
27+ ### v3.4 关键交付
2828
2929SSH Proxy 端口转发(Phase 38)
3030- direct-tcpip channel dispatch + 管理网段/Docker socket/metadata 安全拦截
@@ -57,7 +57,7 @@ Gap closure 链(Phase 42/43/44)
5757- ** ENH-NEXT-08** 本地容器预热镜像(减少首次启动时间)
5858- ** ENH-NEXT-09** doctor 本地模式适配(跳过 auth/egress 检查)
5959- 3 项真机签字 ship 闸门(M5 APFS / BASE-03 2min / C6 Ubuntu 25.04)— v3.0/v3.1 deferred-to-ship
60- - 11 项人工验证(Phase 38 x3 / Phase 39 x5 / Phase 43 x3)— v3.2 deferred-to-ship
60+ - 11 项人工验证(Phase 38 x3 / Phase 39 x5 / Phase 43 x3)— v3.4 deferred-to-ship
6161- v3.0/v3.1 tech debt 批次清理(≈14 项 WR/HR/MR 系列 + spec/code 数字漂移)
6262- 跨会话持久缓存(hot 分支退出后保留,第二次 mount 直接命中)
6363- 热同步改 inotify/fsevents 替代秒级轮询
@@ -98,7 +98,7 @@ Gap closure 链(Phase 42/43/44)
9898
9999## Context
100100
101- ** Latest shipped:** v3.2 多形态容器接入 (2026-05-08, tag v3.4.0)
101+ ** Latest shipped:** v3.4 多形态容器接入 (2026-05-08, tag v3.4.0)
102102** Codebase:** ~ 43,300+ LOC (40,702 Go + 2,594 Shell)
103103** Tech stack:** Go 1.26.1 + PostgreSQL + Docker + sing-box + React 19 + Vite + cobra + sshfs/SFTP + hot-sync (ssh+tar) + mergerfs 2.41.1 + tmux 3.6a + inotify
104104
@@ -187,16 +187,16 @@ v3.0 已交付,新增:
187187- ✓ ` doctor mount ` 新增 4 项晋升可观测指标(promoter_alive / queue_depth / total / failed)— v3.1 (Phase 37)
188188- ✓ runbook ` docs/runbooks/v31-cold-promotion.md ` Pattern G 5 章手册 — v3.1 (Phase 37)
189189- ✓ e2e UAT 脚本 ` tests/scripts/uat-v31-promotion.sh ` 6 场景全覆盖 + CI 接入 — v3.1 (Phase 37)
190- - ✓ SSH Proxy 支持 ` direct-tcpip ` channel 转发 + 管理网段/Docker socket/metadata 安全拦截 — v3.2 (Phase 38)
191- - ✓ SSH Proxy 支持 ` tcpip-forward ` + ` forwarded-tcpip ` 全局请求透传 — v3.2 (Phase 38)
192- - ✓ 容器内 sshd_config 显式开启端口转发(AllowTcpForwarding + AllowStreamLocalForwarding + GatewayPorts)— v3.2 (Phase 38 + Phase 44 doctor)
193- - ✓ ` cloud-claude local up/down/status ` 子命令,不依赖 control-plane 直接启动本地容器 — v3.2 (Phase 39)
194- - ✓ 本地容器支持 ` .devcontainer/devcontainer.json ` + VS Code Dev Containers 工作流 — v3.2 (Phase 39)
195- - ✓ 本地容器支持 ` --egress-config ` 注入 sing-box tun/proxy 双模式出网 — v3.2 (Phase 39)
196- - ✓ entrypoint ` MODE=local ` 跳过 KasmVNC + 心跳,保留 sshd + sing-box — v3.2 (Phase 39)
197- - ✓ VS Code Remote-SSH E2E 验证:端口转发 + 出口 IP 强约束 + 下载流量走 sing-box — v3.2 (Phase 40 + Phase 43)
198- - ✓ ` cloud-claude doctor ` 新增 remote-ssh 维度(5 项检查 + 6 个错误码 + 20 单测)— v3.2 (Phase 41)
199- - ✓ doctor sshd_config 主动验证(parseSSHDForwarding + 3 个错误码 + 13 单测)— v3.2 (Phase 44)
190+ - ✓ SSH Proxy 支持 ` direct-tcpip ` channel 转发 + 管理网段/Docker socket/metadata 安全拦截 — v3.4 (Phase 38)
191+ - ✓ SSH Proxy 支持 ` tcpip-forward ` + ` forwarded-tcpip ` 全局请求透传 — v3.4 (Phase 38)
192+ - ✓ 容器内 sshd_config 显式开启端口转发(AllowTcpForwarding + AllowStreamLocalForwarding + GatewayPorts)— v3.4 (Phase 38 + Phase 44 doctor)
193+ - ✓ ` cloud-claude local up/down/status ` 子命令,不依赖 control-plane 直接启动本地容器 — v3.4 (Phase 39)
194+ - ✓ 本地容器支持 ` .devcontainer/devcontainer.json ` + VS Code Dev Containers 工作流 — v3.4 (Phase 39)
195+ - ✓ 本地容器支持 ` --egress-config ` 注入 sing-box tun/proxy 双模式出网 — v3.4 (Phase 39)
196+ - ✓ entrypoint ` MODE=local ` 跳过 KasmVNC + 心跳,保留 sshd + sing-box — v3.4 (Phase 39)
197+ - ✓ VS Code Remote-SSH E2E 验证:端口转发 + 出口 IP 强约束 + 下载流量走 sing-box — v3.4 (Phase 40 + Phase 43)
198+ - ✓ ` cloud-claude doctor ` 新增 remote-ssh 维度(5 项检查 + 6 个错误码 + 20 单测)— v3.4 (Phase 41)
199+ - ✓ doctor sshd_config 主动验证(parseSSHDForwarding + 3 个错误码 + 13 单测)— v3.4 (Phase 44)
200200
201201### Active (下一里程碑待规划)
202202
@@ -208,13 +208,13 @@ v3.0 已交付,新增:
208208- [ ] 热同步改 inotify/fsevents 替代秒级轮询
209209- [ ] rename / move 检测优化
210210
211- ### Archived (v1.3 claude-shell) — 能力并入 v3.2
211+ ### Archived (v1.3 claude-shell) — 能力并入 v3.4
212212
213- v1.3 的"本地容器"和"指纹伪装"能力与 v3.2 的 ` cloud-claude local ` 目标重叠。为避免维护两套本地 Docker 编排逻辑,v1.3 能力拆分并入 v3.2 Phase 39:
213+ v1.3 的"本地容器"和"指纹伪装"能力与 v3.4 的 ` cloud-claude local ` 目标重叠。为避免维护两套本地 Docker 编排逻辑,v1.3 能力拆分并入 v3.4 Phase 39:
214214
215215- Phase 17 镜像基线 → 已并入 managed-user 镜像(v3.0+)
216- - Phase 18 网络隔离 → 并入 v3.2 Phase 39(本地版 sing-box sidecar + veth 注入)
217- - Phase 19 CLI 骨架 → 并入 v3.2 Phase 39(` cloud-claude local ` 子命令)
216+ - Phase 18 网络隔离 → 并入 v3.4 Phase 39(本地版 sing-box sidecar + veth 注入)
217+ - Phase 19 CLI 骨架 → 并入 v3.4 Phase 39(` cloud-claude local ` 子命令)
218218- Phase 20 TTY 透传 → 不再需要(本地 publish 端口,SSH 用系统 OpenSSH)
219219- Phase 21 指纹伪造 → entrypoint ` MODE=local ` 深度伪装分支(快速任务级别)
220220- Phase 22 验证自检 → ` cloud-claude local verify ` / ` doctor --local `
@@ -309,7 +309,7 @@ v1.3 的"本地容器"和"指纹伪装"能力与 v3.2 的 `cloud-claude local`
309309| promotion 统计在 writeLastSession 前刷入(mount 就绪时 = 0) | 与 Phase 36 OversizedFiles 同一快照语义;避免回调耦合 | ✓ Good — Phase 37-02,omitempty 零值不出现在 JSON |
310310| ` CLOUD_CLAUDE_NO_PROMOTION=1 ` 完全跳过(promoter nil + cleanup guard) | 用户明确关闭时零开销;PID 残留清理无条件执行防 rogue 进程 | ✓ Good — Phase 37-02 |
311311| doctor 本地 check 用 ` t.Setenv("HOME", tempDir) ` 隔离 | 测试真实 ` LoadConfig/LoadLastSession ` 路径,生产代码零 var 注入点 | ✓ Good — Phase 36-06,与 36-04 ` t.Setenv(PATH="") ` 同一思路 |
312- | v1.3 归档,能力并入 v3.2 | v1.3 的"本地容器"和"指纹伪装"能力与 v3.2 ` cloud-claude local ` 目标重叠;维护两套本地 Docker 编排逻辑无意义 | 避免重复开发;Phase 18→39(网络)、Phase 19→39(CLI)、Phase 21→entrypoint ` MODE=local ` |
312+ | v1.3 归档,能力并入 v3.4 | v1.3 的"本地容器"和"指纹伪装"能力与 v3.4 ` cloud-claude local ` 目标重叠;维护两套本地 Docker 编排逻辑无意义 | 避免重复开发;Phase 18→39(网络)、Phase 19→39(CLI)、Phase 21→entrypoint ` MODE=local ` |
313313| 本地版 sing-box 以 sidecar 容器运行,复用 Cloud 版网络模型 | 保持产品一致性:无论 Cloud 还是 Local,网络出口控制策略完全相同;复用 ` internal/network ` 的 ` PrepareHost ` /` InjectManagementVeth ` | Local 版也走 ` managed-user ` (` --network=none ` )+ ` sing-box-gateway ` sidecar + veth 注入 |
314314| 本地版默认深度伪装,不区分 stealth/local 模式 | 容器指纹伪装是核心产品承诺,不是可选项;` MODE=local ` 自动启用完整伪装,无需用户选择 | entrypoint ` prepare_container_disguise() ` 在 ` MODE=local ` 下额外伪造 /proc/cpuinfo、/proc/meminfo、/proc/1/cgroup |
315315| channelOpenDirectMsg 使用导出字段名 | ` ssh.Marshal ` 通过反射读取字段,未导出字段会导致 panic | ✓ Good — Phase 38 Plan 01 |
@@ -339,4 +339,4 @@ v1.3 的"本地容器"和"指纹伪装"能力与 v3.2 的 `cloud-claude local`
3393394 . 用当前产品状态更新"背景"
340340
341341---
342- * Last updated: 2026-05-08 — v3.2 milestone shipped (tag v3.4.0). 7 phases, 14 plans, 13/13 REQ satisfied.*
342+ * Last updated: 2026-05-08 — v3.4 milestone shipped (tag v3.4.0). 7 phases, 14 plans, 13/13 REQ satisfied.*
0 commit comments