开源终端工具 q 发布:在命令行 REPL 中直接调用 LLM
开发者发布开源 C 语言 CLI 工具 q,可在终端 REPL 中向本地 OpenAI 兼容 API 发送问题并流式接收…
Hacker News 上一个 Show HN 项目展示了名为 q 的开源命令行工具,它在本地终端 REPL(交互式读取-求值-输出循环)中直接集成大语言模型,用户无需切换到浏览器即可获得 shell 命令建议。
工具定位与基本形态
q 是一个 C 语言编写的轻量级 CLI,可执行文件编译后可直接运行。它通过环境变量 OPENAI_API_KEY 与本地符合 OpenAI 兼容规范的 API 通信,默认地址为 http://127.0.0.1:8080/v1/responses。在不设置该环境变量时,也可配合无需鉴权的本地推理服务器使用。
启动 REPL 的最简命令为:
./q --repl --color,配OPENAI_API_KEY后即可进入持续对话模式./q "your question"可使用一次性查询模式
交互方式
q 设计了「正常 shell 行为」与「向 LLM 提问」两种状态之间的简单切换:
- 使用
? query强制发起一次 LLM 问答 - 使用
! command强制执行 shell 命令 - 当 LLM 回复中含围栏代码块时,这些示例会被自动编号,用户输入
数字.即可直接执行对应命令而无需手敲 - REPL 内置一组斜杠命令,包括
/help、/show-system-prompt、/llm-timeout、/llm-turn-limit、/truncate-context、/add-mcp-server、/note等
作者还提供了上下文保持(--keep-context)与会话回放(--record-session / --resume-session)选项,会话默认存储于 ~/.config/q/sessions/session-<timestamp>。
工具能力与扩展点
q 支持通过 HTTP MCP(Model Context Protocol)服务器扩展可用工具,启动时会主动调用 initialize 与 tools/list 进行探测,并把发现的工具与内置的 get_time、read_file、write_file 一起暴露给模型:
--add-mcp-server http://127.0.0.1:3000/mcp注册一个 MCP 服务--list-mcp-servers列出已注册服务- 注册信息持久化在
~/.config/q/mcp-servers.tsv
在底层 API 调用层面,q 通过 libcurl 直接发起请求,并支持 --api-logging query|response|both|path 进行请求/响应落盘以便排查。其默认系统提示词针对 Linux 系统管理员场景,但可通过 --system-prompt-file 完全覆盖。
作者定位与现状
作者明确表示 q 是一个「proof of concept」而非成熟产品,代码量约 7000 行,属于「vibed code」(借助 LLM 快速产出)范畴,目前由作者本人作为日常工具使用,但仍存在以下已知问题:
- 当用户问题以
who、which等容易与命令同名的词开头时,q 可能误判为 shell 指令;通过首字母大写可缓解 - 流式推理/思考过程默认以动画点占位,可通过
--think-loud显示原文 - 输出质量强依赖于所连接的后端模型
构建方式较为直接:make 编译默认版本,make release 生成精简发布版,sudo make install 安装到 /usr/local/bin。Debian/Ubuntu 系发行版需安装 build-essential 与 libcurl4-openssl-dev 开发头文件。
