在侧边栏按字面检索会话内容,中文短词也能命中
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/21 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add henrytunwang/dsh-plugin-session-fulltext该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · browser
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 14 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 2 处,展示前 2 条)
- 写入本地文件index.js:381
mkdirSync(home, { recursive: true }) - 写入本地文件index.js:382
appendFileSync(file, `${new Date().toISOString()} ${message}\n`)
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
为 DeepSeek Harness 侧边栏提供对中日韩文字友好的全文内容搜索(点击展开,并支持上一个/下一个匹配项导航)。
README
由 DeepSeek 最新模型翻译生成dsh-plugin-session-fulltext
面向 CJK 的全文(字面子串)内容搜索,用于 DSH 侧边栏。
背景:DSH 自带的搜索为什么「只搜会话名称」
DSH 侧边栏搜索其实由两部分组成(见 @deepseek-ai/dsh-client-ui-workspace):
- 即时本地匹配:标题 + 工作区名的子串匹配(所以看起来「只搜会话名称」);
- 250ms 防抖后发给 Host 的内容搜索:sessions.search → @deepseek-ai/dsh-api-session-controller → ctx.sessionQuery.searchSessions。
内容搜索要能工作,必须有 @deepseek-ai/dsh-session-query-sqlite 提供的全文索引,而 base / web bundle 默认把它设成:
- id: session-query-sqlite
config:
path: ':memory:'
openAt: never # 全文搜索被关闭
此时内容搜索会失败,客户端按设计静默忽略("a failed content search leaves metadata matches visible without an additional warning"),于是表现为「搜索只匹配会话名称」。
展开完整文档(README 剩余 1 节)
dsh-plugin-session-fulltext
面向 CJK 的全文(字面子串)内容搜索,用于 DSH 侧边栏。
背景:DSH 自带的搜索为什么「只搜会话名称」
DSH 侧边栏搜索其实由两部分组成(见 @deepseek-ai/dsh-client-ui-workspace):
- 即时本地匹配:标题 + 工作区名的子串匹配(所以看起来「只搜会话名称」);
- 250ms 防抖后发给 Host 的内容搜索:sessions.search → @deepseek-ai/dsh-api-session-controller → ctx.sessionQuery.searchSessions。
内容搜索要能工作,必须有 @deepseek-ai/dsh-session-query-sqlite 提供的全文索引,而 base / web bundle 默认把它设成:
- id: session-query-sqlite
config:
path: ':memory:'
openAt: never # 全文搜索被关闭
此时内容搜索会失败,客户端按设计静默忽略("a failed content search leaves metadata matches visible without an additional warning"),于是表现为「搜索只匹配会话名称」。
把 openAt 改成 first-search 能打开官方 FTS5 索引,但它使用 FTS5 的 unicode61 分词器:连续中文会被当成一个 token。
实测(SQLite 3.51):
-- 文档: 今天我们来讨论全文搜索的实现方案 MATCH '全文搜索' → 0 命中 MATCH '搜索' → 0 命中
也就是说,官方全文搜索对中文基本不可用。本插件因此不启用 FTS,而是在同一个 service 上只替换 searchSessions,用字面子串扫描(大小写不敏感)检索当前会话里的 user/assistant 消息:
- 中文 1~2 个字也能命中(合同、飞书、搜索);
- 英文/代码同样可用(HUMAIN、session、Word 文档);
- 精确读取、标题、trace、filterEvents 等原 service 能力完全不动。
行为
- 索引内容:user/message + assistant/message,只取当前 surface(与 api-session-controller 的过滤条件一致)。
- 缓存:按 Session 缓存文档;live 会话用 session.seq 判断失效,纯持久化会话只读一次。
- 预热:插件激活后 2.5s 开始在后台逐 Session 建缓存并让出事件循环;实测 164 个会话、约 10.3M 字符(user+assistant)约 8s 建完,内存约 30–40MB。
- 查询:每次搜索重新列一次会话(~几十 ms),随后在内存里子串扫描;实测 164 个会话单次 25–45ms。
- 排序:命中次数多者优先 → 文档时间新者优先 → 会话创建时间新者优先。每个会话取最佳文档生成 240 字符 snippet。
- 预热未覆盖的会话按需加载,因此刚启动就搜索也能出结果(只是第一次会慢一点)。
- 搜索请求被取消(新输入/失焦)时沿用 DSH 的 AbortSignal 语义。
安装
已安装到 Desktop profile(一个包同时提供 Host 半和浏览器半):
dsh plugin --profile desktop add link:/Users/le.su/wtdshwkspace/dsh-plugins/session-fulltext
package.json 里 dsh.bundle.patch 负责挂 Host 侧的行,dsh.client + exports["./client"] 负责让 Web 组合把 lib/client.js 送进浏览器 boot graph。
该命令会:
1. 在 ~/.dsh/profiles/desktop/package.json 的 dependencies 里记录 link:...;
2. 把 dsh-plugin-session-fulltext 追加到 dsh.profile.bundles;
3. Host 侧行通过 profile HMR 热更即可生效;首次安装(或本次合并后)需要重启一次 App,让 Web 组合重新扫描 dsh.client 声明、把 lib/client.js 放进浏览器 boot graph。之后再改浏览器端代码由 dsh-client-hmr 自动热替换,无需重启。
配置
bundle 的 cordis.patch.yml 里给插件行传配置:
| 字段 | 默认 | 说明 |
| debug | false(本机 patch 里设为 true) | 往 $DSH_HOME/session-fulltext.log 追加激活/预热/搜索日志 |
| warmupDelayMs | 2500 | 启动后多久开始后台预热 |
| snippetChars | 240 | snippet 长度上限 |
| types | ['user/message','assistant/message'] | 建索引的事件类型 |
调试日志:~/.dsh/session-fulltext.log。
关闭 / 卸载
- 临时关闭:把 profile patch 里 session-fulltext 行的 disabled: true,或从 dsh.profile.bundles 移除后删依赖: dsh plugin --profile desktop remove dsh-plugin-session-fulltext
- 本插件不修改官方配置,session-query-sqlite 保持 openAt: never 即可。
点搜索结果 → 定位/高亮 + 会话内「上一个 / 下一个」
浏览器半(lib/client.js)补上了官方侧边栏缺失的跳转能力:
- 点搜索结果后自动翻历史把命中加载出来,滚到第一个命中并标黄(CSS Custom Highlight API),命中的 turn 行闪一次描边;
- 会话右上角浮出 n / m 上一个 下一个 × 胶囊,可在本会话所有命中之间循环跳转;Esc 或 × 关闭并清除高亮,切换会话或发起新搜索时自动收起;
- 点完一条结果后,搜索框和结果列表保留(官方点击处理会清空),可以直接点下一条;
- 搜索框占位符改成「搜索会话名称与内容」;已归档行、Unarchive 按钮不触发;
- 健康检查:页面加载后 ~/.dsh/session-fulltext.log 会出现一次 search "dsh-fulltext-client-probe"。
浏览器端 bundle 由官方 dsh-client-hmr 每 500ms 轮询文件,并在页面里热替换;新增或合并 dsh.client 声明时,Host 半会主动清掉 clientModules 的包元数据缓存,再 flush() 一次,把新 graph 推到已打开的页面(日志里会有 client graph refresh requested),一般也不需要重启 App。
手动验证:控制台执行 __dshSessionFulltext.reveal('合同')。
已知限制
- 只索引当前 surface 的 user/assistant 消息;tool/result、tool/call 等不参与(侧边栏本来也只显示这两类)。
- 纯内存缓存:App 重启后需要重新预热;第一次启动后立刻搜索,会边搜边建缓存。
- 不支持正则、分词或模糊匹配,只做大小写不敏感的字面子串;多词查询用空格分隔时是 AND 语义。
- 每次查询会调用一次 listSessions(持久化目录列举),会话数量极大时会线性变慢。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
henrytunwang/dsh-plugin-session-fulltext
在侧边栏按字面检索会话内容,中文短词也能命中
相关插件 · 浏览器
智能体插件框架deepseek-ai/deepseek-harness
DeepSeek Harnessdsh是由 DeepSeek AI 开发的开源 agent harness智能体框架。
★ 270,422已汉化DSH
71.9
多设备 Agent 看板YaoApp/yao
✨ 所有 Agent 和工作区集中管理,覆盖你的每一台设备。任务看板追踪进度,桌面端、移动端、浏览器、API…
★ 8,147已汉化DSH
71.2
可扩展侧边栏工作台omdsh-dev/DSH-better-sidebar
DSH 的双工作台:原生右侧栏 + 自绘底部面板,并把 ctx.betterSidebar 服务开放给所有插件
★ 4,761已汉化DSH
71.1
浏览器自动化桥Tencent/BrowserSkill
你的 Agent。你的浏览器。连接,就能协作。
★ 9,967已汉化DSH
71
AI 小说创作工作台EthanYoQ/AI-Novel-Writer
AI 小说作家 / AI Novel Writer
★ 1,591已汉化DSH
70.7
智能体浏览器引擎platonai/Browser4
DeepSeek Harness 集成
★ 1,175已汉化DSH
70.4
这是你的仓库?认领条目