前言¶
在 DeepSeek Harness(DSH)里跑智能体时,工具回传往往是上下文窗口的主要负担:一次 npm test、git diff 或大块 JSON 就可能占去数千 token,且会在整个会话里反复计费。常见做法是装一类「context mode」插件,把完整输出存本地、只把摘要或片段还给模型,需要细节时再搜。
不少同类插件依赖带 C++ 绑定的 SQLite。在 Windows 上往往要 Visual Studio Build Tools、Python 和编译链,原生模块编译失败也并不少见。dsh-local-context(维护者 akske,社区目录分类为模型推理)走的是另一条路:只用 Node 24 自带的 node:sqlite 做 FTS5 本地库,无 npm 依赖、无编译步骤。下面介绍它是什么、能做什么,以及如何安装与使用。
这是什么¶
dsh-local-context 是面向 DSH 的本地知识库插件:在 Host 进程内执行 shell、对过长输出做智能截断,并把完整内容(在截断时)或手动索引的文本写入 SQLite FTS5,供 ctx_search 按相关性召回。项目声明零原生依赖,运行时约五个 JavaScript 文件、体积在 40 KB 以内;许可证 MIT,当前 package 版本为 0.1.0,要求 Node >= 24。README 标明在 DSH desktop(Electron 44.7.0 / Node 24.21.0 / SQLite 3.53.4)上验证,平台徽章为 Windows;使用 language: "bash" 时建议 Git Bash。
核心功能¶
智能截断与完整归档。 输出严格超过 5,000 字符时,返回给模型的是前 2,000 + 后 2,000 字符,中间以固定标记 ... [省略 N 个字符的输出] ... 代替,并提示用 ctx_search;在此之前完整原始输出会先写入 FTS5。
三条工具。 ctx_exec 跑 shell 并处理输出;ctx_index 把文本分块入库;ctx_search 做相关性搜索。截断阈值、默认超时 120 秒(可配至 600 秒)、输出上限 4 MiB、Markdown 感知分块(默认约 1,200 字符、硬上限 1,600)等行为均在 README 中写明。
检索策略。 FTS5 使用 trigram 索引,支持英文与 CJK 子串;1–2 个汉字查询会回退到 LIKE。排序为 bm25,标题权重 5×、正文 1×,默认返回前 3 条并带约 400 字符高亮片段;full: true 可拿完整分块。相同 title 重新索引会覆盖旧分块,避免反复构建留下脏数据。
执行安全。 超时会在 Windows 上用 taskkill /T /F 结束进程树;数据库懒加载、WAL、busy_timeout,损坏库不应阻止 DSH profile 启动。
安装与启用¶
环境要求:Windows 10/11 上的 DSH desktop、内置 Node 24+。你需要先把插件目录放到本机(具体获取方式以 GitHub 仓库 说明为准),再用 DSH 支持的本地 bundle 安装方式指向该目录的绝对路径。
通过插件管理器安装 bundle(官方路径写法):
plugin_manager(action: "install_bundle", target: "<absolute-path-to>/dsh-local-context")
若 profile 的包管理器可用,也可使用 CLI:
dsh plugin --profile desktop add "<absolute-path-to>/dsh-local-context"
安装后三个工具通常立即可用;若没有,重启 DSH 一次。验证:
ctx_exec({ command: "echo hello from ctx_exec" })
→ hello from ctx_exec
[exit code: 0]
可选配置项写在 bundle 对应的 cordis.patch.yml 行里,均为可选;具体字段见仓库 README 的 Configuration 一节。
典型用法¶
执行命令并依赖截断 + 搜索。 长日志先被截断返回,中间内容用搜索找回:
ctx_exec({ command: "git log --oneline -20" })
ctx_exec({ command: "npm test", timeoutMs: 300000 })
ctx_exec({ command: "python -c 'print(sum(range(10)))'" })
ctx_exec 主要参数:command(必填)、language(默认 bash,还可 pwsh、cmd)、cwd、timeoutMs(1000–600000,默认 120000)。
手动入库与检索。
ctx_index({ text: "...", title: "my-doc" })
ctx_search({ query: "trigram" })
ctx_search({ query: "开发" })
ctx_search({ query: "UNIQUE_TOKEN", full: true })
ctx_search({ query: "timeout", limit: 5 })
ctx_index 单次 text 上限 1,000,000 字符;ctx_search 的 limit 为 1–10,默认 3。
数据流可以概括为:ctx_exec 经 shell 收集 stdout/stderr(≤ 4 MiB)→ 必要时截断后返回模型,完整文本入 FTS5;ctx_index 直接分块写入;ctx_search 在 Host 进程内查询,无独立数据库服务或 socket。
适用场景与注意¶
适合在 Windows + DSH desktop 上开发智能体、又希望避免原生 SQLite 编译链的开发者。它与「把长工具输出移出上下文、需要时再搜」的目标一致,并强调沙箱式命令执行、截断与本地 FTS5 检索的组合。
插件在 当前 DSH 进程权限 下运行 ctx_exec,等同于你在本机执行所配置的 shell;安装前应阅读源码与 MIT 许可证,确认命令与数据落盘位置可接受。Node 版本需满足 >=24;非 Windows 或未捆绑 Node 24 的环境是否可用,README 未作同等声明,部署前需自行核对。
DSH 生态是「一切皆插件」;社区插件目录 SkillHub 上的 dsh-local-context 页 与 GitHub 仓库由社区维护,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-local-context 用 Node 内置 SQLite FTS5 换掉了 C++ 原生依赖,把长输出截断、完整归档和 CJK 友好检索收进三个工具。若你的痛点是 Windows 上装 context 类插件总要碰编译链,可以按上文路径安装 bundle 后用 ctx_exec / ctx_search 走一遍验证流程。
- 目录页:https://www.skillhub.cn/plugins/akske/dsh-local-context
- 源码与文档:https://github.com/akske/dsh-local-context