第 13 章 · Profile、Bundle 与「第五种模式」

本篇目标:不改源码,造出一个属于你的运行时。 这是 DSH 相对其他 Harness 最独特的一层,也是「大师级」的分界。


13.1 插件树:一个运行中的 dsh 到底是什么

官方 docs/architecture.md:

A running dsh is a plugin tree composed at boot from ordered layers.

三个概念:

概念 定义
Profile 存在 Harness home 里的具名组合。列出它堆叠的 bundles、持有的 out-of-tree 插件、以及用户自己的 cordis.patch.yml。web / headless / sdk / sdk-minimal / acp 是随附模板
Bundle Cordis 配置行 + 所挂载代码的分发格式。它插入的每一行仍可被上层 patch
Patch 按 row id 定位,整体替换该行配置或插入新行;preset patch 在 config.plugins 内做同样的事

每个包在自己 package.json 的 dsh 字段里声明:dsh.profile 列出 bundles,dsh.bundle 指向 patch 文件。

层叠顺序(后者覆盖前者):

空 entry list
 → profile 的 ordered bundles
 → profile 自带的 cordis.patch.yml
 → Harness home 的 patch
 → --patch overlays

官方 随附 bundles:

Bundle 提供
dsh-base web / headless / sdk / acp 共享的第一层:模型适配器、工具、持久化、沙箱与审批策略、设置、凭据、遥测
dsh-web-app 浏览器应用
dsh-headless 一次性 runner,无 server
dsh-sdk-app SDK JSON-RPC server
dsh-acp-app automation-only ACP server
dsh-sdk-minimal 刻意例外:单个 bundle 拥有完整显式 SDK 树,不套 dsh-base
dsh --profile web --dump-config      # 打印本机真实启动的整棵树

原文:"Any row it prints can be replaced by a patch of your own." —— 这就是「配置层自由组合」的全部含义。


13.2 一个最小 patch 的心智模型

官方 patch 以 row id 定位、整行替换或插入。下面是示意结构(字段名以 reference/config-catalog.md 生成目录为准,动手前 dump 核对):

# cordis.patch.yml —— 示意,非可直接运行的完整配置
- id: dsh-tool-web-search
  config:
    enabled: false            # 关掉联网搜索,缩小攻击面与提示词体积
- id: custom-sidebar-plugin
  config:
    package: "@you/dsh-usage-panel"
    inject: ["sessions", "tokenMeter"]

三类常见改法:

目的 改什么 对应章节
砍工具降固定开销 禁用若干 tool row 09
换模型适配器 替换 ctx.llm provider row 12
收紧沙箱 / 审批 改 sandbox 与 approval 配置行 17
加自研 UI / Tool 插入新 row 12
换持久化后端 替换 SessionPersistence provider 03

判据 17:能看懂 --dump-config 输出、并能用 patch 精确替换其中任意一行,才算真正「拥有」这个 Harness。只会点设置页的人,仍在 inner harness 里。


13.3 第五种模式:把试验固化为预设

原文 创造模式的进阶路径:

检查运行时 → 加载与测试插件 → 观察服务与依赖 → 调整组合 → 固化为新的预设模式

产出例子:写作模式、数据分析模式。原文 那句「从此你就不只是在用 DSH,你是在用『你的 DSH』」,工程含义是:预设 = 一份可版本化、可分发的 Harness 配置。

一个「写作模式」该长什么样(推断 设计建议,需自行验证):

维度 取舍
工具集 保留文件读写与检索;关掉 shell、子 Agent、定时任务(降低固定开销与误操作面)
系统提示词 换成写作向 section,注入术语表与风格指南
Skills 按需加载素材库、引用规范、事实核查清单
审批 写文件仍需审批;外部发布动作强制人工 gate
沙箱 只读仓库根,写仅允许 drafts/
观测 记录每轮 token 与素材引用来源

一个「数据分析模式」则相反:保留 PTC、只读并行、沙箱内 Python,关掉 UI 相关插件。

模式的本质不是「换个提示词」,是换掉整个能力集合与约束集合。 这正是第 05 章「四种模式不是等级」的推广。


13.4 预设的工程纪律

纪律 理由
预设进 git,与代码一起 review Harness 是资产,不是本地偏好
每个预设固定 DSH 版本 官方 developer preview 会有 breaking change
用 --dump-config 做变更后回归 patch 层叠顺序易错,看真实树而非看 YAML
预设至少跑通一个端到端用例 配置正确 ≠ 行为正确
记录「为什么关掉某工具」 否则半年后没人敢删,退化成新的固定开销
关闭 HMR 的场景要明确 官方 headless / sdk / acp 默认禁用,sdk-minimal 不含

官方 还有一条容易踩的:plugin 是管理命令名,若有同名 profile,必须写 --profile plugin。


13.5 从 DSH 迁移到任意 Harness

把这一章抽象成通用清单,任何框架都适用:

能力 追问
组合可描述 我的运行时能否用一份配置文件完整表达?
组合可观测 能否 dump 出实际生效的树?
组合可覆盖 上层配置能否替换任意一行而不改源码?
依赖可声明 组件能否声明依赖,由运行时决定启停?
变更可热更 改配置是否需要重启?是否有 HMR?
卸载可撤销 进程内注册能否自动回收?
版本可锁定 配置与运行时版本是否解耦、可分别固定?

七问全答得上来,你就能在 Claude Code / Codex / LangGraph / 自研运行时里复刻同一套工程方法——具体文件名不同,结构完全同构。这也是本系列不止讲 DSH 的原因。


13.6 本章产出与验收

核心产出:一个自定义预设(如 writing),含 patch 文件、dump-config 前后 diff、一个端到端用例、一份 README 说明每个取舍的理由。

验收点:

  • 能画出 profile → bundle → patch → overlay 的层叠顺序并指出覆盖方向
  • 能解释 dsh-sdk-minimal 为何不套 dsh-base
  • 能用 patch 精确关掉一个工具,并在 dump 输出中验证
  • 能说出预设与「换个提示词」的三点以上区别
  • 能用 13.5 的七问评估另一个 Harness 框架

延伸阅读

来源 URL 等级
DSH 架构 · Profiles and bundles / Application launch https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/architecture.md 官方
官方文档 · 插件配置生成目录 https://deepseek-harness.github.io/deepseek-harness/reference/config-catalog 官方
官方文档 · 子系统总览 https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/ 官方
官方文档 · 扩展模式 Cookbook https://deepseek-harness.github.io/deepseek-harness/reference/cookbook/extension-cookbook 官方
官方文档 · 组合与热重载(Cordis 教程 06) https://deepseek-harness.github.io/deepseek-harness/develop/cordis-tutorial/06-composition-and-hmr 官方
官网 · 配置层自由组合 https://www.deepseek.com/harness/zh/ 官方
原文(固化第五种模式) https://mp.weixin.qq.com/s/rsfp0Kie5xlDOKDsE3Fqvw 原文
本系列为本站原创教程,基线为微信公众号《DeepSeek Harness 最新高阶指南》(2026-11-05),并汇总 DeepSeek 官方仓库与文档站、Cordis / arXiv:2608.25512、以及 OpenAI / Anthropic / LangChain / Martin Fowler 等一手资料。每条引用均标证据等级,完整清单见 附录 B;未定位到一手来源的线索单列,未编造补位。DeepSeek Harness 为 developer preview,官方 SAFETY.md 明确「未经过安全审计、不得视为生产就绪」,命令与配置键可能随版本失效。资料截止 2026-11-06。姊妹篇:《FDE 入门到精通》。