你每天往 ChatGPT / Claude 的对话框里扔了多少条提示词?第二天还能找回来几条?大多数人的答案是:全丢在网页会话里,换台电脑就没了,想统计“这个月到底花了多少 token”更是天方夜谭。而海外极客圈有个流行了好几年的解法:Simon Willison 的开源命令行工具 llm——你敲的每一条提示词、模型的每一次回复、每一分 token 消耗,自动落进本地一个 SQLite 文件,可以用 SQL 随便查。这篇文章给你拆透它的 8 个狠活,全部免费,十分钟就能上手。
写这个工具的人来头不小:Simon Willison 是 Django 框架的联合创始人、Datasette 的作者,他的博客 simonwillison.net 被海外开发者称为“AI 时代记录最系统的个人日志”——从 2022 年底到现在,他几乎每天一条 AI 实验笔记。他做的 llm 不是又一个“聊天壳”,而是一个AI 调用的记账本 + 管道胶水,这也是 90% 的人对它的认知差所在。
brew install llm(macOS)或 pipx install llmllm keys set openaillm "用一句话解释什么是信令面"它本体开源免费(Apache 2 协议),你只付各家的 API 费用;接 Ollama 跑本地模型的话,一分钱不花。默认走 OpenAI,装插件即可扩展:
llm install llm-anthropic # Claude 系
llm install llm-gemini # Gemini 系
llm install llm-ollama # 本地模型(GitHub: taketwo/llm-ollama)
社区还有 DeepSeek、Mistral 等插件(PyPI 上搜 llm-deepseek 即可,具体以搜索结果为准)。切模型就是 llm -m 模型ID 一句话的事,还能用 llm aliases set fast gpt-4o-mini 给常用模型起别名,以后直接 llm -m fast。
操作:同一个问题换模型各跑一遍——
llm -m gpt-4o-mini "解释什么是SBA"
llm -m claude-sonnet-4-5 "解释什么是SBA"
llm -m ollama_chat/qwen3 "解释什么是SBA"
预期效果:三次调用的模型名、提示词、回复全文全部进入本地日志库,配合 llm logs -m 模型名 就能横向回看谁答得好。适用场景:选型测试、写评测文章、给团队定“用什么模型”的依据。别再看榜单选模型了,用你自己的真实任务测,这才是硬数据。
这是整个工具的灵魂。所有调用默认写入 logs.db(macOS 在 ~/Library/Application Support/io.datasette.llm/,Linux 在 ~/.config/io.datasette.llm/)。常用查询:
llm logs -n 5 # 最近5条
llm logs -c # 最近一次对话链
llm logs -q "SBA" # 全文搜历史提示词
llm logs --json # 导出JSON
预期效果:三个月前你问过 AI 的某个解决方案,一条命令翻出来。适用场景:所有人。国内用网页版聊天的人,历史记录本质上是平台的“人质”,导出麻烦还可能被清理;这一招直接把数据主权拿回本地。顺带一提,本地落库对有数据合规顾虑的团队也是加分项——提示词不出你自己的硬盘。
logs.db 的核心表叫 responses,每行自带 input_tokens、output_tokens 字段(各版本表结构略有差异,先 sqlite3 logs.db '.schema' 看一眼为准)。于是成本审计变得极其简单:
sqlite3 logs.db "select model, sum(input_tokens), sum(output_tokens)
from responses group by model order by 2 desc;"
进阶玩法:装上 Datasette(Simon 的另一作品),datasette logs.db 一条命令在浏览器里得到一个可交互查询的可视化界面,零代码。适用场景:想知道“我到底是重度还是轻度用户”“哪个模型在偷吃我的钱”的人。国外不少开发者就是靠这个表决定砍掉哪个订阅的。
这是 2025 年加入、被严重低估的能力。不用手写 JSON Schema,一个小串就够:
llm --schema 'company, role, salary int' \
"从这段JD里抽取信息:……"
输出就是干净的 JSON,可直连数据库或脚本。要数组加 --schema-multi。适用场景:批量解析简历、招聘 JD、爬下来的商品页、财报段落——把“非结构化文本 → 结构化数据”这步以前要写正则、写解析器的活,变成一行命令。国内做数据清洗的朋友,这一招值得单独抄走。
在模板目录建一个 translate.yaml:
system: 你是通信行业资深译者,术语参照3GPP中文习惯
prompt: 把下面内容翻译成{{lang}},保留专有名词英文:
然后 llm -t translate -p lang 日语 "……" 一键复用。模板里还能固定默认模型,等于给每类任务预绑最优模型。适用场景:团队里反复出现的任务——写周报、审PR、做会议纪要。国内教程普遍在教“提示词写法”,而海外的玩法是“提示词工程化”:模板进文件、可版本管理、可传参,这才是 Gap 所在。
llm fragments set my-spec spec.md # 把一份长文档注册成碎片
llm -f my-spec "帮我检查方案里有没有遗漏" # 反复引用
llm -f github:simonw/llm "总结这个项目" # 一句拉取GitHub仓库README当上下文
碎片按内容哈希去重存储,同一份长文档反复使用不会在库里存多份。适用场景:拿一份几百页的规范文档当“常驻上下文”,今天问设计、明天问兼容性,不用每次都粘贴一遍。这是把“文档问答”从玩具变成日常的操作方式。
llm embed -c mydocs note1 -i file.txt # 文件进集合
llm similar mydocs "核心网切片方案" # 语义检索
配合默认的 embedding 模型(OpenAI 的 text-embedding-3-small 一档)或本地模型,你的 logs.db 顺带变成了个人知识库的检索底座。适用场景:管理散落的笔记、方案、聊天记录,不用急着上重型 RAG 平台。
llm 天生吃 stdin,和 Unix 管道是绝配:
curl -s https://example.com/release-notes | llm -s "总结成3条要点"
cat error.log | llm "找出根因,给出修复命令"
再装 llm-cmd 插件(GitHub: simonw/llm-cmd),llm cmd "找出超过100MB的文件" 会生成 shell 命令让你确认编辑后才执行。另外别忘多模态:llm -a 架构图.png "解释这张图",新版本连 PDF 都能当附件喂(以官方 changelog 为准)。
flowchart TD
subgraph S["输入源"]
A["网页/文档<br/>curl / cat"]
B["表格/日志<br/>CSV、JSONL"]
C["图片/PDF<br/>-a 附件"]
end
subgraph E["llm CLI 引擎"]
D["模板<br/>-t + -p 传参"]
F["碎片 fragments<br/>-f 复用长上下文"]
G["schema 抽取<br/>--schema 吐JSON"]
end
subgraph T["本地数据资产"]
H["logs.db<br/>每条调用自动落库"]
I["SQL 审计<br/>tokens/成本/复现"]
J["embeddings<br/>llm similar 检索"]
end
A --> D
B --> G
C --> G
F --> D
D --> G
G --> H
H --> I
G --> J
I -. 回看数据反调模板 .-> D
| 维度 | llm CLI | Cherry Studio / ChatBox 等GUI | Dify 等平台 |
|---|---|---|---|
| 形态 | 命令行+管道 | 桌面聊天壳 | Web 平台 |
| 历史记录 | 本地 SQLite,可 SQL 查询 | 私有格式,面向会话 | 平台数据库 |
| 结构化输出 | --schema 一行搞定 | 基本没有 | 有但要搭流程 |
| 脚本化/自动化 | 原生强 | 弱 | 强但重 |
| 上手成本 | 会终端即可 | 点点点 | 要部署 |
一句话:GUI 工具适合“聊”,llm 适合“干活”;当你想把 AI 调用变成可审计、可复用、可自动化的工程环节时,它就是那个缺位的底层件。
| 你以为的 | 实际上 |
|---|---|
| llm 又一个聊天CLI | 是AI调用的本地记账本+管道胶水 |
| 提示词历史没法管理 | logs.db 全落库,SQL 随便查 |
| token 成本算不清 | responses 表现成字段,一条 SQL 出账单 |
| 结构化抽取要写代码 | --schema 一个字符串直接吐 JSON |
| 提示词只能存在聊天记录里 | 模板 YAML 化、碎片哈希去重复用 |
brew install llm(或 pipx),llm keys set 配好你已有的任意一家 API Key;templates/ 目录,llm logs 回看一周自己的真实用量;--schema 替换你手头一个手工清洗文本的脚本,跑通“文件进、JSON 出、落库”闭环;顺手跑一次第三节的 SQL,看看这个月到底烧了多少 token。本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护。 聚焦5G/6G核心网、3GPP标准、AI工具实战。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
