DeepSeek Harness 插件:dsh-gme-workflow

前言

DeepSeek Harness (DSH) 的插件体系允许开发者通过配置扩展工作流能力。在测试工程中,从接口定义到生成、修复测试用例往往涉及繁琐的重复劳动。dsh-gme-workflow 插件旨在解决这一问题,它提供了一套工作流工具,允许在本地 Python 后端中自动选择接口、生成并修复测试,并支持任务状态轮询与人工复核决策。

功能定位

这是一个社区维护的插件,并非 DeepSeek 官方包。它不直接包含测试生成逻辑,而是作为一个控制器,驱动一个独立的 GME Test Generator 后端项目。核心能力集中在本地 Python 环境下的自动化测试生成、修复以及基于用户同意的决策流程。

前置条件

在使用此插件前,需要准备以下环境:

  1. DeepSeek Harness 环境:版本需为 0.1.2-alpha.1 或更新(0.1.x 线),且 profile 需提供 tools 和 systemPrompt。
  2. GME Test Generator 检出:需要一个独立的代码检出,包含 backend/run_backend.py、配置文件 config.local.json 以及 GME 仓库和编译工具链。
  3. Python 环境:安装后端依赖,并包含匹配的 deepseek-harness-sdk 和 deepseek-harness-runtime-bin wheels。
  4. 编译工具:安装 clang-format 17.0.2。后端拒绝使用其他主要版本的格式检查工具。
  5. Subprocess 服务:本地 subprocess 服务,用于自动启动 Python worker。

安装

通过插件市场或命令行安装。安装命令会自动将包追加到 profile 的 dsh.profile.bundles 中,无需手动修改 profile 文件。

dsh plugin --profile web add dsh-gme-test-generator

安装完成后,必须重启 dsh web 进程才能生效。

配置

插件需要明确的后端路径才能启用工具。默认情况下,backendRoot 未设置,插件虽已挂载但不会注册工具,模型只能提示配置步骤,而不会报错。

配置方式有两种:

1. 环境变量

在启动 Harness 前设置环境变量。

$env:GME_TEST_GENERATOR_ROOT = 'D:/workspace/gme-test-generator'
$env:GME_TEST_GENERATOR_PYTHON = 'C:/ProgramData/Miniconda3/envs/agent/python.exe'
dsh web

2. Profile Patch

在 $DSH_HOME/profiles/<profile>/cordis.patch.yml 中添加配置。

- id: gme-test-generator
  config:
    backendRoot: D:/workspace/gme-test-generator
    pythonPath: C:/ProgramData/Miniconda3/envs/agent/python.exe
    port: 8765
    autoStart: true
Config key Default Meaning
backendRoot (required) GME Test Generator 检出的根目录路径
pythonPath python Python 解释器路径
configFile config.local.json 后端配置文件,相对于 backendRoot
tokenFile logs/web-api-token.log API Token 文件路径
port 8765 后端监听端口
autoStart true 当端口拒绝连接时,自动启动 Python worker
timeoutMs 15000 单个 HTTP 请求的截止时间
startupTimeoutMs 45000 owned worker 变为健康的截止时间
maxResponseBytes 8388608 单次响应保留的最大字节数
pageChars 12000 每页返回的报告字符数

工具与用法

插件提供三个核心工具,分别负责生成、查询和决策。

gme_generate

负责自主测试生成与修复。
* 输入:接口 ID (interface_ids) 或自由形式的目标 (goal)。两者不能同时提供。
* 流程:从接受任务到进入 needs_review 状态。生成过程包含构建、测试和内存审计等自动阶段,模型无法干预中间步骤。
* 返回:任务状态、摘要、失败信息和差异。

gme_check

负责查询,无副作用。
* 用途:查询接口目录、任务列表、增量事件、失败记录、测试结果和构建产物。
* 增量查询:使用 events.after 进行增量查询以获取实时进度或稳定的报告。

gme_decide

负责需要用户同意的决策操作。
* 触发方式:必须在调用时显式设置 confirm: true,否则调用会失败并给出指导建议。
* 操作:任务 PR、已知失败跳过 PR、选定测试 PR、移除测试、清理、删除任务。

注意事项

  1. 状态含义:生成和决策返回的 accepted: true 仅表示工作已排队,不代表测试验证通过。
  2. 版本要求:Node.js 需要满足 ^22.19.0 || >=24.0.0,DSH 需满足 >=0.1.2-alpha.1 <0.2.0-0。
  3. 工作流限制:模型通过轮询获取状态,不引导中间构建。如果任务状态为 failed,这是一个有效的查询结果,而非仅仅是错误。
  4. 资源管理:插件启动的 owned worker 生命周期由插件管理,关闭或重载 Harness 可能会中断正在运行的任务。POST 请求不会自动重试,需在任务不确定时检查任务状态。
  5. 非官方插件:请自行检查源码与许可证后再用于生产环境。
羽毛球分组比赛记分
小程序二维码

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

小夜