DeepSeek Harness 配置指南:Profile 切换、Patch 覆盖与 Agent Preset 详解(2026)
深入理解 DeepSeek Harness(dsh)配置体系:Bundle 基础层、Profile 多环境组装、Patch 细粒度覆盖与 Agent Preset 调度,掌握 cordis.patch.yml 编写规范。
最近更新: 2026-09-14
一切都是一棵插件树
运行中的 dsh 不是一个"自带一堆功能的程序",而是一棵插件树——启动时由层层配置组装出来的 Cordis 插件系统。每一项能力(工具、模型接入、存储、沙箱、UI、主循环)都是树上的一个插件,而配置层决定了存在哪些插件、以什么顺序存在。
这就是全部的心智模型。剩下的篇幅就是把每一层拆开讲。
从底层到顶层的各层
配置按固定顺序叠加,上层覆盖下层:
┌─────────────────────────────┐
│ Patch(你的覆盖层) ← 优先级最高
├─────────────────────────────┤
│ Profile(你的具名组装清单)
├─────────────────────────────┤
│ Bundle(官方插件组合包)
└─────────────────────────────┘
- Bundle(组合包) —— 官方发布的成套插件。第一次启动时的默认体验就是一个 Bundle。
- Profile —— 你机器上的具名组装清单,内容是"加载哪些 Bundle 和插件、用什么设置"。可以保留多套、随时切换。
- Patch(覆盖层) —— 你自己的修改层。可以精确定位到任意一个插件条目并替换,不动它所属的 Profile。
因为每一层都只是配置,分享一套环境就是分享几个文件——把 Profile / Patch 文件发给你,就等于把"他的 dsh"交给你。
Patch 层:给 Agent 装能力的装扮系统
内置 Patch 层是 dsh 最不像其他 Agent 的部分。把它理解成一套装扮系统——你决定智能体"穿"上哪些能力,以及在什么条件下生效:
- 把本机 Agent 挂成子 Agent。 你电脑上的 Codex 和 Claude Code 可以注册为 Harness 调度的子 Agent,而不是被替换掉的竞品。
- 接入各种能力。 安装插件来添加工具、接入外来的服务、调整运行权限、开启全文搜索。
- 替换 UI。 界面模块同样是插件——皮肤、面板甚至整个 UI 组件都能通过 Patch 换掉。
- 规则按条件生效。 规则用 JavaScript 表达式定义,让能力只在你想要的地方生效:某个仓库、某类文件、某个时间段。
Patch 精确到单个插件条目,所以上面每一项都是一个可加、可查、可移除的覆盖,不动它下面的 Profile。
为什么"装插件"其实是改配置
dsh 没有那种"一键安装、从此不管"的中央包管理器。安装插件意味着往 Profile / Patch 层里加一条记录,插件仓库的 README 会给出确切的那一行。下次启动时插件进入插件树;卸载时,它注册过的一切自动撤销——注册必须是可逆的副作用,所以坏插件也留不下残余(见插件开发入门)。
插件到底装在哪:磁盘路径一览
正因为"装插件"只是改配置,几乎没有东西会被复制进某个隐藏的系统目录。安装真正做的事,是往 Profile 里写一条依赖记录——而每个 Profile 就是一个你可以直接打开、查看、备份的普通目录:
| 内容 | 位置 |
|---|---|
| Profile——安装记录(依赖条目)真正的落点 | ~/.dsh/profiles/<name>(Windows:%USERPROFILE%\.dsh\profiles\<name>) |
| 查看当前 Profile 的实际路径 | dsh plugin --profile web list,会同时打印依赖条目和 Profile 目录(标记为 PRIVATE) |
| Patch 覆盖文件 | 项目内 .dsh/cordis.patch.yml;全局则为 ~/.dsh/cordis.patch.yml |
| Skills | 项目内 .dsh/skills/<name>/ |
| 手动添加的插件 | 项目里的普通文件夹,由 Profile 条目引用 |
| 会话、密钥、插件数据 | ~/.dsh/(例如记忆类插件的数据库在 ~/.dsh/memory/ 下) |
dsh 程序本体 | npm 全局目录(npm install -g @deepseek-ai/dsh)——并不在 ~/.dsh 里 |
顺着这个布局有两个实用习惯。第一,找不到某个插件时,先列 Profile 再翻文件系统:dsh plugin --profile web list 会告诉你这份 Profile 里到底有哪些依赖条目、它又是从哪个目录读到的。第二,备份或分享一套环境就是复制文件:一个 Profile 目录加一个 Patch 文件就是全部。反过来,想彻底清空也是删这些路径(见卸载插件与彻底清理)。
Agent Preset:一个会话的形状
界面顶部的模式选择器,选的是 Agent Preset(智能体预设)——当前会话里智能体的完整定义:
- 拥有哪些工具;
- 什么样的系统提示词;
- 加载哪些 Skills;
- 子代理与工作流的配置。
预设不是"插件清单 + 一段提示词",而是整个会话赖以运行的契约。所以会话一旦产生内容就锁定预设——中途切换会让历史里的工具调用无法被新工具集解释。
四个内置预设:
| 预设 | 工具 | 适合 |
|---|---|---|
| 标准(Standard) | 完整的编程助手:理解需求、修改代码、运行命令并检查结果 | 日常写代码和调研 |
| PTC | 标准模式的一切 + 程序化工具调用:用 TypeScript 小程序把多步操作组合成自动化流程 | 批量机械步骤,更省上下文 |
| 极简(Minimal) | 只有持续可用的终端和基础文本替换工具 | 简单的改动、基准测试、教学 |
| 创造(Creation) | 标准模式的一切 + 运行时检查、尝试插件、用预设完成创作类任务 | 设计你自己的预设 |
打造自己的预设
创造模式(Creation) 是设计新预设的正规途径:直接描述需求("一个只读的代码审查员,绝不改文件,用中文回答"),Harness 会检查当前运行时、在内存里试验插件、起草配置、挂载验证,最后保存下来供复用。
想要实战版?逐帧核对的图文教程自定义 Agent 预设实战完整走一遍——从创造模式到保存可用预设,每一步都有截图。
官方文档里的两句提醒值得重复:
- 创造模式会执行模型写的代码并修改运行时——信任等级等同 shell;
- 预设就是配置,把它设为默认之前,先检查它到底保存了什么。
什么时候该停止折腾配置
最舒服的默认是:用标准模式,几乎什么都不改。 只有当你反复需要同一套环境(团队共享一个 Profile)、想给某类工作固定工具箱、或者只想换掉一个组件(换模型接入、收紧审批策略)时,才去动 Profile 和 Patch。上层覆盖层的存在,就是为了让你只改一处、不必推倒重来。
继续阅读
- 2026 必装插件排行榜 Top 10 与一键场景套件 —— 一键配置高频插件组合
- 2026 必装插件推荐指南(12 款首选)
- 按场景探索精选合集
- 安全地安装插件
- 卸载插件与彻底清理 —— 移除单个插件、卸载 harness 本体或清空
~/.dsh - 沙箱、审批与密钥 —— 这些配置层接入的安全模型
- 快速上手:5 分钟跑通 dsh
- dsh plugins 生态盘点
