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
羽毛球分组比赛记分
小程序二维码

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

小夜