dsh-gme-test-generator:在 DSH 里驱动 GME 接口测试生成与修复

前言

在 DeepSeek Harness(DSH)里做 GME 相关开发时,测试往往要对着大量接口目录逐条补用例,失败还要在编译、格式化、记忆审计等阶段来回修。若把这些步骤都交给对话里的模型即兴编排,中间状态难追踪,对外提交 PR、删任务等操作也缺少统一闸门。

下面介绍社区插件 dsh-gme-test-generator(维护者 nuaaweixinye):它在 Harness 侧提供三个工作流工具,连接本机已部署的 GME Test Generator Python 后端,由后端自主跑生成与修复,模型侧主要负责选接口、轮询进度,并在用户明确同意后再执行对外决策。

这是什么

dsh-gme-test-generator 是面向 DeepSeek Harness 的社区工作流插件(npm 包名 dsh-gme-test-generator,当前资料中版本 0.2.0,MIT 许可证)。它不替代 GME Test Generator 本体,而是驱动已有 checkout 里的 backend/run_backend.py 及配套配置、任务库与 GME 编译链。

后端未随插件打包;公开框架可参考 nuaaweixinye/gme-agent 的克隆与配置说明。完整含生成目录的 checkout 为私有仓库,需向维护者申请访问。

环境与前提

使用前需同时满足 README 中列出的条件,要点如下:

  1. DeepSeek Harness:0.1.2-alpha.1 或更新,且仍在 0.1.x 线;使用带 tools 与 systemPrompt 的 base-backed profile。插件 engines.dsh 要求为 >=0.1.2-alpha.1 <0.2.0-0。
  2. GME Test Generator checkout:含 backend/run_backend.py、config.local.json、任务数据库,以及 GME 仓库与编译工具链。
  3. Python 环境:已安装后端依赖,以及匹配的 deepseek-harness-sdk、deepseek-harness-runtime-bin;另需 clang-format 17.0.2(与 GME check-format 一致,后端不接受其它主版本做格式判定)。
  4. 自动拉起后端:profile 中需有本地 subprocess 服务(官方 profile 通常已带)。

后端内的编码工作走独立 sdk profile,通过 DeepSeek Harness Python SDK 执行;构建、测试与 memory audit 是任务内自动阶段,不由聊天工具逐步指挥。该 coding profile 含文件、搜索与 PowerShell 工具,且不包含本插件,避免任务递归。

核心功能:三个工具

工具 作用
gme_generate 自主生成:按接口 ID 或自由目标创建测试、批量创建、修复已记录失败、扩展或重试任务
gme_check 无副作用读取:接口目录、任务、增量事件、带观测的失败、测试结果、产物等
gme_decide 需用户同意:任务 PR、已知失败跳过 PR、选中测试 PR、移除选中测试、清理、删除任务等(须 confirm: true)

工作流上的约定(来自 README):

  • 生成与扩展时,要么传目录里的 interface_ids,要么传自由文本 goal,不可同时传;后端在提供 ID 时会丢弃 goal,插件也会拒绝组合。批量创建必须用 ID。应先 gme_check 查接口,任务 ID 用后端 job ID,不要用 Harness session ID。
  • 从受理到 needs_review 由后端自主执行;模型用 gme_check 轮询,不干预中间构建、测试与 memory audit。
  • 响应中的 suggested_next 会提示阶段:执行中继续 poll → needs_review 时汇报摘要、失败与 diff → 对外步骤交给 gme_decide。
  • gme_decide 未带 confirm: true 会直接失败并给出指引,请求不会打到后端。
  • accepted: true 只表示已排队,不代表校验已通过。大报告用分页字段 content、total_characters、next_offset 续查;进行中可用 events.after 做有界增量查询。

安装与启用

可从 DSH Settings → Plugin Market 一键安装,或在命令行执行(资料原文):

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

命令会安装包并写入 profile 的 dsh.profile.bundles;包内带 dsh.bundle.patch 层,一般无需手改 profile 文件。安装后需重启 dsh web。

若 profile 里仍单独启用了旧包 tool-gme,应禁用该行;安装本插件不会自动移除其它包。

配置 backendRoot

backendRoot 是部署路径,无默认值,也不会作为模型参数传入。未配置时插件仍会挂载:不注册工具、打一条 warning,并把 setup 说明暴露给模型,便于 agent 解释缺什么,而不是报「无此工具」;校验失败不会拖垮整棵插件树。

方式一:环境变量(Harness 启动时读取):

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

方式二: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

patch 行只覆盖其列出的键;若保留其它字段,需在 patch 里写全 config。改完后重启 dsh web,backendRoot 解析成功后工具才会出现。

配置项 默认 含义
backendRoot (启用工具所必需) 含 backend/run_backend.py 的 GME Test Generator 根目录
pythonPath python 带后端依赖的解释器
configFile config.local.json 后端配置,绝对路径或相对 backendRoot
tokenFile logs/web-api-token.log API token;自动启动时若缺失会创建
port 8765 后端监听 IPv4 loopback 的 TCP 端口
autoStart true 端口无可用服务时启动插件托管的 Python worker
timeoutMs 15000 单次 HTTP 请求(含 body)超时
startupTimeoutMs 45000 托管 worker 变为 healthy 的超时
maxResponseBytes 8388608 单次响应保留的最大字节
pageChars 12000 报告分页字符数(256–50000)

后端可选的「历史分歧与知识库注入」在 backend 自己的 config.local.json 中配置(默认关闭),详见后端仓库 docs/knowledge-injection.md;与插件的交集主要在 owned worker 环境变量,见 setup 文档第 6 节。

典型用法(可复现流程)

下面是一条与 README 工具设计一致的对话侧流程,便于在本地复现:

  1. 配置 backendRoot(或环境变量)并重启 dsh web,确认三个 GME 工具出现在 profile 中。
  2. 用 gme_check 查询接口目录,选定 interface_ids(或仅写 goal,二选一)。
  3. 调用 gme_generate 创建或扩展任务;返回 accepted: true 后,按 suggested_next 用 gme_check 轮询任务状态与增量 events,直至 needs_review。
  4. 在 needs_review 阶段用 gme_check 拉取摘要、失败与 diff(大 JSON 用 next_offset 分页)。
  5. 需要提交 PR、清理或删任务时,调用 gme_decide,并显式传入 confirm: true;否则调用会被插件拒绝。

生成与决策返回的 status: failed 仍是合法查询结果;基础设施类问题会以 tool error 形式出现。中止 tool 只会停止等待,不会取消已受理的后端 job;POST 不会自动重试,提交结果不确定时应再查任务列表。

适用场景与注意

适合谁:已在本地维护 GME Test Generator 与 GME 编译环境、希望在 DSH Web profile 里用统一工具链做「选接口 → 自主生成/修复 → 审阅 → consent 后对外动作」的开发者。

权限与安全:插件以当前 dsh 进程权限运行;安装与启用前应阅读 GitHub 源码 与 LICENSE,并理解本机后端会执行构建、测试与可能的 PR 相关操作。

Worker 生命周期:首次请求在健康检查与鉴权通过后会复用已有服务;否则 autoStart: true 会启动配置的 Python 入口,并发请求共享同一次启动。Harness 关闭或重载可能中断本插件启动的后端及其子进程;独立启动的后端不受影响。插件 dispose 时只终止自己拉起的 worker。端口被其它服务占用或鉴权失败时不会盲目起 worker。

生态说明:DSH 采用「一切皆插件」的扩展方式;SkillHub 插件目录 为社区站点,与 DeepSeek / 幻方无官方从属关系。本包为社区插件,非 DeepSeek 官方发行。

结尾

dsh-gme-test-generator 把 GME 测试生成与修复收成 Harness 侧三个工具:生成走本地 Python 后端自治流水线,检查只读,对外动作经 confirm 闸门。若你已有 GME Test Generator 部署,可按上文命令安装并配置 backendRoot 接入工作流。

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

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

Xiaoye