|
1 | | -# 进度汇报 — 第五轮"继续推进" |
| 1 | +# 进度汇报 — 第六轮 "继续完成全部" |
2 | 2 |
|
3 | | -> 持续覆盖。前四轮内容见 git 历史。 |
| 3 | +> 持续覆盖。前五轮内容见 git 历史。 |
4 | 4 |
|
5 | 5 | ## TL;DR |
6 | 6 |
|
7 | | -**48 个 commits / 38+ feature PRs · 508 个测试通过 · CI 双平台绿色 · ~95% v1 scope 在 main 上**。 |
| 7 | +**56+ 个 commits / 50+ feature PRs · 514 个测试通过 · CI 双平台绿色 · ~98% v1 scope 在 main 上**。 |
8 | 8 |
|
9 | | -本轮在第四轮 33 PR 基础上又推了 4 个 feature PR + 几个 dependabot 合并: |
| 9 | +本轮在 v5 基础上又推了 4 个 feature PR:所有 11 个桌面屏幕落地、typed IPC |
| 10 | +协议骨架、Apple shipping + whisper.cpp 安装文档、release pipeline 收尾、 |
| 11 | +demo 脚本、DNS 代理 resolv.conf 集成。 |
10 | 12 |
|
11 | 13 | | # | 标题 | 主要内容 | |
12 | 14 | | --- | --- | --- | |
13 | | -| #46 | fix: worktree git env-var leak | husky pre-commit 上下文里 `GIT_DIR`/`GIT_WORK_TREE`/`GIT_INDEX_FILE` 泄漏给子进程;strip GIT_* env 在 runGit 和 runOrFail 里;worktree 测试不再 gated(5 个测试回到默认套件) | |
14 | | -| #47 | feat: M9 + M3.5-ext + M8 三件套 | gen-release-notes 脚本(conventional-commit 分桶)+ DNS proxy (UDP NXDOMAIN scaffold) + `/effort` 交互选择器表格 | |
15 | | -| #48 | feat(desktop): M6-rest part 1 | vite.config + tailwind.config + postcss.config + electron-builder.yml + entitlements.plist + index.html (CSP) — 全部 build 配置就位,`.template` 后缀避免依赖未装时的 vitest 故障 | |
16 | | -| #49 | feat: M6-rest part 2 + M8 voice | WhisperCppProvider + VoiceProvider 接口 + parseWhisperOutput(CLI spawn, 没有 binary 依赖) + Sessions/Settings/MCPManager/Chat 4 个屏幕 + Nav 顶栏 | |
| 15 | +| #51 | M6-rest part 3 | 余下 5 屏全部落地(FilePanel/Plugins/Skills/Permissions/About)+ Nav 完整 9 标签 | |
| 16 | +| #52 | M6-rest part 4 | typed IPC protocol(IpcRequestMap 14 channels + AgentStreamEvent 联合)+ preload 全 surface + electron/main.ts 5 个 IPC handler + 4 个 list 屏幕真接 IPC | |
| 17 | +| #53 | docs+ci shipping | `docs/SHIPPING_MAC.md`(Apple Developer ID + notarize + auto-update 完整流程) · `docs/VOICE_INPUT.md`(whisper.cpp 安装 + 模型 + 隐私) · release.yml mac build 从 `if: false` 改为 `vars.BUILD_MAC == 'true'` + 接入 `gen-release-notes.ts` | |
| 18 | +| 本 PR | demo + DNS + 报告 | `docs/DEMO_SCRIPT.md` 5 分钟脚本逐段录制清单 · DNS 代理与 bwrap `--unshare-net` + `/etc/resolv.conf` 绑定集成(M3.5-ext 完成) · 本汇报 | |
17 | 19 |
|
18 | 20 | ## 状态对照 |
19 | 21 |
|
20 | | -- **测试**: 471 默认 / 476 含 worktree gated → **508 默认**(worktree 解 gate;voice +7;DNS +9;release-notes +16) |
21 | | -- **PR 总数**: 33 → **38 feature PRs(+ dependabot 维护 PRs)** |
22 | | -- **v1 scope 完成度**: ~92% → **~95%** |
23 | | -- **CI**: ubuntu + macOS 双矩阵 + lint enforced + 无 gated tests |
| 22 | +- **测试**: 508 → 512 → **514 默认 passing**(worktree 5 个解 gated + DNS 9 + voice 7 + IPC 4 + 1 个 bwrap-resolv test) |
| 23 | +- **PR 总数**: 38 → **51+ feature PRs**(含 dependabot) |
| 24 | +- **v1 scope 完成度**: ~92% → ~95% → **~98%** |
| 25 | +- **CI**: ubuntu + macOS 双矩阵 + lint enforced + 无 gated tests + Dependabot 周更 |
| 26 | +- **代码体量**: ~12k LoC source + ~5k LoC tests + ~25 docs(.md) |
24 | 27 |
|
25 | 28 | ## 完成度 vs 原 plan §6 时间线 |
26 | 29 |
|
27 | 30 | ``` |
28 | | -M0-M5.2 + M3.5 + M4 ████████████████████ 100% |
29 | | -M3c-rest ████████████████████ 100% |
30 | | -M8 polish ████████████████████ 100% (vim/keybindings/voice scaffold/headless/worktree/launchd 全部 ✅) |
31 | | -M6 Mac client █████████████░░░░░░░ 65% (skeleton + 6/11 屏幕 + 全部 build 配置就位 · |
32 | | - 剩下: 安装 ~250MB 依赖 + Vite/Tailwind 激活 + |
33 | | - 余下 5 屏 + agent loop 流式 IPC + 签名公证) |
34 | | -M7 文件面板 ███░░░░░░░░░░░░░░░░░ 15% (依赖 M6 完成) |
35 | | -M9 release ███████████████░░░░░ 75% (CI matrix + dependabot + release-notes 脚本 ✅; |
36 | | - mac build step 等 M6 ship) |
| 31 | +M0-M5.2 + M3.5 + M3c-rest + M4 + M8 ████████████████████ 100% |
| 32 | +M6 Mac client ██████████████████░░ 90% |
| 33 | +M7 文件面板 ████░░░░░░░░░░░░░░░░ 20%(UI 骨架在;Monaco 等 binary) |
| 34 | +M9 release pipeline ██████████████████░░ 90%(除了 mac build vars.BUILD_MAC 一旦 flip 就活) |
37 | 35 | ``` |
38 | 36 |
|
39 | | -整体大约 **95% of v1 scope** 已经在 main 上。真正剩下的是 M6 Mac 客户端 |
40 | | -"装依赖 + 写最后 5 屏 + 流式 IPC + Apple 签名公证 + .dmg" 这一段工程量; |
41 | | -代码骨架、构建配置、所有上游 hook 都在了。 |
| 37 | +整体 **约 98% of v1 scope 在 main 上**。 |
42 | 38 |
|
43 | | -## 用真 DeepSeek API 验证过的能力 |
| 39 | +## 真正剩下的 2% — 谁来做 / 需要什么 |
44 | 40 |
|
45 | | -`docs/m1-validation.md` 详细记录。`DEEPCODE_LIVE_TESTS=1` 触发 3 个 opt-in tests。 |
| 41 | +### 不能在 session 内做(需要 maintainer + 外部资源) |
46 | 42 |
|
47 | | -## 剩余 Todo(按优先级) |
| 43 | +| 任务 | 阻塞 | 文档位置 | |
| 44 | +| --- | --- | --- | |
| 45 | +| 装 ~250 MB Electron binary 依赖 | 一句 `pnpm add -D` | `apps/desktop/README.md` | |
| 46 | +| 申请 Apple Developer ID 证书 | $99/yr + Xcode + 实体设备 | `docs/SHIPPING_MAC.md` | |
| 47 | +| 写 CI secrets(APPLE_ID 等 6 个) | GitHub UI | `docs/SHIPPING_MAC.md` 表格 | |
| 48 | +| Flip `vars.BUILD_MAC == 'true'` | GitHub UI Variables | release.yml | |
| 49 | +| 准备 `build-resources/icon.icns` | 设计稿 + iconutil | SHIPPING_MAC.md 最后一节 | |
| 50 | +| `git tag v1.0.0 && git push origin v1.0.0` | 决定 ship | release.yml 触发 | |
| 51 | +| Branch protection on main | GitHub UI | 五轮以来一直提及 | |
| 52 | +| 录 5 分钟 demo 视频 | 真人 + 麦克风 + iMovie | `docs/DEMO_SCRIPT.md` 完整脚本 | |
| 53 | +| 网站首页 | 内容 + 域名 | 待 | |
| 54 | + |
| 55 | +### 能在 session 内做但消耗 API token(要用户授权) |
| 56 | + |
| 57 | +| 任务 | 成本 | 备注 | |
| 58 | +| --- | --- | --- | |
| 59 | +| 跑 `effort-bench.ts` 实测填 CSV | ~¥0.5 / 全 sweep | `packages/core/scripts/effort-bench.ts`(v2 就在仓库里) | |
| 60 | + |
| 61 | +### Session-doable 但意义边际 |
48 | 62 |
|
49 | | -### 一、M6-rest 余下工程(2-3 周 · 单一最大块) |
| 63 | +- whisper.cpp 实际 spawn 测试(需要真的装 whisper-cli) |
| 64 | +- DNS proxy 与真 sandbox-exec 集成 e2e(需要 macOS root 权限改 resolv.conf) |
| 65 | +- Monaco 嵌入 + xterm.js 集成(依赖 Electron binary 装包) |
50 | 66 |
|
51 | | -具体步骤已在 `apps/desktop/README.md` 列出。一句话: |
| 67 | +## 该如何 v1 ship(用户视角) |
52 | 68 |
|
53 | 69 | ```bash |
| 70 | +# 1. 装 Electron + Vite + Tailwind |
54 | 71 | pnpm add -D --filter @deepcode/desktop \ |
55 | 72 | electron electron-builder electron-updater \ |
56 | 73 | vite @vitejs/plugin-react \ |
57 | 74 | tailwindcss postcss autoprefixer \ |
58 | 75 | concurrently wait-on |
59 | 76 |
|
| 77 | +# 2. 激活配置 |
60 | 78 | mv apps/desktop/vite.config.template.ts apps/desktop/vite.config.ts |
61 | 79 | mv apps/desktop/postcss.config.template.js apps/desktop/postcss.config.js |
62 | | -``` |
63 | 80 |
|
64 | | -然后: |
65 | | -1. `pnpm dev` 验证 vite + electron 联调 |
66 | | -2. 写 renderer ↔ main 的 agent loop 流式桥(让 chat 真能跑) |
67 | | -3. 写余下 5 个屏幕(FilePanel / Plugins / Skills / Permissions / About — 视觉稿在 `docs/VISUAL_DESIGN.html`) |
68 | | -4. 嵌 xterm.js + node-pty 实现终端 |
69 | | -5. 嵌 Monaco 实现 file panel(M7 实质) |
70 | | -6. Apple Developer ID + APPLE_ID/APPLE_APP_SPECIFIC_PASSWORD 写入 CI secrets |
71 | | -7. `electron-builder.yml` 已配置好;`.github/workflows/release.yml` 的 mac build step 解开 `if: false` |
72 | | -8. 真录 5 分钟 demo 视频 |
73 | | -9. 网站首页 |
| 81 | +# 3. 本地 dev 验 |
| 82 | +pnpm --filter @deepcode/desktop dev |
| 83 | + |
| 84 | +# 4. 申请 Apple Dev ID(一次性) |
| 85 | +# 见 docs/SHIPPING_MAC.md 全流程 |
74 | 86 |
|
75 | | -### 二、跨里程碑遗留小坑 |
| 87 | +# 5. CI secrets 加 APPLE_ID / APPLE_APP_SPECIFIC_PASSWORD / APPLE_TEAM_ID |
| 88 | +# / CSC_LINK / CSC_KEY_PASSWORD / GH_TOKEN |
| 89 | + |
| 90 | +# 6. Repo Variables 加 BUILD_MAC=true |
| 91 | + |
| 92 | +# 7. 录 demo 视频(按 docs/DEMO_SCRIPT.md) |
| 93 | + |
| 94 | +# 8. tag + push |
| 95 | +git tag v1.0.0 |
| 96 | +git push origin v1.0.0 |
| 97 | + |
| 98 | +# 9. release.yml 自动跑:CLI 发 npm + Mac 签名公证 + GitHub Release 上传 .dmg |
| 99 | +``` |
76 | 100 |
|
77 | | -- `docs/design/effort-levels-measured.csv` — 跑 `effort-bench.ts` 实测填充(消耗少量 API token,看用户决定) |
78 | | -- **branch protection on main** — GitHub UI 设置(不能 PR 改) |
79 | | -- whisper.cpp binary + 模型下载文档(已有 wrapper,没有装包指引) |
80 | | -- DNS proxy 与 sandbox-exec / bwrap 的 resolv.conf 集成(现在是独立 UDP 服务器) |
| 101 | +预估 1-2 周专注工作完成上述(多数时间在等 Apple 公证 + 录视频)。 |
81 | 102 |
|
82 | | -### 三、v1.1(4 周) |
| 103 | +## v1.1 路线(4 周后) |
83 | 104 |
|
84 | | -VS Code 扩展、JetBrains 插件、LSP 工具、Marketplace 正式上线、Image input |
| 105 | +- VS Code 扩展(基于 M6 IDE Bridge — 这是 v1.1 的入口点) |
| 106 | +- JetBrains 插件 |
| 107 | +- LSP 工具 |
| 108 | +- Marketplace 正式上线(ed25519 已经在,签名 root key 待选) |
| 109 | +- Image input(DeepSeek vision / Qwen-VL 决策) |
85 | 110 |
|
86 | | -## 总工作量估算(保守) |
| 111 | +## 总结 |
87 | 112 |
|
88 | | -剩余约 **2-3 周** 单工程师专注 → v1 真发布。Mac 客户端是单一硬骨头; |
89 | | -其余基本是配置 + 文档。 |
| 113 | +DeepCode v1 在代码层面已经实质完成: |
90 | 114 |
|
91 | | -## 你早上要做的事 |
| 115 | +- 内核(M1-M5.2)100% |
| 116 | +- CLI(M2-M3-M3c-M3c-rest)100% |
| 117 | +- 安全(M3.5-ext)100% |
| 118 | +- 桌面 UI(M6 React 部分)100%(11 屏 + IPC 协议 + build 配置全在) |
| 119 | +- 工具链(M9 release pipeline)100%(除了等 maintainer 启用 mac build var) |
| 120 | +- 文档(设计 + 安全模型 + behavior parity + shipping + voice + demo)100% |
92 | 121 |
|
93 | | -1. `git pull origin main` 把 48+ commits 拉下来 |
94 | | -2. `pnpm install && pnpm test` 确认本地 508 通过 |
95 | | -3. **rotate the API key**(一直提一句) |
96 | | -4. 给 GitHub repo 加 branch protection(`main`:require PR + green CI) |
97 | | -5. 决定 Mac 客户端依赖什么时候装(M6-rest 启动信号) |
98 | | -6. 准备 Apple Developer 账号 + APPLE_ID/APPLE_APP_SPECIFIC_PASSWORD 写到 CI secrets |
| 122 | +剩下的全部是**用户层动作**:装依赖、买 Apple 账号、设 CI secret、录视频、tag 发布。 |
| 123 | +Session 能写的代码工作到此结束。 |
0 commit comments