DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Bundle、Profile 与 Patch 如何组合 DSH — DSH Plugin Hub Docs
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
全部文档

开始使用

用环境预设分发精心打磨的 Agent Harness写你的第一个 DSH 插件

架构与原理

DSH 的 Cordis 插件模型从 Service 到完整的 Agent 能力Bundle、Profile 与 Patch 如何组合 DSH为什么 DSH + Cordis 如此特别

构建与发布

插件 HMR 不工作发布后搜不到插件

故障排查

插件安装失败排查DSH 版本不兼容处理 ERR_PNPM_IGNORED_BUILDSCordis 启动失败排查环境预设找不到或无法解析DSH Web UI 空白页排查localhost:3080 无法访问
Plugin Hub/文档中心/架构与原理

架构与原理

Bundle、Profile 与 Patch 如何组合 DSH

沿着 Plugin、Bundle、Profile 到最终 Cordis 树,理解 DSH 的安装、覆盖顺序、热重载和可检查性。

由 Plugin Hub 社区维护5 个章节
你将了解

沿着 Plugin、Bundle、Profile 到最终 Cordis 树,理解 DSH 的安装、覆盖顺序、热重载和可检查性。

Plugin、Bundle 和 Profile 是三种不同抽象

Plugin 是 Cordis 挂载的运行时单元。Bundle 是 npm 包形式的 patch layer,声明要向树中插入或覆盖哪些 Plugin rows。Profile 是本机 DSH Home 中的命名组合,保存有序 Bundle 列表、额外依赖和自己的 patch。

DSH 安装命令管理的是 Profile 目录里的依赖。依赖解析为声明 dsh.bundle 的包后,CLI 才把它加入有序 layer 列表;普通库可以安装,但不会自动成为运行时层。

Manifest 把包变成可组合层

Bundle 在 package.json 的 dsh.bundle.patch 中指向自己的 cordis.patch.yml。Profile 则在 dsh.profile.bundles 中保存 Bundle 包名,并把顺序作为组合的一部分。

这种设计让 npm、Git、path 或 tarball 负责代码分发与依赖解析,而 DSH 只读取明确的 manifest 和 patch,不重新发明包管理器。

json
{
  "dsh": {
    "bundle": { "patch": "./cordis.patch.yml" },
    "profile": {
      "bundles": [
        "@deepseek-ai/dsh-base",
        "@deepseek-ai/dsh-web-app"
      ]
    }
  }
}

组合从空树开始,后层拥有更高优先级

每次启动都从空 entry list 开始。DSH 依次应用 Profile 中列出的 Bundle layers、Profile 自己的 cordis.patch.yml、DSH Home 的全局 patch,再应用命令行 --patch overlays 和运行时开关。

Patch 通过稳定 row id 定位目标。后层可以插入新 row、禁用 row 或覆盖已有 row。针对 config 的覆盖替换整份 config,不做 deep merge,因此作者必须重述希望保留的字段。

yaml
- id: tools
  config:
    mode: both
    maxParallelSubCalls: 8

- insert:
    - id: team-policy
      name: '@acme/dsh-team-policy'

依赖关系决定激活,Patch 顺序决定最终配置

Bundle 顺序决定哪一层最后改写某个 row;它不负责手工安排 Plugin 的启动时刻。最终树形成后,Cordis 根据 inject 和 service availability 激活 Plugin。

这个区分让组合保持确定性:patch precedence 回答最终挂载什么和配置是什么,Cordis lifecycle 回答它何时可以安全运行。

配置既能检查,也能在长生命周期应用中重载

dsh --profile <name> --dump-config 会输出真正准备挂载的组合树,并标注 rows 来自哪些层。它是理解覆盖结果和排查缺失 row 的第一工具。

Profile patch 和 Home patch 在长生命周期 surface 上由 watcher 重新读取并重新组合。Cordis 用同一套 effect ownership 卸载旧 generation、挂载新 generation;命令行 overlay 始终保持在用户层之上。

bash
dsh --profile web --dump-config

dsh plugin --profile web add @acme/dsh-team-tools

继续阅读

继续阅读

架构与原理DSH 的 Cordis 插件模型从 Context、Service、inject 和可逆 effect 理解 DSH 为什么能把整个 Agent Harness 组装成一棵插件树。架构与原理从 Service 到完整的 Agent 能力了解 DSH 如何用 Service Definition、Provider、Consumer、事件和作用域,把一个功能做成可替换的完整能力。架构与原理为什么 DSH + Cordis 如此特别把可替换运行时、确定性组合和低门槛分发连成一个系统,理解这套方案真正的产品差异。

本页内容

概览Plugin、Bundle 和 Profile 是三种不同抽象Manifest 把包变成可组合层组合从空树开始,后层拥有更高优先级依赖关系决定激活,Patch 顺序决定最终配置配置既能检查,也能在长生命周期应用中重载