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