2nd dokployH
Find a file
_Kerman 89321489db refactor(session-projection-cache): own the cache tree under a config root
Store each session's projection_cache.json under the cache's own root tree
(<root>/<session-id>/projection_cache.json, wired to dshHomePath('projections')
in the base bundle) instead of beside the session log via
sessionPersistence.locate(). The cache owns its directory layout, keys
directories by the code-generated session id, and never consults the
persistence layer; the service now injects only sessionProjections and
sessions.

Drop the coldSnapshot method and its readFrom-tail fold ladder: every cold
consumer refolds from the log itself, so the cache only serves the listing
read (cachedSnapshot, one async file read per session) and the write side.
Fail-soft durability, per-path write serialization, in-flight drain, and
atomic 0600 writes are unchanged; the chain cleanup now observes its own
rejection so a failed write cannot surface as an unhandled error.

dsh-session-persistence leaves peer/dev dependencies and the tsconfig
reference; dsh-atomic-write moves to peerDependencies. Config gains a
required root.
2026-08-19 22:25:54 +08:00
.agents fix(session-projection-cache): address review — atomic-write reuse, sqlite no-path, ordering and drain 2026-08-19 21:40:12 +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 Merge pull request #2554 from deepseek-harness/feat/python-sdk-standard-agent-runtime 2026-08-19 12:58:45 +08:00
apps feat(session-projection-cache): store one projection_cache.json per session 2026-08-19 21:03:20 +08:00
docs feat(session-projection-cache): store one projection_cache.json per session 2026-08-19 21:03:20 +08:00
examples Merge remote-tracking branch 'origin/master' into worktree/deepseek-native-multimodal 2026-08-19 14:22:22 +08:00
native release(landlock-run): 0.1.1 2026-08-13 15:32:17 +08:00
packages refactor(session-projection-cache): own the cache tree under a config root 2026-08-19 22:25:54 +08:00
patches chore(subprocess-local): bump node-pty beta 2026-08-13 17:58:13 +08:00
python fix(ci): install local Python release wheels 2026-08-18 18:02:02 +08:00
scripts fix(session-projection): keep host state off wire 2026-08-19 14:32:48 +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 Merge remote-tracking branch 'origin/master' into feat/plugin-owned-settings-surface 2026-08-14 15:46:01 +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 Support MCP in packaged Python runtime 2026-08-18 13:50:53 +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 refactor(team): incubate Agent Teams packages 2026-08-18 11:58:11 +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 Merge codex/installable-product-subagents into codex/installable-codex-provider 2026-08-18 18:29:37 +08:00
lefthook.yml Revert "fix(client): declare browser-only externals as devDependencies" 2026-08-15 02:19:09 +08:00
LICENSE Adopt MIT for DSH packages 2026-08-13 13:07:24 +08:00
package.json perf(ci): parallelize coverage and web snapshots in-job 2026-08-18 21:15:20 +08:00
pnpm-lock.yaml refactor(session-projection-cache): own the cache tree under a config root 2026-08-19 22:25:54 +08:00
pnpm-workspace.yaml chore(subprocess-local): bump node-pty beta 2026-08-13 17:58:13 +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 feat(community,infra): publish README assets through CDN 2026-08-18 16:21:54 +08:00
README.md docs: add link to preview paper 2026-08-13 18:37:45 +08:00
README.zh.md feat(community,infra): publish README assets through CDN 2026-08-18 16:21:54 +08:00
THIRD_PARTY_NOTICES.md Merge codex/installable-product-subagents into codex/installable-codex-provider 2026-08-18 18:29:37 +08:00
tsconfig.base.client.json refactor: replace overloaded surface terminology 2026-08-11 15:23:05 +08:00
tsconfig.base.json Merge remote-tracking branch 'origin/master' into worktree/command-attachment-envelope 2026-08-18 16:25:11 +08:00
tsconfig.client.json refactor(client): merge React bindings into UI renderer 2026-08-18 01:34:23 +08:00
tsconfig.host.json Merge pull request #2673 from deepseek-harness/fix/web-feedback-note-popover 2026-08-19 13:59:30 +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 perf(ci): parallelize coverage and web snapshots in-job 2026-08-18 21:15:20 +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 perf(ci): parallelize coverage and web snapshots in-job 2026-08-18 21:15:20 +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.