DeepSeek Harness Plugin

huiliyi37/dsh-tianshu-tui

Stars ★ 303 Downloads (30d) 2,906 Category UI Enhancements Added 2026-08-13 npm @huiliyi37/dsh-tianshu-tui

A terminal UI (TUI) for DeepSeek Harness.

Install

# from npm (prebuilt)

dsh plugin --profile web add @huiliyi37/dsh-tianshu-tui

# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)

dsh plugin --profile web add github:huiliyi37/dsh-tianshu-tui

Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).

README

Turn DeepSeek Harness into a complete, fluid coding workspace in your terminal.

中文 · English

dsh-tianshu-tui terminal interface

dsh-tianshu-tui is an interactive terminal UI plugin for the official DeepSeek Harness. Its lightweight, purpose-built ANSI renderer delivers streaming Markdown, tool cards, session restore and rewind, image and vision bridging, LSP diagnostics, 16 themes, and a complete slash-command and keyboard interface.

It is a presentation-only plugin: agent state comes from the session event stream. It does not run a second agent loop or silently inject its own prompts or tools.

What you get

Capability What it enables
Fluid conversations and tool views Streaming Markdown, collapsible reasoning, grouped parallel tools, structured diffs, turn timing, and token metrics
A complete session workspace Restore, switch, fork, rewind, and export sessions; queue messages while running or steer the active turn
Efficient input Slash menu, @ path completion, history search, multi-line paste, external editor, and optional Vim keybindings
Images and vision Paste and preview images inline; vision models receive them directly, while text-only models can use a vision bridge
Agent control panels Approval diffs, plan mode, goals, tasks, skills, subagents, and workflow state in one place
A customizable development environment 16 themes, LSP diagnostics, project memory, MCP browsing, and live model/reasoning-effort switching

Quickstart

Requirements

Component Currently validated version
Node.js >=24.9.0
Package manager pnpm, available through corepack enable
DeepSeek Harness @deepseek-ai/dsh@0.2.2-rc.1, published on both the npm latest and next channels
This plugin @huiliyi37/dsh-tianshu-tui@1.0.0-rc.5

The host's npm latest and next tags both currently point to 0.2.2-rc.1. The install commands keep @next explicit to avoid an older global CLI. This package is not a standalone CLI.

One-click install (recommended)

The installer checks Node/pnpm, installs the official CLI, wires the plugin, and launches it:

# macOS / Linux
bash <(curl -fsSL https://raw.githubusercontent.com/huiliyi37/dsh-tianshu-tui/main/scripts/install-tui.sh)
# Windows PowerShell
powershell -ExecutionPolicy Bypass -Command "irm https://raw.githubusercontent.com/huiliyi37/dsh-tianshu-tui/main/scripts/install-tui.ps1 | iex"

To install without launching, append --no-launch on macOS/Linux. On Windows, clone the repository and run powershell -ExecutionPolicy Bypass -File scripts\install-tui.ps1 -NoLaunch.

Manual install

# 1. Add the plugin to an isolated tui profile
pnpm dlx @deepseek-ai/dsh@next plugin --profile tui add @huiliyi37/dsh-tianshu-tui

# 2. Launch
pnpm dlx @deepseek-ai/dsh@next --profile tui

Follow the first-run guide to configure an API key, or enter /key. The dsh-tianshu-tui welcome screen confirms a successful install. Quit with Ctrl+Q or /exit.

If an old global dsh causes ERR_FS_EISDIR, or npm 11 runs out of heap while installing the large host dependency tree, use the pnpm dlx commands above. See Getting started for alternative setups and troubleshooting.

Everyday commands

Common commands

Command Action
/session Create, list, switch, or restore sessions
/fork · /rewind Explore a branch or roll back to a previous message boundary
/model · /effort Switch the current session's model and reasoning effort
/preset Inspect or switch standard / PTC / minimal / creative presets
/status · /tasks · /subagents Inspect goals, tasks, and subagent state
/theme · /density Change the theme or compact rendering
/scroll · /export Browse the full transcript or export Markdown

Keyboard shortcuts

Key Action
Enter Send
Shift+Enter Newline (or \+Enter to continue)
Ctrl+N New session
Ctrl+S Restore the most recent session
Ctrl+Q Quit (same as /exit)
Ctrl+P Command palette
Ctrl+. Full keymap
Ctrl+F / Ctrl+R History search; n/N next, p/P previous
Ctrl+O Expand/collapse the latest reasoning block
Ctrl+E Edit the input line with $EDITOR
Ctrl+T Steer the active turn
Ctrl+Enter Interrupt the active turn and send the draft (requires kitty keyboard protocol)
Ctrl+C Interrupt the active turn; double-press on idle empty input to exit
Ctrl+V Paste a clipboard image, falling back to text
Alt+W Copy the selection to the system clipboard via OSC52
Shift+Tab Cycle normal → plan → always-approve
Tab @ path completion; accept the slash-menu selection
Ctrl+U Delete to line start
↑/↓ Input history; menu selection; empty-input ↑ takes back a queued message
PageUp/PageDown Slash-menu paging
Esc Close a panel or cancel a question; double-press when idle to rewind
t Approval card: remember this tool for the session
a Approval card: allow for this session

See the interaction guide for every command, approval action, Vim binding, and terminal-protocol detail.

Updating

npm installs check for updates at startup. You can also run /update inside the TUI. Set DSH_TUI_SKIP_UPDATE=1 to disable the startup check.

pnpm dlx @deepseek-ai/dsh@next plugin --profile tui add @huiliyi37/dsh-tianshu-tui

Current release: 1.0.0-rc.5, adapted to host 0.2.2-rc.1. This release aligns official dsh peers, Cordis ~4.1.0, and Node >=24.9.0; fixes the four presets, legacy list-agents removal, and PTC executor wiring; migrates model routing to persistent AgentModel state and fixes /effort and /btw; passes the current Agent scope to tool presenters; improves Provider 401/settings-revision handling; and turns the old invariant companion into a dependency-free no-op.

Upgrade by running /update and restarting, or rerun the plugin add command above. See CHANGELOG.md for the full release history, or run /changelog inside the TUI.

Documentation

Document What it covers
Getting started Installation, launch, clean environments, and troubleshooting
Interaction Commands, keybindings, panels, and input methods
Configuration Assembly options, environment variables, presets, and runtime settings
Themes Built-in palettes, custom colors, and terminal fallbacks
Plugin ecosystem Companion plugins and extension points
Architecture · Adapter contract Layers, event flow, service dependencies, and presentation boundaries
VS Code Running in the VS Code terminal
Contributing · Developing Local development, build, test, and release workflows

Design principles

  • Event-driven: all rendered state derives from session events; live rendering and restored transcripts share the same bridge.
  • Presentation boundaries: no private prompt, tool, or context surfaces, and no direct mutation of agent request bodies.
  • Explicit degradation: missing optional host services produce an actionable message instead of a blank panel or a startup failure.
  • Terminal-friendly: supports narrow screens, 16-color terminals, and NO_COLOR, with handling for wide CJK text, long output, and streaming refreshes.

See the architecture guide and ADAPTER.md for implementation details and boundary constraints.

Known limitations

  • Re-interrogating images with ask_image requires the companion vision-ask plugin; basic image submission and vision bridging do not.
  • LSP servers start lazily but may remain resident in large repositories; rootUri follows the first session's working directory after a session switch.
  • Upstream schedule depends on the Web sessionController, so this TUI does not mount that tool surface yet.

Contributing

Issues and pull requests are welcome. Read the contribution guide first, then run:

npm run typecheck
npm test
npm run build

Official site and community

Destination About
Tianshu Harness website Official website and project overview
Tianshu-harness upstream Upstream source code, issues, and releases
Tianshu forum User discussions, experience sharing, and support

Community ecosystem

Project About
dshfind Chinese DeepSeek Harness learning and plugin community
dsh-web-ui DSH Web UI plugins and skins
dsh-TUI Claude Code-style fullscreen terminal plugin
deepseek-harness-ux Focused progress and automatic history folding for long tasks
DSH-better-sidebar Sidebar workbench for files, terminals, Git, and subagents
DSH Desktop Community desktop client with remote task control
dsh-whale-report Session, cost, tool-call, and risk reports

License and provenance

Open source under Apache-2.0. The terminal renderer evolved from the author's Tianshu-harness. See SOURCE-MAP.md and NOTICE for file-level provenance and modification notices.

Content from the project README on GitHub ↗

Links

More in this category

View the whole category →

Community comments

Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.