Skip to content
dsh.fish
Bundle

@dsh-external/dsh-minitui

A light TUI plugin for Deepseek Harness.

Source
AncientMoon114
License
MIT
Updated
Updated 3 days ago

Readme


## Version 0.1.0

[![中文](https://img.shields.io/badge/中文-README-red)](#)
[![English](https://img.shields.io/badge/English-README_en-blue)](README.en.md)

### 项目概述

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

  需要注意的是,开发环境是 `Ubuntu 22.04`,且使用了 `neo-blessed` 第三方库,可能在 `Windows` 上的适配可能会有未知 bug 。`Windows` 用户请使用 `WSL2` (感觉绝大多数使用 `dsh` 的 `Windows` 用户都会用 `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` 编译。整体的过程如下:

  ```bash
  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` 界面:

  ```bash
  dsh --profile minitui
  ```

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

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

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

### 使用依赖

  本项目使用了一些第三方库来实现前端的渲染,包括 `neo-blessed` 、`marked` 、`marked-terminal`和 `streammark` 等。

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

Install

dsh plugin --profile web add github:AncientMoon114/dsh-minitui

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source