VoidTalon:Haskell 编写的轻量级 LLM 聊天 TUI
LordMZTE/voidtalon
LordMZTE 发布 VoidTalon,一个用 Haskell 编写的轻量级 TUI,通过 OpenAI 兼容 API(如 llama.cpp、OpenRouter)与 LLM 对话,代码约 4200 行,内置 3 个工具。它支持 Vim 风格键位、MCP over stdio 和 HTTP、工具调用确认、多连接与模型切换、token 计数与 TPS 显示,以及推理控制。
not a claw
VoidTalon is a lightweight yet feature-complete TUI for chatting with an LLM provided via an OpenAI-compatible API such as llama.cpp that doesn't claim to be an "aGeNt".
This is not half a million lines of slopware like *Claw, it's a no-nonsense program written by a human that still aims for feature parity (minus bloat features like a bunch of built-in tools no one needs and integration into chat software) with such slopware, while actually being usable.
Comparison with similar projects
Yes, I was having a laugh when I wrote this.
| NanoBot | ZeroClaw | OpenClaw | VoidTalon | |
|---|---|---|---|---|
| Language | ❌ P*thon | ❌ Rust | ❌ TypeShit | ✅ Haskell |
| RAM | ❌ > 100MB | ✅ < 5 MB | ❌ > 1 GB | ❌ ~100MB |
| Built-in Tools | ❌ 19 (??) | ❌ 25 (???) | ❌ ∞ (????) | ✅ 3 |
| Lines of Code | ❌ 191,835 (????) | ❌ 656,863 (???????) | ❌ 5,859,629 (??????????) | ✅ 4200 |
| Unusable Slopware | ❔ dunno | ❌ yes | ❌ yes | ✅ no |
You might also notice the missing "startup time" row, which is because I didn't bother to measure
it. While this is a large number for some of our competitors (no idea why), it's a completely
ridiculous metric for any sane project. To you VoidTalon, you cd into the directory where you
want to work and then run vt. There is no noticable delay in startup.
Features
- Vim-inspired keybindings (not modal yet)
- Tool calling
- MCP over stdio and HTTP
- A small, no-nonsense collection of built-in tools (see below)
- Toggling of individual tools, schema and description viewer
- User confirmation dialog for all tool calls by default, autoconfirm for configured tools
- Manually spoofing tool responses
- Managing tools, each tool can be individiually enabled and disabled, schema and description are shown
- Interactive switching between multiple configured connections (change between OpenRouter, llama.cpp and other on the fly!)
- Interactive model selection for all available models offered by the connection
- Interactive editing of messages
- Completions via an OpenAI-compatible API, tested with llama.cpp and OpenRouter
- Reporting of token count and TPS (the latter is only supported on llama.cpp)
- Fancy TUI markdown rendering and syntax highlighting for code blocks
- Add custom system prompts
- Prompt library support for easy insertion of pre-made prompts, including scriptable templates
- Reasoning Control, both with llama.cpp's API for controlling a reasoning token count limit and the general reasoning effort API
Documentation
Comprehensive documentation for how to use VoidTalon is contained in the Wiki.
Built-in tools
read_file/write_filereading and writing files by pathrun_commandrun a shell command, forwarding stdout and stderr to both the user and the LLM, stdin is connected to user for control.
This is open for suggestions, just nothing too bloated (there will be no web search function here, use an appropriate MCP server!)
来源:GitHub · github.com