Back to home@AncientMoon114

dsh-minitui

A light TUI plugin for Deepseek Harness.

Stars
0
Language
TypeScript
Created
Sep 8, 2026
Updated
Sep 8, 2026
GitHub repo

Introduction

Version 0.1.0

中文 English

项目概述

这是一个为 Deepseek Harness(dsh) 设计的 TUI 前端,和目前主流的 dsh-TUI 项目相比,这个项目会更加简陋。因为本人仅仅是个人开发者,没有团队,所以功能不是很复杂,界面也不是很华丽。这个项目是本人做的第一个 TypeScript 项目,整体框架由人工编写,有些功能实在写不出来,让 AI 帮忙实现。

需要注意的是,开发环境是 Ubuntu 22.04,且使用了 neo-blessed 第三方库,可能在 Windows 上的适配可能会有未知 bug 。Windows 用户请使用 WSL2 (感觉绝大多数使用 dshWindows 用户都会用 WSL 吧)。

项目特点

本项目和 dsh-TUI 最大的不同我认为就是在于简陋,或者好听点说,简洁。它是为代码工作者(尤其是后端)设计的。我的设计理念是 TUI 就应该是简洁的、以键盘交互为主的。因此本项目的界面里没有任何供鼠标点击的地方,只有纯粹的和 Agent 交互的输入框。这样可以规避每次启动 dsh 时打开 Web 界面再选择工作区的步骤,直接可以在项目目录打开 TUI 界面与 Agent 交互。

另外,本项目的界面参考了 OpenCode 的界面。很干净,没有艺术字,没有鲸鱼娘,只有输入框、对话框和一个监控区。

目前的功能就只有和 Agent 的对话,短期内可能会在左侧的监控区做一点文章,也希望各位开发者能提出需要的功能。但是我不打算做太复杂或者花里胡哨的功能,毕竟相比于 dsh-TUI 项目,我这个项目实在是蚍蜉撼树。如果是对于代码工作者很有用的功能,我一定会尽量加入。

功能介绍

输入区快捷键

功能快捷键
发送Alt+Enter
换行Enter
补全Tab
复制Ctrl+Shift+C
粘贴Ctrl+Shift+V
退出Ctrl+C

这里设计成发送需要按下 Alt+Enter 才能触发,因为在与 Agent的交流中,使用 Markdown 格式效率更高,但是大多数和 AI 交流的场景按下 Enter 键都会直接发送,导致用户无法输入完整且清晰的 Markdown 语句。因此在这个 TUI 界面里,Enter 仅用于换行,不会用于发送消息。

输入区命令

除了 dsh 中原本的命令外,本项目还引入了一些其他的命令来实现一些功能。

  • /session

    本项目为了应对不使用点击切换会话的情况,新增了一个 /session 命令用于切换同一个工作区目录下的会话或者创建会话。

    千万注意:无法切换到当前工作区以外的会话,这需要你先退出 TUI 界面,切换到你需要的目录,再打开 TUI 界面。

  • /model

    虽然 dsh 的 Web 端本身也有这个命令,但是不同的前端仍然需要重新实现,实际流程可能不同,因此在这里指出。

    本项目的 /model 命令用于切换模型和推理等级。需要注意的是,目前只支持 Deepseek 本家的模型,不支持外接的其他模型。

自定义

本项目其实没有提供多少自定义功能,只有一些颜色和创建会话时的默认配置。第一次运行插件后,会在插件的根目录下生成一个 `userconfig.json` 文件。看变量名称你也能看懂是什么意思(毕竟 `json` 格式不支持写注释)。如果填写了不存在的值会导致插件打不开哦。

安装指南

本项目暂时还没有开源到 npm 仓库的想法,所以暂时只能通过 GitHub 仓库获取源码自己用 tsc 编译。整体的过程如下:

git clone https://github.com/AncientMoon114/dsh-minitui
cd ./dsh-minitui-0.1.0/
npm install
npx tsc
dsh plugin --profile minitui add link://这里需要填入minitui的绝对路径

然后就可以在项目目录里通过以下命令打开 TUI 界面:

dsh --profile minitui

如果您嫌弃这样调用太麻烦,我的建议是修改 ~/.bashrc ,添加缩写:

alias dsh-minitui='dsh --profile minitui'

如果遇到什么问题,可以在 Issue 界面提出。本人开发自理尚浅,如果给您带来了糟糕的体验,还请理性批评。

使用依赖

本项目使用了一些第三方库来实现前端的渲染,包括 neo-blessedmarkedmarked-terminalstreammark 等。

之所以在这里指出这一点,是因为我在实现过程中发现 streammark 在渲染时会导致代码块的边界显示异常,因此我手动修改了这个第三方库来实现更美观的显示效果。我已经通过 patch-package 工具打上了补丁,所以用户在安装依赖时是可以正常安装的,但是在之后的更新或者用户的全局环境变量中可能会有冲突,在这里指出这种可能性。