dsh-mnemon 0.1.0 → 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 (148) hide show
  1. package/README.en.md +33 -3
  2. package/README.md +33 -3
  3. package/SECURITY.md +89 -0
  4. package/cordis.patch.yml +1 -0
  5. package/docs/en/README.md +1 -0
  6. package/docs/en/configuration.md +17 -7
  7. package/docs/en/getting-started.md +23 -5
  8. package/docs/en/interfaces.md +17 -3
  9. package/docs/en/operations.md +9 -4
  10. package/docs/en/project-overview.md +3 -1
  11. package/docs/en/roadmap.md +1 -1
  12. package/docs/en/storage-model.md +1 -1
  13. package/docs/zh-CN/README.md +1 -0
  14. package/docs/zh-CN/configuration.md +17 -7
  15. package/docs/zh-CN/getting-started.md +23 -5
  16. package/docs/zh-CN/interfaces.md +17 -3
  17. package/docs/zh-CN/operations.md +9 -4
  18. package/docs/zh-CN/project-overview.md +3 -1
  19. package/docs/zh-CN/roadmap.md +1 -1
  20. package/docs/zh-CN/storage-model.md +1 -1
  21. package/lib/client.js +2545 -620
  22. package/lib/client.js.map +1 -1
  23. package/lib/index.js +3816 -2481
  24. package/lib/types/activity.d.ts +32 -0
  25. package/lib/types/activity.d.ts.map +1 -0
  26. package/lib/types/activity.js +93 -0
  27. package/lib/types/activity.js.map +1 -0
  28. package/lib/types/client/MnemonPackSection.d.ts +11 -0
  29. package/lib/types/client/MnemonPackSection.d.ts.map +1 -0
  30. package/lib/types/client/MnemonPackSection.js +136 -0
  31. package/lib/types/client/MnemonPackSection.js.map +1 -0
  32. package/lib/types/client/MnemonSaveAction.d.ts +13 -0
  33. package/lib/types/client/MnemonSaveAction.d.ts.map +1 -0
  34. package/lib/types/client/MnemonSaveAction.js +141 -0
  35. package/lib/types/client/MnemonSaveAction.js.map +1 -0
  36. package/lib/types/client/MnemonSettingsCard.d.ts +9 -3
  37. package/lib/types/client/MnemonSettingsCard.d.ts.map +1 -1
  38. package/lib/types/client/MnemonSettingsCard.js +98 -51
  39. package/lib/types/client/MnemonSettingsCard.js.map +1 -1
  40. package/lib/types/client/MnemonToolviews.d.ts +19 -0
  41. package/lib/types/client/MnemonToolviews.d.ts.map +1 -0
  42. package/lib/types/client/MnemonToolviews.js +172 -0
  43. package/lib/types/client/MnemonToolviews.js.map +1 -0
  44. package/lib/types/client/MnemonTurnTail.d.ts +18 -0
  45. package/lib/types/client/MnemonTurnTail.d.ts.map +1 -0
  46. package/lib/types/client/MnemonTurnTail.js +44 -0
  47. package/lib/types/client/MnemonTurnTail.js.map +1 -0
  48. package/lib/types/client/MnemonView.d.ts +13 -0
  49. package/lib/types/client/MnemonView.d.ts.map +1 -1
  50. package/lib/types/client/MnemonView.js +33 -14
  51. package/lib/types/client/MnemonView.js.map +1 -1
  52. package/lib/types/client/anchor.d.ts +28 -0
  53. package/lib/types/client/anchor.d.ts.map +1 -0
  54. package/lib/types/client/anchor.js +46 -0
  55. package/lib/types/client/anchor.js.map +1 -0
  56. package/lib/types/client/api.d.ts +17 -2
  57. package/lib/types/client/api.d.ts.map +1 -1
  58. package/lib/types/client/api.js +86 -25
  59. package/lib/types/client/api.js.map +1 -1
  60. package/lib/types/client/dsh-compat.d.ts +21 -0
  61. package/lib/types/client/dsh-compat.d.ts.map +1 -0
  62. package/lib/types/client/dsh-compat.js +2 -0
  63. package/lib/types/client/dsh-compat.js.map +1 -0
  64. package/lib/types/client/index.d.ts +1 -1
  65. package/lib/types/client/index.d.ts.map +1 -1
  66. package/lib/types/client/index.js +140 -12
  67. package/lib/types/client/index.js.map +1 -1
  68. package/lib/types/client/locales.d.ts +272 -4
  69. package/lib/types/client/locales.d.ts.map +1 -1
  70. package/lib/types/client/locales.js +292 -24
  71. package/lib/types/client/locales.js.map +1 -1
  72. package/lib/types/client/settings.d.ts +10 -5
  73. package/lib/types/client/settings.d.ts.map +1 -1
  74. package/lib/types/client/settings.js +32 -11
  75. package/lib/types/client/settings.js.map +1 -1
  76. package/lib/types/client/sidebar-entry.d.ts +6 -0
  77. package/lib/types/client/sidebar-entry.d.ts.map +1 -0
  78. package/lib/types/client/sidebar-entry.js +132 -0
  79. package/lib/types/client/sidebar-entry.js.map +1 -0
  80. package/lib/types/client/workspace-controller.d.ts +15 -0
  81. package/lib/types/client/workspace-controller.d.ts.map +1 -0
  82. package/lib/types/client/workspace-controller.js +21 -0
  83. package/lib/types/client/workspace-controller.js.map +1 -0
  84. package/lib/types/client/workspace-mount.d.ts +8 -0
  85. package/lib/types/client/workspace-mount.d.ts.map +1 -0
  86. package/lib/types/client/workspace-mount.js +135 -0
  87. package/lib/types/client/workspace-mount.js.map +1 -0
  88. package/lib/types/commands.d.ts +10 -2
  89. package/lib/types/commands.d.ts.map +1 -1
  90. package/lib/types/commands.js +5 -1
  91. package/lib/types/commands.js.map +1 -1
  92. package/lib/types/config.d.ts +42 -3
  93. package/lib/types/config.d.ts.map +1 -1
  94. package/lib/types/config.js +80 -6
  95. package/lib/types/config.js.map +1 -1
  96. package/lib/types/contracts.d.ts +27 -37
  97. package/lib/types/contracts.d.ts.map +1 -1
  98. package/lib/types/documents.d.ts.map +1 -1
  99. package/lib/types/documents.js +6 -14
  100. package/lib/types/documents.js.map +1 -1
  101. package/lib/types/guidance.d.ts +5 -2
  102. package/lib/types/guidance.d.ts.map +1 -1
  103. package/lib/types/guidance.js +18 -2
  104. package/lib/types/guidance.js.map +1 -1
  105. package/lib/types/index.d.ts +4 -2
  106. package/lib/types/index.d.ts.map +1 -1
  107. package/lib/types/index.js +29 -20
  108. package/lib/types/index.js.map +1 -1
  109. package/lib/types/lifecycle.d.ts +23 -3
  110. package/lib/types/lifecycle.d.ts.map +1 -1
  111. package/lib/types/lifecycle.js +89 -13
  112. package/lib/types/lifecycle.js.map +1 -1
  113. package/lib/types/live-runtime.d.ts +66 -0
  114. package/lib/types/live-runtime.d.ts.map +1 -0
  115. package/lib/types/live-runtime.js +146 -0
  116. package/lib/types/live-runtime.js.map +1 -0
  117. package/lib/types/memory-bodies.d.ts +2 -0
  118. package/lib/types/memory-bodies.d.ts.map +1 -1
  119. package/lib/types/memory-bodies.js +29 -10
  120. package/lib/types/memory-bodies.js.map +1 -1
  121. package/lib/types/pack.d.ts +74 -0
  122. package/lib/types/pack.d.ts.map +1 -0
  123. package/lib/types/pack.js +709 -0
  124. package/lib/types/pack.js.map +1 -0
  125. package/lib/types/rpc.d.ts +10 -3
  126. package/lib/types/rpc.d.ts.map +1 -1
  127. package/lib/types/rpc.js +158 -19
  128. package/lib/types/rpc.js.map +1 -1
  129. package/lib/types/runner.d.ts +3 -1
  130. package/lib/types/runner.d.ts.map +1 -1
  131. package/lib/types/runner.js +7 -2
  132. package/lib/types/runner.js.map +1 -1
  133. package/lib/types/service.d.ts +16 -0
  134. package/lib/types/service.d.ts.map +1 -1
  135. package/lib/types/service.js.map +1 -1
  136. package/lib/types/settings.d.ts +1 -0
  137. package/lib/types/settings.d.ts.map +1 -1
  138. package/lib/types/settings.js +45 -16
  139. package/lib/types/settings.js.map +1 -1
  140. package/lib/types/subagent.d.ts +11 -2
  141. package/lib/types/subagent.d.ts.map +1 -1
  142. package/lib/types/subagent.js +34 -29
  143. package/lib/types/subagent.js.map +1 -1
  144. package/lib/types/tools.d.ts +11 -1
  145. package/lib/types/tools.d.ts.map +1 -1
  146. package/lib/types/tools.js +29 -16
  147. package/lib/types/tools.js.map +1 -1
  148. package/package.json +23 -12
@@ -28,7 +28,7 @@ both paths require
28
28
  -> depthLimit
29
29
  ```
30
30
 
31
- 插件没有在代码中声明固定的 DSH/Mnemon 最低版本矩阵。升级前应先在隔离数据目录中运行本页的验证步骤。
31
+ 插件没有在代码中声明固定的 DSH/Mnemon 最低版本矩阵。**已验证基线**:`dsh-mnemon` 0.1.0 在 `@deepseek-ai/dsh` 0.1.0-rc.6(2026-08-13 快照)的 live web profile 上实测通过,最后验证日期 2026-08-14。升级前应先在隔离数据目录中运行本页的验证步骤。
32
32
 
33
33
  ## 2. 安装 Mnemon
34
34
 
@@ -76,6 +76,22 @@ dsh plugin --profile web add "link:/absolute/path/to/dsh-mnemon"
76
76
 
77
77
  插件包中的 `cordis.patch.yml` 会挂载 Host 插件;Web client bundle 会注册会话工作台和插件设置卡。
78
78
 
79
+ ### 升级与卸载
80
+
81
+ `dsh plugin` 是 pnpm 转发器,在 profile 目录下执行:
82
+
83
+ ```sh
84
+ # 升级
85
+ dsh plugin --profile web update dsh-mnemon
86
+
87
+ # 卸载(同时从 profile 移除其 bundle 注册)
88
+ dsh plugin --profile web remove dsh-mnemon
89
+ ```
90
+
91
+ 卸载不会删除记忆数据:`global` 范围数据留在 `~/.mnemon`,`workspace` / `custom` 范围数据留在对应目录,重新安装后继续可用。
92
+
93
+ 临时停用自动读写而不卸载:在插件配置里关闭 `writebackMode` / `recallMode` / `lifecycleEnabled`(见[配置参考](./configuration.md)的“开关交互”)。只想隐藏 Web 工作台时设置 `tabEnabled=false`;Host RPC、命令和 Agent 工具保持可用。
94
+
79
95
  ## 4. 选择存储范围
80
96
 
81
97
  启动 DSH Web profile:
@@ -84,19 +100,21 @@ dsh plugin --profile web add "link:/absolute/path/to/dsh-mnemon"
84
100
  dsh --profile web
85
101
  ```
86
102
 
87
- 在“设置 -> 插件配置 -> Mnemon”选择:
103
+ 在“设置 -> 记忆系统”独立配置页先选择展示形态:默认 `sidebar` 使用左侧栏独立工作台,`buildin` 使用原有对话区内嵌标签页;保存后实时切换。再选择存储范围:
88
104
 
89
105
  | 范围 | 根目录 | 适合场景 |
90
106
  |---|---|---|
91
107
  | `global` | `MNEMON_DATA_DIR` 或 `~/.mnemon` | 多个工作区共享同一套记忆 |
92
- | `workspace` | DSH Host 启动目录下的 `.mnemon` | 项目隔离 |
108
+ | `workspace` | 每个 DSH 工作区根目录下的 `.mnemon` | 项目隔离与跨工作区查看 |
93
109
  | `custom` | `dataDir` | 显式磁盘、挂载卷或专用数据目录 |
94
110
 
95
- 设置写入 `$DSH_HOME/settings.yaml`,重启 DSH 后应用。切换范围不会搬运旧数据;需要保留时先停止写入并手工复制整个旧根目录。
111
+ 设置写入 `$DSH_HOME/settings.yaml`,保存后实时应用。切换范围不会搬运旧数据;需要保留时先停止写入并通过整体 ZIP 备份迁移。
112
+
113
+ 选择 `workspace` 后,工作台顶部可以切换要查看的工作区。这个选择只决定工作台正在查看和维护哪一套数据;Agent 实际使用的目录始终跟随当前会话。两者不同时会出现全局提示,可一键对齐。
96
114
 
97
115
  ## 5. 创建第一个记忆体
98
116
 
99
- 进入任意会话的“记忆系统”Tab:
117
+ 使用默认 `sidebar` 时点击 DSH 左侧栏的“记忆系统”入口;使用 `buildin` 时打开对话区的“记忆系统”标签页:
100
118
 
101
119
  1. 打开“记忆体”页。
102
120
  2. 创建一个主题明确的记忆体,例如“项目决策”。
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## Web 工作台
6
6
 
7
- 主要 Web 界面跟随 DSH 全局语言和明暗主题。顶部导航分为三组,组间以分隔线呈现:「状态」独立成第一组;「运行时、记忆体、档案」对应三层存储;「沉淀、检索、实体、内容」为读写工具。默认进入「状态」页。
7
+ `displayMode=sidebar`(默认)通过左侧栏打开独立工作台,`displayMode=buildin` 通过原有 DSH `conversation.view` 内嵌标签页打开同一功能界面。两种形态由设置页实时切换且不会同时挂载。主要 Web 界面跟随 DSH 全局语言和明暗主题。顶部导航分为三组,组间以分隔线呈现:「状态」独立成第一组;「运行时、记忆体、档案」对应三层存储;「沉淀、检索、实体、内容」为读写工具。默认进入「状态」页。
8
8
 
9
9
  | 页面 | 用途 | 调用边界 |
10
10
  |---|---|---|
@@ -19,6 +19,18 @@
19
19
 
20
20
  图谱每 15 秒同步一次,也可以手动刷新。自然布局、均匀重置、拖拽和键盘微调只影响客户端展示,不修改 Mnemon 数据。
21
21
 
22
+ ### 对话内交互
23
+
24
+ 记忆系统在对话流内以三个 DSH 原生槽位呈现,全部为纯增量注册,不替换任何官方渲染:
25
+
26
+ | 槽位 | 呈现 | 数据与交互 |
27
+ |---|---|---|
28
+ | `tool.call.toolview`(按工具名 keyed) | 每个 `mnemon_*` 工具调用渲染为记忆风格卡片行:状态点、Mnemon 标、召回/沉淀标题与工具专属摘要;悬停出现「在记忆视图中打开」与「查看轨迹」 | 摘要从调用参数与已定稿结果 JSON 提取(recall/document-search 显示命中数、status 显示引擎健康、bodies 显示目录统计等);展开显示参数与结果原文;跳转经 `mnemon:anchor` 事件通道落到记忆视图对应页(带查询 seed) |
29
+ | `conversation.chat.turnTail`(chain) | 回合尾动作行上方一行「本回合记忆 · 召回 N · 沉淀 M · 档案检索 K」;展开列出具体工具名,并可跳到状态页 | 通过只读 RPC `turn-activity` 从宿主持久会话日志按 turn 统计 `mnemon_*` 调用;chain `select` 拒绝未完成回合,无记忆活动的回合不渲染任何内容 |
30
+ | `conversation.chat.assistant-actions`(list,id `mnemon-save`) | 已定稿助手回复动作区(反馈按钮旁)的「存入记忆」按钮;点击展开候选面板 | 面板经只读 RPC `assistant-message` 按 messageId 提取消息文本为可编辑候选;提交走既有写 RPC `supervise`(受监督写回:记忆子 Agent 判断、查重、选择记忆体),显示子 Agent 回执;只读部署提前禁用并提示 |
31
+
32
+ `turn-activity`、`assistant-message` 为新增只读端点,与既有端点共用同一 Host 通道与错误语义。对话内交互的渲染扩展面契约与后续「正文内联记忆高亮」方案见 Mnemon 档案「dsh-mnemon 对话内记忆交互侦察」。
33
+
22
34
  ## 模型工具
23
35
 
24
36
  ### 只读工具
@@ -79,6 +91,8 @@ worker 内调用同名工具时直接到服务层,不再委派。
79
91
 
80
92
  RPC 是 DSH Host 与本插件 Web client 的内部桥,不是承诺稳定的外部 HTTP API。
81
93
 
94
+ 工作台数据请求会携带 `sessionId` 和可选的 `workspaceId`。Host 只接受 `workspaceRegistry` 中已登记的工作区 ID:确定性读取与人工维护路由到 `workspaceId` 指向的查看根,而 Agent、工具和生命周期继续按 `sessionId` 对应 Agent 的 cwd 路由。`status.workspaceContext` 返回两条根目录和 `aligned` 状态;需要 Agent 写入的操作在未对齐时被拒绝。
95
+
82
96
  ### 读通道
83
97
 
84
98
  ```text
@@ -111,7 +125,7 @@ authority: loopback
111
125
  | Endpoint | 行为 |
112
126
  |---|---|
113
127
  | `runtime-memory` | 热记忆 mutation |
114
- | `supervise` | Tab 候选交给记忆 worker |
128
+ | `supervise` | 工作台候选交给记忆 worker |
115
129
  | `document` | create / update / archive |
116
130
  | `remember` | 带可选高级约束的语义写入 |
117
131
  | `link` | 建立关系 |
@@ -119,7 +133,7 @@ authority: loopback
119
133
  | `body-create` | 创建 Memory Space |
120
134
  | `body-update` | 更新元数据或 active |
121
135
 
122
- `writeEnabled=false` 时整个写通道不注册。
136
+ `writeEnabled=false` 时写通道保持稳定注册,但所有 mutation 都会在 Host 边界拒绝。
123
137
 
124
138
  ### 设置通道
125
139
 
@@ -53,6 +53,10 @@ mnemon --version
53
53
 
54
54
  这些边界不等于秘密扫描器。当前还没有确定性的凭据/秘密检测;不要向热记忆、Documents 或 Memory Spaces 提交密钥、token、私钥和原始敏感日志。
55
55
 
56
+ ### 安全问题报告
57
+
58
+ 发现安全漏洞请按 [SECURITY.md](../../SECURITY.md) 的渠道私下报告(GitHub Security Advisories 或维护者邮箱),不要开公开 issue。范围内的典型问题包括:数据丢失、路径穿越、锁与 revision 检查绕过、子 Agent 隔离破坏、WebUI 对记忆内容的注入。
59
+
56
60
  ## 备份
57
61
 
58
62
  三层数据共用 `storageRoot`,一致备份应覆盖整个根,而不是只复制 `mnemon.db`:
@@ -90,7 +94,7 @@ mnemon --version
90
94
  插件不会自动迁移数据:
91
95
 
92
96
  ```text
93
- old scope -- change setting + restart --> new empty or existing scope
97
+ old scope -- change setting + save --> new empty or existing scope
94
98
 
95
99
  no implicit copy
96
100
  no implicit merge
@@ -104,11 +108,12 @@ no implicit delete
104
108
  | 现象 | 检查与处理 |
105
109
  |---|---|
106
110
  | Mnemon 不可用 | 运行 `command -v mnemon`、`mnemon --version`;设置 `MNEMON_CLI_PATH` 或 `cliPath` 后重启 |
107
- | 状态正常但召回为空 | 检查是否有 active Memory Space、当前 `storageScope`、DSH 启动 cwd 和查询是否足够聚焦 |
111
+ | 状态正常但召回为空 | 检查是否有 active Memory Space、当前 `storageScope`、工作台查看目录、会话实际生效目录和查询是否足够聚焦 |
112
+ | 工作台提示目录未对齐 | 这是安全提示:工作台正在查看另一工作区,而 Agent 仍跟随当前会话;点击“对齐当前会话”或有意保留跨工作区查看 |
108
113
  | `memoryBodyId is required...` | active 数量不是恰好 1;让 worker 或调用方显式选择目标 |
109
114
  | `memory body is not active for reading` | 在记忆体页激活目标;写入 inactive 可以,但读取不行 |
110
115
  | subagent provider 错误 | 普通任务需要完整隔离能力;后台审查另需 `fork + inheritsParentContext` |
111
- | 设置保存后无变化 | 所有选项重启后生效 |
116
+ | 设置保存后无变化 | 检查界面错误提示;所有选项应在保存成功后实时生效 |
112
117
  | custom 目录被拒绝 | 使用绝对路径、`~` 或 `~/...` |
113
118
  | Document 无 workspace | 会话必须对应 live root Agent,并在 session header 中带 cwd |
114
119
  | source path 被拒绝 | 路径必须留在会话工作区内,且不能引用托管 Documents 目录 |
@@ -117,7 +122,7 @@ no implicit delete
117
122
  | lock timeout | 检查是否有另一个实例正在写;不要删除仍属于活跃进程的 lock |
118
123
  | invalid JSON / unexpected viz | CLI 输出协议可能不兼容;在隔离根中验证版本,不要继续写生产数据 |
119
124
  | 远程页面可以读但不能写 | 写 RPC 强制 loopback,这是权限设计 |
120
- | `tabEnabled=false` 仍显示 Tab | 当前开关只停 Host 数据 RPC,不会移除客户端 slot |
125
+ | 左侧栏不显示“记忆系统” | 检查 `tabEnabled=true` 且 `displayMode=sidebar`;`buildin` 会显示在对话区标签页;本地 link 修改后先运行 `pnpm run build` 并重启 DSH profile |
121
126
  | 本地 link 不反映源码 | 先运行 `pnpm run build`,再重启 DSH profile |
122
127
 
123
128
  ## 已知限制
@@ -170,7 +170,9 @@ Web 的直接检索走确定性服务;“Agent 查询”则先完成相同检
170
170
 
171
171
  ### Web 工作台
172
172
 
173
- 会话“记忆系统”Tab 提供八个页面,分为三组:「状态」独立成第一组;「运行时、记忆体、档案」对应三层存储;「沉淀、检索、实体、内容」为读写工具:
173
+ 默认 `sidebar` 形态由左侧栏“记忆系统”入口打开独立主内容区工作台;可在设置中切换为 `buildin`,恢复原有对话区内嵌标签页。两种形态复用同一功能界面并实时互斥挂载。工作台提供八个页面,分为三组:「状态」独立成第一组;「运行时、记忆体、档案」对应三层存储;「沉淀、检索、实体、内容」为读写工具:
174
+
175
+ `workspace` 存储范围下,顶部选择器是独立的“查看上下文”:可以留在当前对话不变的情况下查看和维护另一个已登记 DSH 工作区。Agent、工具和生命周期使用的是“执行上下文”,始终跟随当前会话 cwd。查看与执行目录不一致时,整个工作台都会显示路径差异和一键对齐入口;需要启动 Agent 的操作在未对齐时不会执行。
174
176
 
175
177
  | 页面 | 主要用途 |
176
178
  |---|---|
@@ -11,7 +11,6 @@ Roadmap 记录当前实现之外的工作,不是已交付能力承诺。优先
11
11
  - [ ] **退避、熔断和人工重试**:连续失败后有上限地退避,状态页展示原因并允许显式恢复。
12
12
  - [ ] **确定性敏感信息防线**:在 LLM 准入之外增加秘密/凭据模式检测、大小限制和审计回执。
13
13
  - [ ] **自动化真实 WebUI E2E**:隔离 DSH_HOME、storageRoot、workspace 和端口,覆盖轻任务、评分审查、取消和失败无半写入。
14
- - [ ] **修正 `tabEnabled` 语义**:Host 和 client 使用同一开关,真正注册或移除完整 Tab 能力。
15
14
  - [ ] **修正冷引用路径**:所有 storage scope 都写入与实际托管路径一致的可解析引用。
16
15
 
17
16
  ## P1:长期维护与数据运维
@@ -27,6 +26,7 @@ Roadmap 记录当前实现之外的工作,不是已交付能力承诺。优先
27
26
  ## P2:可观测性、体验与发布工程
28
27
 
29
28
  - [ ] **后台审查历史**:展示最近评分、checkpoint、等待/运行/失败、worker 回执和产生的变更。
29
+ - [ ] **切换到 DSH 通用目录选择器**(等待 [dsh-external/issues#603](https://github.com/dsh-external/issues/issues/603)):当前自定义存储暂用手动填写 Host 路径,以避开远端 `browse` 部署无法调用 `native` picker 的问题;DSH 暴露插件可复用的 directory-picker 服务后,改用由能力提供方统一选择 native / browse 的流程,并仅在必要时保留手动输入作为兜底。
30
30
  - [ ] **完整国际化**:覆盖命令、工具卡、Host 错误、兼容默认元数据和确认文案。
31
31
  - [ ] **多记忆体 E2E**:覆盖自动建空间、跨空间召回、一次迁移分流、多种边、合并和受控 forget。
32
32
  - [ ] **容量与故障注入**:真实触发 USER/MEMORY 边界、Document LRU、revision 冲突、CLI 超时和 Host 中途重启。
@@ -50,7 +50,7 @@ follow an exact cold reference when full text is required
50
50
  +-- state/ # reserved; no persistent reviewer yet
51
51
  ```
52
52
 
53
- `storageScope` 决定整个根,而不只是 Mnemon 数据库。`state/` 当前只会被状态盘点器识别;评分水位仍保存在运行中 Host 的内存中。
53
+ `storageScope` 决定整个根,而不只是 Mnemon 数据库。`workspace` 范围会为每个已登记 DSH 工作区解析独立的 `<workspace>/.mnemon`;Web 查看目标与当前会话执行目标彼此独立,只有后者会驱动 Agent、工具和生命周期。`state/` 当前只会被状态盘点器识别;评分水位仍保存在运行中 Host 的内存中。
54
54
 
55
55
  ## Runtime Memory
56
56