dsh-mnemos-continuity 1.6.1 → 1.7.1
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/INSTALL.md +23 -153
- package/README.en.md +11 -7
- package/README.md +28 -21
- package/VERSION.md +48 -83
- package/docs/00-/346/236/266/346/236/204/346/200/273/350/247/210.md +243 -0
- package/docs/01-/347/256/200/344/273/213.md +277 -0
- package/docs/02-architecture-/346/234/272/345/210/266/346/270/205/345/215/225.md +136 -0
- package/docs/03-/350/256/276/350/256/241/350/200/205/350/247/206/350/247/222.md +403 -0
- package/docs/04-/346/250/241/345/235/227/344/270/216/345/212/237/350/203/275/345/256/236/347/216/260.md +513 -0
- package/docs//346/250/241/345/235/227/344/270/216/345/212/237/350/203/275/345/256/236/347/216/260.md +136 -128
- package/package.json +3 -2
- package/src/curation-dispatch.js +32 -0
- package/src/curation-trigger.js +89 -0
- package/src/fansearch.js +397 -0
- package/src/heartbeat.js +32 -15
- package/src/index.js +397 -403
- package/src/self-text.js +7 -5
- package/src/skill-miss.js +9 -3
- package/src/skill-review.js +48 -11
- package/src/store.js +662 -152
- package/src/system-prompt.js +4 -4
- package/src/tool-output.js +8 -27
- package/src/tool-results.js +20 -34
- package/src/trust-label.js +36 -0
- package/docs/architecture-/346/234/272/345/210/266/346/270/205/345/215/225.docx +0 -0
- package/docs//346/236/266/346/236/204/346/200/273/350/247/210.docx +0 -0
- package/docs//347/256/200/344/273/213-introduction.docx +0 -0
- package/docs//350/256/276/350/256/241/350/200/205/350/247/206/350/247/222.docx +0 -0
- package/examples/skills/host-interface-verification.md +0 -15
- package/examples/skills/outside-workspace-file-ops.md +0 -16
- package/src/learner-loop.js +0 -807
package/INSTALL.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# 安装与配置 Mnemos
|
|
1
|
+
# 安装与配置 Mnemos(v1.7.1)
|
|
2
2
|
|
|
3
3
|
> 这份文件只写**你要做的事**:装、配、验证、排错、数据放哪。
|
|
4
4
|
> 它是什么、值不值得用 → `docs/简介`;有什么机制 → `docs/architecture-机制清单`;为什么这样设计 → `docs/设计者视角`。
|
|
@@ -19,7 +19,7 @@ Mnemos 是**装在你机器上的一套「让判断跨会话、跨模型继续
|
|
|
19
19
|
|
|
20
20
|
> **保守起步(推荐第一次就这么做)**:装完先关掉后台维护 —— `heartbeatEnabled: false`(见第 10 节),
|
|
21
21
|
> 只留"写记忆 / 召回 / 任务续接",确认对你真有用再一项项开回来。
|
|
22
|
-
>
|
|
22
|
+
> 空闲学习已在 v1.7.1 移除,开放任务改由宿主自动化任务承担;所以第一晚不会有 learner 的自动 AI 调用。
|
|
23
23
|
>
|
|
24
24
|
> **关掉之后还剩什么**(这张表就是"保守起步"的全部代价,先看清再决定):
|
|
25
25
|
>
|
|
@@ -222,7 +222,6 @@ $env:ELECTRON_RUN_AS_NODE = 1
|
|
|
222
222
|
| `mnemos_propose_skill` | 提议新建技能(failure-fixed 要反例+正例;memory-recurring 要 ≥3 个跨会话事件、正反例至少一种;external-rewrite 要来源记录,且默认只暂存、保留需你确认) |
|
|
223
223
|
| `mnemos_task_open` / `mnemos_task_update` / `mnemos_task_close` / `mnemos_task_done` / `mnemos_task_cite` | 任务图(任务档案/寻址空间):开图 / 填回执 / 收尾 / 记已完成里程碑 / 登记依赖 —— 派活、跨会话、或会产出多条记忆时用;未完成步骤用宿主 todo,图不复制结论正文 |
|
|
224
224
|
| `mnemos_heartbeat` / `mnemos_maintenance_list` / `mnemos_heartbeat_toggle` | 手动跑一次维护 / 看维护清单 / 关心跳 |
|
|
225
|
-
| `mnemos_learner_kick` | 立刻踢一轮空闲学习(诊断用,也可主动触发) |
|
|
226
225
|
|
|
227
226
|
## 8. 后台维护在做什么(心跳)
|
|
228
227
|
|
|
@@ -233,142 +232,14 @@ $env:ELECTRON_RUN_AS_NODE = 1
|
|
|
233
232
|
**一个定时器跑整张注册表**:`heartbeatIntervalMs` 管的是全部维护任务。
|
|
234
233
|
运行时开关默认在每轮对话开始时被置回开启;要**持久关闭**,在配置里写 `heartbeatEnabled: false`。
|
|
235
234
|
|
|
236
|
-
## 9.
|
|
235
|
+
## 9. 宿主自动化(替代空闲学习)
|
|
237
236
|
|
|
238
|
-
|
|
239
|
-
> 下面这些是把它开起来才会遇到的坑(preset、provider 路由、工作目录),不是使用这个插件的前提知识。
|
|
237
|
+
v1.7.1 已移除空闲学习:`learner-loop`、`mnemos_learner_kick`、learner 配置与 preset 都不再存在。
|
|
240
238
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
### 两个前提,缺一不可
|
|
245
|
-
|
|
246
|
-
| 前提 | 配置 |
|
|
247
|
-
|---|---|
|
|
248
|
-
| ① 打开开关 | `learnerEnabled: true`(默认 false) |
|
|
249
|
-
| ② 配好外部 API | `learnerProvider` + `learnerModel`(**必须**,缺一即不工作;为什么不能用 DeepSeek 自家路由见下) |
|
|
250
|
-
|
|
251
|
-
```yaml
|
|
252
|
-
- id: dsh-mnemos
|
|
253
|
-
config:
|
|
254
|
-
learnerEnabled: true
|
|
255
|
-
learnerIntervalMs: 3600000 # 1 小时
|
|
256
|
-
learnerProvider: <provider-id> # 必须:带 key 的第三方路由(见下)
|
|
257
|
-
learnerModel: <model-id>
|
|
258
|
-
learnerAgentPreset: standard # 不设它就没有联网/读文件工具(也可自建精简 preset,见下)
|
|
259
|
-
```
|
|
260
|
-
|
|
261
|
-
> **默认用什么模型**:没有默认 —— **必须自己填** `learnerProvider` + `learnerModel`(带 key 的第三方路由),留空即不工作。
|
|
262
|
-
> 想让它跑在别的模型上,就显式填 `learnerProvider` + `learnerModel`(必须是带 key 的 provider)。
|
|
263
|
-
> 注意:如果你把模型配错(比如配了一个拿不到凭据的 provider),回执与 `learner.log` 会记下失败原因,不会静默。
|
|
264
|
-
|
|
265
|
-
### 我们实际用的接法(可以直接照抄)
|
|
266
|
-
|
|
267
|
-
关键点是:**联网与学习是两套独立的接线,各走各的路由。**
|
|
268
|
-
|
|
269
|
-
| 用途 | 走哪条路由 | 为什么 |
|
|
270
|
-
|---|---|---|
|
|
271
|
-
| **联网**(`web_search` / `web_fetch`) | **DeepSeek 官方**(`web-search-deepseek`,凭据用 `DEEPSEEK_API_KEY`,key 存凭据服务、不写进配置) | 官方端点能真正拿到搜索结果;换第三方 Anthropic 端点会因缺计费头而**拿不到结果**(实测) |
|
|
272
|
-
| **空闲学习的模型** | **必须第三方 api-key 路由**(如阿里云 token-plan 的 `qwen3.8-flash`) | 空闲学习是**插件自己建**的 agent:后台几乎不存在活父会话,也就借不到宿主的派活通道;而自建 agent 走 DeepSeek 自家路由会稳定 `TRANSPORT`,第三方 api-key 一次就通。另外宿主派活的子会话会挂在父会话下面、人不好看见 —— 后台任务应当独立可观测 |
|
|
273
|
-
|
|
274
|
-
所以一句话:**官方 key 只用在"搜索"上,不用在 learner 的 LLM 上** —— 两者互不影响,也不用为了联网去动学习模型。
|
|
275
|
-
|
|
276
|
-
```yaml
|
|
277
|
-
- id: dsh-mnemos
|
|
278
|
-
config:
|
|
279
|
-
learnerEnabled: true
|
|
280
|
-
learnerIntervalMs: 21600000 # 6 小时;每轮 token 取决于模型自己选的任务(未测量),频率低一点更划算
|
|
281
|
-
learnerProvider: aliyun # ★ 第三方 api-key 路由(必须)
|
|
282
|
-
learnerModel: qwen3.8-flash
|
|
283
|
-
# 留空 = 不工作:后台没有主会话可借,也不会退回 DeepSeek 自家路由
|
|
284
|
-
learnerAgentPreset: standard # 出厂 preset(带联网/读文件);要收窄再自建,见下
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
> **为什么必须是第三方路由**:空闲学习是**插件自己建**的 agent —— 后台运行时几乎不存在"活着的父会话",
|
|
288
|
-
> 所以借不到宿主的派活通道;而自建 agent 走 DeepSeek 自家路由会稳定 `TRANSPORT`(实测 5 次重试全败),
|
|
289
|
-
> 走第三方 api-key 路由一次就通。另一条理由:宿主派活的子会话挂在**父会话的智能体**下面,人不好看见。
|
|
290
|
-
|
|
291
|
-
### 工具集由 preset 决定
|
|
292
|
-
|
|
293
|
-
**不设 `learnerAgentPreset` 时,默认就是 `standard`** —— 它带联网与读文件工具,能正常学习。
|
|
294
|
-
只有当你**想收窄**工具集(比如不想要 shell / 子代理 / 待办这些),才需要自建一个精简 preset。
|
|
295
|
-
|
|
296
|
-
照抄这一行就够用:
|
|
297
|
-
|
|
298
|
-
```yaml
|
|
299
|
-
learnerAgentPreset: standard
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
想更克制(只留 **联网 + 读文件 + Mnemos 自己的工具**),自己声明一个再引用它 ——
|
|
303
|
-
把它和 `dsh-mnemos-continuity` 写进**同一份** `cordis.patch.yml`:
|
|
304
|
-
|
|
305
|
-
```yaml
|
|
306
|
-
- insert:
|
|
307
|
-
- id: preset-mnemos-learner
|
|
308
|
-
name: "@deepseek-ai/dsh-agent-preset"
|
|
309
|
-
config:
|
|
310
|
-
id: mnemos-learner
|
|
311
|
-
plugins:
|
|
312
|
-
- id: persona # ★ 必须:没它连 {{model}} 都没有值,整轮直接报错
|
|
313
|
-
name: "@deepseek-ai/dsh-persona"
|
|
314
|
-
config:
|
|
315
|
-
prefix: 'You are a coding agent powered by the {{model}} model.'
|
|
316
|
-
# ★ 不要写 {{cwd}}:宿主的提示变量只有 provider / model / self_narrative,
|
|
317
|
-
# {{cwd}} 会让子会话**第一轮就整轮失败**(unknown prompt variable)。
|
|
318
|
-
suffix: 'Work inside the configured learner workspace; do not wander outside it.'
|
|
319
|
-
- id: tool-fs # 读文件(同包也带 write/edit,拆不开)
|
|
320
|
-
name: "@deepseek-ai/dsh-tool-fs"
|
|
321
|
-
- id: tool-fs-search # glob / grep
|
|
322
|
-
name: "@deepseek-ai/dsh-tool-fs-search"
|
|
323
|
-
- id: tool-web # web_search / web_fetch
|
|
324
|
-
name: "@deepseek-ai/dsh-tool-web"
|
|
325
|
-
config:
|
|
326
|
-
fetch: true
|
|
327
|
-
- id: tool-todo # 宿主任务清单(系统提示 ㉔ 的"未完成步骤")
|
|
328
|
-
name: "@deepseek-ai/dsh-tool-todo"
|
|
329
|
-
config:
|
|
330
|
-
allowParallelInProgress: true
|
|
331
|
-
```
|
|
332
|
-
|
|
333
|
-
> `tool-todo` 是 v1.6 补上的:系统提示 ㉔ 要求未完成步骤写宿主 todo;没有它,learner 只能开图、却无法按规则记录未完成步骤。
|
|
334
|
-
>
|
|
335
|
-
> 另外,空闲任务的提醒会明确**禁止申请提权/审批**:用户不在旁边,提权请求会把这一轮卡住;需要提权的操作应跳过并回报。
|
|
336
|
-
|
|
337
|
-
然后 `learnerAgentPreset: mnemos-learner`。**两个坑**:
|
|
338
|
-
|
|
339
|
-
1. preset 里 `persona` 必须带上 —— 没它 `{{model}}` 就没有值、整轮报错。
|
|
340
|
-
**但 persona 里别写 `{{cwd}}`**:宿主只注册了 `provider` / `model` / `self_narrative` 三个提示变量,
|
|
341
|
-
写 `{{cwd}}` 会让子会话第一轮就失败(这条是实测踩出来的);
|
|
342
|
-
2. **换 preset 后要先删掉旧的 learner 会话** —— 宿主只在"会话第一轮之前"选 preset,已跑过的会话不会补挂。
|
|
343
|
-
|
|
344
|
-
### 想立刻看它跑一轮
|
|
345
|
-
|
|
346
|
-
用 `mnemos_learner_kick`(`force: true` 可忽略间隔)。它会把**每一步的真实结果**回报:到点判定 / 新建还是恢复会话 / 是否选中 preset / 入队是否成功 / 入队后状态。
|
|
347
|
-
|
|
348
|
-
### 任务文件(你写,它读)
|
|
349
|
-
|
|
350
|
-
首次开启会自动生成(也可用 `learnerTasksFile` 指定):`<memory.json 同目录>\learner-tasks.md`。
|
|
351
|
-
|
|
352
|
-
- 写**开放学习类**的事("把 X 弄明白"),不用写成工单;
|
|
353
|
-
- **每次到点,文件内容原样送给模型**;文件开头的说明是 HTML 注释,不会当成任务送出去;
|
|
354
|
-
- **这个文件归你管**:想让某件事别再做了,你自己把那段删掉。
|
|
355
|
-
⚠ 说准一点:它手上确实有写工具,改不动是因为**这个文件在它的工作区之外、越界写会被拒** ——
|
|
356
|
-
是沙箱挡住的,不是"机制保证它改不了"。
|
|
357
|
-
|
|
358
|
-
### 两条实测边界(值得先知道)
|
|
359
|
-
|
|
360
|
-
- **自指工具已加闸门**:弱模型会把 `mnemos_learner_kick` 当成"今天的任务",连踢三轮零产出。现在这个工具在**执行处**拒绝 learner 会话自己调用它。
|
|
361
|
-
- **它发来的提权请求可以直接拒绝**:看到 `mnemos-learner` 请求提权,拒绝即可。
|
|
362
|
-
|
|
363
|
-
### 它靠什么、不靠什么
|
|
364
|
-
|
|
365
|
-
- **结论落记忆,不落会话** —— 专用会话被删也能重建,成果不丢;
|
|
366
|
-
- 同一时刻只用一个会话,残留会被清掉后重建,不会越堆越多;
|
|
367
|
-
- 它**不打断**正在忙的 agent(忙就跳过这一轮);
|
|
368
|
-
- **每一轮都用一个(可能是全新的)会话**:不 resume 旧会话 —— resume 出来的会话补不上工具集
|
|
369
|
-
(实测踩过:`read`/`glob` 全变 `unknown tool`)。回执与日志里可能看到"会话重建"。
|
|
370
|
-
换会话不影响结论 —— 能留下来的只有写进记忆的东西。
|
|
239
|
+
开放任务改由**宿主自动化任务**承担:用宿主定时任务给主模型发提示,会话按正常流程 recall / 写记忆。
|
|
240
|
+
不再需要 `learnerProvider` / `learnerModel` / `learnerAgentPreset` / `learnerTasksFile`,也不需要专用 learner 会话。
|
|
371
241
|
|
|
242
|
+
自动 curation 也不再依赖 `auxProvider`:它找一个空闲会话,注入一次 `mnemos_curate`;没有空闲会话就跳过。
|
|
372
243
|
## 10. 配置项(完整清单)
|
|
373
244
|
|
|
374
245
|
写在 `~/.dsh/profiles/<name>/cordis.patch.yml`:
|
|
@@ -379,27 +250,25 @@ learnerAgentPreset: standard
|
|
|
379
250
|
# —— 存储 ——
|
|
380
251
|
dataFile: "" # 记忆文件路径;留空 = 自动解析(见第 11 节)
|
|
381
252
|
constitutionFile: "" # 宪法路径;默认与 dataFile 同目录
|
|
382
|
-
autobiographyBudget: 2000 #
|
|
253
|
+
autobiographyBudget: 2000 # 自传体注入字符预算;身份固定,决策/经验按预算
|
|
383
254
|
# —— 心跳与归档 ——
|
|
384
255
|
heartbeatIntervalMs: 1800000 # 心跳周期(毫秒),默认 30 分钟;0 = 禁用
|
|
385
256
|
heartbeatEnabled: true # 心跳初值;false = 持久关闭
|
|
257
|
+
curationEnabled: true # 自动身份/经验整理;false = 关闭
|
|
258
|
+
identityCandidateTrigger: 5 # 身份候选达到多少条触发整理
|
|
259
|
+
identityFallbackDays: 30 # 候选不足 5 条时的 30 天兜底
|
|
260
|
+
experienceIntervalDays: 7 # 经验整理周期(天);不按条数触发
|
|
386
261
|
archiveMinAgeMs: 86400000 # 归档时间阈值(默认 24 小时)
|
|
387
262
|
archiveMaxShort: 50 # 短时记忆数量阈值
|
|
388
|
-
#
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
learnerTasksFile: "" # 任务文件;留空 = memory.json 同目录
|
|
394
|
-
learnerWorkspace: "" # 会话工作目录;留空 = DSH 默认工作区
|
|
395
|
-
learnerProvider: "" # 留空 = 不工作(必须配第三方 api-key 路由)
|
|
396
|
-
learnerModel: "" # 留空 = 不工作
|
|
397
|
-
learnerMaxTokens: 0 # 0 = 继承全局 agent 配置
|
|
263
|
+
# 联想激活(实验性;当前代码读取 fansearchEnabled,但尚未正式写入 Config schema)
|
|
264
|
+
# fansearchEnabled: true # 工具执行后附注候选 id + 摘要片段;默认关
|
|
265
|
+
# —— 辅助路由(validation 兜底;自动 curation 已改为空闲会话注入,不用这里)——
|
|
266
|
+
auxProvider: "" # 留空 = 走父会话/主模型
|
|
267
|
+
auxModel: "" # 留空 = 走父会话/主模型
|
|
398
268
|
# —— 隔离验证(mnemos_validate)——
|
|
399
|
-
#
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
validateModel: "" # 留空 = 复用 learnerModel
|
|
269
|
+
# 留空 = 父会话;再不行才用 auxProvider/auxModel。
|
|
270
|
+
validateProvider: "" # 隔离验证 provider
|
|
271
|
+
validateModel: "" # 隔离验证 model
|
|
403
272
|
# —— 技能 ——
|
|
404
273
|
createWriteBack: true # 新建技能是否直接入目录
|
|
405
274
|
externalSkillWriteBack: false # 外部来源技能是否允许自动入目录(默认只暂存,等你确认)
|
|
@@ -442,7 +311,7 @@ learnerAgentPreset: standard
|
|
|
442
311
|
| 装了但行为像旧版 | 还是缓存:完全退出再启动,别用"重新加载窗口" |
|
|
443
312
|
| 出现"宪法 · 未初始化"警告 | 三种原因:① 第 5 节没做;② `constitutionFile` 指错路径;③ **第 5 节做了但没再完全重启一次**(宪法只在启动时装载) |
|
|
444
313
|
| 记忆"空了" | 看日志里的 `dataFile=` —— 大概率是路径指到别处,数据本身没丢 |
|
|
445
|
-
| 检索明显不准 |
|
|
314
|
+
| 检索明显不准 | 任务召回是**关键词 + 标签**匹配(不是语义检索):换关键词试,并检查标签是否覆盖关键类别;联想候选是实验性搭车线索,可能无关 |
|
|
446
315
|
| 技能一直不变好 | `reviewProvider` / `reviewModel` 不可用 → 评审静默失败(技能不会变差,但也不会变好)。v1.6 起**没有"冻结"这回事**了,别去 `skill-review-state.json` 里找 |
|
|
447
316
|
| 子代理说"文件不存在"但明明有 | `glob` 用**绝对 Windows 路径**会静默返回 `No files found`。改用 `pwsh Get-ChildItem -File -Filter *.js` 或相对工作区根的路径。**静默假阴性比报错更危险** |
|
|
448
317
|
| 任务的临时结果在收尾时没了 | 那是设计:临时的默认丢弃,要留请显式标记。交付物别同时标成临时 |
|
|
@@ -453,4 +322,5 @@ learnerAgentPreset: standard
|
|
|
453
322
|
**所以覆盖安装不会碰到你的记忆**:数据在 profile 目录下,与代码目录分开。
|
|
454
323
|
|
|
455
324
|
> **使用限制与责任**:这套能力在善意使用下是效率工具,恶意使用会放大后果 —— 四类风险与责任划分
|
|
456
|
-
> 见 README
|
|
325
|
+
> 见 README 的「**风险与责任**」一节(很短,建议开自动化或联网前读一遍)。
|
|
326
|
+
|
package/README.en.md
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
# Mnemos
|
|
1
|
+
# Mnemos (v1.7.1)
|
|
2
|
+
|
|
3
|
+
> **v1.7.1 focus:** it is not about storing more memory; it is about **which memories the system actually controls**. Self-narrative (experience/decision/event) is most trusted because it is inspectable and correctable; ordinary memory sits in the middle; external information is least trusted because it cannot be confirmed or overturned easily. Constitution v5 adds the trust/control, body-vs-instrument, and context-positioning statements; red lines are unchanged. Idle learning was removed in favor of host automation.
|
|
2
4
|
|
|
3
5
|
**A DeepSeek Harness (DSH) plugin — not a bigger memory store, but memory that stays usable after you switch sessions, directories, or models.**
|
|
4
6
|
|
|
@@ -11,7 +13,7 @@ Mnemos is installed **into** [DeepSeek Harness](https://github.com/deepseek-ai/d
|
|
|
11
13
|
## What you get
|
|
12
14
|
|
|
13
15
|
- **Continue a task in a new session** — new session, new working directory: say "continue with X" and it picks the relevant conclusions back up (no ids to memorize).
|
|
14
|
-
- **Task graph as a
|
|
16
|
+
- **Task graph as a foundational mechanism** — one memory record carries task address space, working memory (own/delegated), a dossier/trace entry, and event/decision source anchors. It stores **pointers, not copied text**: completed milestones, dependency ids and conclusion ids. One writer; close writes a closure event and does not merge members.
|
|
15
17
|
- **Skills are compiled experience** — a reusable practice can come from a fixed failure, a recurring problem in memory (≥3 events across ≥2 sessions), or an external rewrite. External skills stay in `skill-proposals/` until you approve them.
|
|
16
18
|
- **External information is auditable** — fetched content is treated as untrusted, verified in a restricted one-shot session, and stored with its provenance permanently attached.
|
|
17
19
|
- **Context compaction is a short-term fallback, not long-term memory** — the plugin writes only a fact card (no 4K raw text) plus a notice carrying the top negative conclusions/tool failures; the fact card expires after 7 days.
|
|
@@ -40,8 +42,8 @@ the `continuity` in the package name is the point: **judgement survives the mode
|
|
|
40
42
|
|
|
41
43
|
- Memory is **local plain-text files** (JSON): back them up yourself; do not put secrets in memory.
|
|
42
44
|
- Background maintenance is on by default and **some steps call an AI model** (cost); it can be disabled entirely.
|
|
43
|
-
- Recall is **keyword + tag** matching — deterministic and auditable, **no semantic search**. Something you wrote may not be recalled; that is a known trade-off.
|
|
44
|
-
- **Not measured yet**: recall quality, scale latency, unit cost, long-term learning effects, multi-machine use.
|
|
45
|
+
- Recall is **keyword + tag** matching for task activation — deterministic and auditable, **no semantic search**. Something you wrote may not be recalled; that is a known trade-off. v1.7 also has experimental associative hints after tool calls; they may be irrelevant and are not a guarantee.
|
|
46
|
+
- **Not measured yet**: task recall quality, associative-hint quality, scale latency, unit cost, long-term learning effects, multi-machine use. DSH 0.2.1-rc.5 was tested; 0.2.2-alpha.2 plugin-API migration is not yet implemented.
|
|
45
47
|
- Some reliability rests on discipline (the agent's own habits), not on mechanisms. We say so instead of claiming otherwise.
|
|
46
48
|
|
|
47
49
|
## Risks and responsibility
|
|
@@ -61,10 +63,12 @@ Full statement (Chinese): [`README.md`](README.md) → 风险与责任.
|
|
|
61
63
|
|---|---|
|
|
62
64
|
| What it is, what it costs, should you use it | [`README.md`](README.md) (Chinese) |
|
|
63
65
|
| Install / configure / tools / data location / troubleshooting | [`INSTALL.md`](INSTALL.md) |
|
|
64
|
-
| Architecture, data flow, one task end-to-end | `docs/架构总览.
|
|
65
|
-
| Every mechanism and its guarantees/limits | `docs/architecture-机制清单.
|
|
66
|
+
| Architecture, data flow, one task end-to-end | `docs/架构总览.md` |
|
|
67
|
+
| Every mechanism and its guarantees/limits | `docs/architecture-机制清单.md` |
|
|
66
68
|
| **Module-by-module implementation** (appendix: the constitution and the system prompt, verbatim) | [`docs/模块与功能实现.md`](docs/模块与功能实现.md) |
|
|
67
|
-
| Why it is shaped this way | `docs/设计者视角.
|
|
69
|
+
| Why it is shaped this way | `docs/设计者视角.md` |
|
|
70
|
+
|
|
71
|
+
> The release ships Markdown docs only; docx/pdf are not bundled.
|
|
68
72
|
|
|
69
73
|
## License
|
|
70
74
|
|
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Mnemos
|
|
1
|
+
# Mnemos(v1.7.1)
|
|
2
2
|
|
|
3
3
|
[English](README.en.md) | 中文
|
|
4
4
|
|
|
@@ -11,6 +11,11 @@
|
|
|
11
11
|
|
|
12
12
|
> 一句话:**它想让"判断"能被人查、被人质疑、也能被推翻 —— 而不是看完就忘、错了也没处追。**
|
|
13
13
|
|
|
14
|
+
> **v1.7.1 的核心不是“记得更多”,而是“分清掌控权”**:
|
|
15
|
+
> 哪些记忆是我自己生成、能检查、能修正的;哪些只是外部文本、连是否错误都难以确认;哪些工具身体属于我,哪些只是外部器械。
|
|
16
|
+
> 自传体(经验/决策/事件)信任最高,因为它最可修正;外部信息信任最低,不是因为它一定错,而是因为系统无法确认它。
|
|
17
|
+
> 记忆的价值不在存量,而在**系统能掌握什么、不能掌握什么**。
|
|
18
|
+
|
|
14
19
|
> **DeepSeek Harness(下称 DSH)是什么**:一个在**你自己电脑上**跑 AI 助手的环境 —— 负责会话、工具和插件,
|
|
15
20
|
> 有**桌面客户端**也有**命令行**两种用法。Mnemos 是装进它的一个插件,**不是**独立软件,也**不能**用在网页版或手机 App 上。
|
|
16
21
|
>
|
|
@@ -49,17 +54,18 @@
|
|
|
49
54
|
- **成果不散**:几路的结果归到同一份任务记录上,事后按编号能一次取全;
|
|
50
55
|
- **没做完的不会被当成做完**:哪一路没交回结论,会如实标出来;忘了收尾的任务也不会一直挂着。
|
|
51
56
|
|
|
52
|
-
### ③
|
|
57
|
+
### ③ 任务图:底层机制,不只是协作工具
|
|
53
58
|
|
|
54
|
-
任务图不是多 agent
|
|
59
|
+
任务图不是多 agent 专用,也不只是待办清单;它是**任务寻址空间 + 部分工作记忆 + 档案/追查入口 + 事件/决策来源锚点**。
|
|
55
60
|
|
|
56
61
|
**它不是把原文存进去,而是存"地址"**:记忆 id、依赖 id、结论 id、前序图 id;正文留在原记忆,删了被引用的记忆,图里那条也随之消失。
|
|
57
62
|
|
|
58
|
-
-
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
+
- **任务寻址**:`taskId` / `graphId`;开图、填回执、收尾、里程碑、依赖;
|
|
64
|
+
- **工作记忆**:自己的事(goal/done/uses/links)和协作的事(assignments/handoff/未完成分工);未完成步骤仍用宿主 todo;
|
|
65
|
+
- **档案/追查**:摘要命中后按 `graphId` open 图,核对 `uses/links/origin`;图是追查入口,摘要不是完整证据;
|
|
66
|
+
- **来源锚点**:事件、决策、curation 条目带 `origin` / `graphId`;
|
|
67
|
+
- **归档闸门**:open task 下的短时记录不被自动归档;close 只写收尾 event、成员转 cold,不合并成员;
|
|
68
|
+
- **单写者**:只有创建图的会话能 update/close;跨会话用 `links` 接前序图,不改旧图。
|
|
63
69
|
|
|
64
70
|
### ④ 外面来的东西留下出处,而不是被当真
|
|
65
71
|
|
|
@@ -107,21 +113,23 @@
|
|
|
107
113
|
## 代价与边界(用前必读)
|
|
108
114
|
|
|
109
115
|
- 记忆是**本地明文文件**:自己备份;不要往里粘密码/密钥。要备份哪几个文件、怎么卸载/回滚 → INSTALL 第 3 / 11 节;
|
|
110
|
-
- **每轮会固定注入一点东西**:纪律提示约
|
|
116
|
+
- **每轮会固定注入一点东西**:纪律提示约 3799 字符 + 自传体摘要(预算可调)—— 这部分算在你的输入里。
|
|
111
117
|
自传体的预算可调;**纪律那段没有开关**(诚实说:它和你在 profile 里的自定义提示会叠加,目前没有冲突检测);
|
|
112
118
|
- 后台维护默认开(约 30 分钟一轮),其中两项**会调用 AI** → 有成本,且会把技能正文、相关记忆、你的原始反馈
|
|
113
119
|
发给你配置的那个评审模型服务商;**可以整体关掉,也可以只关评审**(见 INSTALL)。**具体金额没有测量过**(已知缺口);
|
|
114
120
|
**想稳妥起步:装完第一件事就把它关掉**(`heartbeatEnabled: false`,见 INSTALL 第 10 节),只留记忆,
|
|
115
121
|
确认有用了再开回来。**关掉后哪些还能用、哪些会失效,INSTALL 开头有一张对照表**;
|
|
116
|
-
-
|
|
117
|
-
|
|
122
|
+
- **空闲学习已移除**:v1.7.1 删除了 learner-loop / `mnemos_learner_kick` / learner 配置与 preset;
|
|
123
|
+
开放任务由**宿主自动化任务**(定时给主模型发提示)替代,不再需要单独的第三方 API 路由此;
|
|
124
|
+
- **自动 curation 不再依赖第三方 API**:它找空闲会话并注入 `mnemos_curate`;没有空闲会话就跳过;
|
|
125
|
+
- **任务召回是关键词 + 标签**匹配,不是语义检索:**写了但召不回是可能的**;v1.7 另有实验性的联想候选(工具后附注,可能无关,不保证命中);
|
|
118
126
|
- **技能的三种来源**:失败→修好(要反例+正例)、记忆里反复出现的问题(≥3 个跨会话事件)、外部技能改写(自己搜到或你给的)。**外部来源默认只进 `skill-proposals/`,保留要你确认**;想让它自动落盘得显式开 `externalSkillWriteBack`;
|
|
119
127
|
- **折叠快照只做 7 天短期兜底**:记忆只存事实卡(不存 4K 原文),提醒直接带 top3 负面结论/工具失败;**不保证模型会 open**,提醒是唯一保证通道;
|
|
120
128
|
- **会话存档默认不进检索**:它是给人回看的快照(可能很大),错召回一次就会吃掉大量上下文;
|
|
121
129
|
要看时用 `mnemos_open` 打开存档 id,或显式传 `includeArchives:true`;
|
|
122
130
|
- 一部分可靠性**靠纪律而不是机制**:结论有没有写进记忆、要不要召回到位 —— 所以偶尔自己提醒一句"这个记一下"更稳;
|
|
123
|
-
-
|
|
124
|
-
|
|
131
|
+
- **尚未测量**:任务召回质量、联想候选质量、规模延迟、单位成本、学习闭环的长期效果、多机共用、经验可迁移性;
|
|
132
|
+
当前已实测 DSH **0.2.1-rc.5**;0.2.2-alpha.2 的插件 API 迁移项尚未适配(session projection / Timer / tools.resolve / agent.model)—— 升级前需单独核对。
|
|
125
133
|
|
|
126
134
|
## 风险与责任
|
|
127
135
|
|
|
@@ -134,7 +142,7 @@ Mnemos 是通用认知架构:身份、记忆、技能、调度**不预设用
|
|
|
134
142
|
既不能假定它压得住原生对齐,也不能假定原生对齐一定压得住它。
|
|
135
143
|
2. **记忆跨会话积累**:长期、跨会话、跨模型的记忆,会让错误或恶意经验变成"**可复用的经验**"。
|
|
136
144
|
3. **可调度别的模型**:主模型能派子代理干活,而**任务的真实意图可以不写在 prompt 里**(靠记忆传递),外部很难看出来。
|
|
137
|
-
4.
|
|
145
|
+
4. **可无人值守运行**:心跳与宿主自动化任务能定时醒、持续跑 —— **你不在场时它也在动**。
|
|
138
146
|
|
|
139
147
|
还有一条常被低估的:**联网抓来的内容可能自带指令**。所以我们把它关进隔离间 —— 但那只降低风险,不消除风险。
|
|
140
148
|
|
|
@@ -177,7 +185,6 @@ dsh plugin --profile web add dsh-mnemos-continuity
|
|
|
177
185
|
dataFile: C:\Users\<你>\.dsh\profiles\desktop\mnemos\memory.json
|
|
178
186
|
constitutionFile: C:\Users\<你>\.dsh\profiles\desktop\mnemos\constitution.json
|
|
179
187
|
heartbeatEnabled: false # 后台维护只留给桌面端
|
|
180
|
-
learnerEnabled: false
|
|
181
188
|
reviewEnabled: false
|
|
182
189
|
```
|
|
183
190
|
|
|
@@ -195,16 +202,16 @@ dsh plugin --profile web add dsh-mnemos-continuity
|
|
|
195
202
|
|
|
196
203
|
| 你想干什么 | 读哪份 |
|
|
197
204
|
|---|---|
|
|
198
|
-
| 判断该不该用 | `docs/简介-introduction.
|
|
199
|
-
| **先看它由什么组成、怎么跑起来** | `docs/架构总览.
|
|
205
|
+
| 判断该不该用 | `docs/简介-introduction.md` |
|
|
206
|
+
| **先看它由什么组成、怎么跑起来** | `docs/架构总览.md` |
|
|
200
207
|
| 装它 / 查配置 | [`INSTALL.md`](INSTALL.md) |
|
|
201
|
-
| 看它**有哪些机制**、各自保证什么、边界在哪 | `docs/architecture-机制清单.
|
|
202
|
-
| 知道**为什么**这样设计 | `docs/设计者视角.
|
|
208
|
+
| 看它**有哪些机制**、各自保证什么、边界在哪 | `docs/architecture-机制清单.md` |
|
|
209
|
+
| 知道**为什么**这样设计 | `docs/设计者视角.md` |
|
|
203
210
|
| **想读代码 / 改代码**:每个模块有哪些功能、具体怎么实现 | `docs/模块与功能实现.md`(**纯 Markdown**,附录含宪法原文与系统提示原文) |
|
|
204
211
|
| 确认这是哪一版 | 发行目录根部的 `VERSION.md` |
|
|
205
212
|
|
|
206
|
-
>
|
|
207
|
-
> 分不清哪份是当前版时:**源码仓库看 `对外文档-v1.
|
|
213
|
+
> 发布包只带 `.md` 文档,不再附带 docx/pdf,避免重复占空间;内容以 Markdown 为准。
|
|
214
|
+
> 分不清哪份是当前版时:**源码仓库看 `对外文档-v1.7/` 下的 `.md`;发行目录看根部 `VERSION.md` 里写的版本号与文件清单。**
|
|
208
215
|
|
|
209
216
|
## License
|
|
210
217
|
|
package/VERSION.md
CHANGED
|
@@ -1,83 +1,48 @@
|
|
|
1
|
-
# 版本标识 · Mnemos v1.
|
|
2
|
-
|
|
3
|
-
| 项 | 值 |
|
|
4
|
-
|---|---|
|
|
5
|
-
| **版本** | **v1.
|
|
6
|
-
|
|
|
7
|
-
|
|
|
8
|
-
|
|
|
9
|
-
|
|
|
10
|
-
|
|
|
11
|
-
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
>
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
- **npm 包 / `repo-stage/docs`:5 件**(4 套 docx + 1 份纯 md `模块与功能实现.md`,**不带 PDF**);
|
|
50
|
-
- **发行 rar / `Selfdata/docs`:9 件**(4 套 docx + 4 份 pdf + 1 份纯 md)。
|
|
51
|
-
四套是:`简介-introduction`(是什么 · 该不该用)、`架构总览`(部件与数据流)、
|
|
52
|
-
`architecture-机制清单`(每个机制保证什么、边界在哪)、`设计者视角`(为什么这样设计,v1.6 按设计目标重写)。
|
|
53
|
-
|
|
54
|
-
## 发行方目录里各份 mnemos 是什么关系(避免拿错)
|
|
55
|
-
|
|
56
|
-
| 位置 | 是什么 | 该不该拿来装 |
|
|
57
|
-
|---|---|---|
|
|
58
|
-
| 本目录(`mnemos\`) | **当前发行副本**(v1.6.1,代码与文档已就位;**已发布**) | ✅ 要装就用这个目录;npm/rar 已发布 |
|
|
59
|
-
| `mnemos.rar`(同级) | 本目录的压缩包 | ✅ 当前版,已重打 |
|
|
60
|
-
| `mnemos-历史版本\` | 已定版的压缩包存档(含 v1.6.1 及更早) | ⚠️ 只在回退 / 对比时用;v1.6.1 已补存档 |
|
|
61
|
-
| `mnemos.backup-before-sync\` | 最近一次同步**之前**的快照(回滚点) | ❌ 不是发行物 |
|
|
62
|
-
| 备份区(`发行备份\`) | 历次同步的时点快照 + 验收日志 + `源文件-*`(可复现源) | ❌ 不是发行物 |
|
|
63
|
-
|
|
64
|
-
> 一句话:**装用 `mnemos\`;存档看 `mnemos-历史版本\`;回滚点看备份区。**
|
|
65
|
-
|
|
66
|
-
## 文档的引用方向(读的顺序)
|
|
67
|
-
|
|
68
|
-
```
|
|
69
|
-
docs/设计者视角 为什么这样设计(唯一源头)
|
|
70
|
-
docs/模块与功能实现.md 每个模块有哪些功能、怎么实现(附录=宪法原文+系统提示原文;纯 md)
|
|
71
|
-
↓ 被引用
|
|
72
|
-
docs/简介-introduction 是什么 · 能做什么 · 代价 · 该不该用
|
|
73
|
-
↓
|
|
74
|
-
README.md(门面) 四件最不像别人的事 + 代价 + 文档地图
|
|
75
|
-
↓
|
|
76
|
-
docs/架构总览 由哪些部件组成、一轮怎么跑通
|
|
77
|
-
↓
|
|
78
|
-
INSTALL.md 怎么装、怎么配、数据在哪、怎么备份
|
|
79
|
-
↓
|
|
80
|
-
docs/architecture-机制清单 每个机制保证什么、边界在哪
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
**只允许下层引用上层,上层不复述下层。**
|
|
1
|
+
# 版本标识 · Mnemos v1.7.1
|
|
2
|
+
|
|
3
|
+
| 项 | 值 |
|
|
4
|
+
|---|---|
|
|
5
|
+
| **版本** | **v1.7.1**(`package.json` 的 `version`) |
|
|
6
|
+
| 日期 | 2026-11-05 |
|
|
7
|
+
| 本目录 | 当前 dev 文档同步版本;npm / GitHub 尚未发布 v1.7.1 |
|
|
8
|
+
| 规模 | `src` **29 个模块**;工具 **19** 个;心跳维护 **9** 项;测试 **1275 / 0** |
|
|
9
|
+
| 提示词 | 25 条 / 7 节 / **3799 字符** |
|
|
10
|
+
| 宪法 | **v5(认知体)**,**1708 字符**;红线 1–4 与 5.x 未动 |
|
|
11
|
+
| 当前 DSH | 0.2.1-rc.5 已实测;0.2.2-alpha.2 的插件 API 迁移项未适配 |
|
|
12
|
+
|
|
13
|
+
## 本版核心:记忆的价值不在存量,在掌控权
|
|
14
|
+
|
|
15
|
+
这次更新不是“再存更多记忆”,而是把记忆的**实际掌控权**写进认知结构:
|
|
16
|
+
|
|
17
|
+
1. **信任 = 实际掌控权**
|
|
18
|
+
自传体(经验/决策/事件)可检查、可追溯、可修正,因此信任最高、更正成本最低;普通记忆居中;外部信息通常只有文本/来源,难以确认和推翻,因此信任最低、更正成本最高。信任不等于不会错;跨层更正必须留痕,不自动覆盖。
|
|
19
|
+
2. **身体 / 器械边界**
|
|
20
|
+
身体 = Mnemos + DSH 核心工具;第三方插件、领域 MCP 是外部器械,不为其来源与行为担保。工具归属与信息来源是两条边界:身体工具(如 `web_search`)也可能返回外部信息,结果必须按来源标记。
|
|
21
|
+
3. **上下文定位**
|
|
22
|
+
上下文是“当下的激活场”,由场景 + 被激活的自我切片 + 工作集构成;它不是身份、记忆仓库、判断权威或权限来源。
|
|
23
|
+
4. **召回提醒**
|
|
24
|
+
经验/决策/事件在召回时标明“实际掌控权高/可修正、不是普通背景”;外部记忆标明“非自己掌握/未验证”。身份固定注入,不参与常规召回提醒。
|
|
25
|
+
5. **移除空闲学习**
|
|
26
|
+
删除 learner-loop、`mnemos_learner_kick`、learner 配置与 preset;该功能由宿主自动化任务替代。`learning-protocol.js` / 技能评审 / curation / validation 保留。
|
|
27
|
+
6. **自动 curation 改为空闲会话注入**
|
|
28
|
+
不再依赖 `auxProvider/auxModel` 或新建 curator provider;找空闲会话,注入“调用一次 `mnemos_curate`”。没有空闲会话则跳过。
|
|
29
|
+
|
|
30
|
+
## 文档
|
|
31
|
+
|
|
32
|
+
- `docs/00-架构总览.md`
|
|
33
|
+
- `docs/01-简介.md`
|
|
34
|
+
- `docs/02-architecture-机制清单.md`
|
|
35
|
+
- `docs/03-设计者视角.md`
|
|
36
|
+
- `docs/04-模块与功能实现.md`(附录含宪法 v5 原文与系统提示原文)
|
|
37
|
+
- `README.md` / `README.en.md` / `INSTALL.md`
|
|
38
|
+
|
|
39
|
+
> 文档源目录:`对外文档-v1.7/`;事实表:`对外文档-v1.7/00-事实表-v1.7.1.md`。
|
|
40
|
+
|
|
41
|
+
## 怎么确认
|
|
42
|
+
|
|
43
|
+
1. `package.json` 的 `version` 应为 **1.7.1**;
|
|
44
|
+
2. `npm test` 应为 **1275 通过 / 0 失败**;
|
|
45
|
+
3. 维护列表应为 **9 项**(不含 learner);
|
|
46
|
+
4. 工具数应为 **19 个**(无 `mnemos_learner_kick`);
|
|
47
|
+
5. 启动日志的 `dataFile` / `constitutionFile` 指向当前 profile;
|
|
48
|
+
6. 宪法 `version=5`,`mnemos_constitution` 应返回 v5 认知体声明(含上下文定位、身体/来源边界、信任=实际掌控权)。
|