DSH's officially top-recommended TUI plugin — high performance, low overhead, cute pixel whale, smooth mouse interaction. One-command install via npm. / DSH 官方首推的 TUI 插件,高性能低占用,可爱像素鲸鱼,流畅鼠标交互,npm 一键安装

★ 7,367⑂ 351👁 10⑃ 1,015● 782▤ 38◈ 109
TypeScriptMITCreated 2026-08-13dshtui.com/
TA的项目
7,367
stars
+90
351
forks
10
watchers
1,015
prs
782
issues
38
releases
109
discussions

README

English | 简体中文



  
  
  
  
  
  
  


 dsh-TUI

 面向 DeepSeek Harness 的交互式终端界面:像素鲸鱼顶栏、实时工作状态、流式思考展示、双击 Esc 时间回溯、上下文进度条与 TPS 仪表。
 零核心改动,只消费 DSH 的公开导出;正从「挂载型插件」演进为拥有自身入口与组装根的终端应用,届时 DSH 作为首方后端在进程内加载。安装即启用,卸载不留核心补丁。
回合空闲后,已完成目标自动从输入框上方隐藏;Todo 侧栏仍保留历史。Ctrl+Q 在工作中折叠待办,在空闲时隐藏/恢复目标与待办底部面板;空闲时点击待办标题也可隐藏。隐藏只影响当前展示,新目标/待办快照或会话会重新显示;/goal clear 不会清空待办。

分栏 diff 对纯新增、纯删除文件使用完整正文宽度,不保留空的另一栏。普通修改仍双栏显示;多文件分别决定布局,判断先于折叠与流式展开。

窄面板中的压缩状态保持单行:先省略阶段与取消提示,再缩短标签;计时只会完整显示,不拆开数字。


 功能亮点

没有可信 Component 身份的面板作为临时项:设置显示可读标题与本次运行的独立编号,勾选立即生效但不保存,无关设置修改会保留当前选择。旧 actN:panel 无法安全辨认来源,请移除占位项后重新选择当前面板。名称为 actN 的可信 Component 保留公开运行时地址;明确勾选时仅在持久偏好中使用 component:actN:panel,避免认领旧匿名项。

默认推理强度设置使用当前后端/模型声明的档位,包括自定义 ID。当前目录不支持的已存值仍显示并保留;目录加载中或不可用时仅可选自动。DSH 自动依次采用已存 /effort、配置默认值、模型默认。Claude/Codex 启动采用自动模式或恢复会话时保留后端偏好;在设置中主动选择自动会重置为模型默认。明确修改设置会作用于下一请求;不支持的偏好会提示回落,不会强行发送给当前路由。

通过 @路径 引用的图片与粘贴图片使用相同的准入、缩放和格式转换策略。调整提示采用实际保存的尺寸和格式;需要转换的动画会明确拒绝,避免静默丢帧。提及图片和暂存图片仍按原文顺序共享数量与实际保存字节额度。

恢复 DSH 会话时保留会话记录的推理强度,重新附着时保留其当前选择。保存的默认值用于新会话;用户明确执行 /effort 或修改默认推理强度设置,仍会作用于当前会话的下一请求。


- 像素鲸鱼娘 — 开屏三选一动画,点击唤醒;开始第一个任务后定格。
- 落地页与首次引导 — 每次普通启动先落在带真输入框的落地页(大字 + 鲸鱼 + 快捷入口,窄/矮终端自动整块降级;鲸娘图像按原生画布紧凑占位,避免图片与大字之间留出大块空白;默认开启,/settings 的 launchpad 关闭后直接进聊天页);命令补全与聊天页一致:Tab 填入输入框,Enter 执行并清空。首次运行走四步向导(账号与模型接入 / 语言主题 / 模型工作区 / 快捷键),/setup 随时重跑;第一步可以直接登录订阅账号并接住新出现的模型(没有就不问、只有一个直接设为默认、多个才问),或经 /provider 向导写入 API key(由向导问切到启用的哪个模型,或保持当前模型)。
- 终端原生界面 — 流式 Markdown、工具卡、/ 与 @ 补全、L12-14 行区间、历史搜索、中英界面。
- 原生光标 — 聚焦的文本输入框继承终端的光标形状、颜色、闪烁及已启用的动画或拖尾效果,inline 与 fullscreen 均支持。/model 选择器在提供商标签、模型行和推理档位之间移动时显示同样的光标,停稳 0.5 秒后隐藏;区域被裁剪时回落到模型行。会话管理界面也会在工作区栏、会话行与搜索框之间移动原生光标;输入时移到搜索框,导航时回到聚焦行。动画与拖尾效果在终端设置中配置。
- 图片 — Kitty/Sixel 缩略图,居中大图可缩放平移,粘贴前按限额适配,无图形时文字回退。Kitty 图片按预留格子的物理像素缩放,适配 HiDPI 终端。
- Mermaid 图表 —  mermaid  代码块画成 Unicode 字符图。
- 任务完成通知 — DSH、Claude、Codex 的实时任务成功结束,且没有排队的后续输入或活动目标时提醒。标题为「dsh-TUI · 任务已完成」,正文显示本轮最新回复的单行纯文本摘要(去掉 Markdown 样式,最多 200 字符);OSC 777/9 还会按包含标题和协议开销的 2048 字节预算截短,保留完整字素;没有回复时只显示标题,BEL 只响铃。/settings → 对话:taskNotifications 可选 unfocused(默认,仅失焦)、always(每次完成)、off;notificationMethod 可选 auto(默认)、osc9、bel、windows。自动模式在 Ghostty/WezTerm(OSC 777)与 Kitty(OSC 99)分别显示标题与正文;iTerm2/Warp 与显式 osc9 将标题放在正文前;其他终端使用响铃,实际提醒取决于终端的通知/响铃设置。在本地 Windows 上,auto 解析为 windows,即系统原生通知:任务完成时弹出 toast;首次弹出会注册当前用户的 AppUserModelID(写 HKCU),弹出比任务结束晚约 3 秒(零安装路线要付的 PowerShell 冷启动代价);DSH 会话所在运行中 profile 的外部 DSH 通知插件已启用且处于 active 时,dsh-TUI 让位(不弹也不响);仅安装但已禁用的插件不会吞掉提醒;注册写不进去时回落到响铃,不会静默。jumpBack(Windows,默认关闭)让这些完成 toast 能回到完成任务的那个窗格;它依赖原生 toast 通道(notificationMethod = windows,本地 Windows 的 auto 就选它)。在 /settings → 对话里开启后,窗格标题末尾出现 [dsh-tui:],同一进程内标记不变;关闭后立即去掉后缀。开启期间,本进程会在开启时以及每次发出完成通知前刷新位于 ~/.dsh-tui/notify/jumpback/.json 的标记文件(schemaVersion: 1、marker、pid、startedAt),第一条能承诺跳回的 toast 会注册当前用户的协议处理器(URL Protocol 与 shell\open\command)到 HKCU\Software\Classes\dsh-tui;正常退出会删掉本进程写过的文件;没有其它存活实例再用这个键时,也一并删掉键。只有发送前的探测恰好命中一个目标窗格(或一个标签标题)时,toast 才带 activation URI;点击时会再跑五项核验——同一个窗格、获得键盘焦点、标题仍含标记、窗口在前台、未最小化——任一项不成立就拒绝跳转,而不是跳到别处。目标已经不在的点击不改变任何东西。无法核验的布局——目标位于未选中标签、且不是该标签的获焦

Top issues

Discussions

Latest release

v0.19.0 v0.19.0 2026-11-06
自 v0.18.0 以来,dsh-TUI 跟上 DSH 0.2.2-rc.1 验证线,让一次 /update 同时对齐 TUI、全局 dsh 引擎与全局启动器,
并修好会话恢复、btw 输入、子代理失败提示与 Codex 后端命令输出等一批问题。

 亮点

- 适配 DSH 0.2.2-rc.1 — npm 上的 DSH latest 已是 0.2.2-rc.1,而 v0.18.0 的精确 peer 只到 0.2.1-rc.5,升级 DSH 后 TUI 会被判 incompatible 并 skip。本版把 0.2.2-rc.1 加入验证线与 peer 范围,0.2.1-rc.5 及其之前的验证线继续保留;模型选择改用上游的会话级 Agent.model 接缝、工具限制落到每个 Agent 的作用域、适配 cordis 4.1 生命周期与固定动作审批,旧宿主继续走原来的选择引用与请求瀑布。(1886 by @Lucas2011wastaken)
- 一次 /update 对齐 TUI、dsh 引擎与全局启动器 — 以前 /update 只换 profile 里的 TUI,全局 dsh 与启动器留在原地,可能出现新 TUI 的 peer 范围装不上当前引擎。现在预检为三层解析同一份计划,按 TUI → 引擎 → 启动器串行执行:引擎只选目标 TUI peer 范围内已发布的最高版本

Snapshot: 2026-11-10T09:35:25Z · Data license Apache-2.0 · JSON