DeepSeek Harness 蓝皮书
用户指南

第三方插件

在 profile 中安装并使用第三方 dsh-plugin 插件包

第三方插件以 npm 包的形式分发,通过 dsh plugin 安装进某个 profile。安装后,插件包里声明的 cordis.patch.yml 会成为该 profile 组合中的一层。

安装与移除

dsh plugin --profile <name> <args...> 会在 profile 不存在时先初始化它,然后把 <args...> 原样转发给 pnpm(以 profile 目录为工作目录),因此 add、remove、update、why 等 pnpm 命令都能直接用;pnpm 需要在 PATH 上。

dsh plugin --profile tui add github:deepseek-harness/turtle-ui
dsh plugin --profile tui remove turtle-ui
dsh --profile tui

相对路径锚定到调用目录

相对路径规格(.、../plugin,以及它们的 file: / link: 形式)先锚定到调用目录,所以在一个插件 checkout 里执行 add . 安装的是该 checkout,而不是 profile。

先在 cordis.run 发现插件

cordis.run 是面向 DeepSeek Harness 的社区插件市场与目录,收录声明 dsh.bundle 的候选插件。它用于浏览、搜索、阅读安装与配置指引,以及复制与目标 profile 对应的安装命令;真正的安装、完整性核验与激活仍由 DSH / profile 工作流完成。

推荐流程:

  1. 在 cordis.run 搜索插件或使用场景;
  2. 阅读插件页的版本、依赖、环境变量与配置要求,并打开源码仓库核对维护者和许可证;
  3. 复制安装命令,或按相同格式在目标 profile 中执行:
dsh plugin --profile <name> add <package>
  1. 启动该 profile,确认插件实际加载并只授予所需凭据与权限。

市场收录不是安全背书

目录、自动扫描信号或安装指引不能证明插件安全。插件代码会进入你的 profile 组合;安装前仍需检查源码、依赖、许可证、网络访问和所需密钥,并优先在隔离 profile 中试用。

什么算一个插件组合包

一个包只要在 manifest(元数据清单)里声明了 bundle 关系,就会成为组合层栈中的一层:

{
  "name": "turtle-ui",
  "dsh": { "bundle": { "patch": "./cordis.patch.yml" } }
}

每次成功运行后,dsh.profile.bundles 会与已安装状态对账:

  • 声明了 dsh.bundle.patch 的依赖加入层栈(例如一次 update 让包新增了该声明,就会随之激活);
  • 没有声明 bundle 的依赖保持普通依赖,并给出一次性警告;
  • 被移除的依赖离开层栈。

安装好的包拥有自己的依赖,并贡献其声明的 cordis.patch.yml 层。

Git 托管插件与构建

自带源码、在 prepare 脚本里构建的 Git 托管插件,会被 pnpm ≥10 拦截,直到你允许构建:第一次 add 会失败,并给出 pnpm 的 allowBuilds 提示(以及指向 profile 的 pnpm-workspace.yaml 的说明);把打印出来的键复制进去再重跑即可。安装已构建的 tarball 或本地 checkout 则不需要允许。

发现与信任

  • 为你的插件仓库添加 dsh-plugin 话题,便于被发现;
  • 插件组合包与内置组合包一样,其 patch 层按 dsh.profile.bundles 顺序叠加,之后是 profile 与 home 的 cordis.patch.yml 覆盖层(见 CLI 与 Profile);
  • 插件包贡献的 cordis.patch.yml 里若通过 !!js 引用了其他包,需确保这些依赖在其解析器 manifest 中声明。

执行任意代码

安装一个第三方插件就是在你的 profile 组合里执行它声明的 patch 与插件代码。只安装你信任来源的包。

下一步

本页目录