by ccch1mneyyy
解决DSH 官方尚无终端 TUI 痛点的补位之作,献给偏爱cli的各位极客:Claude Code 风格全屏交互终端插件——像素鲸鱼顶栏、实时工作状态行、思考流式展开、双击 Esc 回滚、上下文进度条 + TPS 仪表。npm 一键安装。
# Add to your Claude Code skills
git clone https://github.com/ccch1mneyyy/dsh-TUIdsh-TUI is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by ccch1mneyyy. 解决DSH 官方尚无终端 TUI 痛点的补位之作,献给偏爱cli的各位极客:Claude Code 风格全屏交互终端插件——像素鲸鱼顶栏、实时工作状态行、思考流式展开、双击 Esc 回滚、上下文进度条 + TPS 仪表。npm 一键安装。. It has 291 GitHub stars.
dsh-TUI's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/ccch1mneyyy/dsh-TUI" and add it to your Claude Code skills directory (see the Installation section above).
dsh-TUI is primarily written in TypeScript. It is open-source under ccch1mneyyy on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh dsh-TUI against similar tools.
No comments yet. Be the first to share your thoughts!
Unlocks once the catalog security scan passes (runs nightly).
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
**DeepSeek Harness 官方目前还没有终端 TUI(只有 Web UI) 因此!我制作了这个dsh-cc-tui!: 一个美观且实用的 Claude Code 风格 TUI 插件(cordis 挂载):像素鲸鱼顶栏、双流光大字、 实时工作状态行、思考流式展开、双击 Esc 时间回溯、蓝白上下文进度条 + TPS 仪表。 零核心改动,纯插件挂载。
本插件被 DeepSeek Harness 官方公众号 推文收录,作为"内测用户精选插件"展示:


DEEPSEEK HARNESS 是
自绘 5 行块状大字——品牌蓝→冰蓝横向渐变,白色流光窗口循环扫过;
探索未至之境! 欢迎语带冰蓝流光。窄终端(<64 列)自动收起鲸鱼。嗯…让我捋捋、深夜档、30s/1m/5m 分档轮换)、真正在跑
的工具(改改 src/channel.ts · 12s)、⏵ 模型自述,配 28 种动画指示器
(默认 Claude 官方帧序列)、白色流光扫过文案、上下文占用 ≥80% 亮黄 / ≥95% 亮红
预警(⚠ 上下文85% · …),行尾保留 ↓ N tokens 计数。回合结束自动变成
搞定 ✓ · N 工具 · 想Xs 干Ys 收尾统计。ctx 17k/1.0M 1.7% 983k)、
模型 · 实时 TPS(流式 gauge / 历史 sparkline)· 思考深度 · 缓存命中率(一位小数) · 进出 tokens、
右侧 git 分支 · 工作目录 · 会话标题。∴ Thinking · 12s,Ctrl+O 随时展开全文。/ 命令菜单(竖排、Enter 执行选中项、Tab 补全)、
灰色气泡用户消息、● 助手正文 + Markdown 表格/代码高亮、工具调用卡片、
? 快捷键菜单、/ 全文搜索、Ctrl+R 历史搜索、@ 文件补全、Shift+Enter
多行输入、滚动时置顶的「当前提示词」栏与「↓ N 新消息」药丸。前置:官方 dsh CLI(npm install -g @deepseek-ai/dsh)与 pnpm。
# 1. 安装官方 CLI(已装可跳过)
npm install -g @deepseek-ai/dsh
# 2. 装入本插件(仓库根目录 install.sh 已封装这条命令,含 pnpm 预检)
sh install.sh
# 或手工执行:
dsh plugin --profile cc-tui add dsh-cc-tui
# 3. 启动
# Windows 也可用仓库里的 dsh-cc.cmd(等价,且 --resume 恢复上次会话)
dsh --profile cc-tui
add 的语义(官方 app-boot / CLI 实现):首次执行会在
$DSH_HOME/profiles/cc-tui/ 自动初始化 profile——manifest 的
dsh.profile.bundles 首层为 @deepseek-ai/dsh-base——然后在 profile 内执行
pnpm add <包>;安装成功后按「依赖是否声明 dsh.bundle.patch」自动把该包
追加为 bundle 层,无需手动改任何文件。启动时按 bundle 顺序
dsh-base → 各 bundle → 你的 profile cordis.patch.yml 叠加:base 提供
llm/session/fs/工具/技能/审批等核心行,bundle patch 按 id 覆盖或插入自己的
行。重复执行安全(已初始化的 profile 不会被改动)。
工作状态行(随本包自动挂载):dsh-working-activity 是本包的 npm 依赖,
安装时自动带入 profile 的 node_modules;本包的 bundle patch 会直接 insert
它的行(publishIntervalMs: 500),无需单独 add——对同一 profile 再
单独 add dsh-working-activity 会产生重复行(wa 自带的自挂载补丁仅面向
不含 cc-tui 的 profile,如纯 Web UI 场景)。
构建产物
lib/已打包进 npm 包,安装无需构建。开发者想改源码:从 git 仓库npm install后npm run build(tsc)即可。
官方 profile 模型下没有独立的 cordis.yml 启动文件:$DSH_HOME/profiles/cc-tui/
下只有 cordis.patch.yml(你的补丁层,顶层 YAML 数组,!!js 可用)。
以下是「想改什么怎么写」的示例,不是完整配置:
# 覆盖某行的 config:整段替换,想保留的 key 都要重写
- id: cc-tui
config:
provider: deepseek-official # LLM 路由
model: deepseek-v4-flash # 模型
effort: max # 顶栏/状态栏启动显示的思考深度
activity: true # 工作状态行开关(默认开)
activityFrames: claude # 指示器预设:claude/moon/comet/dots/…/random
cwd: !!js process.cwd() # 工作目录
fullscreen: false # 备用屏幕全屏模式(默认关)
preset: !!js process.env.CC_TUI_PRESET ?? undefined # Agent preset(见下节)
sessionId: !!js process.env.DSH_CC_RESUME_SESSION ?? undefined # --resume
# 调优实时工作状态行数据源(与 Web UI 共享):随 add 已自动挂载(bundle
# patch 自 insert),按 id 覆盖 config 即可——不要再 insert 同名行;
# 500 让状态栏计时更跟手(先装 dsh-working-activity 时本包 patch 已带 500)
- id: working-activity
config:
publishIntervalMs: 500
依赖(除注明外均由 dsh-base 层提供,无需手工挂载):llm-deepseek(thinking
开启)、session(SQLite 持久化由本包 patch 插入 sessions 行)、bash、fs、
commands(命令注册表)+ command-goal(/goal)、token-meter 以及
dsh-working-activity(工作状态行,随 add 自动挂载,见上)。模型侧的工具/
提示词行(tool-fs、tool-todo、subagent、plan-mode、compaction-basic 等)
自 0.3 起由会话的 agent preset 组合提供(见下节),不再挂在 host 层。
配置注意:覆盖
plan-mode时section必须给非空值(空值会导致整树加载 失败);subagent核心服务必须先于 spawn/fork 行挂载(base 层顺序已保证, 在自己 insert 相关行时保持同样顺序)。
接入 DSH 官方的 preset 名册(@deepseek-ai/dsh-agent-presets):每个会话的
工具集/提示词段不再来自 host 组合,而是由四种官方 preset 之一组合——
| id | 名称 | 说明 |
|---|---|---|
standard |
标准模式(默认) | 功能完整的编码 Agent(编辑、Shell、检索、Skills、计划、目标、子代理、工作流) |
code |
PTC 模式 | 标准能力 + Code Mode SDK 呈现工具,模型用一个 TypeScript 程序组合多步操作 |
minimal |
极简模式 | 仅持久 bash + str_replace_editor 双工具,无 compaction |
cordis |
创造模式 | 标准能力 + 运行时检查/插件实验工具,用于创作自定义 preset |
用法:
/preset 打开选择器(显示中文名与说明,✓ 为当前会话 preset);/preset <id> 直接切换;/preset status 查看当前状态;/new 或下次启动生效;空白会话立即原地切换(工具集实时
变化,切换事实写入会话日志,resume/fork 后仍是新 preset);~/.dsh-cc/agent-preset.json;优先级:
cordis.yml 的 preset 键(或 CC_TUI_PRESET 环境变量)> 偏好文件 >
名册默认(standard);agent.cordis.yml)放进
~/.dsh/.agent-presets/,名册即时发现,/preset 选择器直接可见。实现说明:preset 文件由官方 CLI 附带(profile-boot 发现组合里有
agent-presets 行就自动注入 shipped 根目录),本包不自拷;原 host 层的
模型侧行(tool-bash/tool-web/subagent 系/compaction-basic 等 24 行)随
preset 化在 bundle patch 中禁用(与官方 dsh-web-app 同款处理),因此
CC_TUI_COMPACT_RATIO/CC_TUI_COMPACT_RETAIN 与 subagent 深度 1 的
cc-tui 定制随之退役(preset 拥有自己的 compaction/delegation 配置)。
除了内置的 light / dark / dark-ansi 三套 Gentle Mist Blue 调色板,
还可以放 JSON 主题文件到 ~/.dsh-cc/themes/,用任意 Theme 键覆盖基底色板:
{
"name": "sakura",
"displayName": "樱花粉",
"base": "dark",
"colors": {
"claude": "#FF9EC7",
"claudeShimmer": "#FFC0D5",
"permission": "#FFB3CC",
"promptBorder": "#B08B99",
"text": "#E8E6E0",
"inactive": "#A99BA0",
"subtle": "#8A7A80",
"selectionBg": "#5C3A44",
"success": "#9CC7A8",
"error": "#E08591",
"warning": "#E0C08A"
}
}
~/.dsh-cc/themes/<名字>.json,每个文件一个主题;文件名即主题名
(除非文件内声明了 name,此时以 name 为准,文件名退化为加载别名)。base 必填(light/dark/dark-ansi,选定被覆盖的基底色板);
colors 是 Theme 键的子集覆盖(全部键名见 src/theme.ts 的 Theme 类型);
displayName 用于选择器显示,缺省取 name;name 缺省取文件名。#rgb / #rrggbb / #rrggbbaa、rgb(r,g,b)、
ansi256(n) 与 16 个 ansi: 命名色(与内置色板及 Ink 色彩引擎同款格式)。
未知键、非法色值 → 跳过该键并警告(stderr),不影响文件其余部分;base
非法、JSON 损坏、colors 不是对象 → 整个文件跳过并警告,TUI 不会崩。/theme 打开选择器(内置在前、自定义在后,每行带 base 标注与
三个关键色块预览),Enter 选中即立即热切换并写入
~/.dsh-cc/theme.json;也可 /theme <名字> 直接切换、/theme status
查看当前主题。重启后持久化选择仍生效。CC_TUI_THEME(环境变量,内置名或自定义名)> 持久化选择
~/.dsh-cc/theme.json > OSC 11 终端背景自动检测。环境变量或持久化指向
不存在的主题时警告并忽略,自动检测照常兜底;两者都未设置时保持原有
自动检测行为。官方 @deepseek-ai/dsh-mcp-client 已提供完整 MCP 能力:每个配置行挂载一个服务器,其工具以 mcp__<服务器>__<工具> 名字注册进工具运行时,模型自动可用。
在 profile 补丁层(~/.dsh/profiles/cc-tui/cordis.patch.yml)里 insert 即可:
# stdio 服务器(本地命令)
- insert:
- id: mcp-context7
name: '@deepseek-ai/dsh-mcp-client'
config:
transport: stdio
serverName: context7
command: npx
args: ['-y', '@upstash/context7-mcp']
# streamable-http 服务器(远程)
- insert:
- id: mcp-remote
name: '@deepseek-ai/dsh-mcp-client'
config:
transport: streamable-http
serverName: remote
url: https://example.com/mcp
headers: { Authorization: !!js process.env.MCP_TOKEN }
/mcp 命令查看当前已连接服务器及其工具数。
| 键 | 功能 |
|---|---|
Enter |
发送(Shift+Enter 换行);命令菜单打开时执行选中项 |
Ctrl+C |
中断当前回合;空闲时连按两次退出 |
Esc |
关闭命令/文件菜单;空闲双击清空输入;空输入双击 = 时间回溯 |
Ctrl+O |
展开/收起详情(思考全文、工具参数与输出) |
Ctrl+R |
历史消息搜索 |
/ |
会话内全文搜索(n/N 跳转) |
Tab |
命令 / @ 文件补全 |
Ctrl+V |
粘贴:文本直接插入光标处;Explorer 复制的文件/图片 → 插入文件路径 |
? |
快捷键菜单 |
Shift+↑ |
消息选择模式(Enter 展开单条) |
鼠标(fullscreen: true 全屏模式;默认关,profile 补丁层覆盖开启)
| 操作 | 功能 |
|---|---|
| 拖拽选择 | 应用内文本选区,松开即复制(OSC 52 + wl-copy/xclip/xsel 原生兜底;tmux 内走 load-buffer -w),复制后自动取消选区并弹出「已复制 N 个字符」提示 |
| 双击 / 三击 | 选词 / 选行,同样即选即复制 |
| 滚轮 | 滚动消息列表 |
Esc |
拖拽进行中取消选区(不复制) |
全屏模式用 alt-screen 渲染(退出 TUI 后内容回主屏);设
fullscreen: false退回 inline 模式,鼠标交还终端模拟器原生选择("选择即复制"由终端自身 设置决定,如 kittycopy_on_select yes)。CC_TUI_DISABLE_MOUSE=1可在 全屏模式下临时禁用鼠标点击处理。
问卷(模型发起 ask_user_question 时)
| 键 | 功能 |
|---|---|
↑/↓ |
选择选项 |
Space |
多选题勾选/取消 |
Tab |
切到自定义回答(不选选项直接打字) |
Enter |
提交当前选择 |
Esc |
中断提问(模型收到 ASK_ABORTED,可继续对话) |
本地命令(CC 指令全集复刻,均走 DSH 官方链路)
| 分组 | 命令 |
|---|---|
| 会话 | /new 新会话 · /resume 恢复 · /clear 清屏 · /compact 压缩 · /export 导出 Markdown |
| 状态 | /status 会话信息 · /cost token 用量 · /doctor 环境自检 · /config 配置来源 · /init 创建 AGENTS.md |
| 模型 | /model 选择器 · /thinking 思考显示 · /tokens token 明细 · /theme 主题选择器 |
| 账号/策略 | /login 凭证状态 · /logout 登出说明 · /permissions 权限说明 · /add-dir 文件策略范围 · /hooks · /mcp · /memory |
| 技能 | /audit 代码审计 · /bug bug 报告 · /review 代码评审 · /practice 编程练习 · /pr_comments PR 评论 · /release-notes 发布说明 · /vuln-check 漏洞检查 |
| 其它 | /agents 子代理列表 · /vim · /terminal-setup · /connect · /help · /exit |
| 注册表 | /plan /goal(DSH 命令注册表插件,随插件自动并入 / 菜单) |
/菜单 = 本地命令 + 注册表命令的并集(注册表描述来自插件本身);/plan [off|消息]切换计划模式,/goal [create/edit/pause/resume/clear 目标]管理持久化目标。 技能命令通过 DSH 技能系统驱动:skills/目录随 npm 包分发,插件启动时 自动注册进技能注册表,无需手动复制。也可把 SKILL.md 放入 技能发现目录(~/.dsh/skills、~/.agents/skills或项目.dsh/skills)覆盖同名技能, 命令只是