证据快照复核于 2026-09-16GitHub 数据核对日期: 2026-08-21
证据已验证Plugin Bundle记忆与上下文Web Profile

DSH Search Index

为 DeepSeek Harness Web 侧边栏提供会话标题与独立内容索引搜索。

快速了解

它能做什么

为 DeepSeek Harness Web 侧边栏提供会话标题与独立内容索引搜索。

本站提供的是中文说明,不代表该项目或 Plugin 自身提供中文界面;语言支持请以上游文档为准。

使用场景
记忆与上下文搜索会话管理配置
适配技术
deepseek-harnessWeb
兼容性

Web Profile
>=0.1.0-rc.7 <0.2.0-0

可信度与状态

证据已验证
核对日期 2026/9/16 UTC 13:57

有代码证据的贡献

它为 DSH 增加什么

侧边栏会话搜索面板

在侧边栏新增“搜索”入口,支持标题或独立内容索引搜索、按会话聚合结果,以及用户/回复/工具筛选。

机制证据

选择前先看

这个 DeepSeek Harness Web bundle 会新增独立的侧边栏“搜索”入口,可在标题搜索与内容搜索间切换。内容结果按会话聚合,并可筛选用户消息、回复或工具活动。它维护自己的 SQLite 索引,不依赖 Harness 的全文索引。

适合谁

需要从既有会话、消息或工具交互中快速找回信息的 DeepSeek Harness Web 用户。

常见任务

  • 按会话标题或工作目录文字查找会话。
  • 搜索消息内容,并从聚合结果直接打开匹配会话。
  • 将内容结果限定为用户消息、回复、工具调用或工具结果。
  • 在“搜索索引”设置卡中管理同步、保留份数、重建和快照操作。

权限与数据

文档描述该插件会在本地建立插件自有的 SQLite 会话内容索引,并从 DSH 工作区存储读取已归档会话标识。

权限
  • 向 DeepSeek Harness Web profile 添加 Cordis bundle 配置行。
  • 注册侧边栏入口、设置界面和文档中说明的本地 HTTP 路由。
数据处理
  • 在本地索引会话消息文本;文档说明其中包含工具调用参数与工具结果文本。
  • 读取已归档会话标识以排除这些会话;README 声称不会写入归档集合。
  • 支持本地索引快照导出与导入。
外部服务
  • 提供的证据未描述外部服务或数据上传。
  • 按文档的 GitHub 安装方式需要能够访问 GitHub。
凭据
  • 提供的证据未声明需要凭据。

局限

  • 需要 DeepSeek Harness Web profile 和 Node.js 20 或更高版本。
  • 文档说明安装后必须重启 `dsh web`,bundle 层不支持热加载。
  • 该版本为 beta。
  • README 提示无法访问 github.com 时,GitHub 安装可能卡在拉取阶段。
  • 提供的记录未实际完成安装或运行验证。

DSHub 已核对

  • 提供的检查已验证不可变源码提交、bundle manifest 和 Cordis patch 的结构。
  • manifest 声明 DSH 版本范围为 >=0.1.0-rc.7 <0.2.0-0,Node.js 为 >=20。
  • package manifest 声明 MIT 许可证,且已验证 0.2.0-beta.1 的 registry 身份。

DSHub 未核对

  • 提供的记录未执行安装、建索引、搜索行为或运行时兼容性测试。
  • 提供的记录未审计 registry 包内容。
  • 本地处理方式和界面行为来自仓库文档,未被独立运行验证。

固定版本安装

安装 DSH Search Index

这个Plugin Bundle没有 DSH Plugin 安装操作,请根据源码文档使用真实交付方式。

访问源码项目

维护者原文

项目 README

查看 commit cf65373 对应的 README
维护者编写的上游内容原文于 2026/9/16README.md 获取,正文和仓库相对媒体固定到 commit cf65373658ec,内容哈希为 4f270548f816。以下是未经 DSHub 翻译的上游原文,语言可能与当前页面不同;第三方托管的 badge 可能独立更新。
<p align="center"> <strong>给 DeepSeek Harness 侧边栏加一个自带索引的会话检索——标题/内容一键切换,还能按用户/回复/工具筛选</strong> </p> <p align="center"> <strong>中文</strong> · <a href="README.en.md">English</a> </p> <p align="center"> <a href="LICENSE"><img alt="MIT License" src="https://img.shields.io/badge/license-MIT-263146?style=flat-square"></a> <img alt="Public" src="https://img.shields.io/badge/status-public-7da1de?style=flat-square"></a> </p>

dsh-search-index

DSH web 侧边栏搜索索引:在侧边栏底部新增 "搜索" 入口,浮层面板一键在 标题搜索 ↔ 内容搜索 间切换;内容模式按会话聚合展示标题与命中片段,并按 用户 / 回复 / 工具 分类筛选。自带独立索引(不依赖 DSH 官方全文索引),支持增量同步、非破坏性整理与快照导入导出。

本包只管搜索与索引。 会话历史的查看与清理(原"归档会话"面板)已迁至 dsh-session-steward(会话管家) 的「病案室」页签;本包仍会读取官方归档集合以把已归档会话排除出索引,但不再写入它——归档集合只有一个写方:会话管家。契约见 dsh-归档文件格式契约-20260914.md

无需修改 dsh 源码、无需提 PR:dsh plugin 命令组装 + bundle patch 装配的 cordis 客户端 + 插件宿主半。

前身与本版

前身:dsh-session-search-toggle 那个版本依赖 @deepseek-ai/dsh-client-runtimedefineStore 提供设置行座位。DSH 0.1.2 把客户端引擎包改名/重构(dsh-client-runtimedsh-client-store),旧写法在新宿主上无法加载——同一个插件没法用一份产物同时兼容两版。

本版(dsh-search-index 0.2.0-beta.1)以 DSH 0.1.2 为主线,做法是让宿主版本差异彻底消失:

  • 单一产物,运行时自适应:同一份 lib/client.js 在 0.1.1-rc.2 与 0.1.2-rc.1 上都能加载,没有任何版本号字符串分支。客户端 bundle 只 require react / react-dom,两者都在两版的共享模块表内。
  • 两个引擎包都不导入:既不 import dsh-client-runtime,也不 import dsh-client-store,因此不受那次改名影响
  • store 座位本地实现:设置行需要的是一个 store 座位(StoreHandle / StoreInstance,契约由 @deepseek-ai/dsh-client-ui-slots 拥有、两版一致)。本插件用约 30 行本地实现替代 defineStore——只依赖 create(){ actions, getSnapshot, subscribe, clearPersisted },不涉及任何版本专属 specifier。
  • 其余契约两版一致settings.general.item 槽、SettingsScope.{getSnapshot,subscribe,set,unset}sessionQuery 三个查询面在两版签名相同。

▼ DSH 版本适配

DSH 版本 状态 关键差异
0.1.1-rc.2 store 引擎在 @deepseek-ai/dsh-client-runtime/client
0.1.2-rc.1 引擎改名 @deepseek-ai/dsh-client-store;本插件两个都不导入

从旧名升级:本包由 dsh-session-search-toggle 改名而来,客户端注册 id、cordis patch id 与仓库地址同步改名。GitHub 会为重命名的仓库保留跳转,旧名仍可解析,但请把 profile 依赖换成新名,避免两个名字长期并存:

dsh plugin --profile web add github:drscrewdriver/dsh-search-index#master
dsh plugin --profile web remove dsh-session-search-toggle
dsh web   # 重启

设置命名空间仍是 switch-search存储键保持稳定,不做迁移),因此旧配置在新包下继续生效。

它能做什么

  • 标题 ↔ 内容双模式:一个入口两种搜法——切到"标题"按会话标题/工作目录子串即时过滤;切到"内容"走本插件自建的独立索引搜会话消息正文。
  • 内容按会话聚合:内容搜索结果每个会话一行(会话标题 + 最强命中片段 + 类型标签),点击即打开该会话,不刷屏逐条堆消息。
  • 内容类型筛选:内容模式顶部筛选 chip——全部 / 用户 / 回复 / 工具工具 放开 tool/calltool/result 事件进结果,直接搜到工具调用参数与返回值。
  • 结果排序:同一行右侧可切 相关度 / 时间——「时间」按会话最后活动时间倒序,最近动过的排前面;偏好记在本地,跨刷新保留。命中同时下发文档时间与会话时间,前端可自行二次排序。
  • 标题实时:宿主订阅 session/event,改名(session/title)即刻折进索引,不必等下一轮同步(默认 30s)。
  • 设置卡片:设置 → 插件新增 "搜索索引" 卡片——启用开关、默认搜索模式、独立索引的同步/保留份数/索引目录,以及索引生命周期块(状态、非破坏性整理、快照导出导入)。
  • 点击直达:搜索结果点击跳转打开对应会话,定位到命中内容所在上下文。

界面预览

侧边栏搜索入口与设置面板布局示意: <img width="287" height="835" alt="image" src="https://github.com/user-attachments/assets/fc714858-aaf9-4b5b-ad83-a3f1537f6116" /> <img width="844" height="813" alt="image" src="https://github.com/user-attachments/assets/d3ed5d20-9737-4b9b-a7bb-74162513f7c7" />

独立索引:三点机制

内容模式自己建库,不依赖 DSH 官方的 session-query-sqlite 全文索引。索引落在 src/host/schema.ts 建表(含自建 FTS5 表 docs_fts),engine.ts 负责查询,extract.ts 从会话事件抽出可检索文本(含 tool/call 的工具名与参数、tool/result 的结果文本——这是"工具筛选"的数据基础)。DSH 的 sessionQuery 只被当作语料读取器listSessions / readSession),不用来搜索。

一、独立的会话内容索引

索引是本插件自己的 SQLite 文件,与官方索引互不影响。可选持久化目录、可快照导出/导入、可整体重建。宿主激活时会巡检索引目录:index.building.sqlite 半成品在 active 存在时判为"上次重建未完成"直接丢弃;active 缺失时判为"崩溃发生在换名窗口",把最新归档回滚为 active。

二、按归档清理失效会话,滚动更新

archive-source.ts 读取官方存储中枢 ~/.dsh/storages/workspace.jsonglobal.archivedSessionIds,把已归档(即已不可用)的会话排除出索引。归档集合只有一个写方——会话管家;本包只读不写。

同步是滚动的:sync.tsSwitchWatermarkSync 维护每条会话的 version 水位,每轮只比对差异、只重灌有变化的会话,不做全量重建。索引文件本身按 archiveKeep 保留有限份数,旧的自动淘汰。

三、整理期间不影响历史索引工作

整理走影子索引rebuild.ts 在 active 索引旁边从零构建 index.building.sqlite,构建期间 active 索引持续对外服务,搜索不会被阻塞。构建完成后切换是三次同步 rename(active → archive,shadow → active),是一个原子窗口。

这也决定了失败语义:影子还在 + active 还在 = 构建没完成,此时影子是废料,直接丢弃——active 从头到尾没有处在风险里。

安装

# 方式一:从 GitHub 直装(推荐)——仓库已提交 lib/,无需本地构建
dsh plugin --profile web add github:drscrewdriver/dsh-search-index#master

# 方式二:本地路径/源码组装(见"开发"章节)

# 重启 dsh web —— 必做!运行中实例不热载 bundle 层
dsh web

装完侧边栏底部出现 "搜索" 按钮;设置 → 插件出现 "搜索索引" 卡片。

⚠️ GitHub 网络可达性:github: 直装需要能连通 github.com;网络受限时请先配置可用代理或镜像加速,否则 add 会在拉取阶段卡住。

开发

pnpm install            # 含 @deepseek-ai client 包链 + tsdown/tsc
pnpm typecheck          # tsc --noEmit
pnpm build              # tsc(lib/types) + tsdown(lib/index.mjs + lib/client.js)

工作区结构

src/
├── index.ts            # 宿主半(node):Config schema + installSettingsSection + 路由
├── config.ts           # 纯共享配置(enabled/defaultMode + 命名空间常量,client 免 schemastery)
├── host/               # 独立索引(宿主侧)
│   ├── schema.ts       # 建表:docs / docs_fts(FTS5) / sessions / 水位
│   ├── engine.ts       # 查询
│   ├── extract.ts      # 从会话事件抽可检索文本(含 tool/call、tool/result)
│   ├── sync.ts         # SwitchWatermarkSync:按 version 水位滚动增量同步
│   ├── rebuild.ts      # 影子索引构建 + 原子切换 + 崩溃恢复巡检
│   ├── archive-source.ts  # 读归档集合,把已归档会话排除出索引
│   └── snapshot.ts     # 快照导出/导入
└── client/
    └── index.ts        # 浏览器半:sidebar.footer.action 入口 + 浮层面板 + settings.general.item 配置行
  • 宿主半:注册 fenced HTTP 路由 /switch-search/apilist-sessions / content-search / search-status),浏览器信任围栏与 DSH /api 网关一致(loopback Host 或 trustedHosts,拒绝 cross-site)。
  • 配置模式:宿主经 settings 服务注册 switch-search 命名空间 + schemastery Config;client 半本地 store 座位 + settingsScope.bind 镜像读写;共享纯模块 src/config.ts 保持 client bundle 无 schemastery。
  • 构建链:tsdown 复制 harness packages/client/tsdown.client.ts 语义(__ModuleLoader__.load banner、平台模块 external 表、bundle purity gate)。
  • lib/ 提交进仓库:GitHub 直装靠已提交的构建产物运行(dsh 从 git 安装不跑 prepare),.gitignore 不忽略 lib/

与官方侧边栏搜索的关系

  • 官方侧边栏的搜索框在 sidebar.workspaces(single slot),外部插件无法替换;本插件在侧边栏底部新增独立入口 sidebar.footer.action,二者并存、互不干扰。
  • 官方内容搜索在 apiproxy 硬编码只搜 user/message + assistant/message;本插件用自建索引,放开 tool/call + tool/result,实现工具级筛选。

兼容性与隐私

  • 需要已安装 DeepSeek Harness 并使用 web profile;不改任何官方源码。索引是本插件自己的文件,官方 session-query-sqlite 开不开都不影响本插件。
  • 配置仅存于 DSH settings 命名空间与浏览器浮层状态;不读取、不上传会话内容以外的数据。
  • 宿主/客户端契约类型在 src/*.ts 本地结构声明(npm 上 dsh client 包链不完整),构建时以 harness 源码核实为准。

drscrewdriver DSH Plugin Family

本项目是 drscrewdriver 维护的 DSH 插件系列之一。如果这个对你有用,其他插件多半也有用:

插件 一句话描述
dsh-input-traffic DSH Web GUI 忙时输入队列:三档交通管制,拖拽重排,会话冻结
dsh-thinking-levels 逐轮 reasoning_effort 控制:Auto 智能调度或手动固定档位
dsh-seatbelt-sandbox macOS Seatbelt 沙箱适配器:libsandbox 原生 loader,接替弃用的 sandbox-exec
dsh-prime-memory 分层蒸馏记忆:L0~L3 自动蒸馏,模型每步前召回注入
dsh-search-index 侧边栏会话搜索增强:标题/内容切换,按用户/回复/工具筛选

License

MIT

有意识地管理

安装与管理

前置条件与目标 Profile

目标 Web Profile

交付方式 Git Bundle — drscrewdriver/dsh-search-index#cf65373658ec2aaf8595aed94d1d684e20887f32

验证、更新与移除

显示生命周期命令
验证
dsh plugin --profile web list

兼容性与访问范围

DeepSeek Harness web bundle; Node.js 20+ required >=0.1.0-rc.7 <0.2.0-0

检查兼容性证据

风险事实

local-session-content-indexing

Indexes local session content, including tool calls and results when enabled by the artifact’s documented behavior.

证据
local-storage-access

Documentation states that archived-session identifiers are read from the DSH workspace storage to exclude archived sessions from the index.

证据
证据与编辑审查Manifest、Bundle patch、分发与新鲜度

不可变证据

审查状态与源码活动

AI 已审查

建议通过固定提交的 Git 源码安装,以保留可审查的 bundle 路径;在含敏感对话的 profile 中启用前,请先评估本地会话内容索引的影响。

AI 审查于 2026/9/16 UTC 13:58GitHub 事实核对日期: 2026/9/16 UTC 13:58

自当前证据基线以来,没有记录到重要源码变化。

下一步

按 Plugin 安装流程操作

订阅重要变化: DSH Search Index