前言¶
DeepSeek Harness (DSH) 的核心設計理念之一是“一切皆插件”。在智能體開發中,將特定的命令或腳本能力注入到模型的能力列表中是常見需求。傳統的做法通常涉及編寫文件或依賴其他註冊機制。fufu1437/dsh-model-commands 插件引入了一種新的定義方式:它允許開發者直接在 DSH 的設置頁面中聲明 shell 命令,並將這些聲明發布到 Harness 的技能註冊表中,使其在模型端表現爲一個標準的技能(skill)。
插件介紹¶
該插件是 DeepSeek Harness (DSH) 的工作流插件,由用戶 fufu1437 維護。它不提供工具執行能力,而是專注於將命令定義轉化爲模型可讀取的文本內容。插件遵循 MIT 許可證。
核心功能¶
- 設置頁面聲明:在
Settings → Model commands頁面中,通過表格界面管理技能條目。 - 技能註冊:在頁面中編寫的每一個條目都會被髮布到 Harness 的技能註冊表。
- 行爲一致性:發佈後的條目在模型端的表現與已安裝的技能完全一致。模型在技能目錄中只能看到一行(
name+description),而技能的具體內容(Body)僅在模型請求加載時才被讀取。 - 非執行性:該插件不執行任何工具調用。技能本質上是 Markdown 文本,模型讀取文本,而非運行命令。
安裝與配置¶
使用 dsh 命令行工具安裝該插件。該插件依賴 DSH 0.2.1-rc.2 或更高版本。
安裝¶
在終端中執行以下命令:
dsh plugin --profile web add @fufu1437/dsh-model-commands
安裝後,通常需要在 Settings → Plugins 中選擇對應的 bundle,或者在 ~/.dsh/profiles/web/package.json 的 dsh.profile.bundles 字段中添加包名,然後刷新 Web 頁面。
配置¶
在 Harness 的配置中,可以通過 YAML 格式指定存儲路徑和最大技能數量。
- id: fufu-model-commands
name: '@fufu1437/dsh-model-commands'
config:
storePath: /home/me/.dsh/model-commands/skills.json
maxSkills: 200
storePath:默認爲<DSH_HOME>/model-commands/skills.json,這是技能表格的單一事實來源。maxSkills:限制註冊表中的條目數量上限,默認爲 200。
使用方法¶
在設置頁面的編輯器中,填入以下字段即可定義一個技能:
- Name:使用 kebab-case 命名(例如
disk-usage),這是模型加載技能時使用的鍵。 - Description:必填項。這是模型在決策時唯一看到的文本,決定了模型何時調用該技能。
- Body:Markdown 格式的文本,即模型加載後接收到的內容。常見用法是將命令行工具的
--help輸出粘貼至此。 - When to use:可選的額外觸發文本,也會出現在目錄中。
- Model can invoke:默認開啓,決定該條目是否出現在模型的技能目錄中。
- You can too:默認關閉,決定是否同時在人類命令界面展示該條目。
- Enabled:關閉後條目仍保留,但不會出現在目錄中。
保存操作是原子的,會立即重新發布技能目錄並使其對模型生效,無需重啓 Harness。
行爲與限制¶
- 無執行環境:該插件沒有任何工具執行邏輯,沒有 shell、沙盒或代碼求值功能。所有內容僅作爲文本存儲和讀取。
- 單一事實來源:技能表格是唯一的數據源,註冊表只是衍生數據。
- 寫入安全:寫入操作是原子的(使用臨時文件 + 重命名),且僅使用 Node.js 內置模塊(
node:builtins)。 - 認證與路由:相關的路由接口會先進行身份驗證檢查,未認證請求將返回 401 或 403。
- 命名衝突:如果名稱已被其他提供者註冊,系統僅發出警告而非錯誤,註冊表會根據層級和優先級決定最終覆蓋哪一個。
遷移說明¶
在 DSH 0.2.0 及更早版本中,該插件可能使用 commands.json 並註冊模型可用的工具。在當前版本中,所有條目均爲技能,存儲在 skills.json 中。舊版本的 commands.json 文件將保持不變且不再被讀取。如果需要恢復舊配置,需手動將舊文件中的內容粘貼到新的設置編輯器中。
結語¶
fufu1437/dsh-model-commands 插件簡化了技能定義的流程,將配置集中在 DSH 的設置界面,同時保證了模型調用的安全性和一致性。它不提供執行能力,而是專注於將命令定義轉化爲可讀的技能文本。