第9讲 · 配置补丁实战

《DeepSeek Harness 从上手到精通》系列 · 第三阶 配置组装篇

🎯 目标:用 YAML 补丁完成常见定制,体验"给产品换脑" 难度 ★★☆ ⏱ 约 25 分钟 前置:第 8 讲 配置树

系列基于 deepseek-ai/deepseek-harness0.1.0-rc.5,MIT)。上一讲我们看清了"配置是怎么叠出来的",这一讲直接上手:不写一行代码,用一份 patch.yml 把 dsh 改成你想要的样。preview 阶段字段名可能微调,认准"层级 + 路径"思路即可。


一、补丁是什么:一份声明式的"差异"

补丁(patch)不是"完整配置文件",而是相对于基础配置的一小段"差异"。它只说"我要改哪几个点",其余全部沿用第 8 讲那棵合并树。好处是:补丁短、可读、可版本管理、改错了删掉就还原。

YAML 补丁叠加覆盖配置
图 1 补丁像一张半透明覆膜,只遮住并改写它声明的那几行,其余透出底层默认。

最简单的补丁长这样——它只做一件事:把默认模型换掉。

# my.patch.yml model: deepseek-reasoner # 只改这一行,其余沿用默认

二、实例 1:替换默认模型 / 调整模型参数

最常见需求:换基座模型,或调温度、最大 token 等参数。在补丁里声明 modelmodelParams 即可:

# model.patch.yml model: deepseek-chat modelParams: temperature: 0.3 # 调低,更稳更可控 maxTokens: 8192

参数名请以你本机 --dump-config 中的真实键名为准;不同预览版本可能叫 temperature / max_tokens 等,先 dump 再补丁最稳妥。

三、实例 2:禁用某个内置工具(从注册表摘除)

不想让模型碰某个工具(比如不希望它随意联网、不希望它改文件)?从工具注册表摘除即可。补丁里列出要禁用的工具名:

# disable-tools.patch.yml tools: disable: - web_search # 摘除联网搜索 - edit # 摘除文件编辑

这一招在"只读分析"场景特别实用——把写类工具全摘了,模型就只能看、不能改,安全又省心。注意:它改的是工具可见性,不是审批策略(第 10 讲会讲更细的把关)。

四、实例 3:修改系统提示词片段

想给模型加一句"人设"或"约束"?补丁可以对系统提示词片段做追加/覆盖。常见写法是声明一个 systemPrompt 片段:

# system.patch.yml systemPrompt: append: | 你是一名严谨的中文技术助手,回答前先给出结论, 再展开论证;涉及命令时务必标注风险等级。

系统提示词由 system-prompt 包动态组装(第 5 讲提过),补丁只是往这个流水线里塞一段。具体键名(append / prepend / set)以你版本为准。

五、作用顺序与优先级规则

多个补丁叠加时,遵循"越靠后、越靠用户侧,优先级越高"的总原则(回顾第 8 讲的四层模型):

  • bundle 默认 < profile patch < home 级 < --patch(即时覆盖最高);
  • 同一层里若传了多个 --patch a.yml b.yml,后者覆盖前者;
  • 改错回退--patch 类错误——直接去掉参数重启即可;落盘的补丁——删文件或注释掉对应行即可,无需重装。

六、动手练习:一份 3 改动的个人 patch.yml

本讲产出:写一份含 3 个改动、注释完整的个人 patch.yml,并真正用 --patch 让它生效。

# my-profile.patch.yml model: deepseek-chat # 改动①:换默认模型 modelParams: temperature: 0.4 # 改动②:调低随机性 tools: disable: - web_search # 改动③:关掉联网 --- # 启动并加载这份补丁 dsh web --patch my-profile.patch.yml

打开 Web UI 发一句话,确认模型已切换、回答更稳、且模型不再尝试联网搜索——三项改动同时生效,就是"换脑"成功。

七、常见坑

  • 补丁不生效:先 --dump-config 看真实键名,八成是键名拼错或被更上层覆盖;
  • YAML 缩进报错:用空格不用 Tab,append: | 后面要换行缩进;
  • 禁用工具后模型"变傻":它可能改用别的方式达成目标,属预期;想要更精细控制请看第 10 讲审批;
  • 多个补丁互相打架:逐个加载、用 --dump-config 观察最终合并结果,别凭直觉;
  • 把补丁当完整配置写:补丁只需写"差异",写全量反而容易覆盖掉不该动的默认值。

八、官方文档对应章节

  • README 中 --patch 与 Configuration 章节;
  • docs/ 中 profile、cordis.patch、tools 注册表相关章节;
  • 衔接第 8 讲配置树:本讲每个补丁都对应树上的某个节点路径。

本讲内容基于 DeepSeek Harness 官方文档与项目源码整理,仅供学习参考,具体命令与配置请以官方最新版本为准。系列文章配合源码仓库食用效果更佳:https://github.com/deepseek-ai/deepseek-harness

咨询 DeepSeek Harness 相关问题,请加微信:A0qingfengyuan_01

个人观点,仅供参考,如有不对之处,请多包涵,欢迎指出。本文由 AI 协助完成!