DeepSeek Harness(DSH)的設計理念是“一切皆插件”。在開發智能體或工作流時,如果需要模型具備特定的工具能力,開發者需要自行編寫插件。dsh-greet-plugin 是一個最小化的示例插件,它向 Harness 註冊了一個 greet 工具,演示了純 JavaScript 插件的編寫方式。
插件簡介¶
這是一個由 imiss1314520 維護的插件,許可證爲 MIT。它通過純 JavaScript 實現,不依賴構建步驟,適合作爲開發自定義工具的起點。
核心功能¶
- 註冊
greet工具 - 純 JavaScript,無構建步驟
- 通過
package.json聲明配置層 - 通過
cordis.patch.yml向組合中插入插件
安裝與啓用¶
使用官方命令從 GitHub 安裝:
dsh plugin --profile myprofile add github:<用戶名>/<倉庫名>
安裝後,先驗證配置層是否生效,再啓動 Harness:
dsh --profile myprofile --dump-config # 輸出裏應出現 "# == dsh-greet-plugin" 這一層
dsh --profile myprofile
典型用法¶
在會話中輸入:
Use the greet tool to greet Ada.
模型將調用 greet 工具,並收到工具結果 Hello, Ada!。
組成與實現¶
該插件由三個核心文件組成:
package.json:聲明dsh.bundle.patch,以及運行時依賴。cordis.patch.yml:貢獻配置層,向組合中插入一行插件,按包名引用本包。index.js:插件入口,導出name、inject、apply,在apply中通過defineTool註冊工具。
inject = ['tools'] 確保在工具註冊表就緒後再調用 apply。defineTool 依據 parameters 校驗參數,execute 返回 output.schema 聲明的規範值,output.render 再把它轉成面向模型的內容。
如何修改¶
若要將其改造成自己的插件:
- 改
package.json的name,例如dsh-my-plugin。這個包名纔是別人安裝和引用時用的名字,與倉庫名無關。 - 改
cordis.patch.yml中插件行的name,必須與上面的包名完全一致。 - 改
index.js的name導出、工具名、參數與返回值。 - 需要用戶可配置的項時,導出一個 Schemastery schema 作爲
Config,並把默認值寫在 schema 裏。
注意事項¶
- 不要引入構建步驟。
dsh plugin add github:...拉取的是源碼而不是構建產物:包若需要build,使用者安裝會失敗,還得在 profile 的pnpm-workspace.yaml中寫allowBuilds授權。保持純 JavaScript 就沒有這個問題。 - 運行時依賴寫進
dependencies;別人通過 git 或 npm 安裝時,pnpm 會自動裝上它們。 - 插件以當前 dsh 進程權限運行,安裝前應檢查源碼與許可證。
發佈與發現¶
- 發佈到 npm:
pnpm publish。 - 讓別人找到這個插件:給 GitHub 倉庫加上
dsh-plugin話題。
相關鏈接¶
- 插件目錄:https://www.skillhub.cn/plugins/imiss1314520/dsh-greet-plugin
- GitHub 倉庫:https://github.com/imiss1314520/dsh-greet-plugin