dsh-plugin-kit:DeepSeek Harness 插件最小可用模板

前言

DeepSeek Harness (DSH) 的核心理念是「一切皆插件」。如果你需要扩展 Harness 的功能,通常需要从零构建:编写 package.json 声明包信息,配置 cordis.patch.yml 定义补丁层,编写插件逻辑代码,以及准备测试用例。这其中的样板代码较多。

dsh-plugin-kit 是一个经过测试的、最小化的安装模板。它是一个真实的 DSH 插件,同时也是一个可安装的包。它将插件本体与配置层打包在一起,直接解决了从零开始搭建一个功能插件的繁琐问题。

插件简介

  • 定位:DeepSeek Harness 的最小可用函数插件模板。
  • 作者:jwilson411。
  • 许可证:MIT。
  • 核心机制:作为 profile bundle layer 安装,并挂载插件。

核心能力

该模板注册了一个工具 kit_ping,用于检查插件状态。

  1. 工具名称:kit_ping。
  2. 功能性质:存活检查,不涉及网络请求,不需要 API Key。
  3. 参数:
    • who:字符串类型,必填。
  4. 返回值:
    • 包含 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())
}

定制与开发

基于此模板开发自己的插件,主要步骤如下:

  1. 重命名:修改 package.json 中的 name,以及 cordis.patch.yml 中的 name。
  2. 修改 ID:在 cordis.patch.yml 中修改 id,并在 src/index.js 中修改导出的 name。
  3. 替换工具:编辑 kit_ping 的 schema、描述和执行逻辑。
  4. 保持测试:确保测试用例覆盖你实际导出的契约。

参考资源

  • GitHub 仓库:https://github.com/jwilson411/dsh-plugin-kit
  • 社区目录:https://www.skillhub.cn/plugins/jwilson411/dsh-plugin-kit
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜