前言¶
在 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