前言¶
DeepSeek Harness (DSH) 的核心理念是「一切皆插件」。如果你需要扩展 Harness 的功能,通常需要从零构建:编写 package.json 声明包信息,配置 cordis.patch.yml 定义补丁层,编写插件逻辑代码,以及准备测试用例。这其中的样板代码较多。
dsh-plugin-kit 是一个经过测试的、最小化的安装模板。它是一个真实的 DSH 插件,同时也是一个可安装的包。它将插件本体与配置层打包在一起,直接解决了从零开始搭建一个功能插件的繁琐问题。
插件简介¶
- 定位:DeepSeek Harness 的最小可用函数插件模板。
- 作者:jwilson411。
- 许可证:MIT。
- 核心机制:作为 profile bundle layer 安装,并挂载插件。
核心能力¶
该模板注册了一个工具 kit_ping,用于检查插件状态。
- 工具名称:
kit_ping。 - 功能性质:存活检查,不涉及网络请求,不需要 API Key。
- 参数:
who:字符串类型,必填。
- 返回值:
- 包含
message、greeted、plugin的对象。
- 包含
安装与启用¶
在安装之前,请确保环境满足以下要求:
- Node.js 版本 >= 22.14.0
- DSH 版本为 0.1.1-rc.2(该包编写和测试基于此版本)
安装命令如下:
dsh plugin --profile web add github:jwilson411/dsh-plugin-kit
安装成功后,插件会以 profile bundle layer 的形式追加到配置中。你可以通过以下命令检查配置是否生效:
dsh --dump-config
若需移除,请将 add 替换为 remove。
架构与配置¶
dsh-plugin-kit 的项目结构非常精简,包含以下核心文件:
package.json:声明包信息与dsh.bundle.patch,这是将其识别为 bundle layer 的关键。cordis.patch.yml:定义补丁层,用于挂载插件。src/index.js:插件主逻辑,定义工具注册。test/:离线测试套件,无需网络即可运行。
关键配置说明¶
Manifest 声明¶
在 package.json 中,必须声明 dsh.bundle.patch 字段,安装器才会将其作为 bundle layer 处理:
"dsh": {
"bundle": {
"patch": "./cordis.patch.yml"
}
}
补丁层¶
cordis.patch.yml 是一个 YAML 数组,用于在配置树中插入或替换行。该模板通过 id 注册插件:
- insert:
- id: plugin-kit
name: dsh-plugin-kit
插件代码¶
插件通过 defineTool 定义工具,使用 inject: ['tools'] 声明对工具系统的硬依赖。工具逻辑在 apply 函数中注册,注册器返回的 dispose 会自动管理生命周期。
import { defineTool } from '@deepseek-ai/dsh-tools'
export const name = 'plugin-kit'
export const inject = ['tools']
export function apply(ctx) {
ctx.tools.register(createKitPingTool())
}
定制与开发¶
基于此模板开发自己的插件,主要步骤如下:
- 重命名:修改
package.json中的name,以及cordis.patch.yml中的name。 - 修改 ID:在
cordis.patch.yml中修改id,并在src/index.js中修改导出的name。 - 替换工具:编辑
kit_ping的 schema、描述和执行逻辑。 - 保持测试:确保测试用例覆盖你实际导出的契约。
参考资源¶
- GitHub 仓库:https://github.com/jwilson411/dsh-plugin-kit
- 社区目录:https://www.skillhub.cn/plugins/jwilson411/dsh-plugin-kit