入门
用 Simon Willison 的 llm 命令行工具把 AI 接进终端(零基础编程 Agent 入门)
你有没有过这种体验:正在终端里干活,突然想让 AI 解释一段代码、改个提交信息、总结一段日志,却要切到浏览器开 ChatGPT、粘贴、复制、再切回来?llm 是 Datasette 作者 Simon Willison 打造的命令行工具——一条命令就能在终端里直接调 30+ 个大模型(OpenAI、Claude、Gemini、本地 Ollama 等),自动把每次对话存进本地 SQLite,还能直接出代码。它也是「在终端里跑一个轻量编程 Agent」的最低门槛入口。本教程零基础带你跑起来。
💻 本教程适合:几乎所有人——开发者、运维、学生、爱用命令行的效率控。你只要会打开终端、能装个 Python 包、有一个大模型 API Key 就行,不需要会编程也能跟着做。
先搞懂:llm 是什么、能干什么?
用一句话理解:llm 是「终端里的万能 AI 客户端」——同一句 llm "你的问题" 语法,背后可以是 OpenAI、Claude 或本地模型,换模型只换一个参数。它的几个超能力正好解决日常痛点:
| 能力 | 对你意味着什么 |
|---|---|
| 一条命令对话 | 不用开网页,终端里直接问 |
| 自动存 SQLite 日志 | 所有问答本地可追溯,还能用 Datasette 翻看 |
| 管道喂文件 | cat 文件 | llm 让 AI 处理任意文本 |
| 直接出代码 | --code 只吐代码、去掉解释 |
| 插件扩厂商 | 一行 llm install 加新模型 |
它不是「重框架」:llm 定位是「趁手的 CLI + 轻量 Agent 雏形」,不是 LangGraph 那种编排框架。想做复杂多智能体系统,请看本中心其他进阶教程;想「把 AI 融进日常命令」,llm 是首选。
Step 1:安装 llm
1 任选一种安装方式
# 方式一:pip(最通用)
pip install llm
# 方式二:pipx(隔离环境,推荐)
pipx install llm
# 方式三:uv
uv tool install llm
# 方式四:Homebrew(macOS)
brew install llm
# 验证
llm --help
💡 2026 年 llm 已迭代到 0.32 系列,持续向「轻量编程 Agent」方向演进(官方提到在其上构建简单 coding agent 的思路)。本教程聚焦最稳的通用用法。
Step 2:配置 API Key
2 把 Key 存进本地,别写进命令
# 以 OpenAI 为例,运行后会提示你粘贴 Key
llm keys set openai
# 验证 Key 已保存
llm keys
# 也支持环境变量(CI / 脚本里常用)
export OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx
Key 安全:llm 把 Key 存在本地配置文件里(不在命令历史)。别把 Key 直接写进 shell 命令再截图发出去。其它厂商类似:llm install llm-anthropic && llm keys set anthropic。
Step 3:你的第一个提示
3 一句话问出去
# 默认模型(OpenAI gpt-4o-mini 之类)
llm "给宠物鹈鹕起十个有趣的名字"
# 用系统提示词处理文件内容
cat myfile.py | llm -s "解释这段代码在做什么"
# 换模型(以 Claude 为例,需先装插件并设 Key)
llm -m claude-4-opus "用萝卜的冷知识震撼我"
🔑 关键技巧:
- 表示「从标准输入读」,所以 cat 文件 | llm -s "..." 是把文件内容喂给 AI 的万能姿势。git diff、日志、报错都能这么处理。Step 4:用管道把 AI 接进工作流
4 让 AI 处理命令输出
这是 llm 最爽的用法——把任意命令的输出直接丢给 AI:
# 让 AI 总结本次 git 改动
llm "用中文总结这些改动:$(git diff)"
# 让 AI 改写提交信息为 conventional commits 格式
git diff --cached | llm -s "把暂存的改动写成一条 conventional commit 信息"
# 让 AI 总结一大段日志
curl -s https://example.com/log.txt | llm -s "提取其中的报错并给排查建议"
💡 把
$(命令) 嵌进双引号,是「快速拼 prompt」的利器。你每天少切几次浏览器,一年能省下不少时间。Step 5:交互式聊天
5 进入多轮对话
# 进入聊天模式
llm chat -m gpt-4.1
# 聊天内指令:
# exit / quit 退出
# !multi 进入多行输入,!end 结束
# !edit 用默认编辑器修改当前 prompt
# !fragment 插入已保存的片段
聊天有上下文:llm chat 会记住本轮对话历史,适合追问。单次 llm "..." 则是无状态的「一问一答」。
Step 6:直接产出代码
6 只要代码,不要废话
--code 会让 llm 只输出代码、并自动去掉 Markdown 代码块包裹,方便直接写文件:
# 生成代码并直接存成文件(务必先读一眼再运行!)
llm '写一个 Python CLI:把 stdin 的内容反转输出' --code > reverse.py
# 给现有文件加功能
cat reverse.py | llm -s "加一个 --upper 参数,输出全大写" --code
# ⚠️ 安全提醒:AI 生成的代码先读再跑,别直接 | bash
🚀 这其实就是「终端编程 Agent」的最小形态:你描述需求 → AI 出代码 → 你审阅执行。想更进一步(让 Agent 自己跑代码、迭代),可以关注 llm 官方的 coding agent 思路,或本中心的 OpenAI Agents SDK / Claude Code 教程。
Step 7:日志、片段与脚本化
7 让 AI 成为可复用工具
# 查看历史问答(本地 SQLite)
llm logs -n 10
# 用 Datasette 图形化浏览日志库
datasette ~/.llm/log.db
# 把常用 prompt 存成「片段」复用
llm -s "你是有 10 年经验的 Rust 导师" --save rust-mentor
llm "解释 &str 和 String 的区别" --fragment rust-mentor
# 写进 shell 脚本/定时任务,自动跑 AI 任务
#!/bin/bash
llm "总结今天的运维告警" -s "你是 SRE" < alerts.txt >> report.md
🎉 到此你已掌握 llm 的日常闭环:装好 → 配 Key → 问 → 管道处理文件 → 聊天 → 出代码 → 日志/片段/脚本化。它是把 AI 融进命令行工作流最低门槛的一步。
常见问题速查
| 现象 | 大概率原因 & 解决 |
|---|---|
| 报 "No API key" | 没跑 llm keys set 或环境变量没 export |
| 模型不存在 | 用了未安装的厂商 → 先 llm install llm-xxx 并设 Key |
| 管道没反应 | 忘了 -s "系统提示词",或文件为空 |
| 代码带 Markdown 包裹 | 没加 --code,导致含 ``` 围栏 |