有时候你只想在终端里快速问一个问题,不想打开浏览器,不想登录网页,不想等页面加载。ASK 就是为这种场景设计的。
这是什么
ASK 是一个命令行工具。它把你输入的文字发送给 OpenAI,然后把回答打印在终端里。没有图形界面,没有多余的功能,就是一个简单的问答工具。
整个程序用 C++17 写成,依赖 libcurl 和 cJSON。编译后是一个单独的二进制文件,没有运行时依赖。
主要功能
ASK 支持两种使用方式。
第一种是单次问答。你输入一个问题,它给你一个回答,然后结束。适合快速查询。
./ask "法国的首都是哪里?"第二种是交互模式。程序保持运行,你可以连续提问,它会记住上下文。输入 exit 退出,输入 status 查看当前状态。
./ask -c "我们来聊聊"TIP交互模式下,ASK 会记住整个对话历史,所以你可以进行多轮对话。
安装方法
ASK 需要手动编译。依赖项很少:一个支持 C++17 的编译器、libcurl、cJSON。
macOS 用户可以用 Homebrew 安装依赖:
brew install curl cjsonmakeUbuntu/Debian 用户:
sudo apt-get updatesudo apt-get install -y g++ libcurl4-openssl-dev libcjson-devmake编译完成后会生成 ask 可执行文件。
配置
使用前需要配置 OpenAI API 密钥。有三种方式。
通过环境变量:
export OPENAI_API_KEY=sk-...export ASK_GLOBAL_MODEL=gpt-5.2-latest-chat通过 .env 文件:
OPENAI_API_KEY=sk-...ASK_GLOBAL_MODEL=gpt-5.2-latest-chat通过命令行参数(会自动写入 .env):
./ask --setAPIKey sk-... --setModel gpt-5.2-latest-chatIMPORTANT默认模型是
gpt-5.2-latest-chat,默认 token 限制是 128000。
实用功能
ASK 有一个很方便的功能:可以用 @ 符号引用本地文件。程序会自动读取文件内容并附加到提问中。
./ask "总结一下 @README.md"文件限制:最大 10KB,必须是纯文本,路径必须精确。
另外,默认情况下回答会以流式方式输出,就像你在 ChatGPT 网页上看到的那样,一个字一个字地显示。如果你不喜欢这样,可以关掉:
./ask --no-stream "讲个故事"常用参数
| 参数 | 作用 |
|---|---|
-c, --continue | 进入交互模式 |
--no-stream | 关闭流式输出 |
-t, --token | 临时指定 API 密钥 |
-m, --model | 临时指定模型 |
-T, --temperature | 设置采样温度(默认 1.0) |
-l, --tokenLimit | 设置 token 上限 |
--tokenCount | 只计算输入的 token 数量,不发送请求 |
--debug | 开启调试模式 |
发布与下载
项目使用 GitHub Actions 自动构建。每次推送带 v* 格式的 tag,就会自动编译并发布。
目前提供 Linux 和 macOS 的预编译包,格式是 ask-<os>-<arch>.tar.gz,附带 SHA256 校验码。
NOTE截至本文写作时,最新版本是 v1.0,发布于 2025 年 12 月。
适用场景
这个工具适合以下情况:
你经常在终端工作,不想切换到浏览器。你需要快速查询一些信息。你想把 AI 集成到 shell 脚本里。你喜欢轻量级、无依赖的工具。
如果你需要复杂的对话管理、多模态输入、或者图形界面,这个工具不适合你。
技术细节
ASK 使用 SSE(Server-Sent Events)接收流式响应。如果流式传输失败,会自动回退到完整 JSON 响应。
程序内置了超时处理:60 秒超时后会自动重试一次。等待期间会显示一个”thinking…”的动画,让你知道程序还在运行。
token 计数是近似值,不是精确计算。
总结
ASK 是一个小巧实用的工具。它没有花哨的功能,但把该做的事情做得很好。如果你经常在终端工作,值得一试。
Works Cited
StevenLi-phoenix. “ASK.” GitHub, https://github.com/StevenLi-phoenix/ask. Accessed 29 Dec. 2025.