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
这是什么?一个用于 DeepSeek Harness(DSH)的交互式终端界面插件:像素鲸鱼页眉、实时工作状态行、流式思考过程展示、双击 Esc 时间回溯、上下文进度条和 TPS 仪表。
这是一个独立的软件,还是 DeepSeek Harness 的插件?它是一个纯粹的插件,直接挂载在 DeepSeek Harness 上,对核心零改动——装上即生效,卸载后也不会在核心里留下任何补丁。
我怎么把它跑起来?前提是装好 Node.js、deepseek-harness 命令行工具,并注册一个 DEEPSEEK API 密钥;然后只需一条 npm install 命令,也可以选择仓库根目录下的手动安装脚本 install.sh。
安装有什么坑需要提前知道?使用 pnpm 11 及以上版本时,安装可能报 ERRPNPMIGNOREDBUILDS 错误——pnpm 会拦截那些安装脚本在运行时其实用不到的依赖(比如 @google/genai、protobufjs)。/update 和 dsh-tui update 会自动写入 pnpm-workspace.yaml 的修复。
在 TUI 里面我能实际做些什么?会话工具方面有 /resume(浏览、搜索、置顶过去的会话)、用于后台会话的 /agentview、/new、/compact、/export、/btw、模型热切换、原生子代理、会话分叉、自动更新、/vim 编辑模式、鼠标选择,以及全屏草稿编辑器(Ctrl+Shift+E)。
我的终端里能看到图片预览吗?只有当终端支持 Kitty graphics 或 Sixel 时才行——检测时优先 Kitty,其次是根据 DA1 声明的 Sixel 能力,还可以通过 DSHTUIIMAGEPROTOCOL 手动指定。tmux/screen、非 TTY 输出和无障碍模式下会退回到纯文本显示。
这个像素鲸鱼吉祥物是怎么回事?启动时会随机播放三段开场动画中的一段,在你完成第一个任务之前,空闲时鲸鱼会播放待机动画(摆鳍、拍尾、睡觉冒 Z),你还可以点击它冒出爱心、把它叫醒。第一个任务之后它会冻结成静态画面,不再消耗任何性能;在 /settings → whaleIdle 里可以彻底关掉。这套 22 帧的手绘素材移植自 @lhh010 的 dsh-ui-whale。
实时状态行都显示些什么?工作状态、TPS、缓存命中率、推理强度、输入/输出 token 数量以及 Git 和会话信息,还提供多套主题(默认是 moon8)。多行命令卡片可以折叠成一行加一个数量;全屏模式下悬停约 600 毫秒,就能看到被截断的卡片或消息的完整内容。
我能在它基础上开发自己的插件吗?可以——项目提供插件开发指南和准入规范,有 dsh-tui-ecosystem 社区组织,还有一个 plugin-template 仓库,大约 5 分钟就能搭出一个插件,另有参考实现 dsh-working-activity。扩展接口按成熟度分级:一部分是稳定候选,另一些还处于实验阶段,或者与上游的 Cordis/DSH 绑定。
Size
45.3 MB
Stars
4.7K
Age
2mo
Commits · 90 Days