dsh-session-recall 0.7.6 → 0.7.7
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 +2 -2
- package/README.zh.md +31 -30
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -36,7 +36,7 @@ All three read through the same trusted `ctx.sessionQuery` seam.
|
|
|
36
36
|
|
|
37
37
|
## Contributing
|
|
38
38
|
|
|
39
|
-
- **Local dev**: `npm
|
|
39
|
+
- **Local dev**: `npm ci && npm run typecheck && npm test && npm run bundle` (Node 20 or 22).
|
|
40
40
|
- **Start in the source**: [`src/tool.ts`](src/tool.ts) (tool contract), [`src/rank.ts`](src/rank.ts) (recency re-ranking, pinned cwds), [`src/redact.ts`](src/redact.ts) (redaction patterns), [`src/resilient.ts`](src/resilient.ts) (degraded raw-scan). The full source map is in [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
41
41
|
- **Open gaps**: [#6](https://github.com/kittimzhe/dsh-session-recall/issues/6) (redaction patterns), [#7](https://github.com/kittimzhe/dsh-session-recall/issues/7) (tie-break order) — or browse [issues labeled `good first issue`](https://github.com/kittimzhe/dsh-session-recall/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22).
|
|
42
42
|
- **Roadmap**: [P2: evidence handoff — expose `sessionId` + transcript path from recall hits (#8)](https://github.com/kittimzhe/dsh-session-recall/issues/8), acceptance criteria in the issue; post a comment before starting so effort is not duplicated.
|
|
@@ -208,7 +208,7 @@ Warm searches run sub-millisecond to ~1.5 ms against the on-disk index. Cold sta
|
|
|
208
208
|
## Development
|
|
209
209
|
|
|
210
210
|
```sh
|
|
211
|
-
npm
|
|
211
|
+
npm ci
|
|
212
212
|
npm run typecheck # tsc --noEmit
|
|
213
213
|
npm test # vitest run
|
|
214
214
|
npm run bundle # tsdown → lib/
|
package/README.zh.md
CHANGED
|
@@ -36,12 +36,30 @@ recall:上周给简历选的什么字体来着?
|
|
|
36
36
|
|
|
37
37
|
## 贡献
|
|
38
38
|
|
|
39
|
-
- **本地开发**:`npm
|
|
39
|
+
- **本地开发**:`npm ci && npm run typecheck && npm test && npm run bundle`(Node 20 或 22)。
|
|
40
40
|
- **源码入口**:[`src/tool.ts`](src/tool.ts)(工具契约)、[`src/rank.ts`](src/rank.ts)(新近度重排、置顶项目)、[`src/redact.ts`](src/redact.ts)(脱敏规则)、[`src/resilient.ts`](src/resilient.ts)(降级直扫)。完整源码地图见 [CONTRIBUTING.md](CONTRIBUTING.md)。
|
|
41
41
|
- **当前缺口**:[#6](https://github.com/kittimzhe/dsh-session-recall/issues/6)(脱敏规则扩展)、[#7](https://github.com/kittimzhe/dsh-session-recall/issues/7)(同分排序钉死)——或浏览 [`good first issue` 标签](https://github.com/kittimzhe/dsh-session-recall/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)。
|
|
42
42
|
- **路线图**:[P2:证据联动——recall 命中携带 sessionId + 转录路径(#8)](https://github.com/kittimzhe/dsh-session-recall/issues/8),验收标准见 issue;认领前请先留言避免撞车。
|
|
43
43
|
- **规矩**:行为变更必须带测试;文档必须 `README.md` 与 `README.zh.md` 同步改;版本发布由维护者执行。详见 [CONTRIBUTING.md](CONTRIBUTING.md)。
|
|
44
44
|
|
|
45
|
+
## 模型看到什么
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
recall({ query }) → 每个会话返回最强命中事件,默认只搜当前项目
|
|
49
|
+
recall({ query, all_projects: true }) → 搜索本机全部会话
|
|
50
|
+
recall({ query, session_id }) → 只搜指定会话内的事件
|
|
51
|
+
recall({ query, limit, cursor }) → 翻页
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
每条命中带会话 id、标题(尽力补全)、日期、命中摘录;结果在 Web UI 里渲染成原生搜索卡片(`SearchMatchesResultView`)。因为 FTS 的 `unicode61` 分词器会把连续中文当成一个 token,短中文短语一旦嵌在长句里就匹配不到索引——所以 CJK 查询零命中时会自动回退到对会话文本的子串扫描(走 `sessionQuery.filterEvents` 的字面文本子句),空格拆出的每个词都必须命中,因此 `简历 模板` 也能找回 `简历模板`;hint 会说明这条回退路径是否命中。
|
|
55
|
+
|
|
56
|
+
## 授权边界(官方明确留给工具层的责任)
|
|
57
|
+
|
|
58
|
+
`sessionQuery` 是可信基础设施——它能读所有会话。所以本工具自己约束每一次调用:
|
|
59
|
+
|
|
60
|
+
- 默认注入 `sessionFilters: [{ kind: 'cwd', values: [<调用方 agent 的 cwd>] }]`——只搜同一项目目录下开始的会话;
|
|
61
|
+
- `all_projects: true` 才放宽到全机,且部署方可以用 `allowAllProjects: false` 直接禁用该参数。
|
|
62
|
+
|
|
45
63
|
## 项目定位
|
|
46
64
|
|
|
47
65
|
`dsh-session-recall` 是一个强调正确性与边界控制的**会话检索层**。
|
|
@@ -52,20 +70,6 @@ recall:上周给简历选的什么字体来着?
|
|
|
52
70
|
|
|
53
71
|
如果你要做长期记忆编排,请用记忆框架;如果你要做可审计、有权限边界的历史检索,请用本插件。
|
|
54
72
|
|
|
55
|
-
## 竞品视角
|
|
56
|
-
|
|
57
|
-
| 能力重心 | 记忆框架类插件 | 通用检索类插件 | `dsh-session-recall` |
|
|
58
|
-
|---|---|---|---|
|
|
59
|
-
| 检索对象 | 推导后的记忆结构 | 视实现而定 | **原始会话事件文本** |
|
|
60
|
-
| 范围控制 | 框架内约束 | 常较粗粒度 | **默认 cwd + 显式 `all_projects` 闸门** |
|
|
61
|
-
| CJK 体验 | 视实现而定 | 常受分词限制 | **FTS + CJK 零命中子串回退** |
|
|
62
|
-
| 输出契约 | 框架内部格式 | 不统一 | **类型化 `recall` 结果 + 稳定 hint** |
|
|
63
|
-
|
|
64
|
-
命名与边界说明(2026-09):
|
|
65
|
-
|
|
66
|
-
- 本插件与 **`dsh-recall-plugin` 无关**——那是"撤回消息"插件(把工作区与对话回退到某条消息发出之前)。
|
|
67
|
-
- 本插件是 **`dsh-recall` 的后继者**——后者是更早的会话检索插件(最后更新 2026-08-21);本插件在其方向上续写:持久 FTS5 索引、中文回退、审批闸门、谱系鉴权。
|
|
68
|
-
- 本插件与 **`dsh-mnemon` 等记忆框架互补**:它们做写入侧的记忆编排;本插件保持只读检索层,只读原始会话日志,不写任何记忆存储。
|
|
69
73
|
## 为什么做这个
|
|
70
74
|
|
|
71
75
|
官方 `@deepseek-ai/dsh-session-query` 的 README 自己列出了缺口:
|
|
@@ -84,23 +88,20 @@ recall:上周给简历选的什么字体来着?
|
|
|
84
88
|
|
|
85
89
|
记忆类插件用 LLM 提取结构化笔记(有损、费 token);`recall` 检索的是**原始对话记录**——零提取、零损失、装完当天就能搜全部历史。
|
|
86
90
|
|
|
87
|
-
##
|
|
88
|
-
|
|
89
|
-
```
|
|
90
|
-
recall({ query }) → 每个会话返回最强命中事件,默认只搜当前项目
|
|
91
|
-
recall({ query, all_projects: true }) → 搜索本机全部会话
|
|
92
|
-
recall({ query, session_id }) → 只搜指定会话内的事件
|
|
93
|
-
recall({ query, limit, cursor }) → 翻页
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
每条命中带会话 id、标题(尽力补全)、日期、命中摘录;结果在 Web UI 里渲染成原生搜索卡片(`SearchMatchesResultView`)。因为 FTS 的 `unicode61` 分词器会把连续中文当成一个 token,短中文短语一旦嵌在长句里就匹配不到索引——所以 CJK 查询零命中时会自动回退到对会话文本的子串扫描(走 `sessionQuery.filterEvents` 的字面文本子句),空格拆出的每个词都必须命中,因此 `简历 模板` 也能找回 `简历模板`;hint 会说明这条回退路径是否命中。
|
|
91
|
+
## 竞品视角
|
|
97
92
|
|
|
98
|
-
|
|
93
|
+
| 能力重心 | 记忆框架类插件 | 通用检索类插件 | `dsh-session-recall` |
|
|
94
|
+
|---|---|---|---|
|
|
95
|
+
| 检索对象 | 推导后的记忆结构 | 视实现而定 | **原始会话事件文本** |
|
|
96
|
+
| 范围控制 | 框架内约束 | 常较粗粒度 | **默认 cwd + 显式 `all_projects` 闸门** |
|
|
97
|
+
| CJK 体验 | 视实现而定 | 常受分词限制 | **FTS + CJK 零命中子串回退** |
|
|
98
|
+
| 输出契约 | 框架内部格式 | 不统一 | **类型化 `recall` 结果 + 稳定 hint** |
|
|
99
99
|
|
|
100
|
-
|
|
100
|
+
命名与边界说明(2026-09):
|
|
101
101
|
|
|
102
|
-
-
|
|
103
|
-
-
|
|
102
|
+
- 本插件与 **`dsh-recall-plugin` 无关**——那是"撤回消息"插件(把工作区与对话回退到某条消息发出之前)。
|
|
103
|
+
- 本插件是 **`dsh-recall` 的后继者**——后者是更早的会话检索插件(最后更新 2026-08-21);本插件在其方向上续写:持久 FTS5 索引、中文回退、审批闸门、谱系鉴权。
|
|
104
|
+
- 本插件与 **`dsh-mnemon` 等记忆框架互补**:它们做写入侧的记忆编排;本插件保持只读检索层,只读原始会话日志,不写任何记忆存储。
|
|
104
105
|
|
|
105
106
|
## 安装(out-of-tree 插件)
|
|
106
107
|
|
|
@@ -207,7 +208,7 @@ dsh plugin --profile web add github:kittimzhe/dsh-session-recall
|
|
|
207
208
|
## 开发
|
|
208
209
|
|
|
209
210
|
```sh
|
|
210
|
-
npm
|
|
211
|
+
npm ci
|
|
211
212
|
npm run typecheck # tsc --noEmit
|
|
212
213
|
npm test # vitest run
|
|
213
214
|
npm run bundle # tsdown → lib/
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-session-recall",
|
|
3
3
|
"description": "Deterministic cross-session transcript retrieval for DeepSeek Harness: the model-facing `recall` tool searches past session logs with explicit scope control",
|
|
4
|
-
"version": "0.7.
|
|
4
|
+
"version": "0.7.7",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|