DSH plugin 开发环境搭建:Node 与 pnpm 准备、两种获取 Harness 的方式、工程依赖与脚手架

插件开发发布于 2026-09-12作者: DeepSeek Plugin 插件市场
DSH pluginDeepSeek Harness开发环境pnpmcreate-dsh-plugin
DeepSeek Harness(DSH)插件开发环境搭建:装 Node 与 pnpm,用 npx @deepseek-ai/dsh 或源码检出获得 Harness,再用 create-dsh-plugin 生成工程,装好 cordis、dsh-tools、schemastery 三类依赖。

DSH plugin 开发环境只需要三样:Node.js、pnpm,以及一份能跑起来的 DeepSeek Harness 本体;官方把前置条件定义为「从一份已完成 run-from-source 的仓库检出开始」,所以第一步不是写代码,而是先把 pnpm dsh web 跑通。 无论你叫它 DSH插件 还是 DeepSeek插件,要准备的东西完全一样。

DSH plugin 开发环境清单:三样东西

官方对插件开发的前置条件只有一句话:从已完成 run-from-source 的仓库检出开始。 拆开就是三样(来源):

组件作用怎么装
Node.js运行 Harness 与插件按官方要求安装,注意脚手架的 engines 约束
pnpm工作区依赖管理与命令前缀仓库是 pnpm 工作区,命令统一 pnpm dsh ...
Harness 本体加载并运行你的插件npx @deepseek-ai/dsh web 或源码检出

注意 Node 版本:脚手架 create-dsh-plugin 在 engines 里声明需要 Node ^22.19.0 || >=24.0.0——版本太低会在安装阶段直接报错(来源)。

获取 DeepSeek Harness 的两种方式,开发 DSH plugin 选哪种

只想用 Harness 就用 npx 一条命令;要写插件就进源码检出——因为本地调试依赖检出目录。 官方 README 给的两种方式可以并存(来源):

  1. 方式一:跑发布版(适合只想用 Harness 的人)npx @deepseek-ai/dsh web预期一条命令拉起 Web UI。
  2. 方式二:源码检出(插件开发推荐):依次执行 git clone https://github.com/deepseek-ai/deepseek-harness.gitcd deepseek-harnesspnpm installpnpm run buildpnpm dsh web预期检出内能启动 Web UI。

为什么插件开发选方式二:官方插件教程要求「从仓库根创建 scratch-plugin 目录」,再用 --patch 覆盖层把绝对路径的插件源码挂进去——插件路径由 profile 目录解析,源码检出内引用本地文件最省事。所以日常用 npx、写插件时切到检出即可。源码构建的每一步拆解见 源码构建与本地调试

创建 DSH plugin 工程:脚手架或手写

想快速起步用脚手架,想理解机制就手写一个文件。 脚手架 create-dsh-plugin 提供 tool / events / webui 三套模板,内置 --verify 冒烟测试,并用 next 标签钉住版本(来源):

  1. 脚手架生成npx create-dsh-plugin my-plugin -t tool预期得到带好 package.json、tsconfig 与模板代码的工程。
  2. 或手写最小工程:在检出根目录创建 scratch-plugin/src/my-plugin.ts(只有一个文件):
ts
import type { Context } from '@deepseek-ai/cordis'

export const name = 'hello-plugin'

export function apply(ctx: Context) {
  console.log('[hello-plugin] plugin loaded!')
}

两种方式的差别只在起步速度:脚手架会带好上述工程文件;手写则必须自己补 package.json(打包时需要)。想跟着走一遍完整流程见 开发教程

DSH plugin 工程要装哪三类依赖

依赖按需引入,最小插件只需要类型。 三类官方包各自的职责:

提供什么时候装
@deepseek-ai/cordisContextService 等类型所有插件
@deepseek-ai/dsh-toolsdefineTool 与工具扩展点写工具插件时
@deepseek-ai/schemasterySchema,用于声明 Config插件需要配置时

不要一股脑全装:类型包(cordis)通常作为 dev 依赖,运行期真正需要的是 dsh-tools 这类被 apply 使用的包(来源)。

DSH plugin 开发环境自检:跑通这一步就够了

判断环境是否 OK 的标准不是「装了哪些东西」,而是最小插件能否被加载。 三步做完就能确认:

  1. 取绝对路径:在检出根执行 pwd,后面写进配置的必须是完整路径。
  2. 写覆盖层配置:在 scratch-plugin/cordis.yml 里插入插件行:
yaml
- insert:
    - id: hello
      name: '/absolute/path/to/deepseek-harness/scratch-plugin/src/my-plugin.ts'
  1. 带覆盖层启动pnpm dsh web --patch ./scratch-plugin/cordis.yml预期终端打印 [hello-plugin] plugin loaded!

没打印就按这个顺序排查:路径是否为绝对路径 → pnpm install 是否装完 → Node 版本是否满足 engines → 检出是否已 pnpm run build。这四步覆盖绝大多数环境问题。

DSH plugin 开发环境搭好后的下一步

环境通过后,先定插件的形态与能力落点,再动手写。 建议顺序:照 开发指南 判断函数 / 对象 / 类与能力注册到哪里,照 怎么写插件 写代码,最后用 开发规范 的自检清单过一遍。要打包发布再看 打包成 bundle发布到插件中心

常见问题

开发 DSH plugin 前,本地环境最少要准备哪几样?

**开发 DSH plugin 前最少要准备三样:Node.js、pnpm、以及一份可运行的 Harness 本体。** 官方「你的第一个插件」把前置条件写成「从一份已完成 run-from-source 的仓库检出开始」,也就是要先能 pnpm dsh web 把 Web UI 跑起来,再开始写插件(来源:官方「你的第一个插件」)。

DSH plugin 开发用 npx @deepseek-ai/dsh 还是源码检出?

**写 DSH plugin 建议用源码检出。** npx @deepseek-ai/dsh web 适合只想用 Harness 的用户,一条命令跑起 Web UI;但插件本地调试要用 --patch 覆盖层挂载绝对路径的源码文件,官方教程也是从仓库根创建 scratch-plugin 目录开始的。两者可以并存:日常用 npx,开发插件时进检出(来源:官方 README 与「你的第一个插件」)。

create-dsh-plugin 脚手架生成哪些模板?

**create-dsh-plugin 是 DSH plugin 的工程脚手架,提供 tool / events / webui 三套模板**,并用 next 标签做版本钉住,内置 --verify 冒烟测试。它在 package.json 的 engines 里声明需要 **Node ^22.19.0 || >=24.0.0**,所以装依赖前先确认本地 Node 版本(来源:npm create-dsh-plugin)。

DSH plugin 工程需要装哪些依赖?

**DSH plugin 工程按需装三类依赖**:① @deepseek-ai/cordisContext 等类型);② @deepseek-ai/dsh-toolsdefineTool,写工具插件才需要);③ @deepseek-ai/schemastery(声明 Config schema,需要配置才用)。三者都是按需引入,最小插件只需要 cordis 的类型(来源:官方「你的第一个插件」与「构建一个工具」)。

环境搭好后,怎么确认 DSH plugin 开发环境没问题?

**确认 DSH plugin 开发环境的方法是用最小插件跑一次加载日志。** 写一个只 console.log 的插件,用 --patch 覆盖层挂进 Web UI,启动时终端打印出那行日志,就说明 Node、pnpm、Harness 与加载链路全部正常。这一步不涉及打包,是成本最低的环境自检(来源:官方「你的第一个插件」)。

相关术语

run-from-source
run-from-source 是 DSH plugin 开发的前置状态:从仓库检出运行 Harness——git clone 后依次 pnpm install、pnpm run build,再用 pnpm dsh web 启动。官方要求插件教程从这个状态开始。https://github.com/deepseek-ai/deepseek-harness/blob/master/README.md
pnpm workspace
pnpm workspace 是 DeepSeek Harness 源码仓库的组织方式,因此 DSH plugin 开发命令统一以 pnpm 前缀执行(如 pnpm dsh web);插件开发时的本地路径调试也基于这套工作区解析。https://github.com/deepseek-ai/deepseek-harness/blob/master/README.md
create-dsh-plugin
create-dsh-plugin 是生成 DSH plugin 工程的脚手架,提供 tool / events / webui 模板与 --verify 冒烟测试,并在 engines 中要求 Node ^22.19.0 或 >=24.0.0。https://www.npmjs.com/package/create-dsh-plugin
--patch 覆盖层
--patch 是 DSH plugin 的启动参数,让 dsh 启动时把一份额外的 cordis.yml 叠加到现有 profile 上,用于挂载尚未发布的本地插件;它只贡献配置,不改变 loader 解析模块路径所用的 profile 目录。https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/user/develop/basic/index.md

来源