dsh-TUI README

The project's README from github.com/ccch1mneyyy/dsh-TUI. As one markdown file: README.md.

dsh-TUI - DeepSeek Harness terminal interface

简体中文 | English

npm CI MIT License Public beta 官方收录

dsh-TUI

一个面向 DeepSeek Harness 的交互式终端界面插件:提供像素鲸鱼顶栏、实时工作状态行、流式思考展示、双击 Esc 时间回溯、上下文进度条与 TPS 仪表。 零核心改动,纯插件挂载。安装插件即可启用,卸载后不会留下核心补丁。

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

🎉 官方收录

本插件被 DeepSeek Harness 官方公众号 推文收录,也被 dshfind 插件目录与 GitHub Trending 收录,同时登上了Github Treding日榜第七

DeepSeek Harness 官方公众号推文收录 dsh-TUI
DeepSeek Harness 官方公众号推文收录
dsh-TUI on dshfind
dshfind 插件目录收录

Trendshift
dshfind Github Treding榜第七

核心能力

Windows Terminal 支持 Sixel 时,全屏会话记录可直接显示内嵌缩略图,点击后打开大图预览;非全屏 inline 模式仍保留文字回退。 Sixel 使用最多 256 色的自适应调色板,透明像素与背景合成;Worker 缓存量化结果,滚动时仅编码可见部分,移出视野或被浮层覆盖时擦除旧图。 附件读取与解码最多两路并发;最后一个使用者离开后取消读取,未启动的解码不再执行。多图缓存、排队任务与单帧传输均有容量上限,超限时保留文字回退。 自动探测优先 Kitty,其次使用 DA1 声明的 Sixel 能力。DSH_TUI_IMAGE_PROTOCOL=auto|kitty|sixel|none 可覆盖协议选择; DSH_TUI_DISABLE_TERMINAL_IMAGES=1、无障碍模式、非 TTY 输出以及 tmux/screen 仍禁用图形。 缺少图片依赖或编码失败时保留文字回退;强制协议也不会启用 inline Sixel。 浅色主题的面板和图片预览默认使用白底,图片预览边框使用中性色。 大图预览以对话区约 95% 宽高为预算,最长边可达 2048 像素,仍限制总像素量和后台开销;缩略图大小不变。 预览支持适应窗口、100% 原像素与 200%/400%/800% 放大,拖动、滚轮或方向按钮平移;100% 需终端报告字符格像素尺寸。 底部「打开原图」链接直接调用系统看图程序,打开未经重编码的原始附件,包括从历史会话恢复的图片。 大图弹窗用 ←/→ 或底部 ‹/› 切换上一张、下一张,显示当前张数,首尾不循环;切图回到适应窗口。

界面预览

首屏:像素鲸鱼顶栏
首屏:像素鲸鱼顶栏

快速开始

前置条件:安装Nodejs与deepseek-harness,注册DEEPSEEK_API_KEY。

安装命令:

npm install -g @deepseek-ai/dsh @deepseek-harness-tui/dsh-tui

启动命令:

# 完整命令
dsh-tui
# 如果你不想按键盘七次
dst

如果你想手动安装,可以使用仓库根目录的 install.sh:

sh install.sh
# 或:dsh plugin --profile dsh-tui add @deepseek-harness-tui/dsh-tui
# 之后 dsh-tui 与 dsh --profile dsh-tui 等价

新用户提示:若 dsh plugin 安装时报 ERR_PNPM_IGNORED_BUILDS(pnpm ≥11 默认阻止带安装脚本的依赖,如 @google/genai、protobufjs——这些脚本运行时不需要,忽略即可),在 profile 的 pnpm-workspace.yaml 里加入:

allowBuilds:
  '@google/genai': false
  protobufjs: false

/update 与 dsh-tui update 会自动写入这份配置,无需手工处理。

更面向零基础的安装流程、profile 叠加机制、源码构建与常见问题见安装与快速开始。

插件扩展与开发指南

想为 dsh-TUI 做插件/扩展?欢迎加入生态!

接缝稳定性参考

按当前实现成熟度给出的非正式分级,帮助插件作者评估投入;正式状态与兼容性协定以 准入与开发指南为准:

分级 接缝
稳定候选(形态冻结;如有破坏性变更,先在次版本弃用告警再移除) 六 设置区块 · 八 全屏场景 · 十 托管对话框 · 十一 状态行 · 十二 键盘快捷键 · 十三 条目渲染器
实验性(仍可能随 dsh-std / 准入规范演进调整) 九 决策事件 · toast 通知(ctx.tuiToast,新增)
跟随上游(稳定性由 cordis / dsh 官方机制决定) 一 会话事件 · 二 官方 prompt 槽位 · 三 技能打包 · 四 主题 · 五 system prompt 段 · 七 profile 组合

另:@deepseek-harness-tui/dsh-tui/api(纯类型入口)为实验性公开面。 @deepseek-harness-tui/dsh-tui/test-utils 公共子路径已移除——它包含可注入真实 activationId 的测试助手,不适合作为公共生产 API;需要 headless 测试请复制仓库内 scripts/lib/plugin-test-utils.ts 的思路,在自己的测试环境走正式准入流程。

公共面的导入迁移:

平台已知边界(Shadow 门禁不承诺覆盖)

TUI 的 shadow/门禁只覆盖自有托管接缝;以下由 Cordis/上游 DSH 拥有的路径属于已写死的 平台边界,不会被门禁描述为全路径覆盖:

这些路径在 verify-adapter-shadow 中以 platform-known boundary 显式列出。 此外,verify-adapter-shadow 还显式记录两类门禁已知边界:未列入 NON_SERVICE_POLICY 的内部 TUI 状态/视图辅助类,以及 src/screens/ src/components 的 React UI 状态与事件处理——它们不是 adapter capability 入口,门禁不将其描述为已覆盖。

Adapter live-probe 诚实性与 P2 边界

本轮把 Command / LocalStorage / MessageObserver 从“无实探的 staged” 推进到了“有可逆实探的 live”(在 legacy/new 模式下异步执行),并实现最小 KernelRuntime 与 passive/replay harness:

dsh-TUI (ccch1mneyyy/dsh-TUI)

Searching Database…

4.7K ·GitHub
What is this?An interactive terminal UI plugin for DeepSeek Harness (DSH): a pixel-whale header, live work status line, streaming thinking display, double-Esc time rewind, a context progress bar and a TPS gauge.
Is this a separate app, or does it plug into DeepSeek Harness?It's a pure plugin that mounts on top of DeepSeek Harness with zero core changes — installing enables it, and uninstalling leaves no core patches behind.
How do I get it running?Prerequisites are Node.js, the deepseek-harness CLI and a registered DEEPSEEK API key; then it's a one-command npm install, with a manual install.sh in the repo root as the alternative.
Any install pitfalls I should know about?With pnpm ≥11 the install may fail with ERRPNPMIGNOREDBUILDS — pnpm blocks deps whose install scripts (like @google/genai, protobufjs) aren't actually needed at runtime. /update and dsh-tui update write the pnpm-workspace.yaml fix automatically.
What can I actually do from inside the TUI?Session tools like /resume (browse, search, pin past sessions), /agentview for background sessions, /new, /compact, /export, /btw, hot model switching, native subagents, session forking, auto-update, a /vim editing mode, mouse selection and a fullscreen draft editor (Ctrl+Shift+E).
Will image previews work in my terminal?Only if the terminal supports Kitty graphics or Sixel — detection prefers Kitty, then DA1-declared Sixel capability, overridable via DSHTUIIMAGEPROTOCOL. tmux/screen, non-TTY output and accessibility mode fall back to text.
What's the pixel whale mascot about?A random one-of-three opening animation plays at startup, and before your first task you can click to spawn hearts and wake the sleeping whale while idle animations (fin waves, tail slaps, sleeping Z's) run. After the first task it freezes to a static frame with zero ongoing cost; there's an off-switch in /settings → whaleIdle. The 22-frame hand-drawn art is ported from dsh-ui-whale by @lhh010.
What does the live status line show?Work status, TPS, cache hit rate, reasoning level, input/output token counts and Git/session info, with several themes available (moon8 is the default). Multi-line command cards can collapse to one line plus a count, and in fullscreen a ~600ms hover reveals the full content of truncated cards or messages.
Can I build my own plugins on top of it?Yes — there's a plugin development guide with admission specs, a dsh-tui-ecosystem community org, a plugin-template repo that gets you a plugin in about 5 minutes, and a reference implementation (dsh-working-activity). Extension seams are tiered by maturity: some are stable candidates, others experimental or bound to upstream Cordis/DSH.
Size
44.7 MB
Stars
4.7K
Age
2mo
Commits · 90 Days