2nd dokployH
Find a file
imccyu 0e50fa290c fix(release): state what the echo helper does, and drop two dead claims
Three corrections from review, none of which change behaviour.

attemptStreaming promised output "as the command produces it", which
spawnSync cannot do: it returns only after the child exits, and the two
streams are echoed one after the other, so their interleaving is lost.
For an npm publish that is visible — notices go to stderr while the
`+ name@version` confirmation goes to stdout, so the confirmation prints
first. The helper is now attemptEchoed and its contract says buffered,
echoed after exit, stdout before stderr; live progress would need an
asynchronous spawn with data listeners.

The traversal comment claimed a node on the stack is a cycle only peer
edges can form, and that skipping it drops just that edge. The cycle does
carry a peer edge, because the install edges were proved acyclic a moment
earlier, but the back edge that reaches the stacked node need not be the
peer one — which is what the post-condition exists to catch, so the
comment now points at it instead of asserting an invariant the traversal
does not have.

The `if (placed.has(member.name)) return` after leaving the stack was
unreachable: a re-entrant visit returns at the top guard while the member
is on the stack, so it can never be placed by the time the recursion
unwinds.
2026-08-14 16:10:06 +08:00
.agents feat(release): reject a module-scope load of an optional dependency 2026-08-14 16:10:06 +08:00
.claude Revert "test(repository-plugin): drop the skill contribution from the preset-composed e2e" 2026-08-09 22:10:50 +08:00
.github fix(docs): point source links at public master 2026-08-13 21:20:28 +08:00
apps Merge pull request #2374 from deepseek-harness/codex/product-subagent-one-shot-background 2026-08-14 15:49:58 +08:00
assets docs: align community QR assets 2026-08-13 15:32:38 +08:00
docs feat(llm-deepseek): support low reasoning effort 2026-08-14 11:47:59 +08:00
examples Merge pull request #2374 from deepseek-harness/codex/product-subagent-one-shot-background 2026-08-14 15:49:58 +08:00
native release(landlock-run): 0.1.1 2026-08-13 15:32:17 +08:00
packages Merge pull request #2374 from deepseek-harness/codex/product-subagent-one-shot-background 2026-08-14 15:49:58 +08:00
patches cleanup: remove TUI package and legacy dsh entrypoints 2026-08-04 13:20:28 +08:00
python Adopt MIT for DSH packages 2026-08-13 13:07:24 +08:00
scripts fix(release): state what the echo helper does, and drop two dead claims 2026-08-14 16:10:06 +08:00
vendor release(vendor): cordis 4.0.1, cosmokit 1.8.2, group 1.0.1, hmr 1.0.16, include 1.0.6, loader 1.0.2, logger-console 1.0.1, schemastery 3.18.1, timer 1.1.3 2026-08-13 14:18:56 +08:00
website docs(website): read guide module facts from one per-locale record 2026-08-13 12:19:22 +08:00
.editorconfig Declare LF and final-newline conventions in .editorconfig 2026-07-15 16:09:12 +08:00
.gitattributes feat(i18n): compose pairing records during merges 2026-08-08 21:11:59 +08:00
.gitignore chore: untrack the local .claude/launch.json and ignore it 2026-08-08 23:45:38 +08:00
.gitlab-ci.yml fix: address Python release review feedback 2026-08-11 20:09:33 +08:00
.jscpd.json chore(lint): bring .tsx files into the eslint, lefthook, and jscpd lanes 2026-07-27 21:42:08 +08:00
.oxlintrc.json refactor: make lint workflows Oxlint-only 2026-08-09 14:55:15 +08:00
.oxlintrc.staged.json refactor: make lint workflows Oxlint-only 2026-08-09 14:55:15 +08:00
.rgignore chore: exclude archived Agent Notes from rg 2026-08-10 14:49:30 +08:00
AGENTS.md docs: capitalize Service Provider across repository 2026-08-13 13:31:30 +08:00
BENCHMARK.md docs: make Web UI the primary onboarding path 2026-08-12 11:44:33 +08:00
CLAUDE.md Initialize repo with README, AGENTS.md, and CLAUDE.md symlink 2026-06-10 22:58:56 +08:00
CONTRIBUTING.i18n.yaml docs(i18n): polish contribution greeting 2026-08-12 14:40:32 +08:00
CONTRIBUTING.md docs(i18n): refine contribution guide wording 2026-08-12 14:24:44 +08:00
CONTRIBUTING.zh.md docs(i18n): polish contribution greeting 2026-08-12 14:40:32 +08:00
knip.json fix: static 2026-08-13 15:32:13 +08:00
lefthook.yml fix(review): address source-run feedback 2026-08-11 11:22:08 +08:00
LICENSE Adopt MIT for DSH packages 2026-08-13 13:07:24 +08:00
package.json feat(release): reject a module-scope load of an optional dependency 2026-08-14 16:10:06 +08:00
pnpm-lock.yaml build(release): publish the vendored framework and the native packages publicly 2026-08-13 14:05:48 +08:00
pnpm-workspace.yaml fix(packaging): materialize runtime dependencies 2026-08-10 22:47:18 +08:00
pytest.ini Merge remote-tracking branch 'origin/master' into codex/trim-ai-prose 2026-07-14 00:40:36 +08:00
README.i18n.yaml docs: add link to preview paper 2026-08-13 18:37:45 +08:00
README.md docs: add link to preview paper 2026-08-13 18:37:45 +08:00
README.zh.md docs: add link to preview paper 2026-08-13 18:37:45 +08:00
THIRD_PARTY_NOTICES.md Adopt MIT for DSH packages 2026-08-13 13:07:24 +08:00
tsconfig.base.client.json refactor: replace overloaded surface terminology 2026-08-11 15:23:05 +08:00
tsconfig.base.json • feat(self-modification): add dynamic Cordis plugin runtime and UI 2026-08-13 01:29:36 +08:00
tsconfig.client.json fix(session-query): rename session log export package 2026-08-13 05:02:00 +08:00
tsconfig.host.json fix(web): hide verified cold blank sessions 2026-08-13 14:04:16 +08:00
tsconfig.json refactor(tsconfig): single root solution graph over host/client aggregates 2026-07-23 03:59:05 +08:00
tsdown.config.ts refactor: apply repository naming contract 2026-08-13 00:54:38 +08:00
vitest.config.ts ci: skip 2026-08-13 18:29:09 +08:00
vitest.e2e.config.ts fix(typert): close remote gateway review gaps 2026-08-07 21:47:15 +08:00
vitest.shared.ts fix(typert): close remote gateway review gaps 2026-08-07 21:47:15 +08:00
vitest.snapshot.config.ts chore: remove remaining SDK toolchain residue 2026-08-11 16:37:29 +08:00
vitest.web-stress.config.ts test(web): add opt-in reasoning chunk stress lane 2026-08-04 14:37:31 +08:00
vitest.web.config.ts fix: vitest 2026-08-13 01:35:47 +08:00
vitest.web.perf.config.ts test: add opt-in web performance scenario 2026-08-04 14:23:34 +08:00

DeepSeek Harness

English | 中文

DeepSeek Harness (dsh) is an open-source agent harness developed by DeepSeek AI.

It uses an architecture where everything is a plugin, and is powered by Cordis, whose design is described in A Programming Paradigm for Spatiotemporal Composability.

Developer preview

DeepSeek Harness is currently in developer preview and is iterating rapidly. THERE WILL BE COMPATIBILITY-BREAKING CHANGES.

Run

Run from npm

Install Node.js, then run:

npx @deepseek-ai/dsh web

The command starts the Web UI, served at http://127.0.0.1:3080 by default. 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

Community and support

Contributing

See CONTRIBUTING.md.

Development

Start with the development guide and architecture documentation.

For agents, follow AGENTS.md.

License

MIT

Third-party dependencies and their licenses are disclosed in THIRD_PARTY_NOTICES.md.