DeepSeek Harness profile 是什么?DSH plugin 具名组装与组合包说明

概念与架构发布于 2026-10-03作者: DeepSeek Plugin 插件市场
DeepSeek HarnessDSH pluginprofile组合包配置
DeepSeek Harness 用 profile 记录一份具名组装,里面保存着 cordis.patch.yml;组合包则是「Cordis 配置项 + 挂载代码」的分发格式,用 package.json 的 dsh.bundle 声明。搞清这两者,才知道启动时装的层从哪来、怎么改。

DeepSeek Harness 用 profile 记录一份具名组装,里面保存着 cordis.patch.yml;组合包则是「Cordis 配置项 + 挂载代码」的分发格式,用 package.json 的 dsh.bundle 声明(来源)。 这两个词经常被混着用:一个说的是「装哪些层」的清单,一个说的是「这一层怎么打包分发」的格式。把它们分清,才能看懂「启动时到底装了什么」「改配置该动哪个文件」。这篇只讲这两个概念是什么、彼此什么关系;怎么新建一个 profile 见《DeepSeek Harness 独立 profile 怎么建》,怎么发布一个组合包见《dsh plugin 组合包怎么发》,整棵树的分层见《DeepSeek Harness 架构是怎样的》。

DeepSeek Harness profile 是什么:名字加一套组装

DeepSeek Harness profile 是一份具名组装,记录启动时要装载哪些 DSH plugin 层以及各自的覆盖配置,它存放在 Harness home 里,并包含一个 cordis.patch.yml(来源)。 拆开这个名字里的三件事:

  1. 「具名」意味着一份 profile 对应一个名字:web、headless 这些名字,各自对应一份确定的层清单。启动时按名字取用,所以「换 profile」其实就是换一份清单、换一棵树。
  2. 「组装」意味着它本身不实现能力:profile 里没有工具、没有模型适配,它只做清单与覆盖;真正干活的是它装载的那些 DSH plugin。
  3. 「持久」意味着它落在磁盘上:profile 存在于 Harness home 中,因此你今天的改动、装过的插件,下次启动仍在;这也是为什么它和「一次性的命令参数」不是一回事。

理解这一点后,很多现象就顺了:为什么同一份 dsh 在不同 profile 下表现不同?因为它们的清单不同;为什么换 profile 像换了个软件?因为你换的是整棵插件树的组装方式。

一个 profile 里存了什么:覆盖清单与依赖记录

profile 里最核心的是一份覆盖清单——cordis.patch.yml;此外它还持有该组装的依赖记录,落在 profile 目录的 package.json 与 node_modules 里(来源)。 两类内容各管一段:

  1. cordis.patch.yml 管覆盖:它不重新定义插件,只对已声明的条目做补丁与调参——想把某个 profile 的某项行为调一调,通常改这里就够,不必去动任何一个 DSH plugin 的源码。
  2. 依赖记录管「装过什么」:你往这个 profile 装的插件,会以依赖的形式留在 profile 目录里,dsh plugin list 看到的就是这一层的口径,而不是仓库里的 devDependencies。
  3. 两者共同决定这棵树:清单(含覆盖)决定装哪些层、各层怎么配;依赖记录决定这些层的内容从哪来、装在哪个版本上。
  4. 可以派生:web、headless 这些是起点,不是上限——你完全可以在它们之上派生一份自己的 profile,把常用插件与配置预置好。

想亲手建一份自己的组装,走《DeepSeek Harness 独立 profile 怎么建》;概念之间的关系见《装插件前先懂的 5 个概念》。

组合包(bundle)是什么:配置项加挂载代码

组合包是 DeepSeek Harness 的一种分发格式,内容是「Cordis 配置项 + 挂载代码」,靠 package.json 里的 dsh.bundle 字段声明身份(来源)。 它和普通插件的关系,用四句话就能分清:

  1. 普通 DSH plugin 提供能力:它实现具体的工具、命令或服务,被 profile 装载后为整棵树增加一层能力;它关心的是「做什么」。
  2. 组合包提供一层组装:它把一组配置与挂载逻辑打包,关心的是「怎么把这组能力拼起来、按什么参数挂上去」。
  3. 声明方式不同:组合包靠 package.json 的 dsh.bundle 声明身份;没声明这个字段的包只是普通依赖,不会以整层方式激活。与之相邻的还有 dsh.profile 字段,用于指定该包与哪个 profile 相关。
  4. 一个组合包里可以组织多个插件:能力来自插件,层的组织来自组合包,两者分工不同——这也是为什么「装了插件」不等于「立刻生效」,还要看它有没有以组合包的身份进入清单。

想往某个 profile 里添一层,可在「设置 → 插件市场」即 DSH Plugin Hub 里找现成的包;发布一个组合包的写法见《dsh plugin 组合包怎么发》。

profile 与组合包怎么配合

在 DeepSeek Harness 里,两者的配合关系是「profile 点名、组合包供货」:profile 的清单决定要哪些层,组合包决定这些层的内容如何被组织与挂载。 用一个顺序串起来:

  1. 先有 profile:你选定或新建一份 profile,它给出要装载的条目清单。
  2. 组合包补充清单:安装一个声明了 dsh.bundle 的包时,它会被追加进 profile 的 bundle 清单,以整层身份参与启动。
  3. 覆盖清单做微调:启动前,cordis.patch.yml 再对各条目做覆盖,最终决定每一层的实际参数。
  4. 一起生成插件树:三者叠加后,才长出你在运行时看到的那棵树——这也解释了为什么「装插件」这件事,同时牵涉 profile、组合包和覆盖清单三个地方。

DeepSeek Harness 自带的 profile 模板

DeepSeek Harness 随发行版附带若干 profile 模板,常见的是 web、headless、sdk 与 sdk-minimal,另有 acp(来源)。 各自面向的场景:

  1. web:带图形界面,适合日常交互式使用;与 Web GUI 相关的层都在这棵树里。
  2. headless:无界面,适合脚本与自动化;不加载与界面相关的层,启动更轻。
  3. sdk:供程序嵌入调用,把 dsh 当作一个可编程的运行时。
  4. sdk-minimal:更精简的嵌入形态,适合按需启用能力,避免一次性拉起全部层。
  5. acp:面向协议接入的运行方式。
  6. 模板可以派生:这些模板是起点,不是上限;在它们之上派生自己的 profile,是预置常用插件与配置的常见做法。

理解 profile 与组合包的注意事项

把 profile 当「组装清单」、把组合包当「可复用的一层」,这两个概念就不会混。

  1. profile ≠ 插件:profile 是清单与覆盖,本身不实现能力。
  2. 改行为先看 cordis.patch.yml:多数调参在覆盖层完成,不必改插件源码。
  3. 组合包 ≠ 功能包:它组织配置与挂载,真正干活的是它装进来的插件。
  4. dsh.bundle 决定身份:没声明这个字段的包只是普通依赖,不会以整层方式激活。
  5. 依赖看 profile 层:仓库里的 devDependencies 与你无关,profile 目录里的记录才生效。
  6. 模板可以派生:web / headless / sdk / sdk-minimal / acp 是随发行版的起点。
  7. 装插件就是在加条目:搞不懂某插件装到哪了,就看当前 profile 的清单与依赖记录。

来源:DeepSeek Harness 官方文档 - 架构总览、官方文档 - Python SDK 指南。

常见问题

DeepSeek Harness profile 到底是个什么东西?

**DeepSeek Harness profile 是一份具名组装,记录启动时要装载哪些 DSH plugin 层以及各自的覆盖配置。** 它存放在 Harness home 里,并包含一个 cordis.patch.yml 保存这些覆盖;同一个内核可以在不同 profile 下叠出完全不同的运行环境。

cordis.patch.yml 在 profile 里起什么作用?

**cordis.patch.yml 是 DeepSeek Harness profile 里的覆盖清单,用来描述该具名组装的配置补丁。** 它不重新定义插件,只对已声明的条目做覆盖与调参;因此改 profile 往往只需要改这个文件,而不必去动任何一个 DSH plugin 的源码。

组合包和普通 DSH plugin 在分发和用法上有什么区别?

**组合包是 DeepSeek Harness 的一种分发格式,内容是「Cordis 配置项 + 挂载代码」,而普通 DSH plugin 是具体能力实现。** 组合包负责把一组配置与挂载逻辑打成可复用的一层,靠 package.json 里的 dsh.bundle 字段声明身份,装进 profile 后以整层的方式参与启动。

DeepSeek Harness 自带哪些 profile 模板?

**DeepSeek Harness 随发行版附带若干 profile 模板,常见的是 web、headless、sdk 与 sdk-minimal,另有 acp。** 它们分别面向图形界面、无界面脚本、程序嵌入与最小化嵌入等场景;你也可以在模板基础上派生自己的 profile。

普通用户需要自己搞懂 profile 与组合包才能正常装插件吗?

**普通用户不必手写 profile 与组合包,但懂一点点能让装插件和排查更顺。** 在 DeepSeek Harness 里装插件本质就是往当前 profile 加条目,出问题时知道该看 profile 的哪个文件,也能判断一个 DSH plugin 是以普通依赖还是组合包的身份被装载。

相关术语

profile
profile 是 DeepSeek Harness 的具名组装,决定启动时装载的层与覆盖配置;存于 Harness home,含 cordis.patch.yml。— DeepSeek Harness 官方文档 - 架构总览
cordis.patch.yml
cordis.patch.yml 是 profile 里的覆盖清单,对已声明条目做配置补丁,是调整一个 profile 行为的主要落点。— DeepSeek Harness 官方文档 - 架构总览
组合包(bundle)
组合包是「Cordis 配置项 + 挂载代码」的分发格式,通过 package.json 的 dsh.bundle 声明,安装后作为一层参与启动。— DeepSeek Harness 官方文档 - 架构总览
dsh.profile
dsh.profile 是包在 package.json 里可声明的字段,用来指定该包与哪个 profile 相关,是 profile 与包之间的一条显式关联。— DeepSeek Harness 官方文档 - 架构总览

来源