dsh-trivium 0.3.0 → 0.4.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.
package/README.md CHANGED
@@ -1,144 +1,155 @@
1
- # dsh-trivium
1
+ # dsh-trivium — DSH 进程内图记忆
2
2
 
3
- DeepSeek Harness 的**进程内图记忆内核**。按节点和边记,按需读。每个工作区一个 `.tdb` 文件,不另起服务。MIT。
3
+ DeepSeek Harness 的跨会话图记忆插件:按节点和边记,默认少注入,设置页可改可归档。会话标题栏多一个 **会话图**:compaction 收成方框,可从检查点 fork,可选记忆芯片钉进下一轮。每个工作区一个 `.dsh/trivium.tdb`,不另起服务。
4
4
 
5
- 不是 Mnemon / OpenViking 那种记忆工作台。四个工具,默认几乎不往窗口里灌。
6
-
7
- > **快速安装**(已有 `dsh web`):`dsh plugin --profile web add dsh-trivium` → 重启 **dsh web** → 打开工作区。设置页会出现「Trivium 记忆」。
8
-
9
- 钉死 **`@deepseek-ai/dsh@0.1.0-rc.6`**。不要把本仓库拷进 `DeepSeek_Harness`。
10
-
11
- npm:[`dsh-trivium@0.3.0`](https://www.npmjs.com/package/dsh-trivium) · GitHub:[QWQcool/dsh-trivium](https://github.com/QWQcool/dsh-trivium) · topic `dsh-plugin`
5
+ > **快速安装**:`dsh plugin --profile web add dsh-trivium` → 重启 **dsh web** → 打开工作区(设置里出现「Trivium 记忆」,对话旁出现「会话图」)。
12
6
 
13
7
  ---
14
8
 
15
9
  ## 安装
16
10
 
17
- 前提:本机已经能跑 `dsh web`,版本是 `0.1.0-rc.6`。
11
+ > 前提:已安装 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 并至少启动过一次 `dsh web`。当前在 `@deepseek-ai/dsh@0.1.0-rc.6` 上测试。
18
12
 
19
13
  ```sh
20
14
  dsh plugin --profile web add dsh-trivium
21
15
  ```
22
16
 
23
- 或从 GitHub:
24
-
25
- ```sh
26
- dsh plugin --profile web add github:QWQcool/dsh-trivium
27
- ```
28
-
29
- 然后**重启 dsh web**,选一个工作区。记忆文件在:
17
+ 重启 **dsh web** 后生效。记忆文件在当前工作区:
30
18
 
31
19
  ```
32
20
  <workspace>/.dsh/trivium.tdb
33
21
  ```
34
22
 
35
- 本地开发(本仓库):
23
+ 用 [Dsh_BatStart](https://github.com/QWQcool/Dsh_BatStart) 的,双击启动就会装上,不必再执行上面这条。
24
+
25
+ 本地跟源码联调:
36
26
 
37
27
  ```sh
38
- cd dsh-trivium
39
28
  npm install
40
29
  node scripts/link-dsh.mjs
41
30
  ```
42
31
 
43
- 再重启 `dsh web`。
32
+ 然后重启 `dsh web`。
44
33
 
45
- ### 丢给 AI 安装
34
+ ## 更新
46
35
 
47
- 把下面整段交给你的助手即可:
36
+ ```sh
37
+ dsh plugin --profile web add dsh-trivium
38
+ ```
39
+
40
+ 装完重启 **dsh web**。源码联调则在仓库里 `git pull` 后再跑一次 `node scripts/link-dsh.mjs`。
41
+
42
+ ## AI 时代安装
43
+
44
+ 把下面这句话复制给助手即可:
48
45
 
49
46
  ```text
50
- 请在 DeepSeek Harness 上安装 dsh-trivium(进程内图记忆插件)。
51
- 要求宿主是 @deepseek-ai/dsh@0.1.0-rc.6,不要把源码拷进 DeepSeek_Harness。
52
- 执行:dsh plugin --profile web add dsh-trivium
53
- 然后重启 dsh web。记忆落在 <workspace>/.dsh/trivium.tdb。
47
+ 请在 DeepSeek Harness 上执行:dsh plugin --profile web add dsh-trivium
48
+ 然后重启 dsh web。设置里会出现「Trivium 记忆」,会话标题栏「对话 / 轨迹」旁会出现「会话图」。
54
49
  ```
55
50
 
56
51
  ---
57
52
 
58
- ## 它实际记住什么
59
-
60
- 原装 DSH 没有跨会话图记忆。装上之后:
53
+ ## 做什么
61
54
 
62
- **会话 A** 说「记住,鉴权走 header X」→ 写入 preference,并尽量挂到实体(例如 AuthGateway)上。
63
- **会话 B** 调用 `ctx_find("鉴权")` → 命中,返回 L0 摘要,并带实体 path(`about` / `decided` / `broke` / `fixed`)。
55
+ - **跨会话** — 会话 A 记下「鉴权走 header X」,会话 B 调用 `ctx_find("鉴权")` 命中,并带上它连着谁(`about` / `decided` / `broke` / `fixed`)。
56
+ - **默认安静** — 新会话只注入一张短地图(≤400 token)。模型要用再调工具,不会每一步灌满。
57
+ - **会话图** — compaction 切一段就收成一个方框;点方框用 DSH 原生 fork 开分支;勾选的记忆芯片从当前这段的下一轮注入。
58
+ - **人能改错** — 设置 → Trivium 记忆:搜、看邻居、改名 / 正文、合并、归档或删除。
59
+ - **抽取偏严** — 闲聊、一次性改文件、密钥不入库。
60
+ - **可选 embedding** — 默认关。官方 DeepSeek 对话接口没有 embeddings;可填 OpenAI 兼容地址。
64
61
 
65
- `find("AuthGateway")` 也可以打到邻居,即使邻居正文里根本没出现这个名字。
62
+ ### 四个工具
66
63
 
67
- 默认**不**每一步自动召回(`autoRecall` 关):启动只注入一张短地图(≤400 token),模型要用 `ctx_find` / `ctx_read` 自己下钻。设置里可改成「实体名折中」(话里出现已有实体名才灌 1 跳邻居)或打开 `autoRecall`;三选一,互斥,默认关。
64
+ | 工具 | 说明 |
65
+ |---|---|
66
+ | `ctx_find` | 检索,返回摘要和图路径 |
67
+ | `ctx_read` | 按 id 读全文和入边 |
68
+ | `ctx_remember` | 手动写入 |
69
+ | `ctx_link` | 两点之间建有向边 |
68
70
 
69
- 抽取偏严:闲聊、一次性「改这个文件」、密钥不入库。每轮写入正文合计 ≤3000 字、最多 24 条。
71
+ 内核仍是这四个。会话图不加第五个工具。
70
72
 
71
73
  ---
72
74
 
73
- ## 设置里能做什么
75
+ ## 会话图
74
76
 
75
- 设置 → **Trivium 记忆**:
77
+ 入口:当前会话标题栏 **对话 / 轨迹 / 会话图**。这是情节图,不是记忆编辑器;改错的节点仍走设置页。
76
78
 
77
- - 搜、看邻居、改名 / 正文、合并、归档 vs 删除
78
- - 导出 / 导入 **JSON**(可回写图)
79
- - 导出 **Markdown**(只读投影,给人、给 git;带边,例如 `- 鉴权走 header X —about→ AuthGateway`)。改完不要把这篇散文再解析回来,回写走 JSON 或本页编辑
80
- - **一次性**导入已有的 `~/.workbuddy/MEMORY.md` 或工作区 `.workbuddy/memory/MEMORY.md`(偏严宁漏,不持续同步)
81
- - 注入策略、抽取开关、可选远程 embedding(OpenAI 兼容 URL,默认关)
79
+ ### 方框
82
80
 
83
- `until` 是决策上的截止日期。过期决策默认不进 find,除非查询本身在问这个期限(如「周五」「下周」)。
81
+ - 没压过上下文:只有一个「后续」方框。
82
+ - 一次成功的 compaction 之后:左边历史检查点(摘要来自 DSH),右边仍是「后续」。
83
+ - 方框自己不压缩。质量来自 DSH 已经做的摘要替换;fork 时不会再总结一遍。
84
+ - 「改名」只改方框标题,不动 DSH 摘要。点方框可跳回对话里对应的检查点,或打开轨迹。
84
85
 
85
- ---
86
+ ### 分叉
87
+
88
+ 点方框上的分叉图标,会弹出「分叉为新会话」。这个名字会出现在左侧会话列表里(默认是源标题加 `(1)`)。
89
+
90
+ 确认后走宿主的 `session.fork`:子会话出现在侧边栏,前缀(含当时已经压过的摘要)由 DSH 拷过去。有检查点时从那个检查点切开;只有「后续」时就从你点的那个方框连出去。
86
91
 
87
- ## 四个工具
92
+ 对话页里用 DSH 自带 fork,切回会话图也能看到对应分支。侧边栏归档一个子会话后,图上的分叉方框会跟着消失;取消归档会再出现。
88
93
 
89
- | 工具 | 干什么 |
94
+ 画布:空白处拖动平移,滚轮缩放。
95
+
96
+ ### 记忆芯片
97
+
98
+ 会话图顶部可展开勾选。列出未归档的 preference / decision / entity(experience 不进芯片,避免太吵)。
99
+
100
+ | 操作 | 生效时机 |
90
101
  |---|---|
91
- | `ctx_find` | 检索。返回 L0 摘要 + 边路径。不要把结果原文贴进后续思考。 |
92
- | `ctx_read` | 按 find 给的 id 读全文和入边。 |
93
- | `ctx_remember` | 显式写入(entity / preference / decision / experience)。 |
94
- | `ctx_link` | 两节点之间建有向带标签的边。 |
102
+ | 勾上某条 | 当前这段里你再发的**下一条**带上它(L0,≤300 token) |
103
+ | 取消勾选 | 再下一轮不再带 |
104
+ | 已经发出去的轮次 | 不回写 |
95
105
 
96
- 没有第五个工具。没有图谱画布。没有默认每步自动召回。
106
+ 芯片按会话隔离。新开会话、fork 出的子会话默认都不勾;需要的话在分叉对话框旁打开「分叉时继承钉选」,或到子会话里重新勾。短地图仍在 session-start 自动带,不占芯片位。建议标记只是提示,不会自动勾上。
97
107
 
98
108
  ---
99
109
 
100
- ## 可选 embedding
110
+ ## 界面截图
101
111
 
102
- 默认关。没有本地 embedding 模型。官方 DeepSeek chat API **没有** embeddings。
112
+ 以下都是本机 DSH Web(rc.6)里的实测画面。
103
113
 
104
- 若要语义检索:在设置里打开开关,手填 OpenAI 兼容的 embedding URL / 模型 / key。失败则退回关键词 + 图遍历,Agent 继续跑。
114
+ ### 会话 — `ctx_find("鉴权")`
105
115
 
106
- ---
116
+ ![ctx_find 鉴权](docs/screenshots/02-ctx-find.png)
107
117
 
108
- ## 限制(v0.3.0)
118
+ 会话开头注入 `dsh-trivium` 短地图;模型调用 `ctx_find`,命中「本仓库鉴权走 header X」。
109
119
 
110
- - 这是内核,不是工作台:无 Mnemon 侧栏、无跨 Agent 共享、无 PDF/Zotero RAG。
111
- - 默认 `autoRecall` 关。模型若不调 `ctx_find`,窗口里就只有短地图。
112
- - 抽取会漏:白名单没命中的事实不会进库;tool 失败→成功的经验,只在失败/修复文本或邻近用户话里点名了实体时才连边。
113
- - 同一 `.tdb` 不要被两个 Node 进程同时打开(普通 `dsh web` 是单进程)。
114
- - 旧的脏行不会自动清;人在 Settings 里改或归档。
115
- - Markdown 导出不能当回写格式。WorkBuddy 导入不是双向同步。
120
+ ### 轨迹 — 上下文注入可见
116
121
 
117
- 第一期明确不做:对标 OpenViking 的 LoCoMo / L0–L2 评测、默认每步自动召回、本地 embedding、第五工具、图谱画布。
122
+ ![轨迹](docs/screenshots/03-trajectory.png)
118
123
 
119
- ---
124
+ ### 设置 — 注入策略
125
+
126
+ ![设置](docs/screenshots/04-settings.png)
127
+
128
+ ### 设置 — 记忆条目
129
+
130
+ ![条目列表](docs/screenshots/05-settings-list.png)
120
131
 
121
- ## 机制对照(不是 bake-off)
132
+ ### 会话图 — 对话 / 轨迹旁的第三标签
122
133
 
123
- 没跑过 live OV 对打,也没跑 LoCoMo。唯一做过的 live 对照是:**同一插件装上、空 `.tdb` 上同样的 `ctx_find("鉴权")` 没有跨会话 preference。**
134
+ ![会话图](docs/screenshots/06-session-map.png)
124
135
 
125
- 相对原装 DSH:我们有跨会话节点和边。相对「再起一个记忆服务」:我们没有。相对把 MEMORY.md 整篇灌进 system prompt:我们默认只灌短地图,动态记忆走 `agent.inject()` / 工具,不写 system prompt(也避免 `persona.complete: true` 把注入丢掉)。
136
+ 标题栏出现「会话图」。没压过的会话只有一个「后续」方框;顶部是记忆芯片(默认不勾)。compaction 之后左边出现历史方框,分叉从方框连到子会话。
126
137
 
127
138
  ---
128
139
 
129
- ## 结构
140
+ ## 限制
130
141
 
131
- ```
132
- lib/index.js 工具、短地图、抽取钩子
133
- lib/store.js TriviumDB
134
- lib/markdown.js MEMORY.md 只读导出、WorkBuddy 一次性导入
135
- lib/extract.js 规则 + 小 prompt;每批限写
136
- lib/client.js Settings「Trivium 记忆」
137
- lib/server.js 本机 API
138
- ```
142
+ - 模型不调 `ctx_find`、也不勾芯片时,窗口里主要是开场短地图。
143
+ - 抽取会漏;脏数据要在设置里改或归档。
144
+ - 同一个 `.tdb` 不要两个 Node 进程同时打开(正常只开一个 `dsh web` 即可)。
145
+ - Markdown 导出是给人看的,不能再解析回去。WorkBuddy 导入是一次性,不是双向同步。
146
+ - 会话图只投影 compaction 与 fork,不会按消息条数自己切方框。
147
+ - 改插件设置后需要重启 `dsh web`。
139
148
 
140
- 离线:`npm run smoke-p1` … `smoke-p6`。
149
+ ---
141
150
 
142
- ## License
151
+ ## 发布信息
143
152
 
144
- MIT。TriviumDB 是 Apache-2.0,仍是依赖。
153
+ - GitHub: https://github.com/QWQcool/dsh-trivium
154
+ - npm: [`dsh-trivium`](https://www.npmjs.com/package/dsh-trivium)
155
+ - License: MIT(依赖 [TriviumDB](https://github.com/TriviumDB/triviumdb) 为 Apache-2.0)