## Version 0.1.0 [![中文](https://img.shields.io/badge/中文-README-red)](README.md) [![English](https://img.shields.io/badge/English-README_en-blue)](#) ### Project Discription This is a `TUI` front-end project designed for `Deepseek Harness`(`dsh`). Compared to main-stream `TUI` project, `dsh-TUI`, this project is much more simple, because I am a individual developer without team support. Thus, the function of this project is not complicated like other mature pojects. Bsesides, this is the first `TypeScript` project I've worked on. The main frame is written by human while some functions are too complicated for me so that I called AI for help. So, it is definitely a AI assisted project. Pay attention that the developing platform is `Ubuntu 22.04` and I use `neo-blessed` which might cause bug on `Windows`. After all, most of Windows developers of `dsh` need to use `WSL2` for sure. ### Project feature The biggest different between this project and `dsh-TUI` is *clear*. This project is designed for **coders**, especially after-end coders. I think `TUI` surfaces should be clear and mainly interact with users by keyboard. So there is nowhere for users to click in this project. All works can be down with keyboard. Besides, the user interface refers to `OpenCode`, which is clean without artificial fonts or desktop pets. There are only input box, chat box and a control panel. Current function incudes only communicating with Agent. I might add more functions to control panel as long as they are convenient for coders. However, I would never add slick (in bad meaning) functions to it. ### Function introduction #### Shortcut key in input box | Function | Shorcut key | | ----- | ----- | | Send | Alt+Enter | | Return | Enter | | Complete | Tab | | Copy | Ctrl+Shift+C | | Paste | Ctrl+Shift+V | | Exit | Ctrl+C | It is specially designed that user needs to press `Alt+Enter` to send, because using *Markdown* is more efficient than plain text in communication with AI Agent while most applications prevent users to type return in the input area. #### Commands in input box Apart with commands in web UI of `dsh`, this project adds more commands to do some jobs done by mouse in web UI. - `/session` To solve the problem of changing or creating sessions without clicking, the project adds a new `/session` command to create new session or change session **in the same workspace directory you've opened miniTUI**. It is warned that you cannot change to sessions outside current workspace. This behavior needs you to exit `TUI`, change your directory to new workplace and open `TUI` again. - `/model` Although `/model` is an existed command in web UI, but different UI needs to re-realize this function, so I need to mention it here. The `/model` command of this project is used to change model and reasoning effort. It is reminded that it only supports *Deepseek Models*, including `deepseek-v4-flash`, `deepseek-v4-pro` and `deepseek-v4-flash-vision-exp`. Other models like Claude or ChatGPT are not supported. #### Self customize Actually, there aren't much things to customize. Several colors and tolarent agent config of sessions when you create them can be customize in `userconfig.json`. This file will be automatically created when you run the `miniTUI` plugin at first time. You can understand what the config choice meanings through their name. ### Quick start It is unfortunate that currently this project is not intended to emit to `npm`. So the only way to use is to get source code from GitHub and compile it yourself. Operations like below: ```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:/path/to/this/project ``` Then you can open `TUI` in your project workspace like this: ```bash dsh --profile minitui ``` If this is too fussy for you, I recommend you to add abbreviation in `~/.bashrc`: ``` alias dsh-minitui='dsh --profile minitui' ``` If you meet any problem, please raise it in `Issue` part. I have to explain that I am a green-hand in coding. If this project brings you horrible experience, please critic me rationally. ### Dependence used This project uses several third-party libs to render the front-end interface, including `neo-blessed`, `marked`, `marked-terminal` and `streammark`. I have to point it out that I have altered `streammark` lib because it causes bug in rendering the corner of code blocks. I added patch through `patch-package` tool so that it can work well when user installs it. However, if you have `streammark` lib in your global environment it may cause crack.