前言¶
在 DeepSeek Harness(DSH)里跑本地模型时,常见两类摩擦:一是要不要联网、搜什么、结果怎么进上下文,往往靠模型自己决定是否调用工具,容易空转或漏搜;二是上下文窗口在约 49k token 及以下时,工具列表和冗长 tool 输出会把窗口挤满,长任务容易跑偏。社区插件 dsh-classic-tools(维护者 MathieuPortmann,GitHub:MathieuPortmann/dsh-classic-tools)把「Web 开/关」做成消息框旁的 chip,搜索走本机 Ollama,并用 web_read 替代默认的浅层 fetch;同时为中小窗口提供 tool budget 与 scratchpad,另带 Ultralight、Advanced thinking 两种轻量模式。下面按定位、能力、安装与用法说明。
这是什么¶
dsh-classic-tools 是 DSH 的联网与「小上下文辅助」插件包:统一 Web 开关、Ollama 侧 web search / 页面读取、面向 ≤49152 token 窗口的工具按需暴露与步骤记事本。分类上属于社区目录中的「联网工具」;维护为 best-effort,README 注明 issue 可能无人回复,欢迎 fork。许可证 MIT,当前 package 版本 0.1.0(以仓库 package.json 为准)。
核心功能¶
Web chip 与 /web¶
消息框旁有 Web chip,也可用斜杠命令:
/web on | off | toggle | status
状态写入 <DSH_HOME>/web-toggle.json,默认 OFF,从下一条消息起对全部会话、全部模型生效。
- OFF:联网相关工具对模型不可见,避免调用无效工具。
- ON:每条用户新消息由 DSH 自动发起检索(不由模型自行决定是否搜);问候、面板段落、以及关于你自己笔记的提问(如 “my notes”、”in my Logseq”)不会搜。系统提示会加入简短研究规则:基于已读页面作答、单源事实标
(unconfirmed)、文末要有 Sources;若回答缺少 Sources,会再发一轮补全。web_search与页面抓取经 Ollama;DSH 自带的web_fetch在此插件下由web_read承担精读逻辑。
web_read¶
web_read(url, question?, start?) 会清理页面(CSS/script 残留、菜单、重复段、链接目标等),缓存到 <DSH_HOME>/cache/web,按标题切段,用 BM25(无模型)按问题排序,返回约 4000 字符、保持页内顺序的段落;可用新问题或 start=p7 读其他段。同一 URL 缓存复用 24 小时,3 天后删除。
Tool budget¶
当 agent 的 maxContextWindow ≤ 49152(可配置)时,工具按「族」隐藏:直到你的消息里出现匹配正则的关键词,该族工具才在本对话中持续可用;更大窗口的模型仍可见全部工具。默认 families 指向作者其它插件里的工具名(Zotero、Logseq、文档、memory、tasks 等),未安装的会跳过;可在 cordis.patch.yml 里替换,例如:
- id: tool-budget
name: 'dsh-classic-tools/tool-budget'
config:
maxContextWindow: 49152
families:
- id: wiki
words: 'wiki|confluence'
tools: [wiki_search, wiki_page]
Scratchpad¶
同样仅对 ≤49152 token 窗口暴露工具:step_done(step, learned)、scratch_note(text)、scratch_read(name?)。数据目录 <DSH_HOME>/scratch/<conversation>/(含 state.md 账本、steps/NN.md、notes.md、raw/ 折叠前的完整输出、synthese.md 最终答案)。step_done 之后,超过 600 字符的工具输出会在下一步折叠为短头 + 指针(与 DSH tool-result pruner 类似,原文仍在 session log)。协议与账本每条请求重发,以扛 compaction。若步骤声称写到对话目录外(如「save it in ~/reports」)会被拒绝;7 天未动的目录在启动时清理。大窗口模型看不到这些工具。
Ultralight 与 Advanced thinking¶
两种 agent 模式:提示尽量短,无 shell、不改文件;Web 工具仅在 Web chip 为 ON 时可用。Ultralight 偏简洁回答;Advanced thinking 要求分步推理与自检(模型菜单里 Effort 设为 “high”)。界面随 DSH 语言为英文或法文;chip 文案可在 client.js 顶部与 en/fr 并列扩展翻译表。
安装与启用¶
要求 Node ^22.19.0 || >=24.0.0,DSH >=0.2.0-rc.2 <0.3.0,以及能响应 Ollama 实验性接口 /api/experimental/web_search 与 /api/experimental/web_fetch 的 Ollama(README 写明查询与 URL 经 Ollama/ollama.com 出站)。环境变量:OLLAMA_HOST(默认 http://127.0.0.1:11434)、DSH_HOME(默认 ~/.dsh)。
官方安装命令(web profile):
dsh plugin --profile web add github:MathieuPortmann/dsh-classic-tools
安装后需 重启该 profile。包上架 npm 后也可使用 dsh plugin --profile web add dsh-classic-tools(README 说明)。
配置均在 cordis.patch.yml(或你的 profile)中改行,常见项:
| 行 | 选项 | 默认 | 含义 |
|---|---|---|---|
web-toggle |
skipSkills |
[] |
仅处理用户文本的斜杠命令名(无 /),命中则不做自动搜索,如 [summarize, translate] |
tool-budget |
maxContextWindow |
49152 |
启用 tool budget 的窗口上限 |
tool-budget |
families |
README 示例 | 隐藏的工具族 |
scratchpad |
maxContextWindow |
49152 |
启用 scratchpad 的窗口上限 |
scratchpad |
foldMinChars 等 |
600, 240, 1600, 6, 7, <DSH_HOME>/scratch |
折叠与账本参数、清理天数、目录 |
cordis.patch.yml 还注册 web provider(searchProvider: ollama, fetchProvider: ollama)与两种模式;移除 bundle 即移除全部能力。
典型用法¶
1、安装并重启 web profile 后,在消息框点击 Web chip 或发送 /web on,确认 /web status 或 chip 显示为 ON。
2、用本地 Ollama 模型提问需要查资料的问题;观察自动检索结果进入上下文,回答末尾应含 Sources。需要精读某 URL 时,模型可调用 web_read,必要时带 question 或 start 读后续段。
3、小窗口模型做长任务时,依赖对话里出现的关键词逐步「解锁」 tool budget 里的工具族;配合 step_done / scratch_note 把步骤与结论写入 scratch,避免单次上下文被长 tool 输出占满。
4、临时只要联网、不要 shell 与改文件时,可选用 Ultralight 或 Advanced thinking 模式(Web 仍受 chip 控制)。
适用场景与注意¶
适合:在本机 DSH + Ollama 上跑中小上下文本地模型,需要可控联网(统一开关、自动搜、Sources 约束、web_read 精读),或需要 tool budget / scratchpad 撑住多步任务的用户。
注意:
- 插件以 当前 DSH 进程权限 运行;安装前请自行阅读源码与 MIT 许可证,并理解 Web ON 时经 Ollama 的搜索与 fetch 会出站(README Permissions 表)。
- Ollama web 接口为 experimental,可能变更;DSH 版本需落在 README 声明的 peer 范围内。
- 维护 best-effort,生产环境应自备验证;README 记录曾在 DSH
0.2.0-rc.2、Node 22.23 上测试,Linux 为主测平台。
DSH 生态强调「一切皆插件」;社区目录 SkillHub 插件页 与 GitHub 仓库相互独立,并非 DeepSeek / 幻方官方应用商店。
结尾¶
dsh-classic-tools 把联网从「模型随缘调工具」收成 Web chip + 自动检索 + web_read + Sources 提醒,并为约 49k 及以下窗口补上 tool budget 与 scratchpad,再提供两种轻量 agent 模式——适合在 DSH 里认真跑本地模型、又要把联网和上下文管清楚的场景。
- 目录页:https://www.skillhub.cn/plugins/MathieuPortmann/dsh-classic-tools
- GitHub:https://github.com/MathieuPortmann/dsh-classic-tools