kimi-code-memory-mcp-server 0.1.1 → 0.1.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.
Files changed (120) hide show
  1. package/CHANGELOG.md +14 -1
  2. package/README.en.md +342 -0
  3. package/README.md +214 -137
  4. package/assets/contextFlow.svg +144 -0
  5. package/dist/config.d.ts +13 -0
  6. package/dist/config.js +13 -0
  7. package/dist/config.js.map +1 -1
  8. package/dist/context/wire-context.d.ts +3 -0
  9. package/dist/context/wire-context.js +20 -50
  10. package/dist/context/wire-context.js.map +1 -1
  11. package/dist/dao/constants.d.ts +33 -0
  12. package/dist/dao/constants.js +17 -0
  13. package/dist/dao/constants.js.map +1 -0
  14. package/dist/dao/index-catalog.d.ts +19 -0
  15. package/dist/dao/index-catalog.js +94 -0
  16. package/dist/dao/index-catalog.js.map +1 -0
  17. package/dist/dao/index-reconciler.d.ts +13 -0
  18. package/dist/dao/index-reconciler.js +162 -0
  19. package/dist/dao/index-reconciler.js.map +1 -0
  20. package/dist/dao/index-store.d.ts +31 -0
  21. package/dist/dao/index-store.js +128 -0
  22. package/dist/dao/index-store.js.map +1 -0
  23. package/dist/dao/index.d.ts +12 -31
  24. package/dist/dao/index.js +50 -404
  25. package/dist/dao/index.js.map +1 -1
  26. package/dist/dao/memory-store.js +2 -10
  27. package/dist/dao/memory-store.js.map +1 -1
  28. package/dist/dao/memory-tree-renderer.d.ts +22 -0
  29. package/dist/dao/memory-tree-renderer.js +75 -0
  30. package/dist/dao/memory-tree-renderer.js.map +1 -0
  31. package/dist/prompts/index.d.ts +26 -0
  32. package/dist/prompts/index.js +103 -0
  33. package/dist/prompts/index.js.map +1 -0
  34. package/dist/refine/adapter.d.ts +6 -0
  35. package/dist/refine/adapter.js +28 -0
  36. package/dist/refine/adapter.js.map +1 -0
  37. package/dist/refine/constants.d.ts +35 -0
  38. package/dist/refine/constants.js +107 -0
  39. package/dist/refine/constants.js.map +1 -0
  40. package/dist/refine/extractor.d.ts +12 -0
  41. package/dist/refine/extractor.js +122 -0
  42. package/dist/refine/extractor.js.map +1 -0
  43. package/dist/refine/store.d.ts +19 -0
  44. package/dist/refine/store.js +139 -0
  45. package/dist/refine/store.js.map +1 -0
  46. package/dist/refine/types.d.ts +56 -0
  47. package/dist/refine/types.js +5 -0
  48. package/dist/refine/types.js.map +1 -0
  49. package/dist/refined-manager.d.ts +10 -56
  50. package/dist/refined-manager.js +22 -341
  51. package/dist/refined-manager.js.map +1 -1
  52. package/dist/resources/index.d.ts +15 -0
  53. package/dist/resources/index.js +134 -0
  54. package/dist/resources/index.js.map +1 -0
  55. package/dist/server.js +46 -2
  56. package/dist/server.js.map +1 -1
  57. package/dist/tools/context-tools.d.ts +16 -51
  58. package/dist/tools/context-tools.js +247 -55
  59. package/dist/tools/context-tools.js.map +1 -1
  60. package/dist/tools/index.d.ts +5 -827
  61. package/dist/tools/index.js +23 -354
  62. package/dist/tools/index.js.map +1 -1
  63. package/dist/tools/memory-tools.d.ts +4 -60
  64. package/dist/tools/memory-tools.js +129 -79
  65. package/dist/tools/memory-tools.js.map +1 -1
  66. package/dist/tools/system-tools.d.ts +3 -34
  67. package/dist/tools/system-tools.js +86 -32
  68. package/dist/tools/system-tools.js.map +1 -1
  69. package/dist/tools/theme-tools.d.ts +3 -31
  70. package/dist/tools/theme-tools.js +78 -22
  71. package/dist/tools/theme-tools.js.map +1 -1
  72. package/dist/tools/types.d.ts +21 -0
  73. package/dist/tools/types.js +13 -0
  74. package/dist/tools/types.js.map +1 -0
  75. package/dist/types.d.ts +4 -2
  76. package/dist/utils/action-entities.d.ts +16 -0
  77. package/dist/utils/action-entities.js +35 -0
  78. package/dist/utils/action-entities.js.map +1 -0
  79. package/dist/utils/date.d.ts +11 -0
  80. package/dist/utils/date.js +13 -0
  81. package/dist/utils/date.js.map +1 -0
  82. package/dist/utils/file-helpers.d.ts +10 -0
  83. package/dist/utils/file-helpers.js +28 -0
  84. package/dist/utils/file-helpers.js.map +1 -0
  85. package/dist/utils/headings.d.ts +5 -0
  86. package/dist/utils/headings.js +21 -0
  87. package/dist/utils/headings.js.map +1 -0
  88. package/dist/utils/search.d.ts +17 -0
  89. package/dist/utils/search.js +60 -0
  90. package/dist/utils/search.js.map +1 -0
  91. package/dist/utils/tools.d.ts +5 -0
  92. package/dist/utils/tools.js +10 -0
  93. package/dist/utils/tools.js.map +1 -0
  94. package/dist/vis/api.d.ts +82 -0
  95. package/dist/vis/api.js +212 -0
  96. package/dist/vis/api.js.map +1 -0
  97. package/dist/vis/auto-start.d.ts +12 -0
  98. package/dist/vis/auto-start.js +87 -0
  99. package/dist/vis/auto-start.js.map +1 -0
  100. package/dist/vis/server.d.ts +14 -0
  101. package/dist/vis/server.js +103 -0
  102. package/dist/vis/server.js.map +1 -0
  103. package/dist/vis/static/app.js +395 -0
  104. package/dist/vis/static/index.html +95 -0
  105. package/dist/vis/static/style.css +707 -0
  106. package/dist/vis-cli.d.ts +7 -0
  107. package/dist/vis-cli.js +140 -0
  108. package/dist/vis-cli.js.map +1 -0
  109. package/docs/0.agent-memory-market-research.md +354 -0
  110. package/docs/1.memory-system-proposal-for-kimi-code.md +688 -0
  111. package/docs/2.memory-architecture-overview.md +417 -0
  112. package/docs/3.memory-skill-prompt-design.md +430 -0
  113. package/docs/4.kimi-code-native-evolution-roadmap.md +559 -0
  114. package/docs/5.decision-guard-design-notes.md +500 -0
  115. package/docs/ARCHITECTURE.md +2 -2
  116. package/docs/design-story.md +350 -0
  117. package/docs/three-layer-memory-model.md +153 -0
  118. package/docs/three-layer-memory-model.zh-CN.md +153 -0
  119. package/package.json +12 -6
  120. package/README.zh-CN.md +0 -292
@@ -0,0 +1,417 @@
1
+ # Kimi Code 原生记忆系统架构大图
2
+
3
+ > 本文档用一张大图 + 分层说明,展示如果把记忆系统原生集成进 Kimi Code 会是什么样子。重点体现:memory 文件夹的自由归纳创建、`organize_memories` 对精要的提炼约束、完整工具列表、以及 memory 变更触发 index.json 重建的索引机制。图中标签使用英文便于渲染,图外说明使用中文。
4
+
5
+ ---
6
+
7
+ ## TL;DR
8
+
9
+ 原生记忆系统分为四层:
10
+
11
+ | 分层 | 职责 | 核心组件/文件 |
12
+ |---|---|---|
13
+ | 注入层 | 决定 Agent 是谁、遵循什么规则、当前什么重要 | `AGENTS.md`、`CLAUDE.md`、`essence.md` |
14
+ | 路由层 | 把用户自然语言翻译成记忆工具调用 | 内置默认 Memory Skill |
15
+ | 工具层 | 执行具体记忆操作 | `ToolManager` + `MemoryToolProvider`(20 个工具) |
16
+ | 存储层 | 持久化保存所有记忆数据 | `~/.kimi-code/memory/<workspace-hash>/` |
17
+
18
+ 关键特性:
19
+ - `memory/` 下可自由创建任意子目录和 Markdown 文件
20
+ - `organize_memories` 把 `memory/` 提炼浓缩为 `essence.md`,建议 ≤15KB,超限警告
21
+ - `memory/` 的任何变更都会通过 `MemoryDAO` 重建/更新 `index.json`
22
+ - 主题追溯基于 `refined/` 原子库和 `themes/` 视图
23
+
24
+ ---
25
+
26
+ ## 一、全架构大图
27
+
28
+ ```text
29
+ ┌─────────────────────────────────────────────────────────────┐
30
+ │ Kimi Code CLI Session │
31
+ │ ┌──────────┐ ┌──────────┐ ┌────────────────────────┐ │
32
+ │ │ User │→ │ Agent/ │→ │ Native Tools │ │
33
+ │ │ Input │ │ LLM │ │ (Memory/File/Bash...) │ │
34
+ │ └────┬─────┘ └──────────┘ └───────────┬────────────┘ │
35
+ └───────┼───────────────────────────────────┼─────────────────┘
36
+ │ │
37
+ │ ① boot injection │
38
+ ▼ ▼
39
+ ┌─────────────────────────────────────────────────────────────┐
40
+ │ Layer 1: Injection (AGENTS.md / CLAUDE.md / essence.md) │
41
+ └──────────────────────────────────┬──────────────────────────┘
42
+
43
+ │ system prompt + skill rules
44
+
45
+ ┌─────────────────────────────────────────────────────────────┐
46
+ │ Layer 2: Built-in Memory Skill │
47
+ │ "remember this" → remember() │
48
+ │ "search X" → search() │
49
+ │ "how X evolve?" → trace_theme() │
50
+ │ "link to X" → tag_theme() │
51
+ │ Rules: ask for seeds; RefinedTurn atomic; no blind refine │
52
+ └──────────────────────────────────┬──────────────────────────┘
53
+
54
+
55
+ ┌─────────────────────────────────────────────────────────────┐
56
+ │ Layer 3: Native Memory Tools (MemoryToolProvider) │
57
+ │ │
58
+ │ ┌─────────────────────────────────────────────────────┐ │
59
+ │ │ Tool Inventory (20 tools) │ │
60
+ │ │ │ │
61
+ │ │ remember recall recall_recent search list_tags │ │
62
+ │ │ list delete move organize_memories │ │
63
+ │ │ get_current_workspace sync_workspace_index │ │
64
+ │ │ bootstrap_workspace load_workspace_context │ │
65
+ │ │ load_more_context search_context load_turn_context│ │
66
+ │ │ tag_theme trace_theme list_themes │ │
67
+ │ │ refine_session_turns │ │
68
+ │ └─────────────────────────────────────────────────────┘ │
69
+ │ │
70
+ │ Supporting: TurnRefiner | ThemeDetector | ContextMemory │
71
+ │ MemoryDAO | MemoryStore │
72
+ └──────────────────────────────────┬──────────────────────────┘
73
+
74
+ │ file I/O + index sync
75
+
76
+ ┌─────────────────────────────────────────────────────────────┐
77
+ │ Layer 4: Persistent Store │
78
+ │ │
79
+ │ ~/.kimi-code/memory/<workspace-hash>/ │
80
+ │ │ │
81
+ │ ├── memory/ ◄── free Markdown creation/organization │
82
+ │ │ ├── decisions/ │
83
+ │ │ ├── knowledge/ (user/agent can create any folder) │
84
+ │ │ ├── rules/ │
85
+ │ │ └── reference/ │
86
+ │ │ │ │
87
+ │ │ │ free creation/editing triggers │
88
+ │ │ ▼ │
89
+ │ │ ┌─────────────┐ │
90
+ │ │ │ MemoryDAO │ → rebuild / update index.json │
91
+ │ │ │ (v3-kv) │ │
92
+ │ │ └─────────────┘ │
93
+ │ │ │
94
+ │ ├── organize_memories() ──► essence/ │
95
+ │ │ (distill memory/ into essence.md │
96
+ │ │ workspace digest 建议 ≤15KB,超限警告) │
97
+ │ │ │
98
+ │ ├── notes/ ◄── scratch notes │
99
+ │ ├── themes/ ◄── theme views │
100
+ │ ├── refined/ ◄── refined turn atoms │
101
+ │ └── index.json ◄── metadata cache (rebuildable) │
102
+ │ ▲ │
103
+ │ └── bootstrap_workspace() → memoryIndexTree (ASCII) │
104
+ │ │
105
+ └─────────────────────────────────────────────────────────────┘
106
+
107
+ │ read-only
108
+
109
+ ~/.kimi-code/sessions/<sid>/agents/main/wire.jsonl
110
+ ```
111
+
112
+ ---
113
+
114
+ ## 二、分层职责
115
+
116
+ ### Layer 1:注入层
117
+
118
+ | 组件 | 路径 | 职责 |
119
+ |---|---|---|
120
+ | User-level AGENTS.md | `~/.kimi-code/AGENTS.md` | 全局人格、强制启动协议、内置 skill 列表 |
121
+ | Project-level AGENTS.md | `<project>/AGENTS.md` | 项目特定规则、角色、工作方式约定 |
122
+ | CLAUDE.md | `<project>/CLAUDE.md` | AGENTS.md 的可选伴侣文件 |
123
+ | essence.md | `~/.kimi-code/memory/<hash>/essence/essence.md` | 由 `memory/` 自动提炼生成的工作区摘要(建议 ≤15KB,超限警告) |
124
+
125
+ 原生实现中,boot loader 在**首轮用户输入之前**就读取这些文件并拼接到 system prompt。Agent 不需要显式调用任何启动工具。
126
+
127
+ ### Layer 2:内置 Memory Skill
128
+
129
+ Kimi Code 内置一个**默认记忆 skill**,直接注入 system prompt。它教会模型:
130
+
131
+ - 什么时候调用 `remember`
132
+ - 该用哪个 folder 和 tags
133
+ - 什么时候**不该**保存(临时调试、未确认的推测)
134
+ - 如何冷启动主题追溯:先确认主题范围 + 索要关键词种子
135
+ - `refined/` 中的 turn 是原子单元,可被多个主题共享
136
+
137
+ ### Layer 3:原生工具层
138
+
139
+ #### 完整工具列表(19 个)
140
+
141
+ **记忆管理(9 个)**
142
+ - `remember`:写入/覆盖一条记忆
143
+ - `recall`:按 key 读取单条记忆
144
+ - `recall_recent`:读取最近更新的记忆
145
+ - `search`:在记忆标题和内容中搜索
146
+ - `list`:列出某 folder 下的记忆
147
+ - `list_tags`:列出所有标签
148
+ - `delete`:删除一条记忆
149
+ - `move`:移动或重命名记忆
150
+ - `organize_memories`:整理 `memory/` 并生成/更新 `essence.md`
151
+
152
+ **工作区与索引(3 个)**
153
+ - `get_current_workspace`:获取当前 workspace 信息
154
+ - `sync_workspace_index`:同步 `index.json` 与文件系统
155
+ - `bootstrap_workspace`:启动时加载上下文、精要、目录树
156
+
157
+ **上下文恢复(4 个)**
158
+ - `load_workspace_context`:加载当前 session 最近上下文
159
+ - `load_more_context`:加载更早的轮次摘要
160
+ - `search_context`:跨所有 session 搜索关键词
161
+ - `load_turn_context`:批量加载指定轮次的完整内容
162
+
163
+ **主题追溯(4 个)**
164
+ - `tag_theme`:把 turn 或 memory 关联到主题
165
+ - `trace_theme`:按时间线输出主题发展脉络
166
+ - `list_themes`:列出所有主题
167
+ - `refine_session_turns`:把 `wire.jsonl` 提炼为 Refined Turn Summaries
168
+
169
+ #### 内部组件
170
+
171
+ | 组件 | 职责 |
172
+ |---|---|
173
+ | `ToolManager` | Kimi Code 已有组件,把工具调用分发给各 provider |
174
+ | `MemoryToolProvider` | 新 provider,注册上述 19 个记忆工具 |
175
+ | `MemoryDAO` | 读写 `index.json`,保持与文件系统一致 |
176
+ | `TurnRefiner` | 解析 `wire.jsonl`,生成 `RefinedTurn` 摘要 |
177
+ | `ThemeDetector` | 冷启动流水线:粗筛 → 提炼 → 聚合 |
178
+ | `ContextMemory` | Kimi Code 已有组件,把 `wire.jsonl` 加载进上下文窗口 |
179
+ | `MemoryStore` | `memory/`、`notes/`、`essence/` 的文件系统 DAO |
180
+
181
+ ### Layer 4:原生持久化存储层
182
+
183
+ #### `memory/`:自由归纳创建
184
+
185
+ `memory/` 不是由系统预定义的固定结构,而是**用户和 Agent 可以自由创建子目录和 Markdown 文件**的知识空间。常见分类:
186
+
187
+ - `decisions/`:关键产品/架构决策
188
+ - `knowledge/`:项目技术栈、方案记录
189
+ - `rules/`:协作规范、编码红线
190
+ - `reference/`:参考资料
191
+
192
+ **自由度体现**:
193
+ - 可以创建任意子目录,如 `memory/experiments/`、`memory/meetings/`
194
+ - 可以直接手动编辑 Markdown 文件
195
+ - 可以移动、重命名、删除文件
196
+
197
+ **约束**:
198
+ - 每个 `.md` 文件必须有唯一的 `key`(与文件名一致)
199
+ - frontmatter 包含 `key`、`title`、`tags`、`createdAt`、`updatedAt`
200
+ - 文件变更后,下次 `sync_workspace_index` 或 `bootstrap_workspace` 会更新 `index.json`
201
+
202
+ #### `index.json`:v3-kv 索引
203
+
204
+ `index.json` 是**可重建的元数据缓存**,不是真相源。真相源是 `memory/`、`notes/`、`essence/` 下的文件本身。
205
+
206
+ 当 `memory/` 下发生以下变更时,`MemoryDAO` 会重建或更新 `index.json`:
207
+
208
+ - `remember` 写入或覆盖文件
209
+ - `move` 移动/重命名文件
210
+ - `delete` 删除文件
211
+ - `sync_workspace_index` 被调用
212
+ - `bootstrap_workspace` 启动时检测到 `structureHash` 变化
213
+
214
+ `structureHash`:对 `memory/`、`notes/`、`essence/` 下所有 `.md` 文件路径和空目录路径排序后取 MD5,用于快速判断是否需要完整重建索引。
215
+
216
+ #### `memoryIndexTree`:启动时的动态目录树
217
+
218
+ `memoryIndexTree` 不是磁盘上的文件,而是 `bootstrap_workspace` 在启动时根据 `index.json` 和 `memory/` 文件实时生成的 **ASCII 目录树**。它让 Agent 在首轮用户输入之前就能看到当前工作区的记忆结构。
219
+
220
+ **生成流程:**
221
+
222
+ 1. `bootstrap_workspace` 先调用 `reconcileIndex()` 确保 `index.json` 与文件系统一致
223
+ 2. 从 `index.json` 中筛选所有以 `memory/` 开头的条目
224
+ 3. 按文件夹路径构建树形结构;文件节点包含 `key`、`title`、`tags`
225
+ 4. 读取每个 `.md` 文件的 `updatedAt` 和 `createdAt`
226
+ 5. 按 `updatedAt` 降序、再按 `createdAt` 降序排序,取前 `recentChangeLimit` 条(默认 5)
227
+ 6. 在最近变更的文件名后追加 `[new]` 标记
228
+ 7. 渲染成带缩进的 ASCII 树文本返回给 Agent
229
+
230
+ **输出示例:**
231
+
232
+ ```text
233
+ memory/ — 项目记忆根目录
234
+ ├── decisions/
235
+ │ ├── persistence-design — 持久化设计 [decision] [new]
236
+ │ └── ipc-spec — IPC 接口规范 [decision]
237
+ ├── knowledge/
238
+ │ └── tech-stack — 技术栈记录 [knowledge] [new]
239
+ └── rules/
240
+ └── coding-style — 编码规范 [rule]
241
+ ```
242
+
243
+ **设计意图:**
244
+
245
+ - 让 Agent 在冷启动时快速感知工作区知识拓扑
246
+ - `[new]` 标记把注意力引导到最近活跃的记忆上
247
+ - 只返回文本树,不返回完整内容,避免占用过多上下文窗口
248
+ - 它是只读视图,修改必须通过 `remember`/`move`/`delete` 等工具
249
+
250
+ #### `organize_memories`:提炼浓缩为精要
251
+
252
+ `organize_memories` 是一个**两态工具**:
253
+
254
+ 1. **准备态(空参调用)**
255
+ - 返回现有 `essence.md` 内容
256
+ - 返回 `memory/` 下待整理的条目
257
+ - 返回整理规则
258
+
259
+ 2. **存储态(传入 `content`)**
260
+ - Agent 基于原材料生成新的精要 Markdown
261
+ - 工具校验大小,超过 15KB 时提示但不阻止
262
+ - 覆盖写入 `essence/essence.md`
263
+
264
+ **提炼约束**:
265
+ - `essence.md` 建议大小上限 **15KB**,超过时工具会提示但不阻止写入
266
+ - 内容由 `memory/` 中的分散笔记提炼浓缩而来
267
+ - 关键结论必须 inline 标注来源,如 `> 来源:memory/decisions/persistence-design`
268
+ - **不删除**任何 `memory/` 源文件
269
+
270
+ 这个约束强制把长期记忆做"减法":只有最核心、最常被召回的知识才进入 `essence.md`。
271
+
272
+ #### 其他存储
273
+
274
+ - `notes/`:临时速记 / 个人便签
275
+ - `themes/<theme>.json`:主题视图,只保存 `(sessionId, turnId)` 和 `(key, folder, title)` 引用
276
+ - `refined/<sessionId>.jsonl`:turn 级原子提炼摘要,每行一个 JSON
277
+
278
+ ---
279
+
280
+ ## 三、数据流示例
281
+
282
+ ### 3.1 创建一条记忆并同步索引
283
+
284
+ ```text
285
+ User: "记住这个决策"
286
+
287
+
288
+ Agent 调用 remember(key, content, folder, tags)
289
+
290
+
291
+ MemoryToolProvider → MemoryStore 写入 .md 文件
292
+
293
+
294
+ MemoryDAO 调用 upsertEntry() 更新 index.json
295
+
296
+
297
+ bootstrap_workspace 启动时:
298
+ - reconcileIndex() 校验 index.json
299
+ - buildMemoryIndexTree() 扫描 memory/ 条目
300
+ - 按 updatedAt/createdAt 排序,标记前 N 条为 [new]
301
+ - 返回 ASCII memoryIndexTree
302
+ ```
303
+
304
+ ### 3.2 整理精要
305
+
306
+ ```text
307
+ User: "整理一下 memory"
308
+
309
+
310
+ Agent 调用 organize_memories() 空参
311
+
312
+
313
+ 返回现有 essence.md + memory/ 原材料 + 规则
314
+
315
+
316
+ Agent 生成新的精要 content
317
+
318
+
319
+ Agent 调用 organize_memories(content)
320
+
321
+
322
+ 校验 ≤15KB(超限仅警告) → 覆盖写入 essence/essence.md
323
+ ```
324
+
325
+ ### 3.3 主题追溯
326
+
327
+ ```text
328
+ User: "How did X evolve?"
329
+
330
+
331
+ Agent asks for scope & keyword seeds
332
+
333
+
334
+ search_context coarse screen across sessions
335
+
336
+
337
+ refine_session_turns (candidate turns, merge by turnId)
338
+
339
+
340
+ tag_theme / aggregate → themes/<theme>.json
341
+
342
+
343
+ trace_theme → timeline + memories
344
+ ```
345
+
346
+ ### 3.4 启动时加载 memoryIndexTree
347
+
348
+ ```text
349
+ Agent 启动 / 用户输入前
350
+
351
+
352
+ bootstrap_workspace()
353
+
354
+ ├──► reconcileIndex() 同步 index.json
355
+
356
+ ├──► buildWorkspaceContext() 加载最近对话
357
+
358
+ ├──► loadEssenceFile() 加载 essence.md
359
+
360
+ └──► buildMemoryIndexTree(recentChangeLimit=5)
361
+
362
+ ├── 扫描 index.json 中 memory/ 条目
363
+ ├── 构建文件夹/文件树
364
+ ├── 读取 frontmatter.updatedAt / createdAt
365
+ ├── 排序取最近 N 条
366
+ ├── 标记 [new]
367
+ └── 渲染 ASCII 树
368
+
369
+
370
+ Agent context window
371
+ ```
372
+
373
+ ---
374
+
375
+ ## 四、设计要点
376
+
377
+ 1. **文件层是真相源**
378
+ - `index.json` 只是缓存,丢失后可以扫描文件系统重建
379
+ - 用户可以直接编辑 `memory/` 下的 Markdown,系统会检测到变化
380
+
381
+ 2. **memory 归纳高度自由**
382
+ - 不限定固定子目录,Agent 和用户可以根据需要创建
383
+ - folder 备注通过 `sync_workspace_index` 维护,帮助理解目录用途
384
+
385
+ 3. **精要是强约束的蒸馏产物**
386
+ - 建议 ≤15KB,超限警告,强制聚焦
387
+ - 从 `memory/` 提炼,不替代 `memory/`
388
+ - 来源可追溯
389
+
390
+ 4. **索引自动维护**
391
+ - 所有会改变 `memory/` 结构的操作都会触发 `index.json` 更新
392
+ - `structureHash` 避免不必要的完整扫描
393
+
394
+ 5. **Refined Turn 原子化**
395
+ - `refined/<sessionId>.jsonl` 按 turn 存储
396
+ - `themes/<theme>.json` 只保存引用
397
+ - 同一 turn 可被多个主题引用,只提炼一次
398
+
399
+ 6. **memoryIndexTree 是只读启动视图**
400
+ - 每次启动时从 `index.json` 和 `memory/` 文件实时生成
401
+ - 用 `[new]` 标记引导 Agent 关注最近活跃记忆
402
+ - 不持久化,修改必须通过记忆管理工具
403
+
404
+ ---
405
+
406
+ ## 五、关键设计口诀
407
+
408
+ > **AGENTS.md 定义你是谁。essence.md 定义现在什么重要。memory/ 定义你知道什么。themes/ 定义知识如何连接。refined/ 定义你实际做了什么。**
409
+ >
410
+ > **memory/ 是自由生长的花园,essence.md 是剪出来的盆景,index.json 是花园的导览图,memoryIndexTree 是导览图上高亮最近改动的批注。**
411
+ >
412
+ > **wire.jsonl 是录音,refined/ 是翻译稿,themes/ 是索引,memory/ 是正典。**
413
+
414
+ ---
415
+
416
+ *文档生成时间:2026-06-23*
417
+ *描述对象:Kimi Code 原生记忆子系统设计*