dsh-session-search
Verified@goodandready/dsh-session-search · v0.1.5 · MIT
DeepSeek Harness agent tool (session_search) for full-text search across historical sessions backed by core SQLite FTS5 engine without memory overhead.
Install
dsh plugin add @goodandready/dsh-session-search Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Readme
🔍 @goodandready/dsh-session-search
面向 DeepSeek Harness Agent 的会话历史全文检索工具
🇬🇧 English • 🇨🇳 中文说明 • 🇷🇺 Русский
|
⭐ 如果您喜欢这个插件,请在 GitHub 上点个 Star — 这能让我知道该插件对您有所帮助,并激励我持续维护和开发。
🐛 如果您发现了 Bug 或有新功能建议,欢迎随时在 GitHub 提交 issue(支持任何语言)— 我会认真评估并在后续版本中实现。 |
概述
在原生的 DeepSeek Harness 中,历史会话内容虽然由核心服务 (@deepseek-ai/dsh-session-query-sqlite) 建立了全文索引,但该功能仅暴露给人机界面(左侧边栏搜索框)。自主 Agent(Dee / 模型)本身并没有被赋予检索历史会话的工具。
@goodandready/dsh-session-search 解决了这一非对称性:它向模型注册了经过强化的原生 session_search 工具,使 Agent 能够直接检索过去的解决方案、经验教训、决策和上下文,而无需将庞大的 .jsonl.zstd 压缩日志解压到内存中。
架构与数据流
本插件为纯 host-only 架构,前端零额外开销。它直接复用核心 Cordis 检索服务:
sequenceDiagram
autonumber
actor User as 用户
participant Agent as Agent (Dee / LLM)
participant Tool as session_search 工具 (dsh-session-search)
participant Core as ctx.sessionQuery (@deepseek-ai/dsh-session-query)
participant DB as SQLite FTS5 索引 (search_state / persisted_docs)
User->>Agent: "还记得我们上次怎么配置 Nginx SSL 的吗?"
Agent->>Tool: execute({ query: "Nginx SSL configuration", limit: 5 })
Tool->>Core: searchSessions({ query, limit }, { signal })
Core->>DB: FTS5 MATCH 检索
DB-->>Core: 匹配的会话与内容摘要
Core-->>Tool: 返回 SessionSearchPage
Tool-->>Agent: 格式化文本(标题、Session ID、日期、最佳匹配片段)
Agent-->>User: 回复包含历史配置细节的准确答案
对比:原生 DSH 与安装 dsh-session-search
| 能力 | 原生 DSH Core | 安装 dsh-session-search 后 |
|---|---|---|
| 人工在界面检索会话 | ✅ 边栏可用 (WorkspaceBrowser) |
✅ 保持原样(完全可用) |
| Agent 自主检索工具 | ❌ 无(未注册工具) | ✅ 原生注册 session_search 工具 |
| 检索引擎 | SQLite FTS5 (ctx.sessionQuery) |
直接复用核心 SQLite FTS5 引擎 |
| 内存开销 | 低 | 零额外开销(代理给核心) |
| 匹配摘要格式 | 界面 HTML 渲染 | 规整为适合 LLM 上下文的纯文本 |
| 时间元数据 | 界面直观显示 | 紧凑会话日期:(YYYY-MM-DD) |
| 分页提示 | 界面滚动条 / Cursor | 模型提示:(more results available — refine your query) |
| 执行防卫 | 仅核心 | 30 秒执行超时 (timeoutMs),isConcurrencySafe: true |
| 生命周期 | 标准 | 通过 Cordis ctx.effect 安全管理 |
| 取消操作支持 | API AbortSignal | 通过 execCtx.signal 透传 |
安装
通过 dsh CLI 为 web profile 安装:
dsh plugin --profile web add @goodandready/dsh-session-search
或者使用 pnpm:
pnpm add @goodandready/dsh-session-search
重启 DeepSeek Harness web profile 以加载 bundle patch (cordis.patch.yml)。
配置
在配置文件中配置相关选项:
# dsh 配置
plugins:
dsh-session-search:
maxResults: 20
snippetLength: 200
timeoutMs: 30000
| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
maxResults |
number |
20 |
单次检索返回的最大结果数上限。 |
snippetLength |
number |
200 |
匹配词周围上下文摘要的最大字符长度。 |
timeoutMs |
number |
30000 |
检索执行超时时间(毫秒)。 |
工具规范:session_search
参数
query(string, 必填): 检索词与关键字(必须为非空字符串)。limit(integer, 可选): 返回的最大匹配会话数(自动限制在1到100之间,默认值为maxResults)。
输出格式
工具返回清晰的纯文本格式:
• 会话标题 [session-id-12345] (2026-09-17)
匹配关键字周围的上下文摘要片段...
• 第二个会话 [session-id-67890] (2026-09-15)
历史对话中的另一段内容...
(more results available — refine your query)
若未检索到结果:
session_search: no matches found.
若参数验证失败:
session_search: error: query must be a non-empty string.
若底层执行异常:
session_search: error: <错误信息>
许可证
MIT © 2026 GoodAndReady