dsh-mnemon 0.1.5 → 0.2.0

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 (230) hide show
  1. package/README.md +125 -104
  2. package/README.zh-CN.md +130 -109
  3. package/THIRD_PARTY_NOTICES.md +7 -0
  4. package/lib/client.js +4193 -1128
  5. package/lib/index.js +4326 -307
  6. package/lib/types/activity.d.ts +2 -18
  7. package/lib/types/channels.d.ts +1 -4
  8. package/lib/types/client/GlobalLocationSetting.d.ts +19 -0
  9. package/lib/types/client/MnemonLogo.d.ts +0 -1
  10. package/lib/types/client/MnemonPackSection.d.ts +5 -3
  11. package/lib/types/client/MnemonSaveAction.d.ts +1 -2
  12. package/lib/types/client/MnemonSettingsCard.d.ts +5 -4
  13. package/lib/types/client/MnemonTurnTail.d.ts +1 -2
  14. package/lib/types/client/MnemonView.d.ts +1 -3
  15. package/lib/types/client/MnemonViewAppearance.d.ts +0 -1
  16. package/lib/types/client/ProviderIcon.d.ts +8 -0
  17. package/lib/types/client/ProviderSettingsSection.d.ts +16 -0
  18. package/lib/types/client/anchor.d.ts +0 -1
  19. package/lib/types/client/api.d.ts +12 -19
  20. package/lib/types/client/dsh-compat.d.ts +0 -1
  21. package/lib/types/client/index.d.ts +0 -1
  22. package/lib/types/client/locales.d.ts +552 -1
  23. package/lib/types/client/settings.d.ts +4 -3
  24. package/lib/types/client/sidebar-entry.d.ts +0 -1
  25. package/lib/types/client/workspace-controller.d.ts +0 -1
  26. package/lib/types/client/workspace-mount.d.ts +1 -3
  27. package/lib/types/commands.d.ts +0 -1
  28. package/lib/types/config-values.d.ts +0 -1
  29. package/lib/types/config.d.ts +6 -80
  30. package/lib/types/contracts.d.ts +38 -62
  31. package/lib/types/documents.d.ts +2 -79
  32. package/lib/types/guidance.d.ts +0 -1
  33. package/lib/types/index.d.ts +0 -1
  34. package/lib/types/lifecycle.d.ts +32 -47
  35. package/lib/types/live-runtime.d.ts +0 -1
  36. package/lib/types/memory-bodies.d.ts +27 -23
  37. package/lib/types/pack.d.ts +2 -48
  38. package/lib/types/process.d.ts +4 -2
  39. package/lib/types/provider-placement.d.ts +26 -0
  40. package/lib/types/providers/byterover.d.ts +31 -0
  41. package/lib/types/providers/catalog.d.ts +23 -0
  42. package/lib/types/providers/hindsight.d.ts +19 -0
  43. package/lib/types/providers/holographic.d.ts +22 -0
  44. package/lib/types/providers/honcho.d.ts +18 -0
  45. package/lib/types/providers/http.d.ts +32 -0
  46. package/lib/types/providers/mem0.d.ts +17 -0
  47. package/lib/types/providers/openviking.d.ts +31 -0
  48. package/lib/types/providers/provider.d.ts +38 -0
  49. package/lib/types/providers/retaindb.d.ts +16 -0
  50. package/lib/types/providers/supermemory.d.ts +16 -0
  51. package/lib/types/review-activity.d.ts +2 -16
  52. package/lib/types/rpc.d.ts +1 -2
  53. package/lib/types/runner.d.ts +15 -11
  54. package/lib/types/runtime-memory.d.ts +2 -59
  55. package/lib/types/service.d.ts +54 -152
  56. package/lib/types/settings.d.ts +1 -4
  57. package/lib/types/shared/contracts.d.ts +869 -0
  58. package/lib/types/storage-scope.d.ts +2 -29
  59. package/lib/types/subagent.d.ts +11 -16
  60. package/lib/types/tools.d.ts +0 -1
  61. package/lib/types/version-updates.d.ts +2 -29
  62. package/package.json +22 -9
  63. package/docs/README.md +0 -8
  64. package/docs/assets/diagrams/en/memory-system-flow.png +0 -0
  65. package/docs/assets/diagrams/en/project-architecture.svg +0 -182
  66. package/docs/assets/diagrams/zh-CN/memory-system-flow.png +0 -0
  67. package/docs/assets/diagrams/zh-CN/project-architecture.svg +0 -182
  68. package/docs/assets/media/dsh-mnemon-memory-system-demo-poster.jpg +0 -0
  69. package/docs/assets/media/dsh-mnemon-memory-system-demo.gif +0 -0
  70. package/docs/assets/media/dsh-mnemon-memory-system-demo.mp4 +0 -0
  71. package/docs/assets/screenshots/conversation-memory-jump.png +0 -0
  72. package/docs/assets/screenshots/conversation-save-dialog.png +0 -0
  73. package/docs/assets/screenshots/conversation-turn-memory.png +0 -0
  74. package/docs/assets/screenshots/document-create-dialog.png +0 -0
  75. package/docs/assets/screenshots/documents-markdown.png +0 -0
  76. package/docs/assets/screenshots/entities-context.png +0 -0
  77. package/docs/assets/screenshots/memory-content.png +0 -0
  78. package/docs/assets/screenshots/overview-memory-graph.png +0 -0
  79. package/docs/assets/screenshots/recall-agent-answer.png +0 -0
  80. package/docs/assets/screenshots/remember-dialog.png +0 -0
  81. package/docs/assets/screenshots/runtime-memory-add.png +0 -0
  82. package/docs/assets/screenshots/runtime-memory.png +0 -0
  83. package/docs/assets/screenshots/settings-memory-system.png +0 -0
  84. package/docs/assets/screenshots/status-overview.png +0 -0
  85. package/docs/assets/screenshots/version-check.png +0 -0
  86. package/docs/en/README.md +0 -48
  87. package/docs/en/architecture.md +0 -133
  88. package/docs/en/configuration.md +0 -234
  89. package/docs/en/development.md +0 -198
  90. package/docs/en/getting-started.md +0 -199
  91. package/docs/en/interfaces.md +0 -181
  92. package/docs/en/operations.md +0 -173
  93. package/docs/en/project-overview.md +0 -145
  94. package/docs/en/roadmap.md +0 -41
  95. package/docs/en/storage-model.md +0 -185
  96. package/docs/en/ui-guide.md +0 -156
  97. package/docs/en/workflows.md +0 -290
  98. package/docs/zh-CN/README.md +0 -48
  99. package/docs/zh-CN/architecture.md +0 -133
  100. package/docs/zh-CN/configuration.md +0 -234
  101. package/docs/zh-CN/development.md +0 -198
  102. package/docs/zh-CN/getting-started.md +0 -199
  103. package/docs/zh-CN/interfaces.md +0 -181
  104. package/docs/zh-CN/operations.md +0 -173
  105. package/docs/zh-CN/project-overview.md +0 -145
  106. package/docs/zh-CN/roadmap.md +0 -41
  107. package/docs/zh-CN/storage-model.md +0 -185
  108. package/docs/zh-CN/ui-guide.md +0 -160
  109. package/docs/zh-CN/workflows.md +0 -290
  110. package/lib/client.js.map +0 -1
  111. package/lib/types/activity.d.ts.map +0 -1
  112. package/lib/types/activity.js +0 -93
  113. package/lib/types/activity.js.map +0 -1
  114. package/lib/types/channels.d.ts.map +0 -1
  115. package/lib/types/channels.js +0 -4
  116. package/lib/types/channels.js.map +0 -1
  117. package/lib/types/client/MnemonLogo.d.ts.map +0 -1
  118. package/lib/types/client/MnemonLogo.js +0 -6
  119. package/lib/types/client/MnemonLogo.js.map +0 -1
  120. package/lib/types/client/MnemonPackSection.d.ts.map +0 -1
  121. package/lib/types/client/MnemonPackSection.js +0 -136
  122. package/lib/types/client/MnemonPackSection.js.map +0 -1
  123. package/lib/types/client/MnemonSaveAction.d.ts.map +0 -1
  124. package/lib/types/client/MnemonSaveAction.js +0 -90
  125. package/lib/types/client/MnemonSaveAction.js.map +0 -1
  126. package/lib/types/client/MnemonSettingsCard.d.ts.map +0 -1
  127. package/lib/types/client/MnemonSettingsCard.js +0 -155
  128. package/lib/types/client/MnemonSettingsCard.js.map +0 -1
  129. package/lib/types/client/MnemonTurnTail.d.ts.map +0 -1
  130. package/lib/types/client/MnemonTurnTail.js +0 -56
  131. package/lib/types/client/MnemonTurnTail.js.map +0 -1
  132. package/lib/types/client/MnemonView.d.ts.map +0 -1
  133. package/lib/types/client/MnemonView.js +0 -1594
  134. package/lib/types/client/MnemonView.js.map +0 -1
  135. package/lib/types/client/MnemonViewAppearance.d.ts.map +0 -1
  136. package/lib/types/client/MnemonViewAppearance.js +0 -67
  137. package/lib/types/client/MnemonViewAppearance.js.map +0 -1
  138. package/lib/types/client/anchor.d.ts.map +0 -1
  139. package/lib/types/client/anchor.js +0 -46
  140. package/lib/types/client/anchor.js.map +0 -1
  141. package/lib/types/client/api.d.ts.map +0 -1
  142. package/lib/types/client/api.js +0 -150
  143. package/lib/types/client/api.js.map +0 -1
  144. package/lib/types/client/dsh-compat.d.ts.map +0 -1
  145. package/lib/types/client/dsh-compat.js +0 -2
  146. package/lib/types/client/dsh-compat.js.map +0 -1
  147. package/lib/types/client/index.d.ts.map +0 -1
  148. package/lib/types/client/index.js +0 -161
  149. package/lib/types/client/index.js.map +0 -1
  150. package/lib/types/client/locales.d.ts.map +0 -1
  151. package/lib/types/client/locales.js +0 -1172
  152. package/lib/types/client/locales.js.map +0 -1
  153. package/lib/types/client/settings.d.ts.map +0 -1
  154. package/lib/types/client/settings.js +0 -70
  155. package/lib/types/client/settings.js.map +0 -1
  156. package/lib/types/client/sidebar-entry.d.ts.map +0 -1
  157. package/lib/types/client/sidebar-entry.js +0 -134
  158. package/lib/types/client/sidebar-entry.js.map +0 -1
  159. package/lib/types/client/workspace-controller.d.ts.map +0 -1
  160. package/lib/types/client/workspace-controller.js +0 -21
  161. package/lib/types/client/workspace-controller.js.map +0 -1
  162. package/lib/types/client/workspace-mount.d.ts.map +0 -1
  163. package/lib/types/client/workspace-mount.js +0 -138
  164. package/lib/types/client/workspace-mount.js.map +0 -1
  165. package/lib/types/commands.d.ts.map +0 -1
  166. package/lib/types/commands.js +0 -104
  167. package/lib/types/commands.js.map +0 -1
  168. package/lib/types/config-values.d.ts.map +0 -1
  169. package/lib/types/config-values.js +0 -4
  170. package/lib/types/config-values.js.map +0 -1
  171. package/lib/types/config.d.ts.map +0 -1
  172. package/lib/types/config.js +0 -127
  173. package/lib/types/config.js.map +0 -1
  174. package/lib/types/contracts.d.ts.map +0 -1
  175. package/lib/types/contracts.js +0 -2
  176. package/lib/types/contracts.js.map +0 -1
  177. package/lib/types/documents.d.ts.map +0 -1
  178. package/lib/types/documents.js +0 -495
  179. package/lib/types/documents.js.map +0 -1
  180. package/lib/types/guidance.d.ts.map +0 -1
  181. package/lib/types/guidance.js +0 -34
  182. package/lib/types/guidance.js.map +0 -1
  183. package/lib/types/index.d.ts.map +0 -1
  184. package/lib/types/index.js +0 -55
  185. package/lib/types/index.js.map +0 -1
  186. package/lib/types/lifecycle.d.ts.map +0 -1
  187. package/lib/types/lifecycle.js +0 -456
  188. package/lib/types/lifecycle.js.map +0 -1
  189. package/lib/types/live-runtime.d.ts.map +0 -1
  190. package/lib/types/live-runtime.js +0 -146
  191. package/lib/types/live-runtime.js.map +0 -1
  192. package/lib/types/memory-bodies.d.ts.map +0 -1
  193. package/lib/types/memory-bodies.js +0 -186
  194. package/lib/types/memory-bodies.js.map +0 -1
  195. package/lib/types/pack.d.ts.map +0 -1
  196. package/lib/types/pack.js +0 -709
  197. package/lib/types/pack.js.map +0 -1
  198. package/lib/types/process.d.ts.map +0 -1
  199. package/lib/types/process.js +0 -65
  200. package/lib/types/process.js.map +0 -1
  201. package/lib/types/review-activity.d.ts.map +0 -1
  202. package/lib/types/review-activity.js +0 -37
  203. package/lib/types/review-activity.js.map +0 -1
  204. package/lib/types/rpc.d.ts.map +0 -1
  205. package/lib/types/rpc.js +0 -384
  206. package/lib/types/rpc.js.map +0 -1
  207. package/lib/types/runner.d.ts.map +0 -1
  208. package/lib/types/runner.js +0 -198
  209. package/lib/types/runner.js.map +0 -1
  210. package/lib/types/runtime-memory.d.ts.map +0 -1
  211. package/lib/types/runtime-memory.js +0 -415
  212. package/lib/types/runtime-memory.js.map +0 -1
  213. package/lib/types/service.d.ts.map +0 -1
  214. package/lib/types/service.js +0 -512
  215. package/lib/types/service.js.map +0 -1
  216. package/lib/types/settings.d.ts.map +0 -1
  217. package/lib/types/settings.js +0 -103
  218. package/lib/types/settings.js.map +0 -1
  219. package/lib/types/storage-scope.d.ts.map +0 -1
  220. package/lib/types/storage-scope.js +0 -179
  221. package/lib/types/storage-scope.js.map +0 -1
  222. package/lib/types/subagent.d.ts.map +0 -1
  223. package/lib/types/subagent.js +0 -624
  224. package/lib/types/subagent.js.map +0 -1
  225. package/lib/types/tools.d.ts.map +0 -1
  226. package/lib/types/tools.js +0 -341
  227. package/lib/types/tools.js.map +0 -1
  228. package/lib/types/version-updates.d.ts.map +0 -1
  229. package/lib/types/version-updates.js +0 -383
  230. package/lib/types/version-updates.js.map +0 -1
@@ -1,185 +0,0 @@
1
- # 存储与三层记忆模型
2
-
3
- **简体中文** | [English](../en/storage-model.md) | [文档中心](./README.md)
4
-
5
- ## 为什么是三层
6
-
7
- 一种存储形态无法同时满足“每轮都可见”“保留完整叙事”和“长期图增强召回”:
8
-
9
- | 问题 | 对应层 | 原因 |
10
- |---|---|---|
11
- | 下一轮必须直接知道什么? | Runtime Memory | 极小、直接进入 prompt |
12
- | 哪份设计或流程需要快速完整阅读? | active Documents | 保留 Markdown 结构,不必做深召回 |
13
- | 哪些历史事实和关系应跨会话存在? | Memory Spaces | 独立数据库、图关系、按需召回 |
14
- | 长文已不常用但仍需追溯怎么办? | archived Documents | Mnemon 留索引,冷层保留原文 |
15
-
16
- 推荐查询梯度:
17
-
18
- ```text
19
- current request and repository facts
20
- |
21
- v
22
- Runtime Memory already in prompt
23
- |
24
- v
25
- search active Documents
26
- |
27
- v
28
- recall active Memory Spaces
29
- |
30
- v
31
- follow an exact cold reference when full text is required
32
- ```
33
-
34
- ## 统一根目录
35
-
36
- ```text
37
- <storageRoot>/
38
- +-- runtime/
39
- | +-- memories.json
40
- | +-- USER.md
41
- | +-- MEMORY.md
42
- +-- documents/
43
- | +-- index.json
44
- | +-- active/
45
- | +-- archived/
46
- +-- data/
47
- | +-- .dsh-memory-bodies.json
48
- | +-- <memory-space-id>/
49
- | +-- mnemon.db
50
- +-- state/ # reserved; no persistent reviewer yet
51
- ```
52
-
53
- `storageScope` 决定整个根,而不只是 Mnemon 数据库。`workspace` 范围会为每个已登记 DSH 工作区解析独立的 `<workspace>/.mnemon`;Web 查看目标与当前会话执行目标彼此独立,只有后者会驱动 Agent、工具和生命周期。`state/` 当前只会被状态盘点器识别;评分水位仍保存在运行中 Host 的内存中。
54
-
55
- ## Runtime Memory
56
-
57
- ### 语义
58
-
59
- - `target=user`:身份、角色、长期偏好、习惯、沟通风格和明确协作要求。
60
- - `target=memory`:项目、环境、决策、约定、工具特性和可复用经验。
61
- - `importance=critical|normal|low`:用于整理时的保留优先级。
62
-
63
- 当前不实现 `daily` target。
64
-
65
- ### 事实源和投影
66
-
67
- `runtime/memories.json` 是唯一事实源。每条记录包含:
68
-
69
- ```text
70
- content
71
- created_at
72
- updated_at
73
- target
74
- importance
75
- ```
76
-
77
- `USER.md` 和 `MEMORY.md` 是确定性派生文件。每个条目被归一成单行,条目之间使用单独一行的 `§` 分隔;`§` 是保留字符。启动和 prompt 组装时,控制层会从 JSON 修复缺失或被手工修改的投影。
78
-
79
- ### 操作
80
-
81
- - `add` 写入独立新事实,完全相同的内容不会重复添加。
82
- - `replace` 用 `old_text` 的唯一子串定位并替换整个条目。
83
- - `remove` 用唯一子串移除整个条目。
84
- - 零命中或多命中都拒绝,不执行模糊修改。
85
-
86
- ### 容量
87
-
88
- | 目标 | 上限 | 维护方式 |
89
- |---|---:|---|
90
- | `USER.md` | 4 KiB | 本地、无工具 worker 保守合并,不进入 Memory Space |
91
- | `MEMORY.md` | 10 KiB | worker 先归档已提交内容,再返回压缩候选 |
92
-
93
- 容量按投影正文的实际 UTF-8 字节计算。单条内容最大 8 KiB。自动容量维护只由溢出的 `add` 触发;导致溢出的 `replace` 会直接报错,调用方应先显式整理。
94
-
95
- ## Project Documents
96
-
97
- ### 用途
98
-
99
- Documents 保存比单条记忆更完整、又希望快速阅读的项目知识,例如:
100
-
101
- - 架构设计和理由;
102
- - 有证据的调查结论;
103
- - 操作流程、发布清单和故障复盘;
104
- - 实现交接与长期维护说明。
105
-
106
- 用户画像、普通聊天、临时进度、原始大日志和秘密不应进入 Documents。
107
-
108
- ### 控制面
109
-
110
- `documents/index.json` 是元数据事实源,管理 ID、标题、description、状态、文件名、来源路径、session、时间、revision、SHA-256、大小和 Memory Space 引用。Markdown 托管副本带有生成的 frontmatter。
111
-
112
- `sourcePaths`:
113
-
114
- - 只能指向当前会话工作区内部;
115
- - 只作为来源引用,不会被插件修改;
116
- - 当前实现不要求路径实际存在;
117
- - 不允许指向受管 `documents/` 目录自身。
118
-
119
- ### 范围
120
-
121
- Documents 的物理共享范围由 `storageScope` 决定:
122
-
123
- - `workspace`:通常随项目隔离;
124
- - `global` / `custom`:多个工作区可能共享同一个 `documents/index.json`。
125
-
126
- 因此“项目档案”表示内容类型,不保证天然按工作区物理隔离。当前会话工作区只约束新写入的 `sourcePaths`。
127
-
128
- ### 容量与冷热分层
129
-
130
- | 项目 | 限制 |
131
- |---|---:|
132
- | 单份正文 | 最大 2 MiB |
133
- | active 总量 | 最大 10 MiB,包含生成后的 frontmatter |
134
- | archived 总量 | 不计 active 上限 |
135
-
136
- 创建或更新前会计算真实投影大小。空间不足时按 `lastAccessedAt`、再按 `updatedAt` 选择最久未访问的 active 文档;先写入/验证 Mnemon 冷引用,再在 revision 未变化时迁移原文。
137
-
138
- 默认搜索只覆盖 active。搜索会更新命中文档的 `lastAccessedAt`,因此它对正文只读,但会写索引元数据。
139
-
140
- ## Memory Spaces
141
-
142
- 每个记忆体是一个 Mnemon 原生命名 Store,并在 `.dsh-memory-bodies.json` 中增加可维护元数据:
143
-
144
- ```text
145
- id Host 生成的稳定 UUID 或已发现的兼容 Store 名
146
- name 人类可读名称
147
- description 路由边界:什么属于这里、何时召回
148
- active 是否参与读取
149
- mnemon.db 独立数据面
150
- ```
151
-
152
- ### 读写边界
153
-
154
- - 召回、图谱、内容和实体读取只使用已激活记忆体。
155
- - 指定未激活记忆体进行读取会被拒绝。
156
- - 写入可以选择已登记的任意记忆体。
157
- - 对未激活目标写入成功后,插件自动激活它。
158
- - 没有显式目标且激活数量不是 1 时,确定性服务要求调用方先选择目标。
159
-
160
- ### 创建、发现和合并
161
-
162
- - 创建时模型提供 name 和 description,Host 生成 ID。
163
- - 既有 `<storageRoot>/data/<store>/mnemon.db` 会被发现并登记,不移动数据库。
164
- - 合并通过 Mnemon import 把来源内容导入目标;来源数据库保留,默认只将来源设为未激活。
165
- - `forget` 是按精确 ID 的软删除,不等于删除数据库文件。
166
-
167
- ### 跨 Agent 可见性
168
-
169
- `mnemon.db` 是 Mnemon 原生数据面,不是 dsh-mnemon 私有格式。其他 Mnemon-enabled Agent 在使用同一个 `storageRoot` 和 Store 时,可以访问同一份长期记忆。dsh-mnemon 也会发现磁盘上兼容的 Store;其 DSH 专有名称、说明和激活状态仍由 `.dsh-memory-bodies.json` 管理。
170
-
171
- 共享不延伸到 `runtime/` 或 `documents/`。即使它们位于同一个根,其他 Agent 也必须自行实现相应协议才能理解这些 DSH 管理层;不能把“共享 Mnemon 长期记忆”表述为自动共享完整 DSH 上下文。
172
-
173
- ## 四类关系
174
-
175
- Mnemon 长期层保留 `temporal`、`semantic`、`causal` 和 `entity` 关系。插件不会要求每条记忆都手工创建关系;关系应在确实能改善未来召回时建立。记忆体页可以聚合多个已激活记忆体的记忆、实体、关系和空间归属。
176
-
177
- ## 数据权威表
178
-
179
- | 数据 | 权威源 | 派生/缓存 |
180
- |---|---|---|
181
- | 热记忆 | `runtime/memories.json` | `USER.md`、`MEMORY.md` |
182
- | Documents | `documents/index.json` + 托管 Markdown | excerpt、搜索排序、状态聚合 |
183
- | Memory Space 目录 | `data/.dsh-memory-bodies.json` + 磁盘 Store | Web 状态聚合 |
184
- | 长期记忆 | 各 Store 的 `mnemon.db` | HTML/DOT 图谱解析结果 |
185
- | 审查水位 | Host 进程内存 | 状态页快照;尚未持久化 |
@@ -1,160 +0,0 @@
1
- # Sidebar 与对话交互指南
2
-
3
- **简体中文** | [English](../en/ui-guide.md) | [文档中心](./README.md)
4
-
5
- 本指南以默认的 `sidebar` 形态为主,按真实使用路径介绍记忆系统。截图来自 v0.1.5 实机界面;数量、名称和内容会随你的数据变化。
6
-
7
- ## 先认识两种展示形态
8
-
9
- 在 DSH 的“设置 → 记忆系统”中选择入口与存储位置:
10
-
11
- [![记忆系统设置:Sidebar、Buildin、存储位置、对话界面与备份迁移](../assets/screenshots/settings-memory-system.png)](../assets/screenshots/settings-memory-system.png)
12
-
13
- | 形态 | 适合场景 |
14
- |---|---|
15
- | **Sidebar**(默认) | 从 DSH 左侧栏进入独立工作台;外观与任务看板、SSH 等官方面板一致,适合日常管理 |
16
- | **Buildin** | 在对话区内打开原有标签页;保留之前的布局和视觉,适合依赖旧工作流的用户 |
17
-
18
- 两种形态共享功能、数据和 Host 服务,只拆分入口与外观。保存后实时切换,不需要刷新浏览器,也不会同时挂载两个入口。
19
-
20
- ## 工作台结构
21
-
22
- Sidebar 顶部始终回答三个问题:
23
-
24
- 1. 现在打开的是“记忆系统”;
25
- 2. 存储位置使用全局、工作区还是自定义模式;
26
- 3. Host 是否已连接。
27
-
28
- 主体只有四个一级标签:**状态、运行时、记忆体、档案**。记忆体内部再分为**概览、检索、内容、实体**;“沉淀记忆”固定为这一层的主要动作。
29
-
30
- ## 1. 状态:先确认系统是否可用
31
-
32
- [![状态页:版本、运行时、记忆体、档案与存储根摘要](../assets/screenshots/status-overview.png)](../assets/screenshots/status-overview.png)
33
-
34
- 状态页聚合以下信息:
35
-
36
- - Mnemon CLI 与 dsh-mnemon 当前版本;
37
- - USER / MEMORY 运行时条目数;
38
- - 已激活记忆体与长期记忆数量;
39
- - active / archived 档案数量;
40
- - 当前存储根,以及 Runtime、Documents、Memory Spaces 三个实际目录。
41
-
42
- 如果这里显示异常,先不要沉淀或归档;从[故障排查](./operations.md#故障排查)开始检查。
43
-
44
- ### 检查与更新版本
45
-
46
- 点击版本区域会打开只读检查面板:
47
-
48
- [![检查与更新 Mnemon 和 dsh-mnemon 版本](../assets/screenshots/version-check.png)](../assets/screenshots/version-check.png)
49
-
50
- 检查不会自动安装。只有识别到受支持的安装来源并发现新版本时,才会出现“更新”。更新完成后界面会自动重新检查并刷新系统状态;dsh-mnemon 更新后仍需重启 `dsh web` 才能加载新代码。
51
-
52
- ## 2. 运行时:管理每轮都会使用的热记忆
53
-
54
- [![运行时记忆:容量摘要、范围筛选、内容筛选与统一列表](../assets/screenshots/runtime-memory.png)](../assets/screenshots/runtime-memory.png)
55
-
56
- 页面上方分别显示用户画像(`USER.md`)和工作记忆(`MEMORY.md`)的条目与容量;下方是统一列表。
57
-
58
- - 用“全部 / 用户画像 / 工作记忆”筛选范围;
59
- - 用右侧输入框按内容筛选;
60
- - 标签显示来源和重要性;
61
- - “编辑”打开弹窗,“移除”进入危险操作流程;
62
- - 长列表通过“再显示 N 条”逐步展开。
63
-
64
- ### 添加运行时记忆
65
-
66
- [![添加热记忆弹窗:内容、分类与重要性](../assets/screenshots/runtime-memory-add.png)](../assets/screenshots/runtime-memory-add.png)
67
-
68
- 一条运行时记忆应当简洁、独立、未来仍然常用。用户身份、偏好与明确协作要求放入“用户画像”;项目、环境、决策和工具经验放入“工作记忆”。临时进度、原始日志和一次性事实不适合这里。
69
-
70
- ## 3. 记忆体:管理长期记忆与关系
71
-
72
- ### 概览
73
-
74
- [![记忆体概览:目录卡片、激活开关与多空间关系图](../assets/screenshots/overview-memory-graph.png)](../assets/screenshots/overview-memory-graph.png)
75
-
76
- 目录卡片先展示名称和路由说明,右上角是读取激活开关,底部是统计与编辑 / 删除操作。激活只控制读取范围;写入可以选择已登记但未激活的目标,成功后会自动激活。
77
-
78
- 下方关系图聚合全部已激活记忆体。布局、拖拽和重置只影响当前浏览器展示,不会修改 Mnemon 数据。
79
-
80
- ### 沉淀记忆
81
-
82
- [![沉淀记忆弹窗:候选内容与可选高级约束](../assets/screenshots/remember-dialog.png)](../assets/screenshots/remember-dialog.png)
83
-
84
- 默认只需填写候选内容。确认后,隔离的记忆子 Agent 会判断是否值得保存、选择最窄记忆体、查重、提炼并写入。“人工高级选项”只用于确实需要约束目标记忆体、分类或重要性时。
85
-
86
- ### 检索
87
-
88
- [![记忆检索:查询、分类、策略、原始召回与加载更多](../assets/screenshots/recall-agent-answer.png)](../assets/screenshots/recall-agent-answer.png)
89
-
90
- - **直接检索**返回原始证据,不启动回答 Agent;
91
- - **Agent 查询**先取得相同证据,再让无 Mnemon 工具的 evidence-only worker 组织答案;
92
- - 分类与策略可以缩小范围;
93
- - 结果保留记忆体来源、分类、重要性、分数与 ID;
94
- - “查看关联”继续沿图遍历,“忘记”属于破坏性语义操作。
95
-
96
- 使用具体问题比宽泛关键词更可靠。例如“这个项目为什么禁止 shell 拼接?”通常优于“项目架构”。
97
-
98
- ### 内容与实体
99
-
100
- | 内容 | 实体 |
101
- |---|---|
102
- | [![记忆内容列表与筛选](../assets/screenshots/memory-content.png)](../assets/screenshots/memory-content.png) | [![实体查询与相关记忆](../assets/screenshots/entities-context.png)](../assets/screenshots/entities-context.png) |
103
-
104
- - **内容**用于无召回副作用地浏览长期记忆,并按文本或分类筛选;可以查看关联、基于当前内容新建、复制 ID 或忘记。
105
- - **实体**先显示高频实体,选择或输入名称后聚合跨事实、决策与上下文的相关记忆。
106
-
107
- 两页都采用可见数量 / 总数和加载更多,避免大量数据一次撑满页面。
108
-
109
- ## 4. 档案:保留完整项目叙事
110
-
111
- [![项目档案:容量摘要、渐进目录与独立 Markdown 阅读器](../assets/screenshots/documents-markdown.png)](../assets/screenshots/documents-markdown.png)
112
-
113
- 档案适合设计、调查、流程、复盘和交接。左侧目录分批加载,右侧保留标题、检索说明、来源、revision、哈希、文件大小与完整 Markdown;切换文档时阅读区会回到顶部。
114
-
115
- 达到 active 容量上限前,最久未使用的档案会先在 Mnemon 中建立冷引用,再迁入 archived;失败或 revision 冲突时保留 active 原文。
116
-
117
- ### 新建档案
118
-
119
- [![创建托管档案弹窗](../assets/screenshots/document-create-dialog.png)](../assets/screenshots/document-create-dialog.png)
120
-
121
- 标题与检索说明决定未来是否容易找到,来源路径用于追溯;正文保留 Markdown 结构。原项目文件始终只读,工作台创建的是受管副本。
122
-
123
- ## 5. 对话内交互
124
-
125
- ### 本回合记忆
126
-
127
- [![展开本回合记忆:召回、档案检索与精确工具跳转](../assets/screenshots/conversation-turn-memory.png)](../assets/screenshots/conversation-turn-memory.png)
128
-
129
- 只有已完成且发生记忆活动的回合才显示这一行。展开后列出具体工具;点击工具名会打开对应页面,并保留当前会话上下文。
130
-
131
- [![从本回合记忆跳转到记忆体检索页](../assets/screenshots/conversation-memory-jump.png)](../assets/screenshots/conversation-memory-jump.png)
132
-
133
- ### 存入记忆
134
-
135
- [![确认存入记忆:编辑候选后再交给记忆子 Agent](../assets/screenshots/conversation-save-dialog.png)](../assets/screenshots/conversation-save-dialog.png)
136
-
137
- “存入记忆”位于已定稿助手回复的原生操作区。点击只会打开确认弹窗并读取这条回复;可以修改候选或取消。只有点击“确认并交给记忆子 Agent”才会执行写入流程。
138
-
139
- ## 工作区模式:查看与执行分离
140
-
141
- `storageScope=workspace` 下需要区分两个概念:
142
-
143
- | 概念 | 由什么决定 | 影响什么 |
144
- |---|---|---|
145
- | **查看工作区** | 工作台顶部的工作区选择器 | 当前页面展示和人工维护哪套 `<workspace>/.mnemon` |
146
- | **执行工作区** | 当前对话 / Agent 的 cwd | 工具、命令、生命周期与子 Agent 实际使用哪套目录 |
147
-
148
- 因此,你可以留在项目 A 的对话中查看项目 B 的记忆,但 Agent 仍然使用项目 A。两者不一致时,顶部会显示提示与一键对齐;需要 Agent 子任务的操作会被 Host 拒绝,防止写错项目。切换查看工作区会先卸载旧页面状态,再加载新目录。
149
-
150
- `global` 与 `custom` 只有一个明确存储根,不需要这层对齐。
151
-
152
- ## 常见交互规则
153
-
154
- - 蓝色实心按钮表示当前主要动作;蓝色描边通常用于编辑;红色用于移除、删除、归档或忘记;中性按钮用于查看、复制与取消。
155
- - 删除记忆体等物理危险操作需要独立确认;“忘记”是长期语义软删除,也只应在明确需要时使用。
156
- - 保存配置后页面自动清理旧状态并重新读取,无需浏览器刷新。
157
- - Sidebar 的一级页头保持稳定;记忆体内部二级内容标题随内容自然滚动。
158
- - Buildin 保留既有布局和视觉,功能说明仍可参考本指南,但控件位置可能不同。
159
-
160
- 下一步:[快速开始](./getting-started.md) · [存储模型](./storage-model.md) · [配置参考](./configuration.md) · [运维指南](./operations.md)
@@ -1,290 +0,0 @@
1
- # 生命周期与核心流程
2
-
3
- **简体中文** | [English](../en/workflows.md) | [文档中心](./README.md)
4
-
5
- ## 每轮上下文
6
-
7
- 插件注册两个 system prompt section:
8
-
9
- - `mnemon:routing`:当 `routingGuidance=true` 时提供简短的分层查询边界;
10
- - `mnemon:runtime-memory`:每次组装 prompt 时读取最新 `USER.md` 和 `MEMORY.md`,并附带保存准入规则。
11
-
12
- 生命周期 hook 不会在每轮开始无条件读取记忆体目录或执行 recall:
13
-
14
- ```text
15
- agent/session-start
16
- -> mark primePending
17
-
18
- agent/pre-step(step=1)
19
- -> cancel pending/running background review for a new turn
20
- -> mark Prime once
21
- -> optionally append one short recall/writeback cue
22
- -> main Agent decides whether to call a memory tool
23
- ```
24
-
25
- Prime 只初始化路由状态,不执行异步 CLI 状态查询。
26
-
27
- ## 主 Agent 召回
28
-
29
- ```text
30
- Root Agent calls mnemon_recall(query)
31
- |
32
- v
33
- MnemonSubagentCoordinator
34
- |
35
- | spawn + recall persona
36
- | allow: memory_bodies, recall, related
37
- v
38
- Recall worker lists the catalog
39
- |
40
- v
41
- select active Memory Space(s) by name + description
42
- |
43
- v
44
- call mnemon_recall from the worker
45
- |
46
- v
47
- MnemonService searches selected Store(s)
48
- |
49
- v
50
- normalize and attach memoryBodyId / memoryBodyName
51
- |
52
- v
53
- structured output, Host caps results at 12
54
- |
55
- v
56
- Root Agent receives evidence, not the raw routing trace
57
- ```
58
-
59
- 如果用户已经提供当前事实,或仓库可以直接回答,Agent 不应为了“展示记忆”而召回。需要关系解释时,先使用 recall 返回的完整 `memoryBodyId + id`,再执行 related。
60
-
61
- ## Web 检索和 Agent 查询
62
-
63
- Web “检索”页与模型工具路径不同:
64
-
65
- ```text
66
- Direct search
67
- -> RPC read channel
68
- -> MnemonService.search directly
69
- -> raw evidence
70
-
71
- Agent search
72
- -> the same deterministic direct search
73
- -> spawn a worker with no Mnemon tools
74
- -> answer only from supplied evidence
75
- -> Host filters citations to actual memoryBodyId/id pairs
76
- ```
77
-
78
- “实体”和“内容”页也直接读取确定性服务,不启动 recall worker。“内容”使用图谱快照,不增加 Mnemon recall 访问计数。
79
-
80
- ## 显式长期写入
81
-
82
- 根 Agent 或 `/mnemon remember` 的长期写入流程:
83
-
84
- ```text
85
- durable candidate
86
- |
87
- v
88
- spawn write worker
89
- |
90
- +-- list Memory Spaces
91
- +-- choose the narrowest suitable scope
92
- +-- recall when duplicate/conflict checking is useful
93
- +-- create a new scope only for a recurring distinct domain
94
- +-- remember / link / forget / merge as requested
95
- v
96
- structured receipt
97
- ```
98
-
99
- 新建 Memory Space 的 ID 由 Host 生成。向 inactive 目标写入成功后会激活它。来源数据库的合并是非破坏性的。
100
-
101
- 运行时 `add` / `replace` / `remove` 和 Document `create` / `update` 不需要模型做存储 I/O;它们通过 coordinator 进入确定性控制层。容量维护和归档才启动专用 worker。
102
-
103
- ## Runtime add:正常路径
104
-
105
- ```text
106
- request
107
- -> normalize content
108
- -> acquire in-process queue and file lock
109
- -> reload memories.json
110
- -> validate unique match / duplicate / capacity
111
- -> write temporary JSON and Markdown projections
112
- -> rename projections
113
- -> rename memories.json as the commit marker
114
- -> return compact receipt
115
- ```
116
-
117
- `replace` 和 `remove` 必须通过 `old_text` 唯一命中一条。容量维护只在 `add` 溢出时自动触发。
118
-
119
- ## USER.md 容量整理
120
-
121
- ```text
122
- USER add exceeds 4 KiB
123
- |
124
- v
125
- snapshot revision + committed entries
126
- |
127
- v
128
- spawn no-tool local compactor
129
- |
130
- v
131
- return compacted entries + sourceIndexes
132
- |
133
- v
134
- Host validates:
135
- - every source index appears exactly once
136
- - no duplicate or out-of-range index
137
- - importance is not lowered
138
- - candidate fits the Host byte budget
139
- - revision is still current
140
- |
141
- +-- invalid/conflict -> preserve original data
142
- |
143
- v
144
- deterministic UTF-8 packing
145
- |
146
- v
147
- retry pending add
148
- ```
149
-
150
- 用户画像不会被发送到 Memory Spaces。worker 没有任何工具权限。
151
-
152
- ## MEMORY.md 归档与压缩
153
-
154
- ```text
155
- MEMORY add exceeds 10 KiB
156
- |
157
- v
158
- snapshot revision + committed entries
159
- |
160
- v
161
- spawn archive worker
162
- allow: memory_bodies, recall, remember, body_create
163
- |
164
- v
165
- route semantic clusters and archive or duplicate-check them
166
- |
167
- v
168
- return action + target spaces + compacted candidates
169
- |
170
- v
171
- Host validates structure, action, revision and byte budget
172
- |
173
- +-- failure/conflict -> preserve hot memory
174
- |
175
- v
176
- pack candidates by importance
177
- |
178
- v
179
- retry pending add
180
- ```
181
-
182
- worker persona 要求每条已提交 entry 都被长期表示或验证为重复;这是 LLM 监督策略。Host 的硬保证是结构、revision 和容量验证,不应把语义覆盖描述成数据库级证明。
183
-
184
- 如果长期写入成功后发生 revision 冲突,热记忆会保留,长期层可能同时已有副本。插件优先避免丢失,不尝试跨数据库和文件系统回滚已完成的 Mnemon 写入。
185
-
186
- ## Documents 创建、更新和归档
187
-
188
- ```text
189
- create/update request
190
- |
191
- v
192
- capacityPlan using rendered UTF-8 bytes
193
- |
194
- +----+----+
195
- | |
196
- fits overflow
197
- | |
198
- v v
199
- commit select least-recently-used active Document
200
- |
201
- v
202
- snapshot document + revision
203
- |
204
- v
205
- spawn archive worker
206
- |
207
- v
208
- write/verify concise Mnemon cold reference
209
- with title, summary, planned path, SHA-256
210
- |
211
- +----+----+
212
- | |
213
- failed receipt ok
214
- | |
215
- v v
216
- keep active revision check
217
- |
218
- +----+----+
219
- | |
220
- conflict current
221
- | |
222
- v v
223
- keep active move file to archived
224
- |
225
- v
226
- retry original mutation
227
- ```
228
-
229
- 人工归档使用同一条“先索引、后迁移”路径。Mnemon 索引已经成功但 revision 冲突时不会回滚索引,因此可能出现安全的重复引用,而不会丢失 active 原文。
230
-
231
- ## 确定性活动评分和后台审查
232
-
233
- 完成的 turn 累计四种信号:
234
-
235
- ```text
236
- score =
237
- min(floor(totalUserCharacters / 50), 3)
238
- + completedTurnCount
239
- + min(floor(completedToolResults / 5), 2)
240
- + toolDiversityScore
241
-
242
- toolDiversityScore:
243
- unique tools < 3 -> 0
244
- unique tools = 3 -> 1
245
- unique tools >= 4 -> 2
246
-
247
- eligible when score >= 5
248
- ```
249
-
250
- 达到门槛并不代表一定写入:
251
-
252
- ```text
253
- completed turn
254
- |
255
- v
256
- score >= 5 ? -- no --> retain activity for later turns
257
- |
258
- yes
259
- |
260
- v
261
- wait idleReviewMs (default 30 s)
262
- |
263
- +-- new turn --> cancel timer/worker, retain activity
264
- |
265
- v
266
- confirm Agent is idle and turn/end exists
267
- |
268
- v
269
- fork completed parent checkpoint
270
- |
271
- v
272
- conservative maintenance decision
273
- - at most one hot-memory mutation by persona
274
- - at most one Document create/update by persona
275
- - no direct long-term remember/forget tools
276
- |
277
- +-- completed, including skip -> clear activity
278
- |
279
- +-- failed/aborted ------------> retain activity
280
- ```
281
-
282
- “最多一次”当前由 worker persona 约束,不是 Host mutation counter。后台水位尚未持久化,Host 重启会丢失未处理的累计信号。
283
-
284
- ## 配置开关的关系
285
-
286
- - `recallMode=off`:不再注入 recall cue,显式 `mnemon_recall` 仍可用。
287
- - `writebackMode=off`:关闭写回 cue 和评分后台审查,显式写入仍由 `writeEnabled` 决定。
288
- - `lifecycleEnabled=false`:关闭生命周期提醒和审查,不移除显式工具或 Web 入口。
289
- - `routingGuidance=false`:只移除额外路由 section;Runtime Memory section 仍注册。
290
- - `writeEnabled=false`:移除语义写工具和写 RPC,拒绝写命令;它不是文件系统只读挂载保证。