The ACP completion loop previously observed root idle and no children, then awaited outputTail outside that loop. An autonomous root turn could start while an earlier image update was blocked in conversion. Turn correlation adopted the new turn and cleared endReason, but settlement did not wait for that turn. Releasing the old image therefore returned cancelled without any cancellation while the root was still running. Keep committed output delivery inside the normal completion observation. After output drains, re-read root status and Session sequence before settling; any new root activity returns to the idle/descendant checks. Read mutable cancellation and idle state through local observation functions so each post-await decision uses the current values. Preserve the separate cancellation path and its prompt output drain. Add a deterministic regression that blocks the initial image update, allows the first idle/no-child check, starts a gated autonomous root turn, and releases the original image. The prompt remains pending until the later turn completes, then reports end_turn. A subsequent ACP prompt runs another real local subagent through the shared delegation fixture. The bilingual README defines work accepted during output draining as part of the still-open ACP activity interval. Validation: - The new focused regression failed before the fix: it observed cancelled while the later root turn remained gated. - pnpm exec vitest run packages/acp/acp/tests (146 passed) - pnpm exec vitest run packages/acp/acp/tests/turns.spec.ts (39 passed) - pnpm run test:e2e packages/subagent/subagent-dsh-sdk/tests/nested-delegation.e2e.ts (6 passed) - pnpm exec tsc -b packages/acp/acp/tsconfig.json - pnpm run lint:contracts-ready - pnpm run doc-sync (41 gates passed; doc-typecheck identified an optional Agent in the extracted test fixture, corrected with an explicit guard) - pnpm run doc-typecheck (Host build and all 79 documentation blocks pass) - pnpm run verify-translation-pairing --write packages/acp/acp/README.md - git diff --check Independent rereview confirmed both completion races are fixed and that an original image-delivery failure remains attributed to the prompt even when a later root turn has already started.
DeepSeek Harness
English | 中文
DeepSeek Harness (dsh) is an open-source agent harness developed by DeepSeek AI.
It is built on an everything-is-a-plugin architecture and powered by Cordis, whose design is described in A Programming Paradigm for Spatiotemporal Composability.
Documentation: https://deepseek-harness.github.io/deepseek-harness/
Developer preview
DeepSeek Harness is in developer preview and iterating rapidly. THERE WILL BE COMPATIBILITY-BREAKING CHANGES.
Review the safety notice before running the project.
Run
Run from npm
Install Node.js, then run:
npx @deepseek-ai/dsh web
The command starts the Web UI at http://127.0.0.1:3080 by default and opens it in the default browser for a local launch. An SSH launch only prints the host URL because the SSH client or editor owns the local forwarded address. Pass --no-open to run the server without opening a browser. See Web UI guide.
Run from source
To run from a repository checkout:
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web
pnpm run build prepares the repository artifacts. pnpm dsh web uses those built artifacts without rebuilding.
Community and support
- Submit feedback or bug reports through GitHub Discussions.
- Add the
dsh-plugintopic to your plugin repository for discoverability. - Join DeepSeek Harness Discord community.
Contributing
See CONTRIBUTING.md.
Development
Start with the development guide and architecture documentation.
pnpm run dev:web builds, serves, and rebuilds client bundles on source edits in one terminal, and make help lists the matching Make targets for Web and Desktop; the guide's application commands section owns the full table.
For agents, follow AGENTS.md.
Citation
@misc{deepseek-harness2026,
title={DeepSeek Harness: Everything is a Plugin},
author={DeepSeek-AI},
year={2026},
publisher={GitHub},
howpublished={\url{https://github.com/deepseek-ai/deepseek-harness}},
}
License
Third-party dependencies and their licenses are disclosed in THIRD_PARTY_NOTICES.md.