Introduction¶
The plugin architecture of DeepSeek Harness (DSH) allows developers to extend workflow capabilities through configuration. In test engineering, moving from interface definition to generating and fixing test cases often involves tedious, repetitive work. The dsh-gme-workflow plugin is designed to address this issue. It provides a set of workflow tools that can automatically select interfaces in a local Python backend, generate and fix tests, and support task-status polling and human review decisions.
Scope¶
This is a community-maintained plugin, not an official DeepSeek package. It does not implement test-generation logic directly; instead, it acts as a controller that drives a separate GME Test Generator backend project. Its core capabilities are centered on automated test generation, fixing, and user-consent-driven decision workflows in a local Python environment.
Prerequisites¶
Before using this plugin, prepare the following environment:
- DeepSeek Harness environment: The version must be
0.1.2-alpha.1or later (0.1.x line), and the profile must providetoolsandsystemPrompt. - GME Test Generator checkout: A separate code checkout is required, containing
backend/run_backend.py, the configuration fileconfig.local.json, plus the GME repository and compile toolchain. - Python environment: Install the backend dependencies, including the matching
deepseek-harness-sdkanddeepseek-harness-runtime-binwheels. - Tooling: Install clang-format 17.0.2. The backend rejects formatting-check tools with other major versions.
- Subprocess service: A local
subprocessservice is required for automatically starting the Python worker.
Installation¶
Install it through the plugin marketplace or command line. The install command automatically appends the package to the profile’s dsh.profile.bundles, so you do not need to modify the profile file manually.
dsh plugin --profile web add dsh-gme-test-generator
After installation, the dsh web process must be restarted for the plugin to take effect.
Configuration¶
The plugin requires an explicit backend path before tools can be enabled. By default, backendRoot is not set. In that case, the plugin is mounted but does not register tools; the model can only suggest configuration steps rather than reporting an error.
There are two configuration methods:
1. Environment variables¶
Set the environment variables before starting 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¶
Add the configuration to $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) | Path to the root directory of the GME Test Generator checkout |
pythonPath |
python |
Path to the Python interpreter |
configFile |
config.local.json |
Backend configuration file, relative to backendRoot |
tokenFile |
logs/web-api-token.log |
Path to the API token file |
port |
8765 |
Port used by the backend |
autoStart |
true |
Automatically start the Python worker if the port refuses connections |
timeoutMs |
15000 |
Timeout for a single HTTP request |
startupTimeoutMs |
45000 |
Timeout for the owned worker to become healthy |
maxResponseBytes |
8388608 |
Maximum number of bytes retained per response |
pageChars |
12000 |
Number of report characters returned per page |
Tools and Usage¶
The plugin provides three core tools that handle generation, querying, and decisions.
gme_generate¶
Handles autonomous test generation and fixing.
* Input: Interface IDs (interface_ids) or a free-form goal (goal). You cannot provide both at the same time.
* Flow: From accepting the task to reaching the needs_review state. The generation process includes automatic stages such as build, test, and memory audit; the model cannot intervene in intermediate steps.
* Returns: Task status, summary, failure information, and diffs.
gme_check¶
Handles querying, with no side effects.
* Purpose: Query the interface catalog, task list, incremental events, failure records, test results, and build artifacts.
* Incremental queries: Use events.after to run incremental queries for real-time progress or stable reports.
gme_decide¶
Handles decision operations that require user consent.
* Trigger condition: You must explicitly set confirm: true when calling it; otherwise, the call fails and provides guidance.
* Operations: Task PR, known-failure skip PR, selected-test PR, remove tests, cleanup, delete task.
Notes¶
- Status meaning:
accepted: truereturned for generation and decision operations only means the work has been queued; it does not mean test validation has passed. - Version requirements: Node.js must satisfy
^22.19.0 || >=24.0.0, and DSH must satisfy>=0.1.2-alpha.1 <0.2.0-0. - Workflow limitations: The model polls for status updates and does not drive intermediate builds. If the task status is
failed, this is a valid query result rather than just an error. - Resource management: The lifecycle of the owned worker started by the plugin is managed by the plugin. Closing or reloading Harness may interrupt running tasks. POST requests are not retried automatically; if the task outcome is uncertain, check the task status.
- Non-official plugin: Review the source code and license yourself before using it in production.