2nd dokployH
Find a file
Yichen Jiang 1272c7d0df perf(web): accumulate the Turn rail instead of scanning the loaded window
The rail's items now ride the Chat snapshot: a structural upsert re-derives
the loaded Turn set, a content-only upsert re-derives only the Turns whose
nodes changed, and each preview is capped so navigation state never holds a
copy of the transcript. The published array keeps its identity until an item
changes, so ChatView selects it as both data and change signal — and a
streaming reply's preview follows the in-place node update instead of the
last structural publication.

A scroll frame resolves the active mark with one hit test at the reading
line, falling back to a single row scan, rather than a DOM query per mark.
Flow-height changes resync through the existing column observer, navigating
during a pending page keeps the paging anchor, and the rail height no longer
holds a floor taller than the band it centers in.
2026-08-25 14:46:38 +08:00
.agents perf(web): accumulate the Turn rail instead of scanning the loaded window 2026-08-25 14:46:38 +08:00
.claude docs: accuracy sweep, architecture restructure, two ADRs, review skill 2026-06-13 22:05:34 +08:00
.github fix(python): make Windows release paths native 2026-08-24 19:09:40 +08:00
apps perf(web): accumulate the Turn rail instead of scanning the loaded window 2026-08-25 14:46:38 +08:00
docs refactor(prompt): remove unused complete-persona config 2026-08-25 12:21:50 +08:00
native docs: trim CoT leakage from post-purge prose 2026-08-22 20:35:11 +08:00
packages perf(web): accumulate the Turn rail instead of scanning the loaded window 2026-08-25 14:46:38 +08:00
patches chore(subprocess-local): bump node-pty beta 2026-08-13 17:58:13 +08:00
python refactor(python): keep launch override on client 2026-08-25 12:21:51 +08:00
scripts test(python): share advanced runtime profile patch 2026-08-25 12:21:51 +08:00
snapshots test(web): record the Turn rail in every affected aria golden 2026-08-25 14:26:10 +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 refactor(repo): retire top-level examples 2026-08-24 22:02:44 +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 feat(python-runtime): package the dsh CLI and profile assets 2026-08-24 17:28:26 +08:00
.gitlab-ci.yml fix(python): make Windows release paths native 2026-08-24 19:09:40 +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 feat(util): mint UUIDs without crypto.randomUUID in every context 2026-08-21 20:35:34 +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(repo): retire top-level examples 2026-08-24 22:02:44 +08:00
BENCHMARK.md docs: make Web UI the primary onboarding path 2026-08-12 11:44:33 +08:00
BRAND_GUIDELINES.i18n.yaml docs: split brand guidelines into bilingual pair 2026-08-19 21:01:18 +08:00
BRAND_GUIDELINES.md docs: split brand guidelines into bilingual pair 2026-08-19 21:01:18 +08:00
BRAND_GUIDELINES.zh.md docs: split brand guidelines into bilingual pair 2026-08-19 21:01:18 +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(test): declare Loader fixture dependencies 2026-08-24 22:02:44 +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 refactor(repo): retire top-level examples 2026-08-24 22:02:44 +08:00
pnpm-lock.yaml Merge remote-tracking branch 'origin/master' into worktree/2986-trajectory-image-attachments 2026-08-25 10:50:06 +08:00
pnpm-workspace.yaml refactor(repo): retire top-level examples 2026-08-24 22:02:44 +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 Merge pull request #2560 from deepseek-harness/codex/add-security-policy 2026-08-23 11:10:52 +08:00
README.md Merge pull request #2560 from deepseek-harness/codex/add-security-policy 2026-08-23 11:10:52 +08:00
README.zh.md Merge pull request #2560 from deepseek-harness/codex/add-security-policy 2026-08-23 11:10:52 +08:00
SAFETY.i18n.yaml Merge pull request #2560 from deepseek-harness/codex/add-security-policy 2026-08-23 11:10:52 +08:00
SAFETY.md Merge pull request #2560 from deepseek-harness/codex/add-security-policy 2026-08-23 11:10:52 +08:00
SAFETY.zh.md Merge pull request #2560 from deepseek-harness/codex/add-security-policy 2026-08-23 11:10:52 +08:00
THIRD_PARTY_NOTICES.md refactor(webserver): minimize HTTP gzip integration 2026-08-25 06:43:24 +08:00
tsconfig.base.client.json feat(client): inject public build environment 2026-08-19 18:21:26 +08:00
tsconfig.base.json Merge pull request #2663 from deepseek-harness/feat/subagent-provider 2026-08-24 18:23:42 +08:00
tsconfig.client.json chore(client): align split package graph 2026-08-23 16:28:18 +08:00
tsconfig.host.json refactor(repo): retire top-level examples 2026-08-24 22:02:44 +08:00
tsconfig.json refactor(repo): retire top-level examples 2026-08-24 22:02:44 +08:00
tsdown.config.ts refactor: apply repository naming contract 2026-08-13 00:54:38 +08:00
vitest.config.ts refactor(repo): retire top-level examples 2026-08-24 22:02:44 +08:00
vitest.e2e.config.ts refactor(repo): retire top-level examples 2026-08-24 22:02:44 +08:00
vitest.expected.config.ts refactor(repo): retire top-level examples 2026-08-24 22:02:44 +08:00
vitest.shared.ts fix(typert): close remote gateway review gaps 2026-08-07 21:47:15 +08:00
vitest.snapshot.config.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +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.

Documentation: https://deepseek-harness.github.io/deepseek-harness/

Developer preview

DeepSeek Harness is currently in developer preview and is 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

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.