编程 llm CLI 0.34/0.35:把大模型接进 stdin/stdout 管道

2026-09-16 21:05:14

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 留在日志里就够了。

复制全文 生成海报 LLMCLI 命令行 SQLite 开源工具

推荐文章

程序员茄子在线接单