终端里的Harness:dsh-TUI用双击Esc给Agent对话加上撤销分支
DeepSeek 8月13日晚上开源了Agent框架Harness,发布不到两小时GitHub Star就破万,三天直接冲到十万。这几天大家关注最多的一个词就是"一切皆插件"——模型是插件,工具是插件,Skill是插件,就连界面也可以做成插件。
但有趣的是,官方虽然提供了Web UI,却没有给它配上一个真正的终端界面。对于习惯于使用Claude Code的人来说,总感觉少了些什么。就在这个空档里,dsh-TUI这个插件冒出来了。它把DeepSeek Harness搬到了终端上,交互方式也和Claude Code很像,目前GitHub上已经有1900多个Star,官方公众号甚至还专门收录过它。
如果习惯在终端中干活的话,这个插件基本上就补齐了Harness最明显的那一块拼图。
一条命令进入终端版Harness
安装好之后直接输入:
npx dsh-tui
一个全屏终端界面就出来了,上面有一个像素化的鲸鱼,下面是完整的Agent工作区。你可以直接告诉它"总结一下这个仓库的结构",然后回车,Agent会自己读取文件、调用工具,再把结果一步一步展示出来。
下面有一个实时状态栏,现在正在读取的文件、调用的工具、上下文使用了多少、TPS多快都可以直接看到。整个过程基本只需要键盘,鼠标可以扔一边。
类Claude Code的交互
如果用过Claude Code,对dsh-TUI应该不陌生。它大量使用了Slash Command,比如/resume查看历史对话、/new创建新对话、/compact压缩上下文,还有/export、/mcp等命令,基本上把常见的Agent操作都收进了终端里。
要查看完整的轨迹,可以使用命令/trace或者快捷键Ctrl+T。它并不是重新创建一个Agent,而是为Harness换上了一种新的终端交互方式,底层还是用DSH官方的能力,模型、工具、MCP、Agent等东西不需要重新实现。
另外在VS Code中也可以用,直接在插件中搜索dsh-tui-vscode然后安装即可。
双击Esc可以反悔
这个功能是最实用的之一。如果Agent跑偏了,或者发现前面的方向不对,按两下Esc键就直接断开。它会把会话回退到之前的一个消息上,并从那里开始创建新的分支,原来的历史并不会直接消失,相当于给Agent对话增加了一个撤销键。AI做错了不需要从头再来,这样的设计对于长时间的Agent任务来说很重要——因为Agent越能干,跑错方向之后浪费的时间就越多。
会话管理
执行/resume之后就有一个完整的会话浏览器,可以搜索历史对话、跨项目查看、折叠子Agent。更换模型、切换主题、查看MCP状态都可以直接在终端里操作。它还提供了一些不同的Preset,可以方便地切换到不同的工作模式。所以它并不是简单套了一层终端皮肤,更准确地说是对Harness的插件体系进行了一次完整的TUI工作流补充。
长会话优化
当对话变长之后,不会每次都把所有内容重新渲染一遍,而是只更新发生变化的部分。历史消息也会根据需要加载,配合缓存控制,防止聊天时间越长终端变得越卡——专门解决Agent聊久了以后变慢的问题。
安装方式
如果已经有一个Node环境,基本上就是两条命令:
npm install -g @deepseek-ai/dsh @deepseek-harness-tui/dsh-tui
npx dsh-tui
第一次运行的时候会自动进行初始化。要继续上一个会话的话可以:
dsh-tui --resume
同时还需要配置DEEPSEEK_API_KEY。平时用SSH管理服务器,或者已经习惯了Claude Code、Codex这样的终端Agent,dsh-tui的用法基本上不需要重新学习。
注意事项
- 它是插件,要先安装DSH再安装dsh-TUI,还要准备好Node、pnpm等运行环境,对于一般用户需要简单学习一下
- 在Windows下要注意权限问题,目前没有沙箱后端时权限策略会有所变化,运行陌生仓库之前最好先检查配置
- Harness更新速度很快,上游一改插件就必须跟着适配,现在更适用于喜欢折腾的开发者,而不是直接作为稳定的生产工具
小结
DeepSeek把Harness的核心能力开源了,但没有把所有的界面都包办,于是社区自己开始补Web UI、TUI、Preset、Skill,各种插件很快就冒了出来。这才是"一切皆插件"最有趣的地方。dsh-TUI本身并没有改变Harness的核心能力,它只做了一件很简单的事:把Harness变成终端党所熟悉的样式。如果你本来就在用Claude Code、Codex这类终端Agent,这个插件非常值得试一下。
开源地址:https://github.com/ccch1mneyyy/dsh-TUI