* fix(web): make the plan chip a business-accent control at row height The chip borrowed the warn-state pair for a plain mode flag, so it read as a warning, and its 2px vertical padding left it 4px shorter than the + and select controls beside it. It now uses the business accent pair, takes the row's 28px height, and carries Chinese copy; the unused chip.off.* dictionary entries had no surface and are dropped. * docs(web): re-record the plan chip README pair * docs(web): state the plan chip's close glyph and drop stale copy claims The READMEs described the chip without the × the component renders, and the zh side still quoted the English accessibility string after this branch gave the namespace its own Chinese one. * test(web): pin the plan chip's accent tokens, height, and Chinese copy The lifecycle-chrome lane asserted the chip's warn pair; it now asserts the business pair plus the 28px row height, and a zh plan-active golden records the 「计划」 label the chip shows under the Chinese locale. * fix(web): color claimed command tokens with the business accent The draft's claimed token still used the warn label color while the plan chip moved to the business pair, so a claimed /计划 read orange above a blue chip. The claim decoration and the tests asserting its inline style now use state-business-primary. * fix(web): keep the composer control row on one line at narrow widths The fixed-width mode chips and send circle left the row's 12px gaps deciding between a slack first line and a wrapped trailing group: beside the plan chip, a long model name moved the model trigger and send circle to a second line while the first line still had room. Narrow rows now use 8px gaps, which holds the row together down to the icon-only model trigger. * fix(web): drop the context ring in the narrow composer row With plan mode on and a long model name, the 28px occupancy ring plus its gap was what pushed the trailing group onto a second line. The ring yields at the same row width that already hides the access-mode label, so the fixed controls keep one line; the reading stays reachable from a wider window. --------- Co-authored-by: Turtle <[email protected]>
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
- Submit feedback or bug reports through GitHub Discussions.
- Add the
dsh-plugintopic to your plugin repository for discoverability. - Join DeepSeek Harness Discord community.
Contributing
See CONTRIBUTING.md.
Development
Start with the development guide and architecture documentation.
For agents, follow AGENTS.md.
Citation
@misc{deepseek-harness2026,
title={DeepSeek Harness: Everything is a Plugin},
author={DeepSeek-AI},
year={2026},
publisher={GitHub},
howpublished={\url{https://github.com/deepseek-ai/deepseek-harness}},
}
License
Third-party dependencies and their licenses are disclosed in THIRD_PARTY_NOTICES.md.