memory-bank-skill 5.3.0 → 5.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -13
- package/dist/cli.js +1 -1
- package/package.json +1 -1
- package/skill/memory-bank/README.md +20 -7
- package/skill/memory-bank/SKILL.md +45 -22
- package/skill/memory-bank/references/advanced-rules.md +20 -4
- package/skill/memory-bank/references/templates.md +201 -3
- package/templates/active.md +13 -4
- package/templates/docs/design-template.md +28 -0
package/README.md
CHANGED
|
@@ -41,9 +41,9 @@ bunx memory-bank-skill doctor
|
|
|
41
41
|
| 操作 | 目标路径 |
|
|
42
42
|
|------|----------|
|
|
43
43
|
| 复制 Skill 文件 | `~/.config/opencode/skill/memory-bank/` |
|
|
44
|
-
|
|
|
45
|
-
|
|
|
46
|
-
|
|
|
44
|
+
| 配置 opencode.json | 添加 `permission.skill=allow`,注册插件包 `memory-bank-skill` |
|
|
45
|
+
| 写入 manifest | `~/.config/opencode/skill/memory-bank/.manifest.json` |
|
|
46
|
+
| 依赖安装 | 不自动执行;如需手动运行 `cd ~/.config/opencode && bun install` |
|
|
47
47
|
|
|
48
48
|
---
|
|
49
49
|
|
|
@@ -55,7 +55,7 @@ bunx memory-bank-skill doctor
|
|
|
55
55
|
|------|---------|
|
|
56
56
|
| **已有代码库** | 扫描 package.json/README 等,自动生成 brief.md + tech.md |
|
|
57
57
|
| **新项目** | 不创建任何文件,等你开始工作后按需创建 |
|
|
58
|
-
| **已有 Memory Bank** | 直接读取 brief.md + active.md,恢复上下文 |
|
|
58
|
+
| **已有 Memory Bank** | 直接读取 brief.md + active.md + _index.md,恢复上下文 |
|
|
59
59
|
|
|
60
60
|
---
|
|
61
61
|
|
|
@@ -75,12 +75,17 @@ memory-bank/
|
|
|
75
75
|
│
|
|
76
76
|
├── docs/ # 技术文档
|
|
77
77
|
│ ├── architecture.md
|
|
78
|
-
│
|
|
78
|
+
│ ├── design-*.md
|
|
79
|
+
│ ├── modules/
|
|
80
|
+
│ └── specs/
|
|
79
81
|
│
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
├── learnings/ # 经验沉淀
|
|
83
|
+
│ ├── bugs/
|
|
84
|
+
│ ├── performance/
|
|
85
|
+
│ └── integrations/
|
|
86
|
+
│
|
|
87
|
+
└── archive/ # 归档文件(按月)
|
|
88
|
+
└── active_YYYY-MM.md
|
|
84
89
|
```
|
|
85
90
|
|
|
86
91
|
---
|
|
@@ -96,17 +101,21 @@ Memory Bank 包含一个 OpenCode 插件,提供两个核心功能:
|
|
|
96
101
|
- 文件缓存 + mtime 检测,只有变更才重新读取
|
|
97
102
|
- 12,000 字符上限,超出自动截断
|
|
98
103
|
|
|
99
|
-
### 2.
|
|
104
|
+
### 2. 自动提醒更新(当前禁用)
|
|
100
105
|
|
|
101
106
|
AI 尝试停止时,检测是否需要更新 Memory Bank:
|
|
102
107
|
- 检测文件修改(代码/配置/文档)
|
|
103
108
|
- 检测用户消息关键词(新需求、bug、决策等)
|
|
104
109
|
- 提醒初始化或更新
|
|
105
110
|
|
|
111
|
+
> 注意:自动提醒链路当前在插件中整体暂时禁用(`evaluateAndFireReminder()` 未被调用),以下描述为历史行为。
|
|
112
|
+
|
|
113
|
+
当前提醒禁用时,以下逃逸阀不会生效。
|
|
114
|
+
|
|
106
115
|
**逃逸阀**:
|
|
107
116
|
- 回复"无需更新"或"已检查" → 本次会话不再提醒
|
|
108
117
|
- 回复"跳过初始化" → 本次会话不再提醒初始化
|
|
109
|
-
- 环境变量 `MEMORY_BANK_DISABLED=1` →
|
|
118
|
+
- 环境变量 `MEMORY_BANK_DISABLED=1|true` → 禁用提醒链路(上下文注入仍然生效)
|
|
110
119
|
|
|
111
120
|
---
|
|
112
121
|
|
|
@@ -169,11 +178,11 @@ service=memory-bank Plugin initialized (unified) {"projectRoot":"..."}
|
|
|
169
178
|
| Skill 主文件 | `~/.config/opencode/skill/memory-bank/SKILL.md` |
|
|
170
179
|
| 文件模板 | `~/.config/opencode/skill/memory-bank/references/templates.md` |
|
|
171
180
|
| 高级规则 | `~/.config/opencode/skill/memory-bank/references/advanced-rules.md` |
|
|
172
|
-
| 插件 |
|
|
181
|
+
| 插件 | `opencode.json` 的 `plugin` 数组(`memory-bank-skill`) |
|
|
173
182
|
|
|
174
183
|
---
|
|
175
184
|
|
|
176
185
|
## 版本
|
|
177
186
|
|
|
178
|
-
- **版本**: 5.2
|
|
187
|
+
- **版本**: 5.3.2
|
|
179
188
|
- **主要更新**: 增加 Design 设计文档支持,方案讨论确定时自动创建/更新 docs/design-*.md
|
package/dist/cli.js
CHANGED
package/package.json
CHANGED
|
@@ -14,10 +14,14 @@ Memory Bank 是一个纯 Markdown 的项目记忆系统。通过结构化文档
|
|
|
14
14
|
- **技术文档**: 三层技术文档(架构/模块/细节),追踪实现变更
|
|
15
15
|
- **经验沉淀**: 分类管理 bug/性能/集成经验
|
|
16
16
|
|
|
17
|
+
> 注意:插件提醒链路当前暂时禁用,自动写入依赖 AI 按规则执行。
|
|
18
|
+
> 环境变量 `MEMORY_BANK_DISABLED=1|true` 用于禁用提醒链路(提醒恢复前无效)。
|
|
19
|
+
|
|
17
20
|
## 目录结构
|
|
18
21
|
|
|
19
22
|
```
|
|
20
23
|
memory-bank/
|
|
24
|
+
├── _index.md # 索引文件
|
|
21
25
|
├── brief.md # 项目概述
|
|
22
26
|
├── tech.md # 技术栈 + 环境
|
|
23
27
|
├── active.md # 当前焦点(高频更新)
|
|
@@ -29,18 +33,23 @@ memory-bank/
|
|
|
29
33
|
│
|
|
30
34
|
├── docs/ # 技术文档
|
|
31
35
|
│ ├── architecture.md # L1: 架构层
|
|
36
|
+
│ ├── design-*.md # 方案设计文档
|
|
32
37
|
│ ├── modules/ # L2: 模块层
|
|
33
38
|
│ └── specs/ # L3: 细节层
|
|
34
39
|
│
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
40
|
+
├── learnings/ # 经验沉淀
|
|
41
|
+
│ ├── bugs/
|
|
42
|
+
│ ├── performance/
|
|
43
|
+
│ └── integrations/
|
|
44
|
+
│
|
|
45
|
+
└── archive/ # 归档文件(按月)
|
|
46
|
+
└── active_YYYY-MM.md
|
|
39
47
|
```
|
|
40
48
|
|
|
41
49
|
## 使用方法
|
|
42
50
|
|
|
43
|
-
###
|
|
51
|
+
### 初始化(可选)
|
|
52
|
+
默认无需初始化,仅在需要手动创建时使用。
|
|
44
53
|
```
|
|
45
54
|
初始化记忆
|
|
46
55
|
init memory bank
|
|
@@ -80,22 +89,26 @@ project status
|
|
|
80
89
|
|
|
81
90
|
| 文件 | 用途 | 更新频率 |
|
|
82
91
|
|------|------|----------|
|
|
92
|
+
| _index.md | 索引与检索提示 | 中 |
|
|
83
93
|
| brief.md | 项目是什么 | 低 |
|
|
84
94
|
| tech.md | 技术栈和环境 | 低 |
|
|
85
95
|
| active.md | 当前工作焦点 | 高 |
|
|
86
96
|
| progress.md | 完成状态 | 中 |
|
|
87
97
|
| patterns.md | 技术决策和约定 | 中 |
|
|
88
98
|
| requirements/*.md | 需求文档 | 按需求变更 |
|
|
99
|
+
| docs/design-*.md | 设计文档 | 按设计变更 |
|
|
89
100
|
| docs/*.md | 技术文档 | 按实现变更 |
|
|
90
101
|
| learnings/*/*.md | 经验记录 | 按事件 |
|
|
102
|
+
| archive/*.md | 归档记录 | 按需 |
|
|
91
103
|
|
|
92
104
|
## 设计原则
|
|
93
105
|
|
|
94
106
|
1. **纯 Markdown**: 无数据库,无外部服务,可 git 管理
|
|
95
107
|
2. **人类可读**: 所有文档可直接阅读和编辑
|
|
96
|
-
3. **简洁优先**: 核心
|
|
108
|
+
3. **简洁优先**: 核心 6 文件 + 4 目录
|
|
97
109
|
4. **追加优先**: patterns 和 learnings 只追加不重写
|
|
98
|
-
5.
|
|
110
|
+
5. **区块分离**: MACHINE_BLOCK 与 USER_BLOCK 分离维护
|
|
111
|
+
6. **变更内聚**: 变更历史放在对应文档内
|
|
99
112
|
|
|
100
113
|
## 安全提示
|
|
101
114
|
|
|
@@ -28,22 +28,28 @@ memory-bank/
|
|
|
28
28
|
├── patterns.md # 技术决策 + 代码约定
|
|
29
29
|
│
|
|
30
30
|
├── requirements/ # 需求池
|
|
31
|
-
│ ├── _index.md
|
|
32
31
|
│ └── REQ-{ID}-{slug}.md
|
|
33
32
|
│
|
|
34
33
|
├── docs/ # 技术文档
|
|
35
|
-
│ ├── _index.md
|
|
36
34
|
│ ├── architecture.md
|
|
35
|
+
│ ├── design-*.md
|
|
37
36
|
│ ├── modules/
|
|
38
37
|
│ └── specs/
|
|
39
38
|
│
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
39
|
+
├── learnings/ # 经验沉淀
|
|
40
|
+
│ ├── bugs/
|
|
41
|
+
│ ├── performance/
|
|
42
|
+
│ └── integrations/
|
|
43
|
+
│
|
|
44
|
+
└── archive/ # 归档文件(按月)
|
|
45
|
+
└── active_YYYY-MM.md
|
|
45
46
|
```
|
|
46
47
|
|
|
48
|
+
可选子索引(规模变大时启用):
|
|
49
|
+
- `requirements/_index.md`
|
|
50
|
+
- `docs/_index.md`
|
|
51
|
+
- `learnings/_index.md`
|
|
52
|
+
|
|
47
53
|
---
|
|
48
54
|
|
|
49
55
|
## Bootstrap 流程(零初始化)
|
|
@@ -92,11 +98,10 @@ memory-bank/
|
|
|
92
98
|
### 每轮对话流程
|
|
93
99
|
|
|
94
100
|
```
|
|
95
|
-
1. 固定加载:brief.md + active.md(如存在)
|
|
101
|
+
1. 固定加载:brief.md + active.md + _index.md(如存在)
|
|
96
102
|
|
|
97
103
|
2. 语义判断:
|
|
98
|
-
-
|
|
99
|
-
- 基于用户消息选择相关文件
|
|
104
|
+
- 基于 _index.md 选择相关文件
|
|
100
105
|
- 输出决策:{ files: [...], reason: "..." }
|
|
101
106
|
|
|
102
107
|
3. 按预算加载选中文件
|
|
@@ -123,12 +128,31 @@ memory-bank/
|
|
|
123
128
|
| **Design** | 新设计 / 重新设计 / 设计变更 | docs/design-{slug}.md(已存在则更新) |
|
|
124
129
|
| **Decision** | 技术选型确定,用户认可 | patterns.md |
|
|
125
130
|
| **Learning** | Bug 修复/性能优化/集成踩坑 | learnings/{type}/{date}-{slug}.md |
|
|
131
|
+
| **Archive** | active.md 超过 120 行或已完成条目超过 20 条 | archive/active_YYYY-MM.md |
|
|
132
|
+
|
|
133
|
+
### 归档判定
|
|
134
|
+
|
|
135
|
+
- 已完成条目 = `active.md` 中“已完成(待归档)”区块内的 `- [x]` 数量
|
|
136
|
+
- 若该区块缺失,可回退为统计 `active.md` 中所有 `- [x]` 项
|
|
126
137
|
|
|
127
138
|
### 不写入的情况
|
|
128
139
|
- 普通代码修改
|
|
129
140
|
- 探索性调研(未形成结论)
|
|
130
141
|
- 临时 debug(未确认根因)
|
|
131
142
|
|
|
143
|
+
### patterns vs 设计文档判定
|
|
144
|
+
|
|
145
|
+
用下面的判定避免混淆:
|
|
146
|
+
|
|
147
|
+
- **patterns.md**:全局/长期的技术决策或约定("以后都这样做"、"统一选择 X")
|
|
148
|
+
- **docs/design-*.md**:某个功能/模块/重构的具体实现方案("这个功能怎么搭")
|
|
149
|
+
|
|
150
|
+
快速判断:
|
|
151
|
+
|
|
152
|
+
- 问题是"该功能如何实现" → 写设计文档
|
|
153
|
+
- 问题是"我们以后统一怎么做/用什么" → 追加 patterns
|
|
154
|
+
- 两者都涉及 → 先写设计文档,再把最终技术决策沉淀到 patterns
|
|
155
|
+
|
|
132
156
|
### 写入前确认
|
|
133
157
|
|
|
134
158
|
```
|
|
@@ -250,7 +274,8 @@ Files updated:
|
|
|
250
274
|
- 任何凭证信息
|
|
251
275
|
|
|
252
276
|
### 防止幻觉
|
|
253
|
-
-
|
|
277
|
+
- 默认只读取 _index.md 中列出的文件
|
|
278
|
+
- 用户明确指定路径时允许读取,并补充到索引
|
|
254
279
|
- 创建新文件后必须同步更新索引
|
|
255
280
|
|
|
256
281
|
---
|
|
@@ -262,16 +287,13 @@ Files updated:
|
|
|
262
287
|
└─ 检测 memory-bank/ 是否存在
|
|
263
288
|
|
|
264
289
|
2. 固定加载
|
|
265
|
-
└─ 读取 brief.md + active.md
|
|
266
|
-
|
|
267
|
-
3. 读取索引
|
|
268
|
-
└─ 读取 _index.md
|
|
290
|
+
└─ 读取 brief.md + active.md + _index.md
|
|
269
291
|
|
|
270
|
-
|
|
271
|
-
└─
|
|
292
|
+
3. 语义选择文件
|
|
293
|
+
└─ 基于 _index.md 选择相关文件
|
|
272
294
|
└─ 按预算限制加载
|
|
273
295
|
|
|
274
|
-
|
|
296
|
+
4. 处理用户请求
|
|
275
297
|
└─ **文档驱动开发原则**:
|
|
276
298
|
- 方案讨论确定后 → 先写 memory-bank/docs/design-xxx.md,再写代码
|
|
277
299
|
- 设计文档是契约,代码要符合文档
|
|
@@ -282,7 +304,7 @@ Files updated:
|
|
|
282
304
|
- 没有 memory-bank/ → 第一项是"初始化 Memory Bank",最后一项是"更新 Memory Bank"
|
|
283
305
|
└─ 正常工作
|
|
284
306
|
|
|
285
|
-
|
|
307
|
+
5. 执行"更新 Memory Bank" todo 时
|
|
286
308
|
└─ 检查触发场景:
|
|
287
309
|
- 方案讨论确定 / 设计变更 → 检查 docs/design-*.md 是否已存在
|
|
288
310
|
- 存在 → 更新该文档
|
|
@@ -290,10 +312,11 @@ Files updated:
|
|
|
290
312
|
- 修改了代码/配置文件 → 更新 active.md
|
|
291
313
|
- 修复了 bug / 踩坑经验 → 创建 learnings/xxx.md
|
|
292
314
|
- 做了技术决策 → 追加 patterns.md
|
|
293
|
-
|
|
315
|
+
- 新需求确认 → 创建 requirements/REQ-xxx.md
|
|
316
|
+
- active.md 超出归档阈值 → 归档到 archive/active_YYYY-MM.md 并清理 active.md
|
|
294
317
|
└─ 命中任一条件 → 输出 memory_ops 计划
|
|
295
318
|
|
|
296
|
-
|
|
319
|
+
6. 执行写入
|
|
297
320
|
└─ 用户确认后执行
|
|
298
321
|
```
|
|
299
322
|
|
|
@@ -301,7 +324,7 @@ Files updated:
|
|
|
301
324
|
|
|
302
325
|
## 读取行为规范
|
|
303
326
|
|
|
304
|
-
|
|
327
|
+
当 system prompt 注入 Memory Bank Bootstrap(当前无 `[Memory Bank]` 头部通知)时,遵循以下规范:
|
|
305
328
|
|
|
306
329
|
### 1. 显式声明上下文来源
|
|
307
330
|
|
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
```
|
|
47
47
|
检测到 _index.md 不存在或为空
|
|
48
48
|
→ 扫描 memory-bank/ 下所有 .md 文件
|
|
49
|
+
→ 默认忽略 _index.md 自身(不写入索引表)
|
|
49
50
|
→ 自动重建索引
|
|
50
51
|
→ 提示用户"索引已重建,请检查"
|
|
51
52
|
```
|
|
@@ -72,14 +73,14 @@ Bootstrap 扫描时允许读取(不依赖索引):
|
|
|
72
73
|
|
|
73
74
|
### 冲突检测机制
|
|
74
75
|
|
|
75
|
-
|
|
76
|
+
机器区块可选包含元信息(建议):
|
|
76
77
|
```markdown
|
|
77
78
|
<!-- MACHINE_BLOCK_START -->
|
|
78
79
|
<!-- blockVersion: 3 | lastUpdated: 2024-01-22T10:30:00Z -->
|
|
79
80
|
```
|
|
80
81
|
|
|
81
82
|
**检测流程**:
|
|
82
|
-
1.
|
|
83
|
+
1. 若存在元信息,读取机器区块的 `blockVersion` 和 `lastUpdated`
|
|
83
84
|
2. 计算当前机器区块内容的 hash
|
|
84
85
|
3. 与上次写入时保存的 hash 对比
|
|
85
86
|
4. 如果 hash 不同 → 检测到用户修改
|
|
@@ -147,17 +148,32 @@ Bootstrap 扫描时允许读取(不依赖索引):
|
|
|
147
148
|
|
|
148
149
|
---
|
|
149
150
|
|
|
151
|
+
## 归档阈值规则
|
|
152
|
+
|
|
153
|
+
当 `active.md` 满足以下任一条件时,触发归档:
|
|
154
|
+
|
|
155
|
+
- 行数超过 120 行
|
|
156
|
+
- 已完成条目超过 20 条(`active.md` 中 `- [x]` 数量,优先统计“已完成(待归档)”区块)
|
|
157
|
+
|
|
158
|
+
归档行为:
|
|
159
|
+
|
|
160
|
+
- 移入 `archive/active_YYYY-MM.md`
|
|
161
|
+
- `active.md` 仅保留当前焦点、下一步、阻塞项、最近 30 天变更
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
150
165
|
## 预算控制详细规则
|
|
151
166
|
|
|
152
167
|
### 行数计算方式
|
|
153
168
|
- `size` 字段 = 文件总行数(wc -l)
|
|
169
|
+
- 若文件缺少结尾换行,`wc -l` 可能不计入最后一行(建议保留结尾换行)
|
|
154
170
|
- 机器区块和用户区块都计入
|
|
155
171
|
- 空行计入
|
|
156
172
|
|
|
157
173
|
### 预算分配
|
|
158
174
|
| 类型 | 预算 |
|
|
159
175
|
|------|------|
|
|
160
|
-
| 固定加载(brief + active) | 不限 |
|
|
176
|
+
| 固定加载(brief + active + _index) | 不限 |
|
|
161
177
|
| 每轮额外加载 | 最多 5 个文件 |
|
|
162
178
|
| 额外加载总行数 | 最多 500 行 |
|
|
163
179
|
|
|
@@ -165,7 +181,7 @@ Bootstrap 扫描时允许读取(不依赖索引):
|
|
|
165
181
|
|
|
166
182
|
当候选文件总 size 超过 500 行时:
|
|
167
183
|
```
|
|
168
|
-
1. 固定加载 brief.md + active.md(不计入预算)
|
|
184
|
+
1. 固定加载 brief.md + active.md + _index.md(不计入预算)
|
|
169
185
|
2. 按相关性排序候选文件
|
|
170
186
|
3. 按 size 从小到大依次加载
|
|
171
187
|
4. 累计 size 达到 500 行时停止
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
## _index.md(根索引)
|
|
8
8
|
|
|
9
9
|
```markdown
|
|
10
|
-
# Memory Bank
|
|
10
|
+
# Memory Bank 索引
|
|
11
11
|
|
|
12
12
|
> 自动维护,可手工编辑 summary 以提升检索精度
|
|
13
13
|
|
|
@@ -94,8 +94,11 @@
|
|
|
94
94
|
{正在做什么}
|
|
95
95
|
|
|
96
96
|
## 下一步
|
|
97
|
-
|
|
98
|
-
|
|
97
|
+
- [ ] {next 1}
|
|
98
|
+
- [ ] {next 2}
|
|
99
|
+
|
|
100
|
+
## 已完成(待归档)
|
|
101
|
+
- [x] {done item}
|
|
99
102
|
|
|
100
103
|
## 阻塞项
|
|
101
104
|
- {blocker,无则写「无」}
|
|
@@ -141,6 +144,30 @@
|
|
|
141
144
|
|
|
142
145
|
---
|
|
143
146
|
|
|
147
|
+
## archive/active_YYYY-MM.md
|
|
148
|
+
|
|
149
|
+
```markdown
|
|
150
|
+
# Active Archive - {YYYY-MM}
|
|
151
|
+
|
|
152
|
+
<!-- MACHINE_BLOCK_START -->
|
|
153
|
+
> 归档于: {YYYY-MM-DD}
|
|
154
|
+
|
|
155
|
+
## 已完成条目
|
|
156
|
+
- {item}
|
|
157
|
+
|
|
158
|
+
## 最近变更(历史)
|
|
159
|
+
| 日期 | 变更 |
|
|
160
|
+
|------|------|
|
|
161
|
+
<!-- MACHINE_BLOCK_END -->
|
|
162
|
+
|
|
163
|
+
<!-- USER_BLOCK_START -->
|
|
164
|
+
## 备注
|
|
165
|
+
{用户自由编辑区}
|
|
166
|
+
<!-- USER_BLOCK_END -->
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
144
171
|
## patterns.md
|
|
145
172
|
|
|
146
173
|
```markdown
|
|
@@ -193,6 +220,177 @@
|
|
|
193
220
|
|
|
194
221
|
---
|
|
195
222
|
|
|
223
|
+
以下 docs 模板与 `templates/docs/` 保持一致,更新时需同步。
|
|
224
|
+
|
|
225
|
+
## docs/architecture.md
|
|
226
|
+
|
|
227
|
+
```markdown
|
|
228
|
+
# Architecture
|
|
229
|
+
|
|
230
|
+
> 更新于: {YYYY-MM-DD}
|
|
231
|
+
|
|
232
|
+
## 系统概览
|
|
233
|
+
```
|
|
234
|
+
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
|
235
|
+
│ Layer 1 │────▶│ Layer 2 │────▶│ Layer 3 │
|
|
236
|
+
│ {名称} │ │ {名称} │ │ {名称} │
|
|
237
|
+
└─────────────┘ └─────────────┘ └─────────────┘
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
## 模块划分
|
|
241
|
+
| 模块 | 职责 | 文档 |
|
|
242
|
+
|------|------|------|
|
|
243
|
+
| {module1} | {职责描述} | [modules/{module1}.md](modules/{module1}.md) |
|
|
244
|
+
| {module2} | {职责描述} | [modules/{module2}.md](modules/{module2}.md) |
|
|
245
|
+
|
|
246
|
+
## 关键流程
|
|
247
|
+
|
|
248
|
+
### {流程 1 名称}
|
|
249
|
+
```
|
|
250
|
+
{步骤 1} → {步骤 2} → {步骤 3} → {步骤 4}
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
### {流程 2 名称}
|
|
254
|
+
{流程描述}
|
|
255
|
+
|
|
256
|
+
## 变更记录
|
|
257
|
+
| 日期 | 变更 | 原因 | 影响 |
|
|
258
|
+
|------|------|------|------|
|
|
259
|
+
| {YYYY-MM-DD} | {变更内容} | {为什么改} | {影响范围} |
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## docs/modules/{module}.md
|
|
265
|
+
|
|
266
|
+
```markdown
|
|
267
|
+
# {Module} 模块
|
|
268
|
+
|
|
269
|
+
> 更新于: {YYYY-MM-DD}
|
|
270
|
+
|
|
271
|
+
## 职责
|
|
272
|
+
{模块负责什么,1-2 句话}
|
|
273
|
+
|
|
274
|
+
## 目录结构
|
|
275
|
+
```
|
|
276
|
+
src/{path}/
|
|
277
|
+
├── components/ # {说明}
|
|
278
|
+
├── hooks/ # {说明}
|
|
279
|
+
├── services/ # {说明}
|
|
280
|
+
└── types.ts # {说明}
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
## 核心流程
|
|
284
|
+
```
|
|
285
|
+
{输入} → {处理1} → {处理2} → {输出}
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
## 对外接口
|
|
289
|
+
| 接口 | 说明 | 详见 |
|
|
290
|
+
|------|------|------|
|
|
291
|
+
| {接口名} | {说明} | [specs/{spec}.md](../specs/{spec}.md) |
|
|
292
|
+
|
|
293
|
+
## 依赖关系
|
|
294
|
+
- **依赖**: {本模块依赖的其他模块}
|
|
295
|
+
- **被依赖**: {依赖本模块的其他模块}
|
|
296
|
+
|
|
297
|
+
## 变更记录
|
|
298
|
+
| 日期 | 变更 | 原因 |
|
|
299
|
+
|------|------|------|
|
|
300
|
+
| {YYYY-MM-DD} | {变更内容} | {为什么改} |
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## docs/specs/{spec}.md
|
|
306
|
+
|
|
307
|
+
```markdown
|
|
308
|
+
# {Spec Name}
|
|
309
|
+
|
|
310
|
+
> 更新于: {YYYY-MM-DD}
|
|
311
|
+
|
|
312
|
+
## 接口定义
|
|
313
|
+
|
|
314
|
+
### {接口 1}
|
|
315
|
+
```typescript
|
|
316
|
+
// 输入
|
|
317
|
+
interface {Name}Input {
|
|
318
|
+
field1: string
|
|
319
|
+
field2: number
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
// 输出
|
|
323
|
+
interface {Name}Output {
|
|
324
|
+
success: boolean
|
|
325
|
+
data: {Type}
|
|
326
|
+
}
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
## 数据模型
|
|
330
|
+
```typescript
|
|
331
|
+
interface {Model} {
|
|
332
|
+
id: string
|
|
333
|
+
field1: string
|
|
334
|
+
field2: number
|
|
335
|
+
createdAt: Date
|
|
336
|
+
updatedAt: Date
|
|
337
|
+
}
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
## 业务规则
|
|
341
|
+
- {规则 1}
|
|
342
|
+
- {规则 2}
|
|
343
|
+
- {规则 3}
|
|
344
|
+
|
|
345
|
+
## 边界情况
|
|
346
|
+
| 情况 | 处理方式 |
|
|
347
|
+
|------|----------|
|
|
348
|
+
| {情况 1} | {处理} |
|
|
349
|
+
| {情况 2} | {处理} |
|
|
350
|
+
|
|
351
|
+
## 变更记录
|
|
352
|
+
| 日期 | 版本 | 变更 | 原因 |
|
|
353
|
+
|------|------|------|------|
|
|
354
|
+
| {YYYY-MM-DD} | v1 | 初始版本 | - |
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
## docs/design-{slug}.md
|
|
360
|
+
|
|
361
|
+
```markdown
|
|
362
|
+
# 设计文档: {标题}
|
|
363
|
+
|
|
364
|
+
## 状态
|
|
365
|
+
{提案 | 已确认 | 实现中 | 已完成}
|
|
366
|
+
|
|
367
|
+
## 背景
|
|
368
|
+
{问题背景与动机}
|
|
369
|
+
|
|
370
|
+
## 目标
|
|
371
|
+
- {目标 1}
|
|
372
|
+
- {目标 2}
|
|
373
|
+
|
|
374
|
+
## 方案
|
|
375
|
+
|
|
376
|
+
### 方案概述
|
|
377
|
+
{总体思路}
|
|
378
|
+
|
|
379
|
+
### 关键改动
|
|
380
|
+
- {改动 1}
|
|
381
|
+
- {改动 2}
|
|
382
|
+
|
|
383
|
+
## 风险与兜底
|
|
384
|
+
- {风险 1} → {兜底方案}
|
|
385
|
+
|
|
386
|
+
## 变更记录
|
|
387
|
+
| 日期 | 变更 | 原因 |
|
|
388
|
+
|------|------|------|
|
|
389
|
+
| {YYYY-MM-DD} | 创建 | - |
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
---
|
|
393
|
+
|
|
196
394
|
## learnings/{type}/{date}-{slug}.md
|
|
197
395
|
|
|
198
396
|
```markdown
|
package/templates/active.md
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
# Active Context
|
|
2
2
|
|
|
3
|
+
<!-- MACHINE_BLOCK_START -->
|
|
3
4
|
> 更新于: {YYYY-MM-DD HH:mm}
|
|
4
5
|
|
|
5
6
|
## 当前焦点
|
|
6
7
|
{正在做什么,1-2 句话描述当前最重要的工作}
|
|
7
8
|
|
|
8
9
|
## 下一步
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
- [ ] {下一步 1}
|
|
11
|
+
- [ ] {下一步 2}
|
|
12
|
+
- [ ] {下一步 3}
|
|
13
|
+
|
|
14
|
+
## 已完成(待归档)
|
|
15
|
+
- [x] {已完成事项}
|
|
12
16
|
|
|
13
17
|
## 阻塞项
|
|
14
18
|
- {阻塞项描述,无则写「无」}
|
|
@@ -17,4 +21,9 @@
|
|
|
17
21
|
| 日期 | 变更 |
|
|
18
22
|
|------|------|
|
|
19
23
|
| {YYYY-MM-DD} | {变更内容} |
|
|
20
|
-
|
|
24
|
+
<!-- MACHINE_BLOCK_END -->
|
|
25
|
+
|
|
26
|
+
<!-- USER_BLOCK_START -->
|
|
27
|
+
## 用户笔记
|
|
28
|
+
{用户自由编辑区}
|
|
29
|
+
<!-- USER_BLOCK_END -->
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# 设计文档: {标题}
|
|
2
|
+
|
|
3
|
+
## 状态
|
|
4
|
+
{提案 | 已确认 | 实现中 | 已完成}
|
|
5
|
+
|
|
6
|
+
## 背景
|
|
7
|
+
{问题背景与动机}
|
|
8
|
+
|
|
9
|
+
## 目标
|
|
10
|
+
- {目标 1}
|
|
11
|
+
- {目标 2}
|
|
12
|
+
|
|
13
|
+
## 方案
|
|
14
|
+
|
|
15
|
+
### 方案概述
|
|
16
|
+
{总体思路}
|
|
17
|
+
|
|
18
|
+
### 关键改动
|
|
19
|
+
- {改动 1}
|
|
20
|
+
- {改动 2}
|
|
21
|
+
|
|
22
|
+
## 风险与兜底
|
|
23
|
+
- {风险 1} → {兜底方案}
|
|
24
|
+
|
|
25
|
+
## 变更记录
|
|
26
|
+
| 日期 | 变更 | 原因 |
|
|
27
|
+
|------|------|------|
|
|
28
|
+
| {YYYY-MM-DD} | 创建 | - |
|