DeepSeek Harness 消耗 Token 太快怎么办?5 个官方开关把账单压下来
发布日期:2026-09-28
DeepSeek Harness(dsh)是 DeepSeek 于 2026 年 8 月开源的插件化 Agent 运行框架,在 GitHub 上已有 23.7 万 Star。它烧 Token 快,主要不是 bug,而是默认配置偏重。默认推理强度是 high,单次输出上限 256,000 Token,模型上下文窗口 100 万 Token。按官方公式,自动压缩要等上下文涨到约 67.8 万 Token 才会触发,在那之前每一轮请求都会把整段历史和之前的思维链重新发一遍。本文依据 dsh 仓库文档和 DeepSeek 官方价格页,先讲清 Token 花在哪,再给出 5 个原生配置开关:降推理强度、提前压缩、让便宜模型写摘要、收紧工具输出、护住缓存命中率。最后附一份可以直接粘贴的 cordis.patch.yml。
先看账:Token 到底花在哪
一句话:长会话里真正花钱的是「每一轮都重发的输入」,不是模型这一轮写出的回答。
dsh 的 Agent 循环每走一步,都会把系统提示词、工具 schema、完整对话历史和工具结果重新组装成一次请求。官方 llm-deepseek 文档还特别写明,此前每个推理轮次的思维链会原样回传到后续请求里。也就是说,推理强度开得越高,后面每一轮的输入就越重。
再看价格。DeepSeek 官方价格页(2026 年 9 月)的单位都是元/百万 Token:
deepseek-flash(V4.1-Flash)高峰时段:缓存命中输入 0.04 元,未命中输入 2 元,输出 8 元;deepseek-v4-pro高峰时段:缓存命中输入 0.30 元,未命中输入 9 元,输出 27 元;空闲时段是高峰价的一半。高峰时段为北京时间工作日 9:00–12:00 和 14:00–18:00,其余时间(含周末、法定节假日全天)都是空闲时段。
算一笔账:用 V4-Pro,会话已经涨到 50 万 Token,此时再发一轮请求。如果缓存命中率是 90%,这一轮的输入大约 0.59 元;如果缓存全部失效,就要 4.5 元,差了 7 倍多。所以省 Token 其实是两件事:让上下文别无限膨胀,让重复的前缀尽量命中缓存。
为什么默认配置偏「费」
dsh 的压缩插件 dsh-compaction-basic 默认开启。它的触发阈值公式是 floor(min(W × 0.8, W − O − 65536)),其中 W 是上下文窗口,O 是单次输出上限。
代入默认值:W = 1,000,000,O = 256,000,算出来的触发点约为 678,464 Token。换句话说,会话要膨胀到六十多万 Token 才会第一次自动压缩。对只想改几个文件的日常任务来说,这个阈值太宽松了。
另外两个默认值同样偏向「能力优先」:
reasoningEffort默认是high,可选off、low、high、max;工具结果修剪器只在压缩触发之后才运行,低于阈值的会话里,超长的命令输出会原封不动地一直留在上下文里。
5 个原生开关,按收益从高到低
1. 按任务调低推理强度
模型选择器里有「推理等级」菜单,可以随会话切换。简单改动、查资料、格式整理用 low 或 off,复杂重构再切回 high。DeepSeek 自有路由的 off 会发送 thinking.type: disabled,是真正关闭思考。
如果你是通过 OpenAI 兼容端点接入 DeepSeek V4 的,要注意一个坑:off 留空时什么参数都不发,模型会照常思考。官方文档要求给模型加上 compat.thinkingFormat: deepseek,off 才会真正生效。
2. 把压缩阈值提前
把 thresholdRatio 从 0.8 调到 0.3 左右,100 万窗口下大约在 30 万 Token 时就开始压缩。默认保留比例 retainRatio: 0.16 不变,近期的对话依然逐字保留。官方要求保留比例必须小于阈值比例,否则插件加载会失败。
想立刻瘦身的话,在对话框里输入 /compact,即使没到阈值也会压缩一次,并报告估算省下了多少 Token。
3. 让便宜的模型写摘要
每次压缩本身都要额外调用一次模型。summarizationProvider 和 summarizationModel 两项可以把写摘要这件事单独指定给 deepseek-flash。按高峰价算,它的未命中输入是 V4-Pro 的 2/9,输出不到 V4-Pro 的 1/3。
4. 收紧工具输出修剪
默认规则是:工具结果超过 8,192 个字符时,只保留开头 4,096 个字符和结尾 1,024 个字符。如果你经常跑会刷屏的测试或构建命令,可以把这三个数调小。
5. 护住缓存命中率
TUI 页脚会显示 cache N%,Web 界面的输入框旁边有上下文占用圆环,每一轮结束后还能展开查看这一轮的精确 Token 用量。要让缓存命中率保持在高位,记住三件事:
同一会话里不要来回切换模型或提供方,否则会换到另一个缓存域;
不要中途增删 MCP 工具或改写系统提示词,工具 schema 一变,从变化的位置开始往后的缓存都失效;
派子任务优先用
subagent_fork。官方基础配置特意让它沿用父会话的模型,这样继承下来的历史还能复用 KV Cache。
实操:一份可以直接粘贴的省 Token 配置
打开 $DSH_HOME/profiles/web/cordis.patch.yml(用 dsh web 启动时 profile 就是 web;也可以在设置页顶部点「打开配置文件」),追加下面几段:
# 默认推理强度降到 low,需要时在模型选择器里临时切回 high
- id: llm-deepseek
config:
reasoningEffort: low
maxTokens: 32000
# 约 30 万 Token 触发压缩,摘要交给 flash 写
- id: compaction-basic
config:
thresholdRatio: 0.3
summarizationProvider: deepseek-official
summarizationModel: deepseek-flash
# 工具输出超过 4096 字符就只保留头尾
- id: tool-result-pruner
config:
thresholdChars: 4096
headChars: 2048
tailChars: 512有三点要注意:
Cordis 的覆盖会整条替换该条目的配置。如果文件里已经有
llm-deepseek段(比如模型页写入过 API 地址),请把字段合并进原有段落,不要重复写两段。用 DeepSeek 账号登录、而不是用 API Key 的,摘要提供方要写成
deepseek-account。适配器会在下一次请求时重新读取配置,不用重启。改完后发一句话,然后查看这一轮的 Token 明细,确认配置已经生效。
还有一个成本上零改动的技巧:长时间跑的批量任务尽量放在工作日 18:00 之后或周末启动。按官方价格,空闲时段的输入和输出都是半价。
常见问题
Q:dsh 会偷偷上传会话日志,多算我的 Token 吗?
dsh_session_log 和 dsh_plugin_packages 这两个扩展字段默认开启,确实会随请求发送。但官方协议文档写明,它们放在 messages、系统提示词和工具 schema 之外,不会增加模型输入 Token,也不会改变模型能看到的前缀。
Q:把 maxTokens 调小能直接省钱吗?
不能直接省。计费按实际生成的 Token 算,这个上限主要是防止模型失控地长篇输出。它的间接作用是:输出预留小了,压缩公式里的 W − O 就变大,历史能保留得更完整。
Q:flash 和 V4-Pro 怎么分工?
日常编码、摘要、检索类任务用 deepseek-flash,只把难题交给 deepseek-v4-pro。两款模型的上下文都是 100 万 Token,但切换模型会重建缓存,最好按会话切,不要在一个会话里来回换。
结语
DeepSeek Harness 的 Token 消耗,本质上是「100 万窗口加高推理强度加晚触发压缩」叠加的结果。解法不在外部,而在 dsh 自带的推理等级、compaction-basic、工具输出修剪器和缓存指标里。本文配置字段以 deepseek-ai/deepseek-harness 仓库 2026 年 9 月的文档为准(最新版本 dsh-v0.1.7-rc.2,仍处开发者预览阶段,字段可能调整),价格以 DeepSeek 官方价格页为准。
延伸阅读
DeepSeek Harness 仓库:github.com/deepseek-ai/deepseek-harness
会话压缩插件文档:github.com/deepseek-ai/deepseek-harness/tree/main/packages/compaction/compaction-basic
模型与推理等级配置指南:github.com/deepseek-ai/deepseek-harness/blob/main/docs/user/guide/providers.zh.md
DeepSeek 官方价格:api-docs.deepseek.com/zh-cn/quick_start/pricing
七牛云 Token Plan(deepseek最低1.2折):https://www.qiniu.com/ai/plan