dsh-cache-saver:压缩每轮重发的 MCP 工具 Schema,并在设置页展示 token 成本

前言

在 DeepSeek Harness(DSH)里跑带大量 MCP 工具的 Agent 时,每一轮请求都会把整段 prompt 前缀重新发给模型,其中往往包含体积很大的工具 JSON Schema。上下文缓存可以降低单次读取成本,但若前缀本身就有数十万 token,账单上限仍然很高。社区插件 dsh-cache-saver(维护者 ium9khbep8834-maker)针对的是「稳定前缀过大」这一类问题:在不改动工具实际派发逻辑的前提下,缩小模型侧看到的 Schema 副本,并统计重发上下文里 token 花在哪里。本文介绍其定位、能力与安装配置;事实以 GitHub 仓库 README 为准。插件亦收录于 SkillHub 目录(分类:模型推理),与 DeepSeek / 幻方无官方从属关系。

这是什么

dsh-cache-saver 是面向 DSH 的 host + client 捆绑插件(npm 包名 @local/dsh-cache-saver,当前版本 0.3.1,许可证 MIT)。README 给出的定位是:每次请求都会重发整段 prompt 前缀(含工具 Schema);本插件缩小其中过大的 Schema(dispatch 路径不动),并在设置页展示重发上下文的去向与 token 成本。

核心功能

1. Schema 瘦身:工具不变,说明书变短

在新 Agent 上,插件会把每个工具定义复制到该 Agent 作用域,仅替换 description / parameters;execute、output.render、超时与安全标志继承原定义,派发行为不变。DSH 不校验参数(仍由 MCP 服务端校验),因此不会因瘦身而拒参。默认配置下,8 个常用 rea 读取类工具在 keepFull 白名单中,不会被压缩。

README 给出的典型数字(默认配置):158 个工具,Schema 字符数 740,692 → 121,190(约 −83.6%);五个超大 Schema 被削减约 91–99%(例如 compare_web_captures:155,623 → 1,392)。在 shadowPrefixes 中增加 mcp__github__ 后,示例为 182 个工具、776,706 → 143,679 字符。

同一套工具、同一套调用下,README 在真实 profile 上测过「新会话第一次请求」:插件关闭时 269 个 tools、270,767 prompt tokens;开启后 270 个 tools、69,559 prompt tokens(约 −74.3%)。

2. 成本归因:重发上下文花在哪里

插件记录每次工具结果(字符 → token、重复、错误)以及每个计费步骤的 usage,并推导 README 中列出的指标:

prompt       = input + cacheRead + cacheWrite
new content  = input + cacheWrite            ← 按全价计费的部分
equivalent   = 0.1 × cacheRead + new content ← 便于跨请求对比

同时按字符占比对当前上下文分类(user / assistant / tool call / tool result / reasoning),便于判断历史是否占大头。

3. 设置页

在 Settings → Cache saver 可查看单次请求成本、缓存命中率、新付费内容、工具结果体积、Schema 节省表、按会话统计、建议与近期事件时间线。数据来自同源只读接口 GET /api/cache-saver/status。

安装与启用

安装前请先关闭 DeepSeek Harness(其会占用 desktop profile)。插件以当前 DSH 进程权限运行,安装前建议自行查看仓库源码与 MIT 许可证。

方式一:DSH CLI(desktop profile)

"<install dir>\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add github:ium9khbep8834-maker/dsh-cache-saver

将 <install dir> 替换为本机 DSH 安装目录。其他 profile 将 desktop 改为 web 或 dsh-tui;非 Windows 使用 dsh 而非 dsh.cmd。

方式二:npm

npm install github:ium9khbep8834-maker/dsh-cache-saver

npm 无法自动注册 DSH bundle,还需在 ~/.dsh/profiles/desktop/package.json 的 dsh.profile.bundles 中加入 "@local/dsh-cache-saver"。

安装后重启 DSH(或重载页面)一次——client 半部在启动时注入——再打开 Settings → Cache saver。README 标明兼容 DSH 0.2.x。

配置

持久化覆盖写在 ~/.dsh/profiles/desktop/cordis.patch.yml(durable layer),示例:

- id: cache-saver
  name: '@local/dsh-cache-saver'
  config:
    shadowPrefixes: ['mcp__rea__', 'mcp__github__']
    maxSchemaChars: 800

常用配置项(默认值见 README 表格):

key 默认 含义
shadowPrefixes ['mcp__rea__'] 需要瘦身的工具名前缀
keepFull 8 个核心 rea 读取工具 永不瘦身
maxSchemaChars 800 单个 Schema 目标字符数
maxDescriptionChars 260 单段 description 目标字符数
bigResultTokens 6000 「大结果」阈值
maxStepSamples 60 每个 Agent 保留的步骤采样数
dryRun false 仅测量、不 shadow

细调项还包括 minChars、maxDepth、topDescriptionChars、nestedDescriptionChars、descriptionDepth、maxBranches 等,见 README Config 一节。

适用场景与注意

适合谁: MCP 工具数量多、单个 JSON Schema 极大、且 prompt 前缀在每轮请求中反复发送的 DSH 用户;需要看清 cache read / write 与「等价 token」而不仅看命中率时。

为何不只提高缓存命中率: README 指出,命中率高往往意味着大量廉价 cache read,但分母仍是每次重发的体积;删掉稳定前缀中的十几万字符会降低上限并真实降费,应跟踪 equivalent tokens 而非只看比率。

安全与限制:

  • 派发、参数与结果不改,仅缩小面向模型的 Schema 副本。
  • 极少数深层参数可能被折叠;可将该工具加入 keepFull,或设 dryRun: true 全局关闭 shadow。
  • v0.3.1 说明:工具结果体积按 chars / 4 归因,步骤费用仍用服务商返回的真实 usage。

结尾

dsh-cache-saver 用 Schema shadow 压低每轮重发的 prompt 体积,并用设置页把 token 成本与上下文构成摊开。若你正在 DSH 里堆 MCP 工具并关心前缀 token,可从目录页或 GitHub 安装,在 Settings → Cache saver 对照开启前后的数据。

  • 目录页:https://www.skillhub.cn/plugins/ium9khbep8834-maker/dsh-cache-saver
  • GitHub:https://github.com/ium9khbep8834-maker/dsh-cache-saver
羽毛球分组比赛记分
小程序二维码

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

小夜