前言¶
DeepSeek Harness (DSH) 的插件体系允许开发者通过配置扩展工作流能力。在测试工程中,从接口定义到生成、修复测试用例往往涉及繁琐的重复劳动。dsh-gme-workflow 插件旨在解决这一问题,它提供了一套工作流工具,允许在本地 Python 后端中自动选择接口、生成并修复测试,并支持任务状态轮询与人工复核决策。
功能定位¶
这是一个社区维护的插件,并非 DeepSeek 官方包。它不直接包含测试生成逻辑,而是作为一个控制器,驱动一个独立的 GME Test Generator 后端项目。核心能力集中在本地 Python 环境下的自动化测试生成、修复以及基于用户同意的决策流程。
前置条件¶
在使用此插件前,需要准备以下环境:
- DeepSeek Harness 环境:版本需为
0.1.2-alpha.1或更新(0.1.x 线),且 profile 需提供tools和systemPrompt。 - GME Test Generator 检出:需要一个独立的代码检出,包含
backend/run_backend.py、配置文件config.local.json以及 GME 仓库和编译工具链。 - Python 环境:安装后端依赖,并包含匹配的
deepseek-harness-sdk和deepseek-harness-runtime-binwheels。 - 编译工具:安装 clang-format 17.0.2。后端拒绝使用其他主要版本的格式检查工具。
- 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、移除测试、清理、删除任务。
注意事项¶
- 状态含义:生成和决策返回的
accepted: true仅表示工作已排队,不代表测试验证通过。 - 版本要求:Node.js 需要满足
^22.19.0 || >=24.0.0,DSH 需满足>=0.1.2-alpha.1 <0.2.0-0。 - 工作流限制:模型通过轮询获取状态,不引导中间构建。如果任务状态为
failed,这是一个有效的查询结果,而非仅仅是错误。 - 资源管理:插件启动的 owned worker 生命周期由插件管理,关闭或重载 Harness 可能会中断正在运行的任务。POST 请求不会自动重试,需在任务不确定时检查任务状态。
- 非官方插件:请自行检查源码与许可证后再用于生产环境。