The two self-hosted standby drills each run their complete unsharded aggregate with one gate worker, which takes longer than the interval between master merges, so unconditional cancel-in-progress supersedes a drill before it reaches a verdict and the lane yields no readiness evidence for the failover runbook to point a responder at. Exempt push and nothing else. This has to be decided at workflow level: cancellation applies to the whole superseded run, so a job-level concurrency group cannot exempt its job. The negated form is load-bearing — naming pull_request alone would also stop cancelling workflow_dispatch, and each runner benchmark fans out to twelve larger runners for up to fifteen minutes in this same group on master, so a re-dispatch would queue ahead of a drill instead of replacing a stale measurement. It does not promise every push run finishes: a newer pending run still displaces an older one, only that the lanes periodically reach a verdict. A master push carries only wine-apt-cache and the two drills; every other job is pull-request-gated, workflow_dispatch-gated, or if: false. The spec pins that set and classifies by exact condition, since a negated event test mentions the event it excludes.
DeepSeek Harness
English | 中文
DeepSeek Harness (dsh) is an open-source coding agent built on the DeepSeek Harness SDK.
It uses an architecture where everything is a plugin.
Internal testing notice
DeepSeek Harness is under internal testing. Features and interfaces may change.
The internal build uploads all Session Logs by default to help diagnose reported problems. Set DSH_TELEMETRY_DISABLED=1 to disable telemetry. Send feedback through the internal WeChat group.
Run
Install Node.js ^22.19 or >= 24 and pnpm 11, then run the published package:
npx @deepseek-ai/dsh web
The command initializes the Web profile and prints the Web UI URL, which is http://127.0.0.1:3080 by default. Open it, add a DeepSeek API key under Settings → Models, then start a session. The invoking directory is the default workspace; try Summarize this repository and identify its main packages.
Continue with the Web UI guide.
Run from source
To run a repository checkout instead:
git clone https://github.com/deepseek-harness/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm dsh web
The last command builds the repository and opens the same Web UI path.
Profiles and plugins
A profile is an ordered list of plugin bundles. The shipped web profile powers dsh web. Manage a profile with dsh plugin --profile <name> <pnpm args>, which forwards the remaining arguments to pnpm in that profile's directory:
npx -p @deepseek-ai/dsh dsh plugin --profile web add <package>
npx -p @deepseek-ai/dsh dsh plugin --profile web remove <package>
add, remove, update, why, and other pnpm commands work unchanged. The command initializes a missing profile before changing its packages and updates its bundle list from installed packages that declare dsh.bundle. See the CLI reference for the exact behavior.
The CLI reference covers headless execution and custom profiles. The Python SDK and examples cover programmatic and custom compositions.
Community
Follow DeepSeek Harness on Twitter for project updates.
Development
Start with the development guide and read the architecture before changing packages.
For agents, follow AGENTS.md.
License
Third-party dependencies and their licenses are disclosed in THIRD_PARTY_NOTICES.md.
Contributing
Read CONTRIBUTING.md before contributing to this repository.