lumen
Lumen 是一款专为命令行环境打造的智能 Git 差异查看器,旨在成为 AI 编程时代不可或缺的代码审查助手。它不仅能以美观、高亮的方式展示代码变更,还能利用人工智能自动生成符合规范的提交信息、解释复杂的代码改动,甚至根据自然语言描述生成相应的 Git 操作命令。
对于日常依赖终端工作的开发者而言,Lumen 有效解决了传统 Git 工具输出枯燥、难以快速理解变更意图以及编写提交说明耗时费力等痛点。通过集成 OpenAI、Claude、Ollama 等多种主流 AI 模型,它将繁琐的代码审查流程转化为直观的交互式体验,让开发者无需离开终端即可完成从查看差异到提交代码的完整闭环。
该工具特别适合习惯使用 CLI 的软件工程师、开源贡献者及 DevOps 人员。其技术亮点在于将强大的 AI 能力无缝嵌入轻量级的 Rust 编写的命令行工具中,既保留了原生终端的高效与灵活,又通过模糊搜索、Markdown 富文本渲染等特性极大提升了可读性与交互性。无论是快速回顾历史提交,还是为复杂的功能变更撰写精准说明,Lumen 都能让代码版本管理变得更加轻松优雅。
使用场景
资深后端工程师小林正在赶在周五下班前修复一个紧急的生产环境 Bug,他刚刚完成了代码修改并暂存了文件,准备提交代码。
没有 lumen 时
- 审查困难:在终端直接运行
git diff,输出是一大片黑白文本,缺乏语法高亮,难以快速定位关键逻辑变更。 - 提交耗时:为了写出符合团队规范的 Commit Message,需要手动回忆修改细节,反复斟酌措辞,耗费大量脑力。
- 上下文割裂:若需向同事解释改动原因,必须切换窗口去写文档或口头复述,无法直接从命令行生成清晰的变更摘要。
- 操作繁琐:想要撤销某个特定文件的暂存或查找历史类似提交,需要记忆复杂的 Git 命令参数,容易出错。
使用 lumen 后
- 视觉清晰:运行
lumen diff即可在终端获得带语法高亮的美观差异视图,像看 IDE 一样轻松审查代码。 - 智能生成:输入
lumen draft --context "fix race condition",lumen 瞬间生成符合约定式提交规范的消息,如fix(auth): resolve token race condition during login。 - 一键解释:通过
lumen explain直接获取 Markdown 格式的变更总结,包含修改原因和影响范围,可直接复制到 PR 描述或团队群聊中。 - 自然语言交互:只需输入“如何只取消暂存 config 文件”,lumen 便能生成对应的 Git 命令甚至直接执行,大幅降低记忆负担。
lumen 将原本枯燥易错的 Git 操作流程,转变为流畅、智能且可视化的开发体验,让工程师专注于代码本身而非工具命令。
运行环境要求
- Linux
- macOS
- Windows
未说明
未说明

快速开始

AI 编码代理时代缺失的代码评审工具。
特别致谢
目录
功能 🔅
- 美观且符合人体工学的差异查看器:支持语法高亮,方便代码审查并添加注释
- 智能提交信息:为暂存的更改自动生成规范化的提交信息
- 交互式搜索:通过模糊搜索查找和浏览提交记录
- 多 AI 提供商支持:兼容 OpenAI、Claude、Groq、Ollama 等多种模型
- 灵活性强:适用于任何 Git 工作流,并支持多种 AI 提供商
- 丰富输出:支持 Markdown 格式,提供易读的说明和差异对比(需安装 mdcat)
快速上手 🔅
先决条件
在开始之前,请确保您已安装:
安装
使用 Homebrew(MacOS 和 Linux)
brew install jnsahaj/lumen/lumen
使用 Cargo
[!重要]
cargo是 Rust 的包管理工具, 在安装 Rust 时会自动一同安装。 详情请参阅 安装指南
cargo install lumen
配置(针对 AI 功能)
若要使用 AI 驱动的功能(explain、draft、list、operate),请运行交互式设置:
lumen configure
该命令将引导您完成以下步骤:
- 选择 AI 提供商
- 输入 API 密钥(如使用环境变量则可省略)
- 指定自定义模型名称(可选——按回车键使用默认值)
配置信息将保存至 ~/.config/lumen/lumen.config.json。
[!注意]
diff命令无需任何配置即可使用——它是一个独立的可视化差异查看器。
使用方法 🔅
生成提交信息
为暂存的更改创建有意义的提交信息:
# 基本用法——根据暂存内容生成提交信息
lumen draft
# 输出: "feat(button.tsx): 将按钮颜色更新为蓝色"
# 添加上下文以生成更丰富的信息
lumen draft --context "符合品牌规范"
# 输出: "feat(button.tsx): 更新按钮颜色以符合品牌标识规范"
生成 Git 命令
让 Lumen 根据自然语言查询生成 Git 命令:
lumen operate "将最近的 3 次提交压缩成 1 次,提交信息为 'squashed commit'"
# 输出: git reset --soft HEAD~3 && git commit -m "squashed commit" [y/N]
该命令会显示所生成命令的作用说明,提示潜在危险操作,并在执行前要求确认。
可视化差异查看器
在终端中启动交互式的并排差异查看器:

# 查看未提交的更改
lumen diff
# 查看特定提交的更改
lumen diff HEAD~1
# 查看分支之间的差异
lumen diff main..feature/A
# 查看 GitHub Pull Request 中的更改
lumen diff --pr 123 # (--pr 为可选)
lumen diff https://github.com/owner/repo/pull/123
# 过滤到特定文件
lumen diff --file src/main.rs --file src/lib.rs
# 监视模式——文件变化时自动刷新
lumen diff --watch
# 堆叠模式——逐个查看提交
lumen diff main..feature --stacked
# 打开时直接跳转到指定文件
lumen diff --focus src/main.rs
堆叠差异模式
使用 --stacked 选项逐个查看一系列提交:
lumen diff main..feature --stacked
lumen diff HEAD~5..HEAD --stacked
此模式会单独显示每个提交,您可以进行导航:
ctrl+h/ctrl+l:上一个 / 下一个提交- 点击页眉中的
‹/›箭头
页眉会显示当前提交的位置、SHA 值和提交信息。每次查看的文件都会被记录,因此在导航时您的进度会被保留。
查看 PR 时,您可以通过空格键标记已查看的文件(与 GitHub 同步)。
主题配置
使用预设主题自定义差异查看器的颜色:
# 使用命令行参数
lumen diff --theme dracula
# 使用环境变量
LUMEN_THEME=catppuccin-mocha lumen diff
# 或者在配置文件中永久设置(~/.config/lumen/lumen.config.json)
{
"theme": "dracula"
}
可用主题:
| 主题 | 值 |
|---|---|
| 默认(自动检测) | dark、light |
| Catppuccin | catppuccin-mocha、catppuccin-latte |
| Dracula | dracula |
| Nord | nord |
| One Dark | one-dark |
| Gruvbox | gruvbox-dark、gruvbox-light |
| Solarized | solarized-dark、solarized-light |
优先级:命令行参数 > 配置文件 > LUMEN_THEME 环境变量 > 操作系统自动检测。
选择与注释
选择:在内容区域中单击并拖动以进行字符级别的选择,或在行号上单击以进行行级别的选择。选定的文本可以被复制或添加注释。
注释:可以在三个不同粒度上添加评审评论:
- 选择 — 使用鼠标选择行,然后按
i键为所选范围添加注释 - 块 — 使用
{/}聚焦一个代码块,然后按i键为该块添加注释 - 文件 — 在没有选择或聚焦任何代码块的情况下按
i键,即可为整个文件添加注释
带有注释的行会在侧边栏显示一个 ▍ 标记。使用 I 键可以查看、编辑、删除、复制或导出所有注释。
快捷键
j/k或方向键:导航{/}:在代码块之间跳转tab:切换侧边栏space:将文件标记为已查看e:在编辑器中打开文件y:复制选中的内容(或文件名)i:为选中的内容/代码块/文件添加注释I:查看所有注释ctrl+h/l:上一个/下一个提交(堆叠模式)?:显示所有快捷键
解释变更
了解发生了哪些变化以及原因:
# 解释当前工作目录中的所有更改
lumen explain # 所有更改
lumen explain --staged # 仅暂存的更改
# 解释特定的提交
lumen explain HEAD # 最近一次提交
lumen explain abc123f # 特定提交
lumen explain HEAD~3..HEAD # 最近3次提交
lumen explain main..feature/A # 分支对比
lumen explain main...feature/A # 分支对比(合并基点)
# 针对变更提出具体问题
lumen explain --query "这些更改对性能有什么影响?"
lumen explain HEAD --query "可能有哪些副作用?"
# 交互式选择提交
lumen explain --list # 交互式选择提交
交互模式
# 启动交互式模糊查找工具来搜索提交记录(需要安装 fzf)
lumen explain --list
# 已弃用:lumen list(请改用 lumen explain --list)
小贴士与技巧
# 将提交信息复制到剪贴板
lumen draft | pbcopy # macOS
lumen draft | xclip -selection c # Linux
# 查看并复制提交信息
lumen draft | tee >(pbcopy)
# 在你喜欢的编辑器中打开
lumen draft | code -
# 直接使用生成的信息提交
lumen draft | git commit -F -
如果你正在使用 lazygit,可以将其添加到 用户配置文件中:
customCommands:
- key: '<c-l>'
context: 'files'
command: 'lumen draft | tee >(pbcopy)'
loadingText: '生成消息...'
showOutput: true
- key: '<c-k>'
context: 'files'
command: 'lumen draft -c {{.Form.Context | quote}} | tee >(pbcopy)'
loadingText: '生成消息...'
showOutput: true
prompts:
- type: 'input'
title: '上下文'
key: 'Context'
AI 提供商 🔅
配置你偏好的 AI 提供商:
# 使用命令行参数
lumen -p openai -k "your-api-key" -m "gpt-5-mini" draft
# 使用环境变量
export LUMEN_AI_PROVIDER="openai"
export LUMEN_API_KEY="your-api-key"
export LUMEN_AI_MODEL="gpt-5-mini"
支持的提供商
| 提供商 | 是否需要 API 密钥 | 模型 |
|---|---|---|
OpenAI openai(默认) |
是 | gpt-5.2、gpt-5、gpt-5-mini、gpt-5-nano、gpt-4.1、gpt-4.1-mini、o4-mini(默认:gpt-5-mini) |
Claude claude |
是 | claude-sonnet-4-5-20250930、claude-opus-4-5-20251115、claude-haiku-4-5-20251015(默认:claude-sonnet-4-5-20250930) |
Gemini gemini |
是(免费层级) | gemini-3-pro、gemini-3-flash-preview、gemini-2.5-pro、gemini-2.5-flash、gemini-2.5-flash-lite(默认:gemini-2.5-flash) |
Groq groq |
是(免费) | llama-3.3-70b-versatile、llama-3.1-8b-instant、meta-llama/llama-4-maverick-17b-128e-instruct、openai/gpt-oss-120b(默认:llama-3.3-70b-versatile) |
DeepSeek deepseek |
是 | deepseek-chat(V3.2)、deepseek-reasoner(默认:deepseek-chat) |
xAI xai |
是 | grok-4、grok-4-mini、grok-4-mini-fast(默认:grok-4-mini-fast) |
OpenCode Zen opencode-zen |
是 | 见列表(默认:claude-sonnet-4-5) |
Ollama ollama |
否(本地运行) | 见列表(默认:llama3.2) |
OpenRouter openrouter |
是 | 见列表(默认:anthropic/claude-sonnet-4.5) |
Vercel AI Gateway vercel |
是 | 见列表(默认:anthropic/claude-sonnet-4.5) |
高级配置 🔅
配置文件
Lumen 支持通过 JSON 文件进行配置。您可以将配置文件放置在以下任一位置:
- 项目根目录:在项目的根目录下创建一个
lumen.config.json文件。 - 自定义路径:使用
--configCLI 选项指定自定义路径。 - 全局配置(可选):将
lumen.config.json文件放置在系统的默认配置目录中:- Linux/macOS:
~/.config/lumen/lumen.config.json - Windows:
%USERPROFILE%\.config\lumen\lumen.config.json
- Linux/macOS:
Lumen 将按照以下优先级顺序加载配置:
- CLI 参数(最高优先级)
- 使用
--config指定的配置文件 - 项目根目录下的
lumen.config.json - 全局配置文件(最低优先级)
{
"provider": "openai",
"model": "gpt-5-mini",
"api_key": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"theme": "catppuccin-mocha",
"draft": {
"commit_types": {
"docs": "仅涉及文档的更改",
"style": "不影响代码含义的更改",
"refactor": "既不修复错误也不添加新功能的代码更改",
"perf": "提升性能的代码更改",
"test": "添加缺失的测试或修正现有测试",
"build": "影响构建系统或外部依赖项的更改",
"ci": "CI 配置文件和脚本的更改",
"chore": "不修改源代码或测试文件的其他更改",
"revert": "撤销之前的提交",
"feat": "新增功能",
"fix": "修复 bug"
}
}
}
配置优先级
选项将按以下顺序应用(从高到低):
- CLI 标志
- 配置文件
- 环境变量
- 默认选项
示例:为不同项目使用不同的提供商:
# 在 .zshrc 或 .bashrc 中设置全局默认值
export LUMEN_AI_PROVIDER="openai"
export LUMEN_AI_MODEL="gpt-5-mini"
export LUMEN_API_KEY="sk-xxxxxxxxxxxxxxxxxxxxxxxx"
# 使用配置文件为每个项目覆盖设置
{
"provider": "ollama",
"model": "llama3.2"
}
# 或者使用 CLI 标志覆盖
lumen -p "ollama" -m "llama3.2" draft
贡献者
由 contrib.rocks 制作。
想要贡献吗?
欢迎任何贡献!请随时提交 Pull Request。
星标历史
版本历史
v2.22.02026/04/07v2.21.02026/03/12v2.20.12026/03/11v2.20.02026/01/29v2.19.02026/01/22v2.18.02026/01/19v2.17.32026/01/19v2.17.22026/01/19v2.17.12026/01/19v2.17.02026/01/19v2.16.02026/01/14v2.15.02026/01/10v2.14.02026/01/10v2.13.02026/01/09v2.11.12026/01/08v2.11.02026/01/08v2.10.02026/01/07v2.9.12026/01/06v2.9.02026/01/06v2.8.12026/01/04常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器