| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 个月前 |
ADE-Spec:需求开发文档与指导流程
范围:BitFun 仓库中用于「需求开发」的文档工作夹(spec / design / plan / 收尾记录)。 用途:作为
docs/ade-spec/的入口文档。说明这里存放什么文档、如何命名、以及一条 从需求到交付的可执行开发流程。具体文档只回答局部问题,本文件只回答流程与边界。
ade-spec 与现有文档夹的分工:
| 文档夹 | 角色 | 与 ade-spec 的关系 |
|---|---|---|
docs/architecture |
稳定架构边界与设计 | ade-spec 的设计稿在稳定后迁入或链接回此处 |
docs/plans |
仓库级实施计划 | 跨模块、长周期的正式计划放此处;ade-spec 侧重单需求 |
docs/features |
单特性设计 | 与 ade-spec 设计稿重叠时以 features 为权威 |
docs/sdlc-harness |
质量治理与证据 | 需要阶段门禁/证据时引用此处契约 |
docs/superpowers/specs |
子代理执行级 spec | 已落地的执行 spec;ade-spec 可作为其上游 |
文档定位
ade-spec/ 存放正在开发中的需求文档:需求 intake、调研、设计稿、实施计划、收尾
记录。文档随需求推进而演进;稳定的设计与契约应迁入对应权威文档夹(architecture /
features / plans),避免在 ade-spec 形成第二套权威源。
文档成熟度用文件名前缀表达:
draft-<topic>.md:仍在讨论,结论未定,可被推翻。<YYYY-MM-DD>-<topic>.md:已确认进入实施,结论可被引用。completed-<topic>.md:需求已交付,仅作存档与回溯。
<topic> 用 kebab-case 英文短词,便于跨文档引用与检索。中文正文允许,文件名保持英文。
开发指导流程
流程为阶段递进,每阶段有明确产物与退出条件。低风险小改动可跳过非必要阶段(见 「最小流程」),但安全/凭据/网络/数据迁移/发布相关需求必须走全流程。
0 Intake → 1 调研与边界 → 2 设计 → 3 计划 → 4 实现 → 5 验证 → 6 收尾
阶段 0:需求登记(Intake)
产物:draft-<topic>.md,含以下最小字段:
- 背景:为什么做、谁需要、当前痛点。
- 目标:一句话产品目标,明确做什么、不做什么。
- 范围:纳入项与显式排除项(避免范围蔓延)。
- 涉及面:粗略点出受影响的层(interfaces / assembly / adapters / services / execution / contracts)与产品面(desktop / cli / web-ui / mobile-web / installer)。
- 风险初判:是否触碰安全边界、凭据、网络、数据迁移、发布、远程兼容、i18n、主题。
退出条件:目标与范围可被一句话复述,且已点出明显风险面。
阶段 1:调研与边界确认
产物:在 draft-<topic>.md 增补「调研结论」「根因」「边界」三节。
必读(按受影响层取最近 AGENTS.md):
- 仓库根
AGENTS.md的「分层模块索引」「边界规则」「平台边界」 「远程兼容」「Agent loop 行为」。 - 受影响层的最近
AGENTS.md(如src/crates/services/AGENTS.md)。 - 架构敏感改动必读
docs/architecture/product-architecture.md。 - CLI/TUI 改动必读
docs/architecture/cli-product-line-design.md与src/apps/cli/AGENTS.md。 - HarmonyOS PC 目标改动另读
docs/architecture/platform-portability-design.md。 - SDLC/证据/门禁改动先读
docs/sdlc-harness/README.md再读design.md。
边界确认要点:
- 命中哪一层?层间依赖是否向上?是否把具体适配/OS/服务细节误放到 assembly/contracts?
- 是否在 shared core 引入
tauri::AppHandle等宿主 API?应走抽象端口。 - 是否引入新 Tauri command?命名
snake_case,TS 用camelCase包装但以request结构体调用,并在src/apps/desktop/src/api/remote_workspace_policy.rs声明远程工作区策略。 - 是否影响远程工作区/远程控制同步?不能支持时需显式 gate 或给出清晰不可用提示。
退出条件:根因可解释、层归属明确、安全/远程/i18n/主题风险已显式列出。
阶段 2:设计(Design)
产物:升级为 <YYYY-MM-DD>-<topic>.md,新增「方案」「状态模型」「远程兼容」
「i18n 与主题」「测试方法」节。
建议结构(可裁剪):
- 方案:已确认结论,含数据流、命令/响应 serde tag、端口与实现归属。
- 状态模型:用表格列状态、含义、owner;状态间独立性必须写清。
- 远程兼容:该能力是本地 shell 还是远程?是否新增网络/SSH/agent-loop 往返?
- i18n:新增 locale key 所在 namespace 与共享 term;不跨产品面引用 Web UI 资源。
- 主题:是否新增颜色/token?优先复用语义/组件/领域 token;新 token 需写 owner 契约。
- 安全:执行位置、沙箱等级、副作用、授权范围;未知能力默认受限。
- 测试方法:单元/契约/聚焦 E2E;列出最近的聚焦测试路径。
退出条件:方案被至少一名 owner 确认,且与权威架构无冲突。
阶段 3:实施计划(Plan)
产物:在 spec 内追加「实施计划」节,或单独 plan-<topic>.md。
采用 checkbox 语法以便子代理逐条执行(与 docs/plans 一致):
## 实施计划
### Milestone 1:<切片名>
Risk: <Low/Medium/High>。<一句理由>。
- [ ] <任务>。Risk: <Low/Medium/High>。
- [ ] <任务>。Risk: <Low/Medium/High>。
每个任务应可独立验证、可独立回滚;高风险任务单独成条并写明回滚/兜底。
退出条件:任务列表可被第三人/子代理在不追问的情况下执行。
阶段 4:实现(Implementation)
遵守仓库全局准则(节选自根 AGENTS.md,详见原文):
- 不写注释,除非被要求。
- 日志仅英文,无 emoji;前端见
src/web-ui/LOGGING.md,后端见src/crates/LOGGING.md。 - Tauri command:
snake_case,以结构化request调用;不在 UI 组件直接调用 Tauri API,走 adapter/infrastructure 层。 - 平台边界:桌面宿主适配放
src/apps/desktop,shared core 不用宿主 API。 - 远程兼容:每个新增 desktop Tauri command 必须在
remote_workspace_policy.rs声明策略,否则契约测试拒绝。 - i18n:改
locales.json后跑pnpm run i18n:generate;不在 mobile-web / installer 引用 Web UI 资源。 - 主题:不靠抬高 baseline、放宽 allowlist 或删审计让审计通过;新 token 需 owner 契约。
- Agent loop:不通过字符串/计数硬编码来抑制循环;先查根因。
阶段 5:验证(Verification)
按根 AGENTS.md 的「验证」表选择最小可覆盖本次改动的本地预检;CI 负责完整
build 与宽测试套。常用项:
| 改动类型 | 最小验证 |
|---|---|
| 前端 UI/状态/适配(无 i18n 资源/契约改动) | pnpm run type-check:web + 最近聚焦测试 |
| 仅 locale 资源 | pnpm run i18n:audit |
| locale 契约或共享 term | pnpm run i18n:generate && pnpm run i18n:contract:test && pnpm run i18n:audit |
| 共享 Rust(core/transport/adapters/services) | cargo check --workspace + 最近聚焦 cargo test |
| 桌面集成/Tauri/浏览器-计算机使用 | cargo check -p bitfun-desktop + 聚焦桌面测试 |
ai-adapters 流契约改动 |
加 cargo test -p bitfun-agent-stream |
| 安装包前端/i18n(无打包改动) | pnpm --dir BitFun-Installer run type-check |
| 安装包 Tauri/Rust | cargo check --manifest-path BitFun-Installer/src-tauri/Cargo.toml |
格式与仓库卫生:改 Rust 后优先 pnpm run fmt:rs;UI 改动跑 pnpm run lint:web。
退出条件:对应最小验证全绿;新行为有聚焦测试覆盖。
阶段 6:收尾(Closeout)
产物:文件名升级为 completed-<topic>.md,追加「结果」「回溯」「遗留」节。
- 结果:交付了什么、对应 spec 哪些任务。
- 回溯:稳定设计是否已迁入 architecture/features/plans;ade-spec 不留第二权威源。
- 遗留:未做项、后续需求入口、已知风险。
退出条件:权威文档已更新或显式标注「无需迁移」,ade-spec 文档归档。
最小流程(低风险小改动)
不触碰安全/凭据/网络/数据迁移/发布/远程/i18n/主题的改动可只走:
- 在 spec 中记一句话目标与范围。
- 跳过独立设计稿,直接在任务条目里写方案。
- 实现 → 对应最小验证 → 收尾一句话。
但仍须遵守「实现」与「验证」两节的仓库准则。
模板速查
Spec 模板
# <Title>
Date: <YYYY-MM-DD>
Scope: <受影响路径与层>
## 背景
## 目标
## 范围
- 纳入:
- 排除:
## 调研结论 / 根因
## 方案(已确认)
## 状态模型
| 状态 | 含义 | owner |
|---|---|---|
## 远程兼容
## i18n 与主题
## 安全
## 测试方法
## 实施计划
### Milestone 1:<切片名>
Risk: <L/M/H>。<理由>。
- [ ] <任务>。Risk: <L/M/H>。
Plan 模板(独立计划文件)
# <Topic> Implementation Plan
**Goal:** <一句话产品目标>。
**Architecture:** <层归属与边界>。
**Tech Stack:** <框架/库/测试工具>。
## Milestone 1:<切片名>
Risk: <L/M/H>。<理由>。
- [ ] <任务>。Risk: <L/M/H>。
与权威文档的对齐规则
- 本夹文档为开发期工作件,不是权威源。稳定结论须迁入对应权威文档夹。
- 与最近
AGENTS.md冲突时,以更近、更具体的AGENTS.md为准。 - 与
docs/architecture冲突时,以 architecture 为准;如需偏离,在 spec 内写明理由。