Introduction

DeepSeek Harness (DSH) adopts a plugin-based architecture, aiming to improve the development and usage experience through modular extensions. This repository serves as an aggregation unit, packaging five frequently used plugins together. It addresses common issues in agent development, such as the lack of long-term memory, difficult session version management, inability to automatically resume after a Goal interruption, and insufficient fine-grained control over model reasoning capabilities.

Core Features

This repository contains the following five plugins:

1. Long-Term Memory and Session Archiving (dsh-memarc)

  • Long-term memory store: Stores memory for each workspace in JSON format and supports persistence.
  • Session archive management: Provides archiving, full-text search, batch restoration, and permanent deletion, with a unified entry point in the settings page.

2. Session Git Integration (dsh-session-git)

  • Exports DSH sessions to <project>/.dsh-sessions/*.json files.
  • Supports committing with Git; team members can import these files with one click to restore them as resumable sessions.

3. Session Branch Tree (dsh-session-branches)

  • Establishes a fork / sub-agent relationship tree for sessions.
  • Viewable via the floating sidebar panel or the settings page, with one click to open the corresponding session.

4. Goal Auto-Resume (dsh-goal-auto-resume)

  • When a Goal stops due to errors, interruptions, max-tokens limits, or crash exceptions, the plugin automatically re-arms and attempts to resume.
  • Built-in backoff mechanism and safety valve to prevent infinite retries.

5. Model Reasoning Capability Editing (dsh-model-reasoning)

  • Three-tier settings: Provides a three-section editing interface for global policies, routing overview, and model details.
  • Fine-grained control: Edit thinking-level mappings (wire values), context/output limits, and protocol compatibility switches.
  • Flexible declaration: For models missing reasoning metadata, supports one-click inline declaration.
  • Session-level slider: Located to the left of the model dropdown in the input box, provides a session-level reasoning intensity slider that takes precedence over routing defaults.

Installation and Enablement

The repository itself declares dsh.bundle, so all five plugins can be installed into the profile with a single command:

dsh plugin --profile web add github:loongWoong/dsh-plugins

After installation, the cordis.patch.yml in the root directory will automatically assemble these five plugins into the DSH composition. To uninstall, run:

dsh plugin --profile web remove dsh-plugins

Installing a Specific Plugin

If you only need to install one plugin (for example dsh-memarc), use the pnpm path syntax:

dsh plugin --profile web add "github:loongWoong/dsh-plugins#path:packages/dsh-memarc"

Local Development

Run the following command in the repository root directory, so that DSH directly references the local source code:

dsh plugin --profile web add .

After modifying the source code, you must rerun dsh plugin --profile web install to make the changes take effect.

Environment Requirements and Dependencies

  • DeepSeek Harness (DSH): Requires version ≥ 0.1.1-rc.2 (tested for compatibility up to 0.1.5-rc.1).
  • Dependency management: Peer dependencies (@deepseek-ai/cordis, @deepseek-ai/dsh-tools, react) are provided when the DSH process loads them. This repository has zero runtime dependencies and supports offline installation.
  • Version compatibility: If incompatibilities appear after upgrading DSH, please report them in the repository issues.

Important Notes

  1. Installation method conflict: Do not use both “whole-repository installation” and “single-plugin installation” at the same time. This will cause the same plugin to be mounted twice, resulting in duplicate service registration.
  2. Bundle ID conflict: Each plugin inserts lines into the composition with specific IDs (such as session-git, memarc). If another installed plugin occupies the same ID, a loading conflict will occur, and the corresponding id in cordis.patch.yml must be modified.
  3. Activation method:
    • Changes to the Host side (core logic) require restarting the DSH process.
    • Changes to the Client side (settings page, overlays, input controls) take effect after restarting and refreshing the browser page.
  4. File retention: Uninstalling plugins does not delete data. Memory files from dsh-memarc remain in each workspace’s .dsh-memory/, and session files exported by dsh-session-git remain in each project’s .dsh-sessions/.

Testing

The test scripts are self-contained and can be run directly with the system Node, without installing additional dependencies:

npm test
# Or run individually:
node packages/dsh-memarc/test/behavior.mjs
node packages/dsh-session-git/test/unit.mjs
node packages/dsh-model-reasoning/test/unit.mjs