llm CLI 0.34/0.35:把大模型接进 stdin/stdout 管道
项目地址:simonw/llm
Simon Willison 的 llm 把终端变成通往任意语言模型的脚本化管道。它的定位是「打开聊天窗口之前先伸手的工具」:从 stdin 读文本,发给模型,把答案打印到 stdout,同时把整段交互写进 SQLite。
一次调用就是管道的一节
最简单的用法是直接提问:
llm "EXPLAIN ANALYZE 里 actual rows 和 rows 差一个数量级,通常是什么原因"
真正有用的是把内容管进去——喂文件、喂命令输出,任何东西:
cat parser.py | llm "找出可能的无限循环"
git log -20 --oneline | llm "把这些提交归成几组"
模型位于管道中间,而不是一个需要复制粘贴的独立应用。
选模型
-m 指定模型,llm models 列出当前可用的模型。
0.35(2026-09-07)加入 OpenAI GPT-6 支持:
llm -m gpt-6 "解释这段报错的根因"
插件扩展模型集
本地模型有 Ollama、llama.cpp 的插件,其他托管商也有各自的插件。同一套命令形态既跑本机模型也跑 API 模型,切换只改 -m。
密钥不进 shell history
密钥保存在配置中,不以命令行参数的形式出现,因此不会被 shell history 记下来。
prompt 存成 YAML 模板
某个 prompt 一旦值得留存,就存成模板:纯 YAML 文件,可以随项目一起编辑、提交。用 llm -t 调用,模板列表负责管理。
作者自己常备的模板包括写 commit message、生成 changelog、把粗糙段落改写成可以直接发送的文本——都是那种反复出现、值得固定下来的任务。
每次调用都写进 SQLite
这是最被低估的功能。llm logs 看最近的响应,也可以看全部。因为它是一个真正的数据库,可以用 SQL 查询,也可以用 Datasette 浏览。
0.34(2026-09-02)给每条记录加了响应耗时(response duration)字段。哪些 prompt、哪些模型慢,是查出来的,不用靠猜。
取舍
日志是「聊天工具」和「可脚本化工具」的分界线:几个月后还能 grep 回当时的 prompt,找到有效的那个再重跑一遍。浏览器标签页会忘,数据库不会。
反过来,需要来回追问、改需求、比较多种可能性的场景,聊天窗口仍然更顺手。模板也一样,只留那些确实值得反复跑的;一次性 prompt 留在日志里就够了。