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 中尝试新的工具实现。

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

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

小夜