diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index b679286..0d5f9f4 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -133,7 +133,9 @@ Schema 定义在 `src/lib/db.ts`,12 张表: | Bridge 系统 | `docs/handover/bridge-system.md` | 架构、适配器、渲染管线 | | Agent 工具集成 | `docs/handover/agent-tooling-todo-bridge.md` | SDK 工具调用、任务桥接 | | SDK 集成调研 | `docs/research/chat-sdk-integration-feasibility.md` | Chat SDK 可行性分析 | -| 上下文存储迁移 | `docs/research/context-storage-migration-plan.md` | 数据库迁移方案 | +| 上下文存储迁移(调研) | `docs/research/context-storage-migration-plan.md` | 数据库迁移详细方案 | +| 上下文存储迁移(执行) | `docs/exec-plans/active/context-storage-migration.md` | 分阶段进度 + 决策日志 | +| 技术债务 | `docs/exec-plans/tech-debt-tracker.md` | 已知技术债务清单 | ## 技术栈 diff --git a/CLAUDE.md b/CLAUDE.md index 009e75e..ad23de3 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -52,9 +52,18 @@ CodePilot — Claude Code 的桌面 GUI 客户端,基于 Electron + Next.js。 **构建:** macOS 产出 DMG(arm64 + x64),Windows 产出 NSIS 安装包。`scripts/after-pack.js` 重编译 better-sqlite3 为 Electron ABI。构建前清理 `rm -rf release/ .next/`。 +## 执行计划 + +**中大型功能(跨 3+ 模块、涉及 schema 变更、需分阶段交付)必须先写执行计划再开工。** +- 活跃计划放 `docs/exec-plans/active/`,完成后移至 `completed/` +- 纯调研/可行性分析放 `docs/research/` +- 发现技术债务时记录到 `docs/exec-plans/tech-debt-tracker.md` +- 模板和规范见 `docs/exec-plans/README.md` + ## 文档 - [ARCHITECTURE.md](./ARCHITECTURE.md) — 项目架构、目录结构、数据流、新功能触及点 +- `docs/exec-plans/` — 执行计划(进度状态 + 决策日志 + 技术债务) - `docs/handover/` — 交接文档(架构、数据流、设计决策) - `docs/research/` — 调研文档(技术方案、可行性分析) diff --git a/docs/CLAUDE.md b/docs/CLAUDE.md index 43de9d2..6fe8c36 100644 --- a/docs/CLAUDE.md +++ b/docs/CLAUDE.md @@ -2,5 +2,9 @@ - `handover/` — 交接文档(架构、数据流、设计决策) - `research/` — 调研文档(技术方案、可行性分析) +- `exec-plans/` — 执行计划(`active/` 进行中、`completed/` 已完成)+ 技术债务追踪 -**规则:检索子目录前先读对应 README.md;增删文件后更新 README.md 索引。** +**规则:** +- 检索子目录前先读对应 README.md;增删文件后更新 README.md 索引 +- 纯调研放 `research/`;有明确分阶段步骤的放 `exec-plans/active/` +- 执行计划完成后移至 `exec-plans/completed/` diff --git a/docs/exec-plans/README.md b/docs/exec-plans/README.md new file mode 100644 index 0000000..c64f42e --- /dev/null +++ b/docs/exec-plans/README.md @@ -0,0 +1,51 @@ +# Exec Plans / 执行计划 + +中大型功能的执行计划,包含分阶段目标、进度状态和决策日志。 + +**AI 须知:** +- 新建执行计划放在 `active/`,完成后移至 `completed/` +- 纯调研/可行性分析仍放 `docs/research/` +- 修改或新增文件后更新下方索引 +- 检索本目录前先读此文件 + +## 什么时候需要执行计划 + +- 涉及数据库 schema 变更 +- 跨 3 个以上模块的功能 +- 需要分阶段交付的中大型功能 +- 重构或迁移类任务 + +## 执行计划模板 + +```markdown +# {功能名称} + +> 创建时间:YYYY-MM-DD +> 最后更新:YYYY-MM-DD + +## 状态 + +| Phase | 内容 | 状态 | 备注 | +|-------|------|------|------| +| Phase 0 | ... | 📋 待开始 / 🔄 进行中 / ✅ 已完成 / ⏸ 暂缓 | | + +## 决策日志 + +- YYYY-MM-DD: 决策内容及原因 + +## 详细设计 + +(目标、技术方案、拆分步骤、依赖项、验收标准) +``` + +## 索引 + +### Active + +| 文件 | 主题 | 状态 | +|------|------|------| +| active/context-storage-migration.md | 上下文共享与存储迁移 | Phase 0 部分完成,Phase 1-3 待开始 | + +### Completed + +(暂无) diff --git a/docs/exec-plans/active/context-storage-migration.md b/docs/exec-plans/active/context-storage-migration.md new file mode 100644 index 0000000..ba21518 --- /dev/null +++ b/docs/exec-plans/active/context-storage-migration.md @@ -0,0 +1,35 @@ +# 上下文共享与存储迁移 + +> 原始调研:`docs/research/context-storage-migration-plan.md` +> 创建时间:2026-02-26 +> 最后更新:2026-03-04 + +## 状态 + +| Phase | 内容 | 状态 | 备注 | +|-------|------|------|------| +| Phase 0 | `sdk_cwd` 字段 + backfill | ✅ 部分完成 | `sdk_cwd` 已上线;`projects` 表和 `canUpdateSdkCwd` 逻辑未实现 | +| Phase 1 | `message_parts` 结构化消息 | 📋 待开始 | 暂用现有 `content` JSON 数组字段 | +| Phase 2 | `session_runtime_state` 运行态持久化 | 📋 待开始 | 当前依赖内存 Map | +| Phase 3 | 会话压缩摘要 + archive/fork | 📋 待开始 | | + +## 决策日志 + +- **2026-02-26**: 完成调研文档,规划 Phase 0-3 +- **2026-02-xx**: `sdk_cwd` 字段上线,backfill 逻辑确认工作正常(`db.ts` L320-323) +- **2026-03-04**: 迁移为执行文档。Phase 0 的 `projects` 表暂未创建——当前按 `working_directory` 隐式分组已满足需求;`canUpdateSdkCwd` 逻辑暂缺,但实际使用中会话创建时 `sdk_cwd = working_directory` 已固定 + +## Phase 0 剩余项 + +- [ ] 新建 `projects` 表,为历史 session 回填 `project_id` +- [ ] 在 `PATCH /api/chat/sessions/[id]` 中实现 `canUpdateSdkCwd` 逻辑 + +## Phase 1 前置条件 + +- 确认 Bridge 系统是否需要 `message_parts` 的结构化读取 +- 评估当前 `content` JSON 数组方案的局限性 + +## 详细设计 + +完整的目标表结构、SQL 迁移草案、状态机设计、代码落点建议见原始调研文档: +`docs/research/context-storage-migration-plan.md` diff --git a/docs/exec-plans/tech-debt-tracker.md b/docs/exec-plans/tech-debt-tracker.md new file mode 100644 index 0000000..ee93802 --- /dev/null +++ b/docs/exec-plans/tech-debt-tracker.md @@ -0,0 +1,20 @@ +# Tech Debt Tracker / 技术债务追踪 + +已知技术债务清单。每项标注优先级、影响范围和初步解决思路。 + +**AI 须知:发现新的技术债务时添加到此文件;解决后标注完成日期。** + +## 活跃项 + +| # | 描述 | 优先级 | 影响范围 | 发现日期 | +|---|------|--------|----------|----------| +| 1 | ESLint 存量 4 个 error(`MessageItem.tsx` hooks 条件调用、`ChatView` impure render、`GalleryDetail` setState in effect) | 中 | CI lint 步骤需 `continue-on-error` | 2026-03-04 | +| 2 | `conversation-registry` / `permission-registry` 运行态依赖内存 Map,重启后丢失 | 中 | 长时间运行的会话、Bridge 模式 | 2026-02-26 | +| 3 | 消息 fallback 上下文固定最近 50 条,无动态 token 预算截断 | 低 | 长会话上下文质量 | 2026-02-26 | +| 4 | `context-storage-migration` Phase 0 剩余:`projects` 表未建、`canUpdateSdkCwd` 未实现 | 低 | 多项目隔离 | 2026-03-04 | + +## 已解决 + +| # | 描述 | 解决日期 | 解决方式 | +|---|------|----------|----------| +| — | (暂无) | | | diff --git a/docs/research/README.md b/docs/research/README.md index cda2025..373a8b0 100644 --- a/docs/research/README.md +++ b/docs/research/README.md @@ -9,4 +9,4 @@ | 文件 | 主题 | |------|------| | chat-sdk-integration-feasibility.md | Vercel Chat SDK 集成可行性调研 | -| context-storage-migration-plan.md | 上下文共享与存储迁移设计 | +| context-storage-migration-plan.md | 上下文共享与存储迁移设计(详细方案;执行跟踪见 `docs/exec-plans/active/context-storage-migration.md`) |