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:

  1. DeepSeek Harness environment: The version must be 0.1.2-alpha.1 or later (0.1.x line), and the profile must provide tools and systemPrompt.
  2. GME Test Generator checkout: A separate code checkout is required, containing backend/run_backend.py, the configuration file config.local.json, plus the GME repository and compile toolchain.
  3. Python environment: Install the backend dependencies, including the matching deepseek-harness-sdk and deepseek-harness-runtime-bin wheels.
  4. Tooling: Install clang-format 17.0.2. The backend rejects formatting-check tools with other major versions.
  5. Subprocess service: A local subprocess service 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

  1. Status meaning: accepted: true returned for generation and decision operations only means the work has been queued; it does not mean test validation has passed.
  2. 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.
  3. 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.
  4. 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.
  5. Non-official plugin: Review the source code and license yourself before using it in production.