dsh-classic-tools:本地小上下文模型的联网开关、工具预算与 scratchpad

前言

在 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye