前言¶
DeepSeek Harness(DSH)的核心設計理念是「一切皆插件」。在開發過程中,工具插件往往需要通過反覆試驗來優化。官方 Harness 已經提供了熱掛載和運行時檢查能力,但缺少一個針對工具進化的閉環:如何從試驗信號中提取改進提案,驗證其有效性,並在當前進程掛載試用,最後決定是固化到盤上還是回滾。
plugin-evolve 是一個宿主無關的控制器,用於編排工具插件從信號到固化的全過程。它配合 DSH Bundle 使用,能將一次通過的試驗直接掛載到當前進程,讓模型立即使用新工具。
核心功能¶
- 工具插件進化:支持對
kind: 'tool'的插件進行從信號記錄到最終固化的全流程管理。 - 進程內熱掛載:通過
evolve_mount或 CLImount,將驗證通過的插件直接注入當前 DSH 進程,無需重啓。 - 零運行時依賴:基於 Node.js >= 18,無額外依賴。
- 標準化狀態機:工作流遵循
signals → analysis → abstract → stage → validate → mount → score → solidify/rollback的順序。
安裝與啓用¶
通過 DSH CLI 安裝該插件包:
dsh plugin --profile web add github:shinjiyu/deepseek-harness-evolver
安裝後,模型將獲得 evolve_* 系列工具。你也可以使用本地路徑進行安裝:
dsh plugin --profile web add D:\tempWorkspace\plugin-evolve
典型用法¶
插件會使用工作區根目錄下的 .evolve/ 目錄來存儲狀態、事件和候選插件。
命令行操作流程¶
- 記錄信號:當遇到錯誤(如 HTTP 429)時,記錄信號。
dsh --profile headless "web_fetch 連續 429。用 evolve_signal 記兩次"
- 分析與抽象:查看分析結果,判斷是否需要提案,並生成插件草稿。
npx plugin-evolve analysis
npx plugin-evolve abstract --point tool_error:web_fetch --stage
- 校驗與掛載:驗證插件代碼,將其掛載到當前進程以便測試。
npx plugin-evolve validate
npx plugin-evolve mount
- 打分與固化:使用新工具進行多次測試,評分通過後固化。
# 模型側或手動執行
npx plugin-evolve score --samples 10 --success-delta 2 --retry-delta -1
npx plugin-evolve solidify --confirm
代碼庫使用流程¶
import { createController } from "plugin-evolve";
const evolve = createController({ root: process.cwd() });
await evolve.init();
// 1. 記錄信號並分析
const advice = await evolve.recordSignals([
{ kind: "tool_error", payload: { tool: "bash" } },
]);
const report = await evolve.analysis();
// 2. 如果有準備好的提案點,進行抽象和階段化
if (report.ready.length > 0) {
const draft = await evolve.abstract();
await evolve.stage({
manifest: draft.manifest,
files: { "plugin.js": draft.source },
signalKind: draft.signalKind,
});
}
// 3. 驗證、掛載並加載
await evolve.validate();
await evolve.mount();
// 4. 下一個進程使用新工具
const { evolved, trial } = await evolve.loadout();
for (const plugin of [...evolved, trial].filter(Boolean)) {
await import(plugin.entryPath);
}
// 5. 打分與固化
await evolve.score({ samples: 10, successDelta: 2, retryDelta: -1 });
await evolve.solidify({ confirm: true });
適用場景與限制¶
適用場景¶
- 需要針對特定錯誤信號(如 429 重試)編寫專用工具插件。
- 開發者希望手動控制進化的節奏,驗證插件邏輯的正確性後再生效。
限制與安全策略¶
該插件對候選插件的編寫有嚴格的沙箱限制:
- 類型限制:僅允許
kind: 'tool',允許的inject爲['tools']。 - 運行時權限:
network和shell必須爲false。 - 文件大小:生成的插件文件大小不得超過 32 KiB。
- 禁止的模塊與 ID:禁止使用
fs、net、http、child_process、eval、new Function;禁止 ID 包含session、loader、agent-loop、evolve、controller、plugin-evolve。
評分與停滯機制¶
- 打分通過條件:樣本數
>= 10,successDelta > 0,retryDelta <= 0。 - 人工確認:前 3 次
solidify必須設置confirm: true。 - 停滯處理:同一
signalKind連續失敗 3 次後,將停止對該信號的stage操作。
本質說明¶
它不是「自動進化」工具,不會自動修改 agent-loop、session 或 loader。它僅輔助開發者生成和驗證工具插件草稿,不替代業務工程邏輯的修改。
結語¶
plugin-evolve 補全了 DSH 插件開發中的「試驗-驗證-固化」閉環。通過將試驗過程標準化、安全化,開發者可以更放心地在 Harness 中嘗試新的工具實現。