上篇《Deepseek Harness采用默认deepseek API接入的坑有多大》讲了"为什么贵"。本文从技术角度,手把手把默认接入调成"省钱模式"——每一项都是可在
~/.dsh/settings.yaml里落地的真实配置。数据口径:DeepSeek 官方文档 api-docs.deepseek.com(2026-08-17 峰谷调价后);Harness 配置来自官方 docs(deepseek-harness.github.io)与实测。
一、先看清钱花在哪:三个价格杠杆
DeepSeek API 的费用由三项决定,优化也围绕这三项展开:
| 杠杆 | 默认接入的"坑" | 优化后 |
|---|---|---|
| 前缀缓存命中率 | 前缀每步变 → 全"未命中",单价 ×30 | 固定前缀 → 命中 >80%,单价 ÷30 |
| 思考(reasoning) | 默认 enabled,推理 token 按输出计费,输出暴涨 |
简单任务关思考,输出 ↓30–80% |
| 时段 | 上班时间(北京 9–12、14–18)恰是高峰 | 长任务排低谷,单价 ÷2 |
实测参考:社区一次 ISS 追踪器任务消耗约 2000 万 token,缓存命中率高能显著摊薄;命中 vs 全程未命中,整体账单差 4–5 倍(量级参考,非精确基准)。
二、核心技术设置(逐项可落地)
2.1 稳定前缀 → 自动命中 Prompt Cache(最关键的杠杆)
DeepSeek API 原生支持前缀缓存:只要请求里"最前面的一段"(通常是 system prompt + 你固定的长文档/规则)在多轮之间不变,这段就会被缓存并按"命中价"计费——命中价比未命中便宜约 30 倍。
Harness 默认会把 system prompt 等固定内容放在上下文最前。你要做的不是加什么 cache 注解,而是"别动前缀": - 系统提示词、固定的项目规则、长参考文档放在最前且保持不变; - 不要把每轮变化的用户内容插到 system prompt 之前; - 多轮对话里避免在前缀里拼接时间戳、随机 ID 等易变内容。

怎么验证:Harness Web UI 实时显示 缓存命中率。跑一轮长任务,看命中率是否 >80%;偏低说明前缀在变,回去调 prompt 结构。
2.2 关掉不必要的"思考模式"
V4 默认开启思考(thinking: enabled),推理过程产生的 token 按输出计费,简单任务也会暴涨。
在 settings.yaml 里关掉或降级:
# ~/.dsh/settings.yaml (Windows: %USERPROFILE%\.dsh\settings.yaml)
llm-deepseek:
apiKeyEnv: DEEPSEEK_API_KEY
baseURL: https://api.deepseek.com
thinking: disabled # enabled | disabled —— 简单任务直接关
reasoningEffort: off # off | high | max —— 复杂任务用 high,日常用 off
maxTokens: 32768 # 见 2.3
原则:分类、抽取、改写、正则匹配这类任务关思考;架构设计、复杂调试才开 high。
2.3 显式设 maxTokens 上限,防循环失控
默认输出上限在不同文档里从 32,768 到 256,000 不等,且 Agent 循环可能一直"续写"。务必显式设一个上限:
maxTokens: 32768 # 单次请求最大输出 token;长文档生成再调大
配合应用层预算上限(如脚本监控单会话费用),可彻底避免"跑飞"。
2.4 选对运行模式,省轮次也省上下文
Harness 四种模式,默认"标准模式"工具最全、首轮上下文也最长。按任务选:

| 模式 | 特点 | 何时用(更省 token) |
|---|---|---|
| PTC(程序化工具调用) | 模型生成一段 TS 代码一次性编排多步工具调用 | 批量搜索/读取多文件再统计——把 5 次往返压成 1 次 |
| 极简(Minimal) | 仅 bash + 文件编辑 | 固定条件的轻量自动化、基准测试,首轮上下文最短 |
| 标准(Standard) | 完整工具栈 | 日常开发默认,但简单任务会多走几步 |
| 创造(Creator) | 运行时实验插件 | 二次开发,非常规使用 |
经验:批量/分支任务优先 PTC;纯命令行轻活用极简;别什么都用标准模式。
2.5 长任务排低谷:用 headless + 定时
峰谷定价下,低谷(北京 0–8 点)价格为高峰 ÷2。把批量任务用 headless 模式丢给定时执行:
# 适合 CI / 定时任务 / 脚本化;当前目录即工作区
dsh --profile headless "总结当前仓库并生成改动清单"
配合系统定时(cron / 任务计划程序)把重活挪到凌晨,单价直接减半。
2.6 盯住缓存命中率,而不是只看总价
Harness 界面实时给出:缓存命中率、tokens/秒、轮次、输入/输出 token。缓存命中率是第一指标——它比"这次花了多少"更能预示长期成本。
三、一份可直接用的 settings.yaml
# ~/.dsh/settings.yaml
llm-deepseek:
apiKeyEnv: DEEPSEEK_API_KEY
baseURL: https://api.deepseek.com
thinking: disabled # 日常关思考;复杂任务改 high
reasoningEffort: off
maxTokens: 32768 # 显式上限,防失控
defaultContextWindow: 1048576 # V4 完整窗口 1M;默认常被截到 262144
models:
- id: deepseek-v4-flash # 日常性价比首选
- id: deepseek-v4-pro # 仅难题用

改完配置,模型层变更下次请求即生效;若改了插件/provider 结构则需重启
dsh web(Ctrl+C 后重跑)。
四、优化前后对比(量级参考)
| 项 | 默认接入 | 优化后 | 降幅 |
|---|---|---|---|
| 缓存命中率 | 低(前缀易变) | >80% | 输入单价 ÷30 |
| 思考 | 全开 | 按任务开关 | 输出 ↓30–80% |
| 时段 | 高峰 | 低谷排程 | 单价 ÷2 |
| 上限 | 无 | maxTokens 设死 | 失控风险→0 |
| 整体账单(实测量级) | 基准 | — | 约降 50–80% |
五、落地检查清单
- [ ] 系统提示词/长文档固定在最前且不变(保前缀缓存命中)
- [ ]
thinking: disabled+reasoningEffort: off(复杂任务才开 high) - [ ]
maxTokens显式设上限 - [ ] 批量任务用 PTC 模式,轻活用极简模式
- [ ] 重活排低谷(headless + 定时)
- [ ] 跑一轮看 UI 缓存命中率 >80%
- [ ]
DEEPSEEK_API_KEY走环境变量,.credentials.yaml不进 Git(明文密钥)
六、两个安全提醒
- 本地 UI ≠ 本地推理:浏览器界面跑在本地,但模型仍调远程付费 API。开工前确认
baseURL指向哪。 - 慎用
danger-full-access:它会绕过文件系统沙箱,只在完全可控环境用;凭证文件当密码管(chmod 600,绝不git add)。
莱驰云AI实战课堂。优化不是"少调几次",而是把缓存命中率、思考开关、时段、上限四道阀门一起拧对。数据以 DeepSeek 官方文档与你本人控制台为准。





