|
| 1 | +# .spec — 交互式工作流规范 |
| 2 | + |
| 3 | +gkNextRenderer 项目的 spec 驱动开发工作流目录。AGENT 在当前 session 内根据这些文件调度任务,**不调用其他 agent,不 sleep**。 |
| 4 | + |
| 5 | +## 文件结构 |
| 6 | + |
| 7 | +| 路径 | 用途 | 谁写 | |
| 8 | +| --- | --- | --- | |
| 9 | +| `TODO.md` | 活跃任务列表 | 用户(任务内容)+ AGENT(状态字符、journal 链接) | |
| 10 | +| `ARCHIVE.md` | 归档的完成任务 | `gnb todo archive` 或用户 | |
| 11 | +| `specs/<id>.md` | 复杂任务的详细规格,**仅 spec 类任务需要** | 用户 | |
| 12 | +| `journal/<id>.md` | 任务完成报告,一任务一文件 | AGENT | |
| 13 | +| `blockers/<id>.md` | AGENT 卡住时的提问,一任务一文件 | AGENT | |
| 14 | + |
| 15 | +## TODO.md 格式 |
| 16 | + |
| 17 | +```markdown |
| 18 | +# TODO |
| 19 | + |
| 20 | +## Milestone: <名字> <!-- status: active|done --> |
| 21 | + |
| 22 | +### 下一步 |
| 23 | +- [ ] `#00018` [P0][BUG] 修复贴图采样越界 |
| 24 | +- [/] `#00019` [P1][FEAT] 体积雾 → specs/00019.md |
| 25 | +- [!] `#00020` [SPIKE] work graphs (blockers/00020.md) |
| 26 | + |
| 27 | +### 待规划 |
| 28 | +- [ ] `#00021` [IDEA] 试试 NRD 降噪 |
| 29 | + |
| 30 | +### 最近完成 |
| 31 | +- [x] `#00017` [BUG] 修复贴图过滤 → journal/00017.md (2026-05-13) |
| 32 | +``` |
| 33 | + |
| 34 | +### 三个段落 |
| 35 | + |
| 36 | +- **下一步**:AGENT 只扫这一段,按从上到下顺序执行 |
| 37 | +- **待规划**:想法池/积压。AGENT **完全不动**,从待规划挪到下一步由用户操作 |
| 38 | +- **最近完成**:累积完成的任务,定期由 `gnb todo archive` 移到 ARCHIVE.md |
| 39 | + |
| 40 | +### 状态字符 |
| 41 | + |
| 42 | +| 字符 | 含义 | |
| 43 | +| --- | --- | |
| 44 | +| `[ ]` | pending | |
| 45 | +| `[/]` | doing(执行中,正常不持久化此状态,crash 恢复用) | |
| 46 | +| `[x]` | done | |
| 47 | +| `[!]` | blocked(对应 `blockers/<id>.md` 有说明) | |
| 48 | + |
| 49 | +### ID |
| 50 | + |
| 51 | +五位全局递增数字 `#00001` ~ `#99999`。新 ID 取当前所有任务(含 ARCHIVE)中最大 ID + 1。 |
| 52 | + |
| 53 | +### 内联标签 |
| 54 | + |
| 55 | +- 优先级:`[P0]` `[P1]` `[P2]` |
| 56 | +- 类型:`[BUG]` `[FEAT]` `[IDEA]` `[SPIKE]` `[REFACTOR]` `[DOC]` |
| 57 | + |
| 58 | +## journal/`<id>`.md 格式 |
| 59 | + |
| 60 | +```markdown |
| 61 | +--- |
| 62 | +task: 00018 |
| 63 | +completed: 2026-05-14T15:30:00 |
| 64 | +build_ok: true |
| 65 | +--- |
| 66 | + |
| 67 | +## 做了什么 |
| 68 | +… |
| 69 | + |
| 70 | +## 改动文件 |
| 71 | +- `src/Rendering/VolumeFog.cpp` |
| 72 | + |
| 73 | +## 风险/遗留 |
| 74 | +- ⚠️ 与 SSR 有交互问题,未处理 |
| 75 | +``` |
| 76 | + |
| 77 | +## blockers/`<id>`.md 格式 |
| 78 | + |
| 79 | +```markdown |
| 80 | +--- |
| 81 | +task: 00018 |
| 82 | +blocked_at: 2026-05-14T15:30:00 |
| 83 | +--- |
| 84 | + |
| 85 | +## 歧义点 |
| 86 | +任务描述里说"修复采样越界",但越界发生在两处: |
| 87 | +1. `SampleEnvironment.hlsl:42` — 已知问题 |
| 88 | +2. `VolumeFog.cpp:128` — 看上去也有类似模式 |
| 89 | + |
| 90 | +## 候选方案 |
| 91 | +- A. 只修 1 |
| 92 | +- B. 修 1 + 2 |
| 93 | + |
| 94 | +等用户答复后继续。 |
| 95 | +``` |
| 96 | + |
| 97 | +## AGENT 行为边界 |
| 98 | + |
| 99 | +**可改**: |
| 100 | +- TODO.md 中任务的状态字符(`[ ]` → `[x]` / `[!]`) |
| 101 | +- TODO.md 中任务行末追加 journal 链接 |
| 102 | +- `journal/`、`blockers/` 下的文件 |
| 103 | + |
| 104 | +**不可改**: |
| 105 | +- TODO.md 中任务标题、ID、优先级、类型、所属段落 |
| 106 | +- `specs/` 下的文件(用户写的需求) |
| 107 | +- `ARCHIVE.md`(归档由工具或用户操作) |
| 108 | +- "待规划"段任何任务 |
0 commit comments