返回 DSH Guides

DeepSeek Harness 架构指南

DSH Plugin、Bundle 与 Profile 是什么关系?

理解 DeepSeek Harness 如何组合插件:Plugin 负责什么行为,Bundle 如何分发配置,Profile 启动什么组合,以及这些 Patch Layer 最终怎样构成真实运行的 Plugin Tree。

DeepSeek HarnessDSH PluginsDeveloper Preview

Plugin = 行为

通过 Context 注册 Tool、Service、Event、Provider、UI、Policy、Storage 等能力。

Bundle = 分发层

通过 dsh.bundle 指向 Patch,把一组 Cordis 配置行作为 Package 分发。

Profile = 启动组合

声明 Bundle 顺序和本地 Plugin Dependencies,形成一个独立 Harness Runtime。

本文目录+
01

“Everything Is a Plugin” 为什么重要

DeepSeek Harness 不是固定应用 Core 外面再加插件。Model Adapter、Tool Registry、Session Log、Agent Loop、Runtime Service、Web App、Policy 等都通过同一套 Cordis Plugin Composition 挂载。

因此扩展 Harness 通常是把新的 Plugin 加到 Tree 里,或者替换已有 Provider,而不是修改一个无法替换的核心。插件拥有的注册行为会随生命周期卸载。

02

什么是 DSH Plugin

在 Framework 层,Plugin 是获得 Cordis Context 并注册行为的代码。常见 Function Form 会导出 apply(ctx),需要依赖其他 Service 时通过 inject 声明。

Plugin 不等于“模型 Tool”。它也可以是 LLM Adapter、Filesystem Provider、Shell Backend、Background Job、Approval Policy、UI Renderer、Command 或其他 Extension Point。

Consumer

消费 Context 上已经存在的能力。

Provider

实现其他 Plugin 可以消费的 Service。

Observer / Policy

监听生命周期或能力事件,控制、观察或改写执行。

03

什么是 DSH Bundle

Bundle 是 Cordis 配置行及其挂载代码的分发形式。Package Manifest 通过 dsh.bundle 声明自己,并指向贡献这个 Bundle Layer 的 Patch 文件。

Bundle 的关键不是把配置封死,而是让它继续可组合:Bundle 插入的 Row 仍然可以被更高层的 Profile/User Patch 修改。

Bundle Metadata
{
  "dsh": {
    "bundle": {
      "patch": "./cordis.patch.yml"
    }
  }
}
04

什么是 DSH Profile

Profile 是保存在 Harness Home 下的命名组合。它声明要按顺序堆叠哪些 Bundle,同时保存这个 Profile 安装的外部 Plugin Dependencies 和自己的 cordis.patch.yml。

官方 Web 与 Headless Profile 会按模板自动初始化;TUI 或特定工作流可以有独立 Profile,因此它们不必跟 Web 使用同一套扩展。

Profile Metadata 结构
{
  "dsh": {
    "profile": {
      "bundles": [
        "@deepseek-ai/dsh-base",
        "@deepseek-ai/dsh-web-app"
      ]
    }
  }
}
05

启动时这些 Layer 按什么顺序合成

Harness 从空 Entry List 开始组合。先按 dsh.profile.bundles 的顺序应用 Bundle Patch,再应用 Profile 自己的 Patch、Harness Home 的 Patch,最后才是命令行 --patch Overlay。

1. Bundle Layers

按 dsh.profile.bundles 声明顺序依次应用。

2. Profile Patch

当前 Profile 的 cordis.patch.yml。

3. Home Patch

$DSH_HOME/cordis.patch.yml 的机器级覆盖。

4. CLI Overlay

本次启动额外传入的 --patch,位于最上层。

更高层可以替换已有 Row 的配置,也可以插入新 Row,因此 Bundle 提供的默认行为仍然可以定制。

06

Web、Headless 与自定义 Profile 的差异

dsh-base 提供多个 Profile 共用的基础 Harness 能力,例如模型适配、Tool、Persistence、Sandbox、Approval Policy、Settings、Credentials 和 Telemetry。不同 Profile 再堆叠各自需要的 Surface Bundle。

Web

在 Base 之上加入 Web App Bundle,形成浏览器界面和对应 Client/Runtime Plugins。

Headless

在 Base 之上加入 Headless Runner,执行一次任务并退出,不需要 Web Server。

自定义 / 社区 Profile

可以组合其他 Bundle,并为 TUI 或特定工作流安装不同的外部插件。

07

如何查看自己机器真正启动的 Plugin Tree

当插件行为与预期不同,不要只盯着 package.json 推断。直接 Dump 最终 Composition,可以看到选中 Profile 和所有 Patch Layer 应用后的真实配置。

查看 Web Profile 最终配置
dsh --profile web --dump-config
只查看默认 Bundle Layer
dsh --profile web --dump-default-config
  • 确认目标 Plugin Row 是否存在,并判断它来自哪个 Layer。
  • 检查更高层 Patch 是否替换了 Bundle 中的配置。
  • 比较不同 Profile,不要假设一次安装会影响所有 DSH Surface。

一手资料

本文以 DeepSeek AI 官方 Harness 仓库与当前开发文档为主要依据;由于 Harness 仍处于 Developer Preview,具体命令与契约以后续官方版本为准。

DSH Guides

继续阅读 DSH 插件指南

按 Profile 与能力浏览插件

DSH 插件安装指南

如何安装 DeepSeek Harness 插件

把 DSH Plugin 安装到正确的 Profile,理解 npm 与 GitHub 安装目标,检查最终插件树,并用明确的方式卸载和排查插件,而不是只看“安装成功”就默认已经生效。

阅读指南

DSH Web UI 使用指南

DSH Web UI 使用指南:启动、登录报错与手机访问

DSH Web UI 是 DeepSeek Harness 官方的网页界面,一条命令就能打开,在浏览器里和 Agent 对话、改代码、跑命令。下面从启动讲到第一次配置、登录报错、手机和局域网访问,再到常用的增强插件,每一步都对照官方源码和文档核实过。

阅读指南

DeepSeek Harness Skill 指南

DeepSeek Harness Skill 安装、目录与调用方法

DeepSeek Harness Skill 是写给 Agent 的操作说明:放进指定目录,Agent 会在合适的时候自己读,你也可以用 /名字 直接调用。下面讲清 Skill 和插件的区别、该放哪个目录、SKILL.md 怎么写、装了不显示怎么办。

阅读指南

DeepSeek Harness 皮肤指南

DeepSeek Harness 皮肤推荐与换肤教程

DeepSeek Harness 官方只带浅色、深色和跟随系统三种外观,想换鲸鱼娘、动态壁纸或毛玻璃,就要装社区做的皮肤插件。下面按风格整理热门皮肤,星数实时读取,并讲清网页版和桌面版怎么安装、怎么切换、出了问题怎么恢复。

阅读指南

DeepSeek Harness 插件推荐

DeepSeek Harness 插件推荐:必装插件和按用途精选

插件太多不知道装哪个?这份 DeepSeek Harness 插件推荐先给出 5 个必装插件,再按用途分组精选。每张卡片的星数和安装命令实时读取,挑选标准和我们不推荐的热门插件也写在下面。

阅读指南

DSH 插件开发指南

如何开发一个 DeepSeek Harness DSH Plugin

从最小 Cordis Plugin 模块开始,注册真正的模型能力,把插件打包成可安装的 DSH Bundle,验证完整加载链路,并按照当前 DeepSeek Harness 生态方式发布。

阅读指南