LLM CLI:终端原生的人工智能工作流革命

访问大型语言模型的命令行工具和 Python 库

在这里插入图片描述

引言

在 AI 工具爆炸式增长的今天,Simon Willison 开发的 LLM CLI 项目为开发者提供了一个独特而强大的解决方案:完全在终端中访问和管理大型语言模型。这个项目不仅是一个工具,更代表了一种全新的 AI 交互哲学——开源、本地可控、终端原生

项目地址:https://github.com/simonw/llm
官方文档:https://llm.datasette.io/


一、项目概述

1.1 什么是 LLM CLI?

LLM 是一个命令行工具和 Python 库,用于与各种大型语言模型(LLM)进行交互。它支持:

  • OpenAI(GPT-4o、GPT-4o-mini 等)
  • Anthropic Claude 系列
  • Google Gemini 系列
  • Meta Llama 系列
  • 数十种其他模型(通过插件系统)
  • 本地运行的模型(通过 Ollama、llama.cpp 等)

1.2 核心特性

# 安装
pip install llm

# 设置 API 密钥
llm keys set openai

# 运行提示词
llm "为我的宠物鹈鹕起 10 个有趣的名字"

# 从图像中提取文本
llm "提取文本" -a scanned-document.jpg

# 使用系统提示分析代码
cat myfile.py | llm -s "解释这段代码"

1.3 项目统计数据

  • GitHub Stars: 10,000+ ⭐
  • 最新版本: 持续更新(见 Changelog)
  • 插件生态: 50+ 官方和社区插件
  • 支持模型: 100+(通过插件系统)

二、架构设计

2.1 核心架构

在这里插入图片描述

2.2 插件架构

LLM 采用微内核 + 插件架构:

┌─────────────────────────────────────┐
│           LLM Core                  │
│  - 命令行解析                        │
│  - 密钥管理                          │
│  - SQLite 日志                       │
│  - 插件加载器                        │
└─────────────────────────────────────┘
           │
    ┌──────┴──────┐
    │             │
    ▼             ▼
┌─────────┐  ┌─────────┐
│  llm-   │  │  llm-   │
│ openai  │  │ ollama  │
└─────────┘  └─────────┘

2.3 数据流

在这里插入图片描述


三、解决的问题

3.1 痛点分析

问题 传统方案 LLM CLI 方案
模型切换困难 每个模型需要不同的客户端 统一接口,一键切换
提示词管理混乱 分散在各个聊天窗口 SQLite 集中存储,可查询
自动化集成复杂 需要调用各平台 API 标准 CLI,易于脚本化
成本不透明 难以追踪各模型使用量 统一日志,便于分析
本地模型访问 需要单独配置 通过插件统一管理

3.2 实际应用场景

场景 1:批量处理文档
# 批量提取 PDF 文本并总结
for pdf in *.pdf; do
    pdftotext "$pdf" - | llm -s "总结这份文档的关键点" >> summaries.md
done
场景 2:代码审查自动化
# 对 Git diff 进行 AI 代码审查
git diff HEAD~1 | llm -s "审查这段代码变更,指出潜在问题"
场景 3:多模型对比测试
# 同一提示词在多个模型上运行
llm -m gpt-4o "解释量子计算" > gpt4o.txt
llm -m claude-3-5-sonnet "解释量子计算" > claude.txt
llm -m gemini-1.5-pro "解释量子计算" > gemini.txt

四、技术栈分析

4.1 核心技术

组件 技术选型 说明
语言 Python 3.10+ 现代 Python 特性
CLI 框架 Click 强大的命令行工具库
数据存储 SQLite 轻量级、零配置
HTTP 客户端 httpx 异步 HTTP 库
配置管理 JSON + TOML 灵活的配置格式
插件系统 entry_points Python 标准插件机制

4.2 依赖关系

llm
├── click (CLI)
├── httpx (HTTP)
├── sqlite-utils (SQLite)
├── click-default-group (子命令)
├── pydantic (数据验证)
└── pip (插件管理)

4.3 安装方式

# 方式 1: pip
pip install llm

# 方式 2: Homebrew (macOS)
brew install llm

# 方式 3: pipx (推荐,隔离环境)
pipx install llm

# 方式 4: uv (现代 Python 包管理器)
uv tool install llm

五、核心功能详解

5.1 模型管理

列出可用模型
llm models

输出示例:

OpenAI Chat: gpt-4o-mini (default)
OpenAI Chat: gpt-4o
OpenAI Chat: o1-preview
Anthropic: claude-3-5-sonnet
Gemini: gemini-1.5-pro
Ollama: llama3.2:latest
设置默认模型
llm models default claude-3-5-sonnet
模型别名
llm aliases set my-favorite claude-3-5-sonnet
llm -m my-favorite "提示词"

5.2 密钥管理

# 设置 API 密钥
llm keys set openai
# 输入密钥(隐藏输入)

# 列出已保存的密钥
llm keys

# 查看密钥存储位置
llm keys path
# 输出:~/.config/io.datasette.llm/keys.json

5.3 附件系统(多模态)

# 分析图像
llm "描述这张图片" -a photo.jpg

# 多个附件
llm "比较这两张图片" -a img1.jpg -a img2.jpg

# 从 URL 加载
llm "提取文本" -a https://example.com/document.png

5.4 工具系统(Tools)

LLM 支持函数调用,让模型可以执行实际操作:

# 启用工具
llm "查询今天的天气" --tool weather_api

# 自定义工具示例
# tools.py
def get_weather(city: str) -> str:
    """获取城市天气"""
    # 调用天气 API
    return f"{city}: 晴朗,25°C"

# 注册工具
llm tools register get_weather

5.5 嵌入(Embeddings)

# 生成嵌入向量
llm embed "这是一段文本" -m sentence-transformers/all-MiniLM-L6-v2

# 存储到数据库
llm embed "文档内容" --collection my-docs --id doc1

# 语义搜索
llm embed-search "相关主题" --collection my-docs

5.6 模板系统

# 创建模板
llm templates save code-review -s "审查这段代码的安全性和性能问题"

# 使用模板
cat app.py | llm -t code-review

# 列出模板
llm templates list

六、插件生态

6.1 官方插件

插件 功能 安装命令
llm-claude Anthropic Claude llm install llm-claude
llm-gemini Google Gemini llm install llm-gemini
llm-ollama Ollama 本地模型 llm install llm-ollama
llm-gpt4all GPT4All 本地模型 llm install llm-gpt4all
llm-sentence-transformers 本地嵌入模型 llm install llm-sentence-transformers

6.2 开发插件

# llm-my-model.py
import llm

@llm.hookimpl
def register_models(register):
    register(MyCustomModel())

class MyCustomModel(llm.Model):
    model_id = "my-custom-model"
    
    def execute(self, prompt, stream, response, conversation):
        # 实现模型逻辑
        yield "响应内容"

6.3 插件目录

# 查看已安装插件
llm plugins

# 安装新插件
llm install llm-anthropic

# 卸载插件
llm uninstall llm-anthropic

七、使用指南

7.1 快速开始

步骤 1:安装
pipx install llm
步骤 2:设置 API 密钥
llm keys set openai
# 粘贴你的 OpenAI API 密钥
步骤 3:运行第一个提示词
llm "用三句话解释机器学习"
步骤 4:探索更多功能
# 查看帮助
llm --help

# 查看模型列表
llm models

# 查看使用记录
llm logs

7.2 高级用法

交互式聊天
llm chat -m gpt-4o
# 进入交互模式
> 你好
> 解释一下量子纠缠
> quit
管道组合
# 结合 Unix 工具
grep "ERROR" app.log | llm "分析这些错误的原因"

# 多步骤处理
cat code.py | llm "添加注释" | llm "翻译成中文"
批量处理
# 处理多个文件
for file in *.md; do
    llm -s "总结" -i "$file" >> summaries.txt
done

八、竞品对比

特性 LLM CLI Cursor Continue 官方 CLI
开源 ✅ 完全开源 ❌ 专有 ✅ 开源 部分开源
本地模型 ✅ 通过插件 ⚠️ 有限
多模型支持 ✅ 50+ ⚠️ 有限 ⚠️ 有限 ❌ 单模型
SQLite 日志 ✅ 内置
插件系统 ✅ 完善 ⚠️ 有限
终端原生 ✅ 完全 ❌ GUI ⚠️ IDE 插件
工具调用 ⚠️ 部分
嵌入向量

九、实际应用场景

9.1 开发者工作流

# Git 提交信息生成
git diff --staged | llm -s "生成简洁的提交信息"

# 代码解释
cat complex_function.py | llm -s "用通俗语言解释这段代码"

# 测试生成
cat src/*.py | llm "为这些函数编写单元测试"

9.2 内容创作

# 博客大纲生成
llm "为'AI 命令行工具'主题生成博客大纲" -m claude-3-5-sonnet

# 多语言翻译
cat article.md | llm "翻译成中文,保持技术术语准确"

9.3 数据分析

# JSON 数据分析
cat data.json | llm "提取关键指标并总结趋势"

# CSV 处理
csvkit csvstat data.csv | llm "解释这些统计结果"

9.4 系统管理

# 日志分析
journalctl -u nginx | llm "找出最近的问题并建议解决方案"

# 安全审计
nmap -sV target.com | llm "分析开放端口的安全风险"

十、局限性与改进建议

10.1 当前局限

问题 影响 临时解决方案
流式输出偶尔卡顿 用户体验下降 使用 --no-stream
部分插件文档不足 学习曲线陡峭 参考源码和示例
Windows 兼容性 部分功能受限 使用 WSL2
工具安全性 潜在风险 仔细阅读工具代码

10.2 改进建议

  1. 增强安全性

    • 添加工具执行的确认机制
    • 实现权限分级系统
  2. 改进用户体验

    • 添加交互式配置向导
    • 提供更详细的错误信息
  3. 扩展功能

    • 支持更多本地模型格式(GGUF、ONNX)
    • 添加图形化日志查看器
  4. 性能优化

    • 实现请求缓存
    • 优化大文件处理

十一、技术评价总结

11.1 优势

开源透明:完全开源,无黑盒操作
本地优先:支持完全本地运行的模型
终端原生:完美融入 Unix 工作流
可扩展性:强大的插件系统
数据自主:SQLite 本地存储,完全可控
社区活跃:Simon Willison 维护,响应迅速

11.2 适用人群

  • 开发者:需要将 AI 集成到开发流程
  • DevOps 工程师:自动化运维和监控
  • 数据分析师:批量处理和分析数据
  • 隐私倡导者:偏好本地部署和开源方案
  • 终端爱好者:喜欢命令行工作流

11.3 总体评分

维度 评分 说明
功能性 ⭐⭐⭐⭐⭐ 覆盖主流模型和场景
易用性 ⭐⭐⭐⭐ 学习曲线适中
文档质量 ⭐⭐⭐⭐ 详细但部分分散
社区支持 ⭐⭐⭐⭐⭐ 活跃且友好
创新性 ⭐⭐⭐⭐⭐ 重新定义 CLI+AI

十二、快速参考卡片

# ============ 安装 ============
pipx install llm
llm install llm-ollama  # 本地模型插件

# ============ 配置 ============
llm keys set openai     # 设置 API 密钥
llm keys list          # 查看密钥

# ============ 基本使用 ============
llm "提示词"            # 运行提示
llm -m model "提示词"   # 指定模型
llm -s "系统提示" "用户提示"  # 系统提示

# ============ 文件处理 ============
llm -a image.jpg "描述图片"     # 图像输入
cat file.py | llm "解释代码"    # 管道输入

# ============ 模型管理 ============
llm models               # 列出模型
llm models default <模型> # 设置默认
llm aliases set <别名> <模型>  # 设置别名

# ============ 日志 ============
llm logs                 # 查看历史
llm logs -n 10          # 最近 10 条
llm logs --conversation <ID>  # 查看会话

# ============ 插件 ============
llm plugins              # 列出插件
llm install <插件名>      # 安装插件
llm uninstall <插件名>    # 卸载插件

十三、总结

LLM CLI 代表了 AI 工具发展的一个重要方向:开源、本地化、终端原生。它不仅仅是一个工具,更是一种理念——让人工智能真正融入开发者的日常工作流,而不是成为孤立的"聊天机器人"。

核心价值

  1. 统一接口:一个命令访问所有主流模型
  2. 数据自主:本地 SQLite 存储,完全可控
  3. 工作流集成:无缝融入现有终端工具链
  4. 隐私保护:支持完全本地运行的模型
  5. 开放生态:插件系统允许无限扩展

推荐使用场景

  • ✅ 需要频繁切换不同模型
  • ✅ 希望将 AI 集成到自动化脚本
  • ✅ 重视数据隐私和本地部署
  • ✅ 偏好终端工作流
  • ✅ 需要审计和追踪 AI 使用记录

项目信息

  • GitHub: https://github.com/simonw/llm
  • 文档: https://llm.datasette.io/
  • 作者: Simon Willison
  • 许可: Apache 2.0
  • Python 版本: 3.10+

本文基于 LLM CLI v0.23+ 版本编写,项目持续更新中,请以官方文档为准。

最后更新:2026 年 5 月 12 日

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐