plugin-evolve:DeepSeek Harness 的工具插件進化控制器

前言

DeepSeek Harness(DSH)的核心設計理念是「一切皆插件」。在開發過程中,工具插件往往需要通過反覆試驗來優化。官方 Harness 已經提供了熱掛載和運行時檢查能力,但缺少一個針對工具進化的閉環:如何從試驗信號中提取改進提案,驗證其有效性,並在當前進程掛載試用,最後決定是固化到盤上還是回滾。

plugin-evolve 是一個宿主無關的控制器,用於編排工具插件從信號到固化的全過程。它配合 DSH Bundle 使用,能將一次通過的試驗直接掛載到當前進程,讓模型立即使用新工具。

核心功能

  • 工具插件進化:支持對 kind: 'tool' 的插件進行從信號記錄到最終固化的全流程管理。
  • 進程內熱掛載:通過 evolve_mount 或 CLI mount,將驗證通過的插件直接注入當前 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/ 目錄來存儲狀態、事件和候選插件。

命令行操作流程

  1. 記錄信號:當遇到錯誤(如 HTTP 429)時,記錄信號。
    dsh --profile headless "web_fetch 連續 429。用 evolve_signal 記兩次"
  1. 分析與抽象:查看分析結果,判斷是否需要提案,並生成插件草稿。
    npx plugin-evolve analysis
    npx plugin-evolve abstract --point tool_error:web_fetch --stage
  1. 校驗與掛載:驗證插件代碼,將其掛載到當前進程以便測試。
    npx plugin-evolve validate
    npx plugin-evolve mount
  1. 打分與固化:使用新工具進行多次測試,評分通過後固化。
    # 模型側或手動執行
    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 中嘗試新的工具實現。

羽毛球分组比赛记分
小程序二维码

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

小夜