上篇《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(明文密钥)

六、两个安全提醒

  1. 本地 UI ≠ 本地推理:浏览器界面跑在本地,但模型仍调远程付费 API。开工前确认 baseURL 指向哪。
  2. 慎用 danger-full-access:它会绕过文件系统沙箱,只在完全可控环境用;凭证文件当密码管(chmod 600,绝不 git add)。

莱驰云AI实战课堂。优化不是"少调几次",而是把缓存命中率、思考开关、时段、上限四道阀门一起拧对。数据以 DeepSeek 官方文档与你本人控制台为准。