docs: web-terminal v0.1 spec, plan, and multi-agent dev config

- TECH_DOC + ARCHITECTURE (cross-validated, 12 fixes M1-M7/L1-L5)
- PLAN: waves W0-W5, tasks T1-T21 for multi-agent parallel dev
- PROGRESS_LOG: orchestrator-owned cross-session memory
- CLAUDE.md: required-reading + orchestrator-worker workflow
- .claude/agents: module-builder, module-reviewer
This commit is contained in:
Yaojia Wang
2026-06-16 06:54:57 +02:00
commit dda09ef2c6
7 changed files with 1407 additions and 0 deletions

107
docs/PROGRESS_LOG.md Normal file
View File

@@ -0,0 +1,107 @@
# Web Terminal 实施进度日志 (Progress Log)
> **用途**: 记录 [PLAN.md](./PLAN.md) 各任务的完成情况,作为**跨会话记忆文件**。
> 新会话开工前**必读本文件**。只记**已发生的事实**(含失败、跳过),不预填未来,不写愿望。
> **谁来写(G1)**: 本文件**仅由 orchestrator(主会话)写入** —— 它不在任何任务的 `Owns:` 里,
> 防止并行 subagent 并发写冲突。被派的 subagent **不写本文件**,而是把日志条目作为返回结果交回,
> 由 orchestrator 在每批 agent 返回后**立即追加**(不要攒到最后)。
> 完整维护规则见 [CLAUDE.md → Development Workflow](../CLAUDE.md)。
---
## 状态图例
| 标记 | 含义 |
|------|------|
| `[ ]` | TODO — 未开始 |
| `[~]` | IN PROGRESS — 进行中 |
| `[x]` | DONE — 完成且已验证 |
| `[!]` | BLOCKED — 受阻(须在详细日志写明阻塞原因) |
---
## 当前焦点 (Current Focus)
> 新会话读到的第一块。保持准确,只描述"此刻"。
- **Wave**: 未开工 → 下一步 W0
- **任务**: T1(脚手架 + 装齐依赖)
- **下一步**: 执行 T1,装齐全部依赖、验证 node-pty 原生编译
- **阻塞**: 无
- **最后更新**: 2026-06-15
---
## 任务总览 (Task Overview)
> 任务定义见 [PLAN.md](./PLAN.md);按 Wave 分组。`Steps` 完成数 = PLAN 中该任务的勾选项。
> **多 agent 并行**:同一 Wave 内任务互不依赖,可并行;跨 Wave 按依赖推进。
| 任务 | Wave | 模块 | 状态 | Steps (完成/总) | 完成日期 |
|------|------|------|------|------------------|----------|
| T1 | W0 | 脚手架 + 装齐依赖 | `[ ]` | 0/5 | — |
| T2 | W0 | `src/types.ts` 共享契约(冻结源) | `[ ]` | 0/8 | — |
| T3 | W0 | mock IPty 测试替身 | `[ ]` | 0/2 | — |
| T4 | W1 | `config.ts` | `[ ]` | 0/5 | — |
| T5 | W1 | `protocol.ts` | `[ ]` | 0/4 | — |
| T6 | W1 | `ring-buffer.ts` | `[ ]` | 0/4 | — |
| T7 | W1 | `http/origin.ts` | `[ ]` | 0/3 | — |
| T8 | W1 | `public/index.html` | `[ ]` | 0/1 | — |
| T9 | W1 | `public/style.css` | `[ ]` | 0/1 | — |
| T10 | W1 | `public/keybar.ts` | `[ ]` | 0/4 | — |
| T11 | W1 | `public/main.ts` | `[ ]` | 0/6 | — |
| T12 | W2 | `session/session.ts` | `[ ]` | 0/7 | — |
| T13 | W3 | `session/manager.ts` | `[ ]` | 0/6 | — |
| T14 | W4 | `server.ts` 接线 | `[ ]` | 0/6 | — |
| T15 | W4 | 集成 / E2E 测试 | `[ ]` | 0/2 | — |
| T16 | W5 | 验收 F1F3(终端/TUI/resize) | `[ ]` | 0/3 | — |
| T17 | W5 | 验收 F4+F9(LAN/Origin) | `[ ]` | 0/2 | — |
| T18 | W5 | 验收 F5+F6(保活/回放) | `[ ]` | 0/2 | — |
| T19 | W5 | 验收 F7(移动键栏) | `[ ]` | 0/1 | — |
| T20 | W5 | 验收 F8(退出处理) | `[ ]` | 0/2 | — |
| T21 | W5 | 安全核对 + README + LOG 收尾 | `[ ]` | 0/3 | — |
---
## 验收清单映射 (Acceptance — TECH_DOC §8)
> 功能验收独立于阶段勾选;F* 全绿才算 v0.1 完成。
| 编号 | 功能 | 状态 | 验证方式 / 备注 |
|------|------|------|-----------------|
| F1 | 交互式终端(ls/补全/Ctrl+C/历史) | `[ ]` | |
| F2 | 全彩 + 全屏程序(vim/top/claude) | `[ ]` | |
| F3 | 终端自适应(resize 不错位) | `[ ]` | |
| F4 | 局域网访问(手机/他机) | `[ ]` | 与 F9 联测,确认 Origin 白名单含网卡 IP |
| F5 | 会话保活(断开重连仍在跑) | `[ ]` | |
| F6 | 重连回放(环形缓冲) | `[ ]` | 验证 ANSI/中文不乱码(M2) |
| F7 | 移动快捷键栏 | `[ ]` | |
| F8 | 进程退出处理 | `[ ]` | 含 detach 后退出补发 exit(L1) |
| F9 | Origin 校验(401) | `[ ]` | 含 `/term` 路径限制(L3) |
---
## 详细日志 (Detailed Log)
> **倒序**,最新在最上。每个子任务一条。复制下方模板填写。
<!-- ========== 条目模板(复制此块,删除注释) ==========
### YYYY-MM-DD · S?.? <子任务标题>
- **状态**: `[x]` DONE / `[~]` IN PROGRESS / `[!]` BLOCKED
- **改动**: <文件:函数/范围,如 src/protocol.ts:parseClientMessage、test/protocol.test.ts>
- **验证**: <跑了什么命令 + 结果。如 `npm test` → 12 passed;或贴关键断言>
- **决策 / 偏离 PLAN**: <无 / 为何偏离 + 是否已回写 PLAN.md>
- **遗留 / 待办**: <无 / 后续子任务需注意的点>
- **阻塞**(仅 `[!]` 时): <卡在哪,需要什么>
- **commit**: <hash 或 N/A>
======================================================= -->
### 2026-06-15 · T0 项目记录起点(计划就绪)
- **状态**: `[x]` DONE
- **改动**: 创建 `docs/PROGRESS_LOG.md``docs/PLAN.md`(细粒度 T1T21、为多 agent 并行设计);`CLAUDE.md` 加入 plan/log 工作流约束。
- **验证**: 文档自检;LOG 任务总览的 Steps 总数已与 PLAN 各任务勾选项对齐。
- **决策 / 偏离 PLAN**: 采用 TypeScript(ARCHITECTURE §0);两份设计文档已多团队交叉验证并修订 12 项;计划按依赖分 W0W5 波次,W1 含 9 个零交叉并行任务。
- **遗留 / 待办**: 进入 **W0 / T1**(脚手架 + 装齐依赖);T1 完成后 T2 冻结 `src/types.ts`,随后 W1 可大规模并行。
- **commit**: N/A