2nd dokployH
Find a file
Yichen Jiang a1271a4903 fix(llm): keep streamed tool-call identity across empty deltas
A continuation SSE delta that repeats a tool call's `id` or `name` as an
empty string — or as `null`, which some OpenAI-compatible gateways send —
erased the identity established by the call's first delta. The assembled
block reached the loop with an empty name and failed as `unknown tool ""`,
and the empty `callId` persisted into `tool/result`, which the session
reader refuses on reopen.

`acceptIdentity` accepts only a non-empty string, so a repeated empty or
null field means "no update". A tool call still missing `id` or `name` at
`[DONE]` ends the response with the new retryable `MALFORMED_TOOL_CALL`
code instead of closing an unusable block.
2026-09-01 22:22:51 +08:00
.agents fix(llm): keep streamed tool-call identity across empty deltas 2026-09-01 22:22:51 +08:00
.claude
.github Merge branch 'master' into turtle/pr-open-start-date 2026-08-31 16:27:41 +08:00
apps Merge pull request #3415 from deepseek-harness/worktree/3414-turn-rail-preview-layer 2026-09-01 21:05:36 +08:00
docs refactor(session)!: distinguish event seqs from log offsets 2026-09-01 20:36:00 +08:00
native
packages fix(llm): keep streamed tool-call identity across empty deltas 2026-09-01 22:22:51 +08:00
patches
python chore(sdk-runtime): adopt master's manifest (drop the code-runtime-python peer) 2026-08-31 14:56:11 +08:00
scripts refactor(session)!: distinguish event seqs from log offsets 2026-09-01 20:36:00 +08:00
snapshots fix(llm): keep streamed tool-call identity across empty deltas 2026-09-01 22:22:51 +08:00
vendor release(vendor): cordis 4.0.2, cosmokit 1.8.3, group 1.0.2, hmr 1.0.17, include 1.0.7, loader 1.0.3, logger-console 1.0.2, schemastery 3.18.2, timer 1.1.4 2026-08-30 11:04:50 +08:00
website
.editorconfig
.gitattributes
.gitignore fix(code-runtime-python): bound three child-side walks by depth, not width 2026-08-31 14:24:59 +08:00
.gitlab-ci.yml
.jscpd.json
.oxlintrc.json
.oxlintrc.staged.json
.rgignore
AGENTS.md Merge master into codex/omit-unneeded-invariants 2026-08-31 14:38:55 +08:00
BENCHMARK.md
BRAND_GUIDELINES.i18n.yaml
BRAND_GUIDELINES.md
BRAND_GUIDELINES.zh.md
CLAUDE.md
CONTRIBUTING.i18n.yaml
CONTRIBUTING.md
CONTRIBUTING.zh.md
lefthook.yml
LICENSE
package.json release(dsh): 0.1.2-alpha.3 2026-08-31 23:39:37 +08:00
pnpm-lock.yaml refactor(session)!: distinguish event seqs from log offsets 2026-09-01 20:36:00 +08:00
pnpm-workspace.yaml
pytest.ini
README.i18n.yaml
README.md
README.zh.md
SAFETY.i18n.yaml
SAFETY.md
SAFETY.zh.md
THIRD_PARTY_NOTICES.md chore: commit the master third-party notices (SDK 0.3.241) 2026-08-31 14:59:01 +08:00
tsconfig.base.client.json
tsconfig.base.json Merge remote-tracking branch 'origin/master' into feat/3220-steer-service 2026-09-01 13:46:35 +08:00
tsconfig.client.json
tsconfig.host.json Merge remote-tracking branch 'origin/master' into feat/3220-steer-service 2026-09-01 13:46:35 +08:00
tsconfig.json
tsdown.config.ts
vitest.config.ts Merge remote-tracking branch 'origin/master' into turtle/omit-unneeded-invariants 2026-09-01 11:54:10 +08:00
vitest.e2e.config.ts
vitest.expected.config.ts
vitest.shared.ts
vitest.snapshot.config.ts
vitest.web-stress.config.ts
vitest.web.config.ts
vitest.web.perf.config.ts

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

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.