DeepSeek Harness Hub
← 返回列表

会话全文搜索huangjua/dsh-session-index

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

在压缩会话归档中搜索中文片段并收藏书签

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/10 · 已提供中文文档

🔍 面向 DSH 的全文本会话搜索与书签引擎,支持原生 CJK 子串搜索

综合分
29.4
GitHub 分
29.4
用户评分
★ Stars
0
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add huangjua/dsh-session-index
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-llm@deepseek-ai/dsh-tools@deepseek-ai/schemastery
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

🔍 dsh-session-index

DSH 全文会话搜索与书签引擎
原生 CJK 子串搜索 • 非阻塞工作线程池 • 多信号排序 • 跳回书签

DSH Suite
CJK Search
License

功能特性 • 快速开始 • DSH Power Suite • 工具 • 架构 • 简体中文

💡 为什么选择 dsh-session-index?

DSH 将过往对话归档为压缩的 .jsonl.zstd 事件日志。内置搜索仅支持精确的拉丁语整词匹配,导致中文搜索返回零结果,而全量解压又会让界面卡死。

dsh-session-index 将死日志转变为可即时查询的第二大脑:
- 🇨🇳 原生 CJK 与拉丁子串 FTS:基于 FTS5 trigram 构建。唯一支持跨历史轮次进行中文子串与代码片段匹配的实现。
- 🚀 非阻塞工作线程池:多核工作线程流式解压。将主线程事件循环延迟严格控制在 p95 (1. Remember rules & prefs)"] --> E["⚡ dsh-context-economy(2. Save 80%+ tokens reading code)"]
E --> A["🛡️ dsh-evidence(3. Tamper-proof audit receipts)"]
A --> S["🔍 dsh-session-index(4. CJK search & bookmarks)"]
S --> M

style M fill:#e8f4fd,stroke:#2b7de9,stroke-width:2px
style E fill:#eef9f2,stroke:#1e8e3e,stroke-width:2px
style A fill:#fef7e0,stroke:#f29900,stroke-width:2px
style S fill:#f3e8fd,stroke:#8430ce,stroke-width:2px

| 插件 | 套件中的角色 | 与 Session Index 的协同 |
|---|---|---|
| 🔍 dsh-session-index | 会话搜索(当前) | 在压缩的会话归档中提供高速 CJK 搜索和书签功能。 |
| 🧠 dsh-local-memory | 记忆层 | 管理高层记忆。记忆管理属于 local-memory;日志搜索属于此处。 |
| 🛡️ dsh-evidence | 审计与凭证 | 允许搜索过往会话以查找过往证据包、审计日志和声明锚点。 |
| ⚡ dsh-context-economy | 上下文经济 | 紧凑的指针输出可生成缩小 80% 以上的会话日志,从而减轻搜索索引负载。 |

📖 深入探究与参考

🛠️ 可用工具(5 个工具)

| 工具 | 描述 |
|---|---|
| session_index_status | 检查 / 刷新索引状态(活动、进度、工作进程健康状况、保留策略)。 |
| session_index_list | 按工作区列出会话,支持稳定的游标分页或相关性排序。 |
| session_index_search | 在 mode=meta 或 mode=full(FTS/Worker)中搜索会话,支持 role 和时间过滤。 |
| session_summary | 生成确定性摘要(时间戳、事件细分、工具调用、可选的 LLM 一句话摘要)。 |
| session_index_bookmark | 添加/列出/移除锚定在 (sessionId, messageId) 的书签,以便即时跳回。 |

🏗️ 架构与非阻塞流水线
text
session_index_status / session_index_list / session_index_search / session_summary
│
▼
SessionIndexBuilder (Singleton per root + indexFile)
├─ Single-flight Promise deduplication
├─ Durable run-marker: ~/.dsh/session-index/.tmp/build.lock
├─ Phase A (Head Pass): Stream-decompress first 10 records ➡️ quick index
├─ Phase B (Full Pass): Full event counts & assistant text ➡️ WorkerPool
└─ Atomic Commit: Unique tmpfile ➡️ fsync ➡️ validate ➡️ rename

⚖️ 技术权衡与边界

| 优势 | 权衡 / 边界 |
|---|---|
| 独特的 CJK 三元组搜索实现 | 与 DSH 的压缩会话存储格式耦合 |
| 非阻塞工作进程池(延迟

🧪 构建与测试
bash
pnpm install --frozen-lockfile  # dependencies are pnpm-managed (peer deps: DSH 0.1.5-rc.1)
pnpm run check:dsh-contract     # Contract validation against the locked DSH runtime
pnpm run build                  # Build TypeScript to lib/
pnpm test                       # Run the test suite

DSH 兼容性。 该插件面向 DSH 0.1.5-rc.1(会话格式 v3),并读取
它在磁盘上见过的每一代持久化格式:旧版 session.jsonl.zstd(v0/v1)、
session.v2.jsonl.zstd 和 session.v3.jsonl.zstd。当一个会话目录包含
多个代际时(DSH 会保留迁移前的文件),只有最高代际会被索引。v3 更改了三个
承重结构,读取器现在对其建模:封闭头部
(isSeeded + delegationDepth)、system/message 作为第四种表面类型(被折叠,
从不作为文本索引),以及 {op:'replace',startSeq,endSeq} 替换(v2 使用
start/end)。test/fixtures/ 下的 v3 测试夹具是通过
DSH 自身的恢复路径从真实的 v0 日志迁移而来,而非手写。

🙏 致谢与先前工作

- OpenAI Codex(commit 9ded177):非阻塞 v2 架构、片段预览、HEAD_RECORD_LIMIT。
- jhawthorn/fzy:fzyScore 的 TypeScript 移植(连续匹配与奖励矩阵)。
- Atuin 与 McFly:命中层级 × 指数时间衰减评分。
- fzf:平局决胜确定性算法。

属于 DSH Agent Power Suite 的一部分。基于 BSD-3-Clause 许可。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

同作者(huangjua)的其他插件

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群