@tomowang/dsh-tui
Terminal front door for DeepSeek Harness (dsh): an out-of-tree TUI mode bundle over dsh-base
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:tomowang/dsh-tui说明文档
阅读完整 README ↗dsh-tui
An open-source terminal front door for DeepSeek Harness (dsh).
@tomowang/dsh-tui is an out-of-tree mode bundle: it stacks on @deepseek-ai/dsh-base exactly like the shipped dsh-web-app and dsh-headless bundles do, but drives the agent from your terminal instead of a browser. The package is both a Cordis plugin (terminal input and presentation) and a dsh bundle (dsh.bundle.patch in package.json points at cordis.patch.yml); everything else — model adapters, tools, session persistence, sandbox and approval policy — stays in dsh-base and remains patchable underneath.
Status: early scaffold. Built on React + Ink: settled session events print to native scrollback, a live status bar and prompt sit below. Full-screen differential rendering, streaming output, tool cards, and the
userInteractionapproval panel are on the roadmap below.
How it works
- The TUI renders only from the durable session log: it replays
agent.session.eventson startup and followssession/eventlive, so--resumeshows the exact history the log carries — the harness's "model-visible ⟺ logged" invariant does the heavy lifting. - Line input maps to the agent inbox:
agent.followup()while idle,agent.steer()while a turn is running,Ctrl+Ccancels the running turn. tui-startupparses this app's flags (everything after the launcher's own) throughdsh-cmdlineand publishes them as an ordinary Cordis service; the runner row reads them via the bundle patch, mirroringdsh-headless.- Both stdin and stdout must be real TTYs; the plugin fails loud instead of degrading, so pipes keep using
dsh --profile headless.
Install
Requires Node ^22.19 || >=24 and a DEEPSEEK_API_KEY.
# 1. Install the dsh launcher
npm install -g @deepseek-ai/dsh
# 2. Create the profile and install this bundle into it
dsh plugin --profile tui add @tomowang/dsh-tui
# 3. Declare the bundle stack in the profile manifest
# ($DSH_HOME/profiles/tui/package.json)
# "dsh": { "profile": { "bundles": [
# "@deepseek-ai/dsh-base",
# "@tomowang/dsh-tui"
# ] } }
# 4. Run
dsh --profile tui
dsh --profile tui --resume # reopen a persisted session
dsh --profile tui --dump-config # inspect the composed plugin tree