>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
C

在终端中使用 AI 编写代码,无需 Electron 和 Node.js

大多数现代 AI 编码助手都采用大致相同的构建方式。它们被打包成庞大的 Electron 应用,拖带着 Node.js、Python 或其他重型运行时,在发出第一个请求之前就消耗数百兆字节的 RAM,还试图接管整个屏幕。如果你使用的是性能较弱的服务器、老旧笔记本电脑,或者只是更喜欢快速的 Unix 工具,这种方式很快就会让人感到沮丧。

最近偶然发现了 Alexander Chekhovsky 开发的一个有趣项目 hax。这是一个用纯 C 编写的紧凑型终端编码助手。作者决定逆流而上,不走重型包装器的路线,而是创建了一个启动迅速、仅占用几兆字节的工具。

hax 使用本地 llama.cpp 模型回答关于其自身源代码的问题

它是什么以及为什么你需要它

Hax 是一个编译成单一原生二进制文件的 CLI 工具。该进程在内存中仅占用几兆字节。如果你在工作站上通过 llama.cpp 直接运行本地神经网络,每节省一 GB 的 RAM 都很重要,因为内存需要用于模型上下文和权重。

这个工具是为那些不想看到插件市场、臃肿的 Web 仪表盘和无尽的权限确认对话框的人设计的。这里的一切都遵循经典的 Unix 哲学:有 stdin、stdout、清晰的配置文件,以及将工具嵌入常规管道的能力。

这个项目在实践中的亮点

与许多围绕 API 的 CLI 包装器不同,hax 被专门设计为用于持续控制台工作的工具。

对终端友好

Hax 不会破坏终端回滚,也不会通过 ncurses 重绘整个屏幕。该工具输出流式 Markdown 并自动换行,只更新当前行或输入区域。你的整个终端历史记录保持不变,文本可以用鼠标安全复制,不会出现伪图形伪影。

轻松使用本地模型

对于本地运行,只需启动 llama-server 或启动 ollama。Hax 可以自动检测正在运行的 llama.cpp 实例,确定模型参数,并调整上下文。无需编写多页 JSON 配置来进行本地测试。

网络请求透明度

在任何时候,你都可以在交互式会话中按 Ctrl+T,查看发送给模型的完整记录以及返回的响应。如果你正在调试提示词或想验证额外文件是否泄露到上下文中,这个功能可以省去很多麻烦。还有一种模式可以收集详细的网络协议日志。

支持不同的提供商

该工具可与标准云 API 和本地引擎配合使用:

  • 通过 OPENAI_API_KEY 的 OpenAI 及兼容端点
  • 通过 ANTHROPIC_API_KEY 的 Anthropic Claude
  • OpenRouter、OpenCode Zen / Go
  • 通过交互式 ChatGPT 订阅登录的 Codex(/login
  • 本地 llama.cpp 和 Ollama

安装和构建

Hax 可在 Linux、macOS、FreeBSD 和 OpenBSD 上运行,Windows 用户可以在 WSL 中运行它。

在 macOS 和 Linux 上,安装该工具最简单的方式是通过 Homebrew:

brew install oleksandrchekhovskyi/hax/hax

在 Arch Linux 中,该软件包在 AUR 中以 hax 的名称提供。

如果你想手动构建二进制文件并与系统库链接:

git clone https://github.com/OleksandrChekhovskyi/hax.git
cd hax
scripts/install_deps.sh
make
make install

依赖脚本会拉取 C 编译器、libcurljanssonmesonninjapkg-configfzf,以及通过 @file 语法进行文件名自动补全的 @file

如何使用它

主要操作模式是直接在项目目录中的交互式 REPL:

hax

内部提供了斜杠命令。例如,/provider 输出可用后端和模型的列表,而 /help 显示热键。Hax 会记住运行之间的选定模型和提供商。

对于脚本和快速自动化,有一种一次性模式 -p

# Задать разовый вопрос по коду в текущей папке
hax -p "найди места с утечками памяти в main.c"

# Передать данные через пайп
git diff | hax -p "напиши понятный commit message по этому диффу"

# Продолжить последнюю сессию для этого каталога
hax -c

-p 模式下,该工具只向 stdout 输出干净的响应,将服务提示发送到 stderr。这使得它可以轻松地与 grepxargs 和其他 Unix 工具结合使用。

底层原理

该项目使用标准 C 编写,没有重型框架。网络请求通过 libcurl 处理,JSON 解析和构建依赖一个紧凑的库 jansson

整个架构围绕代码可审计性构建。会话和设置按照 XDG 标准存储为纯文本文件。功能通过生成操作系统子进程来扩展,而不是使用复杂的插件系统。

这个项目适合谁

如果你需要带有内置聊天和可视化图表的重型 IDE 套件,hax 可能不适合你。这里没有插件或编辑器菜单集成。

但如果你习惯在 tmux 中工作,通过 llama-server 在自己的硬件上运行本地 LLM,或通过 SSH 管理远程服务器,hax 绝对值得一试。它不张扬,不消耗资源,只做你要求它做的事情。

相关项目