Review flagged that "equal by construction" rested on an engine behaviour I had not measured: `scrollbar-gutter: stable` only equalizes the layers if the engine applies it to `overflow: hidden` the way it does to `overflow-y: auto`. Measured it on the running app across the three engines Playwright ships, and the property does not hold up. engine .input / .backdrop / .mirror wrap width chromium 776 / 776 / 776 (768 / 768 / 768 with the declaration) firefox 776 / 776 / 776 (unchanged by it — overlay scrollbar) WebKit 768 / 776 / 776 (unchanged by it) WebKit reserves for `overflow-y: auto` and not for `overflow: hidden`, so the declaration left .input at 768 against 776 — exactly the gap it was meant to close — on the one engine where that gap is observable at all, while costing every chromium user 8px of text column unconditionally. Reverted: the composer's metrics are now the same as before this PR. The WebKit gap predates this change and is not closed here. It is recorded in the Agent Note with the numbers, and the browser scenario asserts the equality on the lane's engine so a regression into that state fails loudly. The mirror is unaffected on WebKit for the drafts measured — the extents still agree — but a draft whose wrapping turns on those 8px would clamp it. The review's monotonicity concern resolves the same way: the declaration was never worse than master, because WebKit already measured 768 against 776 without it. It simply was not better. Also from this round: the wrap-width assertion now covers .mirror as well as the two glyph layers — it is the height authority, so a mirror alone wrapping wider would measure the box short and clip content below the 14-line cap with every other assertion green. Plus `renderGeometry`'s missing `@param trailingNewline`, and both e2e tsconfig lists restored to alphabetical order.
DeepSeek Harness
English | 中文
DeepSeek Harness (dsh) is an open-source coding agent built on the DeepSeek Harness SDK.
It uses an architecture where everything is a plugin.
Install
Install dsh with one command:
curl -fsSL https://raw.githubusercontent.com/deepseek-harness/deepseek-harness/master/scripts/install.sh | sh
The installer requires git and Node ^22.19 || >=24, offers to install pnpm when it is missing, and prompts for a DeepSeek API key.
The installer keeps every checkout under ~/.dsh/source: the master clone at ~/.dsh/source/master and each install's staging checkout as a git worktree ~/.dsh/source/staging-<timestamp>. The stable symlink ~/.dsh/source/current points at the active staging worktree, and dsh in ~/.local/bin links to current/bin/dsh, so an upgrade repoints one symlink and the dsh on PATH never moves. Re-running the command adds a fresh staging worktree from an updated master and repoints current at it. See scripts/install.sh for alternate install locations and other options.
Use DeepSeek Harness
Web UI
For the recommended local interface, build the frontend after installation and after each update, then start the Web UI. Resolve the running checkout from the dsh launcher so the command holds regardless of which staging worktree is current (the launcher resolves through the stable current symlink):
dsh_bin=$(cd "$(dirname "$(command -v dsh)")" && pwd -P)/$(basename "$(command -v dsh)")
while [ -L "$dsh_bin" ]; do
link=$(readlink "$dsh_bin")
case $link in /*) dsh_bin=$link ;; *) dsh_bin=$(cd "$(dirname "$dsh_bin")" && cd "$(dirname "$link")" && pwd -P)/$(basename "$link") ;; esac
done
dsh_dir=$(cd "$(dirname "$dsh_bin")/.." && pwd -P)
pnpm --dir "$dsh_dir" run build && pnpm --dir "$dsh_dir" run build:web
dsh web
The Web UI is served at http://127.0.0.1:3080 by default.
TUI
Start the full-screen terminal interface:
dsh
Headless
Run one task, print the final answer, and exit:
dsh -p "summarize this workspace"
Why DeepSeek Harness
Built-in capabilities cover file reading, editing, and search; shell execution; reusable skills; task tracking; subagents and workflows; persistent sessions; and context compaction. The TUI also includes Plan Mode.
- Everything is a plugin. Models, tools, policies, storage, context management, and interfaces are composable Cordis plugins, so deployments can extend or replace behavior without forking the agent loop. See the architecture for the underlying design.
- Code Mode (opt-in). It exposes a
run_codetool and a generated TypeScript SDK; only program output re-enters model context. See Code Mode. - Self-referential Cordis tools are opt-in. They let the agent inspect its live runtime and mount or unmount plugins while it runs. See the Cordis tools.
Community
Follow DeepSeek Harness on Twitter for project updates.
Development
pnpm install
pnpm run test:coverage
Start with the development guide and read the architecture before changing packages.
For agents, follow AGENTS.md.
DeepSeek Harness is currently pre-release.