dshbase

插件目录 / Terminal / dsh-TUI

dsh-TUI

已验证 · 实测可装 ccch1mneyyy

✓ 持续维护 71 位贡献者 基于 31 个官方 DSH 包 纯 TypeScript

查看 GitHub ↗ ← 返回插件目录

3771Stars
229Forks
86未关闭 issue
TypeScript语言
2026-09-29最近推送
跨平台平台

功能简介

解决DSH 官方尚无终端 TUI 痛点的补位之作,献给偏爱cli的各位极客:Claude Code 风格全屏交互终端插件——像素鲸鱼顶栏、实时工作状态行、思考流式展开、双击 Esc 回滚、上下文进度条 + TPS 仪表。npm 一键安装。

✅
我们的评价
推荐 — 实测可用且热门

解决DSH 官方尚无终端 TUI 痛点的补位之作,献给偏爱cli的各位极客:Claude Code 风格全屏交互终端插件——像素鲸鱼顶栏、实时工作状态行、思考流式展开、双击 Esc 回滚、上下文进度条 + TPS 仪表。npm 一键安装。 实测能干净安装、正常启动。3771+ stars,社区认可度高,是低风险选择。

「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。

README

dsh-TUI animated whale logo

English | 简体中文

npm CI MIT License Public beta GitHub stars npm downloads

dsh-TUI

An interactive terminal UI plugin for DeepSeek Harness. It ships a
pixel-whale header, live work status, streaming thinking, double-Esc time
rewind, a context progress bar, and a TPS gauge. It mounts as a pure plugin,
with no core changes. Install to enable; uninstall leaves no patches behind.

Highlights

  • Pixel whale pet — three startup intros, click to wake; freezes after the first task.
  • Terminal-native UI — streaming Markdown, tool cards, / and @ completion, #L12-14 ranges, history search, zh/en UI.
  • Images — Kitty/Sixel thumbnails, centered preview with zoom and pan, paste-time fitting, text fallback.
  • Mermaid diagrams — mermaid fences drawn as Unicode diagrams.
  • LaTeX math — $…$ and $$…$$ formulas as Unicode text, fractions and limits stacked in display blocks; mathRendering: image typesets block and one-row inline formulas as terminal images on graphics terminals.
  • Timeline rail — every turn clickable; timeline / scrollbar / hidden gutter.
  • Live state — activity animation, context bar, TPS, cache hit rate, effort, tokens, session cost estimate (main + subagents), Git and session metadata.
  • One session manager — /resume /home /agentview /bg ⌸.
  • Session workflow — /new /compact /export /btw, model hot-switch, fork, rewind, vim, fullscreen draft editor.
  • IDE selection channel — a VS Code selection lands in the prompt.
  • DSH integrations — presets, skills, MCP, goals, todos, subagents, questionnaires.
  • Extensions — browser interaction, computer use and more.
  • Built for long sessions — event-driven projection, virtualization, bounded caches.

Keys and commands: Interaction and commands. Everything else: documentation index.

Preview

Recorded dsh-TUI session: welcome, completion, help and typing, with animated pixel whale.

Featured & Listed

Featured by the DeepSeek Harness official WeChat account, listed in the
dshfind plugin
directory, and ranked #7 on GitHub Trending
daily
(TypeScript).

dsh-TUI featured by the DeepSeek Harness official WeChat account
Featured by the official WeChat account
dsh-TUI on dshfind
Listed in the dshfind directory

Trendshift
GitHub Trending Daily #7

Quick Start

Prerequisites: Node.js and
deepseek-harness, with
DEEPSEEK_API_KEY configured.

The primary compatibility target is DSH 0.2.0-rc.1. This adapter supports its
Shell API, V4 session messages, declarative presets, and profile-backed settings;
older supported hosts retain their compatibility paths. See configuration.

On DSH 0.1.7, /settings uses the TUI's actual Loader entry ID, including custom
IDs. It requires matching profile dependencies with @deepseek-ai/schemastery
3.18.3 or newer; an incompatible schema stops TUI startup with repair guidance
instead of showing an uneditable settings page. Older hosts keep their legacy settings scope.

# Install the CLI and this plugin globally (ships the dsh-tui command)
npm install -g @deepseek-ai/dsh @deepseek-harness-tui/dsh-tui

# Start (first run auto-initializes the profile; needs pnpm)
dsh-tui
# Both `dsh-tui` and the short `dst` alias start the same TUI.
dst

Manual alternative: dsh plugin --profile dsh-tui add @deepseek-harness-tui/dsh-tui.
The repo's sh install.sh runs that step and checks the required commands.
Afterwards dsh-tui and dsh --profile dsh-tui are equivalent.

New-user note: pnpm ≥11 blocks dependencies with install scripts by
default and reports ERR_PNPM_IGNORED_BUILDS. Updates skip foreign-platform
@img/sharp-* native packages, saving about 200MB of downloads. /update
and dsh-tui update write both settings automatically. No manual step
needed. Details:
Getting started.

After startup the TUI checks for newer versions in the background. It never
blocks the first frame. Type /update for a one-shot upgrade. It restarts
automatically and resumes the current session. See
Getting started for the profile lifecycle,
source builds, and troubleshooting, including migration from the former
dsh-cc-tui package.

CLI

Command Purpose
dsh-tui / dst Start the TUI; dst is a short alias for the same program
dsh-tui --resume [id] · dsh-tui update · dsh-tui doctor Resume a session · update the profile and align the launcher · pre-flight environment checks
dsh-tui safe Read-only diagnostics, plugin inventory and repair guidance; safe --rescue builds a clean rescue profile
dsh-tui version · dsh-tui help Launcher and profile versions and usage; both work even without a dsh install

Leading DSH options such as --dump-config and --patch <path> are forwarded
unchanged; other arguments go to the app in dsh --profile dsh-tui. Use
dsh-tui -- --resume=sid-1 ./notes to send --resume=sid-1 ./notes as literal
prompt text, without selecting a session or workspace. When invoking DSH
directly, use dsh --profile dsh-tui -- -- --resume=sid-1 ./notes: the first
-- belongs to DSH, the second to the app. Host options can precede a literal
prompt: dsh-tui --patch ./overlay.yml -- --resume=sid-1 applies the overlay
and sends --resume=sid-1 as prompt text without resuming that session.
Safe mode: Getting started.

Importing conversations from other agents (dsh-tui migrate)

Bring Claude Code, Codex, OMP, zcode, or Grok Build conversation histories into the DSH session store, then browse and resume them by their original working directory via /resume:

dsh-tui migrate                # list importable counts per agent (writes nothing)
dsh-tui migrate claude-code    # import every Claude Code conversation (likewise codex / omp / zcode / grok-build)
dsh-tui migrate codex --dry-run  # preview what would land, write nothing
  • Read-only source: migration only reads the foreign agent's local store; artifacts are written through the official JsonlSessionPersistence backend, so imported sessions are first-class (openable, continuable).

  • Idempotent: one deterministic UUID per source conversation — re-importing skips what is already present instead of stacking duplicates.

  • Structure preserved: user/assistant messages, reasoning traces, tool calls with their results, and the source's context compactions (as native compaction checkpoints) are rebuilt turn by turn; harness-injected machine text opens no turn. An imported session can pick the work straight up.
    In-TUI browsing: the session screen (/resume) shows a tab per agent that has conversations; picking one imports just that conversation and opens it.
    In-TUI: /migrate (optionally /migrate <agent> [--dry-run]) runs the same import in a child process and reports through the notification flow.
    CLI alternative: dsh-tui migrate ... from any shell runs the same import.
    Full guide: Session migration.

  • More agents (pi, opencode, …) extend the adapter registry as adapters land; grok-build reads GROK_HOME when set.

VS Code: use the integrated terminal or the dsh-tui-vscode extension. See VS Code guide. Herdr: run dsh-tui in a Herdr pane; idle / working / blocked are reported through its local integration API.

Keybindings & Mouse

Enter send · Tab complete · Ctrl+Enter interrupt and send · Alt+Up recall the last message · Esc dismiss, double-Esc rewinds · Ctrl+O details · Ctrl+R history · Ctrl+V paste · Ctrl+Shift+E fullscreen draft editor · ? shortcuts · ← background the session.

While the model is working: Enter steers, Tab queues a follow-up, Ctrl+Enter interrupts and sends.

On native Windows, fragmented Win32 input records are reassembled across short input delays instead of appearing as numeric protocol text. The platform check only reports that this machine might run the private mode (win32-input-mode); a bare ESC[ fragment is held only after one record has actually been decoded, while a fragment whose own shape is already record-specific holds on its own (which is how even the first record can survive a split). Windows terminals that never enter the mode (mintty, GitBash) therefore keep the classic VT path: a lone Esc keeps its normal response time, and a letter typed after a timed-out ESC[ is not swallowed.

Incomplete records are held for a bounded recovery window (1 second from first capture, never extended by later input; 64 bytes max); past either bound the hold ends and input is handled as before. Unrecognized complete CSI sequences are not inserted as text; after a damaged CSI prefix, a bare ASCII letter can be consumed as its terminator, while normal Win32 key records and bracketed-paste text retain their own boundaries.

A session's very first record can still leave residue if it is split before its record-specific shape forms; once any record has been decoded, every split position is covered. Inside the recovery window, literal input starting with [digit;… cannot be told apart from a protocol prefix — it may be held, or re-joined to a preceding Esc. To type it, wait for the window to close, or avoid that shape right after Esc.

Mouse (fullscreen): drag to select and copy, double/triple click to select a word or line, click tool cards, timeline ticks and [Image #N] previews.

Pasting: native and bracketed paste keeps ordinary text and newlines, and never submits itself on arrival. On Windows terminals that deliver a paste as win32-input-mode key records, the residue is stripped at the entry point (a multi-line paste no longer leaves stray _) and pasted CRLF collapses to a single newline; genuine underscores and bracketed-paste text are untouched.

Full reference: Interaction and commands.

Built-in Commands

/resume · /home · /agentview · /bg · ⌸ open the same session manager: workspace rail, live state, filter, ★ pins. Also /model /new /compact /export /btw /tree /fork /rewind /settings /status /cost /jobs /skills /mcp /login /update.

The session manager paints the last successful list immediately while it checks the persistence store for changes. Titles that require a deeper log scan appear first with a fallback name and update in place when recovery finishes.

Background sessions: /bg or ← on an empty prompt; Esc returns. They run in this process and stop when the TUI exits. Logs survive.

Full commands: Interaction and commands.

Configuration & Extensions

Agent presets, themes, MCP servers, environment variables: Configuration · Themes.

How It Works

dsh profile → dsh-base → dsh-TUI Cordis patch → agent preset + DSH services
  → session/event → Channel projection → React components → Ink/Yoga renderer → terminal

The TUI handles interaction and presentation. The session log is the source of truth. DSH services own models, tools, and persistence. Long sessions render in O(visible window).

Runtime path, module boundaries, performance notes and persistence locations: Architecture and limitations.

Known Limitations

  • Injected plugin context has no standalone display; it counts into the context segments.
  • /model switches by forking the session; the old session stays in /resume (a session nobody has typed into records no branch, so your first prompt there still gets a generated title).
  • Ctrl+V needs platform clipboard tools; unsupported bitmap formats are rejected.
  • A background session lives inside this process and stops when the TUI exits.
  • /thinking is not persisted; /compact is unavailable under the minimal preset; /update needs a dsh --profile launch and is refused while a turn is running.
  • The status-bar ≈¥ and /cost are session estimates that include subagent usage (priced per each agent's model × peak/idle × cache components); unofficial or unlisted models show tokens only and are marked unpriced. The platform bill is authoritative.

Full list: Architecture and limitations → Known limitations.

Development

CI uses Node 24 and pnpm 11. The package supports Node ^22.19 || >=24.

pnpm install --frozen-lockfile
pnpm build
pnpm smoke

lib/types/ is ignored generated output. pnpm build recompiles it from a
clean output directory and runs the build gates. Git URL installs are not
supported.
The source manifest keeps @dsh-std/* as workspace deps and
vendor/dsh-std as a submodule. pnpm ≥11 also refuses git-hosted prepare
scripts by default. Install the registry package instead:
dsh plugin --profile dsh-tui add @deepseek-harness-tui/dsh-tui. Rendering,
questionnaire, or tool-card changes also need the matching regression scripts.

Plugin Ecosystem

Plugin development: admission & development guide · plugin-template · dsh-tui-ecosystem. Reference implementation: dsh-working-activity.

Seam grading and API notes: Plugin development. The organization maintains the listing only; it does not endorse community plugins.

Documentation

Everything, bilingual: docs/README.md.

Community

  • Ecosystem organization: dsh-tui-ecosystem
    hosts community plugins, templates, and the curated list. Come ship a
    plugin, pitch an idea, or just hang out 🐋
  • Chat groups (Chinese-language): usage questions, plugin ideas, and
    feature wishes are all welcome.
  • Code of conduct: please read the
    Contributor Covenant Code of Conduct before taking
    part.
WeChat group (dsh-TUI community 4) QQ group (ID 572549239)
dsh-TUI community WeChat group 4 QR code dsh-TUI community QQ group QR code

The WeChat QR code expires roughly every 7 days; if it stops working, use
the QQ group (572549239) or open an issue to nudge us for a refresh.

Permissions and Security Boundary

Windows security warning: the Windows profile defaults to danger-full-access with approval set to never, so tools have unrestricted access. Inspect and tighten the profile before starting next to sensitive credentials or in an untrusted repository.

No sandbox of its own: dsh-TUI uses the active DSH profile's filesystem, shell, sandbox and approval policies. Permission presets come from the DSH permissionPresets registry.

Details: Permissions and security boundary.

Acknowledgments

  • The pixel whale's 22 hand-drawn frames and its idle behaviors are ported
    from dsh-ui-whale. The frames
    were drawn cell by cell in Excel. The idle behaviors are fin flutters, tail
    thumps, sleep Z's, and click hearts. dsh-ui-whale is the DeepSeek Harness
    web whale-pet plugin by @lhh010, BSD-3-Clause.
    Thank you for the art and the inspiration 🐋💜

Friends' Links

Community, related projects, and companion tools built by friends:
see the links page

Stars

Star History

License

MIT

安装

🧩 让 Agent 自动装(推荐)

装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:

dsh plugin add dshbase-catalog

然后对 agent 说「帮我装 dsh-TUI」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。

该插件是 GitHub 源码(未发 npm)——直接从仓库装:

Web profile:

dsh plugin --profile web add github:ccch1mneyyy/dsh-TUI

Headless(CLI)profile:

dsh plugin --profile headless add github:ccch1mneyyy/dsh-TUI

实测报告

验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。

使用场景

改善终端体验——TUI、命令面板或 shell 集成——让 dsh 在终端里如原生一般。

适合谁

终端优先、从命令行驱动 dsh、想让它像熟悉的 CLI agent 一样工作的开发者。

二次开发建议

TUI 布局和 shell 集成是缝——加面板、快捷键或新的 shell 钩子。

✓ 低风险 静态扫描 · 25 个文件 · 2026-09-29

分享徽章

Terminal 里更多

浏览全部 7797 个插件 →