[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-jnsahaj--lumen":3,"tool-jnsahaj--lumen":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",150720,2,"2026-04-11T11:33:10",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":77,"owner_email":77,"owner_twitter":78,"owner_website":79,"owner_url":80,"languages":81,"stars":93,"forks":94,"last_commit_at":95,"license":96,"difficulty_score":32,"env_os":97,"env_gpu":98,"env_ram":98,"env_deps":99,"category_tags":106,"github_topics":107,"view_count":32,"oss_zip_url":77,"oss_zip_packed_at":77,"status":17,"created_at":113,"updated_at":114,"faqs":115,"releases":146},6598,"jnsahaj\u002Flumen","lumen","Beautiful git diff viewer, generate commits with AI, get summary of changes, all from the CLI","Lumen 是一款专为命令行环境打造的智能 Git 差异查看器，旨在成为 AI 编程时代不可或缺的代码审查助手。它不仅能以美观、高亮的方式展示代码变更，还能利用人工智能自动生成符合规范的提交信息、解释复杂的代码改动，甚至根据自然语言描述生成相应的 Git 操作命令。\n\n对于日常依赖终端工作的开发者而言，Lumen 有效解决了传统 Git 工具输出枯燥、难以快速理解变更意图以及编写提交说明耗时费力等痛点。通过集成 OpenAI、Claude、Ollama 等多种主流 AI 模型，它将繁琐的代码审查流程转化为直观的交互式体验，让开发者无需离开终端即可完成从查看差异到提交代码的完整闭环。\n\n该工具特别适合习惯使用 CLI 的软件工程师、开源贡献者及 DevOps 人员。其技术亮点在于将强大的 AI 能力无缝嵌入轻量级的 Rust 编写的命令行工具中，既保留了原生终端的高效与灵活，又通过模糊搜索、Markdown 富文本渲染等特性极大提升了可读性与交互性。无论是快速回顾历史提交，还是为复杂的功能变更撰写精准说明，Lumen 都能让代码版本管理变得更加轻松优雅。","# \u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjnsahaj_lumen_readme_6f862cd7b506.png\" alt=\"lumen\" \u002F>\u003C\u002Fp>\n\n[![Crates.io Total Downloads](https:\u002F\u002Fimg.shields.io\u002Fcrates\u002Fd\u002Flumen?label=downloads%20%40crates.io)](https:\u002F\u002Fcrates.io\u002Fcrates\u002Flumen)\n[![GitHub Releases](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdownloads\u002Fjnsahaj\u002Flumen\u002Ftotal?label=dowloads%20%40releases)](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Freleases)\n![GitHub License](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fjnsahaj\u002Flumen)\n![Crates.io Size](https:\u002F\u002Fimg.shields.io\u002Fcrates\u002Fsize\u002Flumen)\n\n## The missing code review tool in the era of AI coding agents.\n[![Demo](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjnsahaj_lumen_readme_64042acf90d6.png)](https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F70d07324-8394-423c-bbc3-9460ed84877b)\n\n## Special Thanks\n\u003Cdiv align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fcoderabbit.link\u002Flumen-oss\">\n    \u003Cimg width=\"2152\" height=\"313\" alt=\"image\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjnsahaj_lumen_readme_f8b0ad5d405b.png\" \u002F>\n  \u003C\u002Fa>\n\u003C\u002Fdiv>\n\n## Table of Contents\n- [Features](#features-)\n- [Getting Started](#getting-started-)\n  - [Prerequisites](#prerequisites)\n  - [Installation](#installation)\n  - [Configuration (for AI features)](#configuration-for-ai-features)\n- [Usage](#usage-)\n  - [Visual Diff Viewer](#visual-diff-viewer)\n  - [Generate Commit Messages](#generate-commit-messages)\n  - [Generate Git Commands](#generate-git-commands)\n  - [Explain Changes](#explain-changes)\n  - [Interactive Mode](#interactive-mode)\n  - [Tips & Tricks](#tips--tricks)\n- [AI Providers](#ai-providers-)\n- [Advanced Configuration](#advanced-configuration-)\n  - [Configuration File](#configuration-file)\n  - [Configuration Precedence](#configuration-precedence)\n\n## Features 🔅\n\n- **Beautiful & Ergonomic Diff Viewer**: Review your code with syntax highlighting & leave comments\n- **Smart Commit Messages**: Generate conventional commit messages for your staged changes\n- **Interactive Search**: Find and explore commits using fuzzy search\n- **Multiple AI Providers**: Supports OpenAI, Claude, Groq, Ollama, and more\n- **Flexible**: Works with any git workflow and supports multiple AI providers\n- **Rich Output**: Markdown support for readable explanations and diffs (requires: mdcat)\n\n## Getting Started 🔅\n\n### Prerequisites\nBefore you begin, ensure you have:\n1. `git` installed on your system\n2. [fzf](https:\u002F\u002Fgithub.com\u002Fjunegunn\u002Ffzf) (optional) - Required for `lumen explain --list` command\n3. [mdcat](https:\u002F\u002Fgithub.com\u002Fswsnr\u002Fmdcat) (optional) - Required for pretty output formatting\n\n### Installation\n\n#### Using Homebrew (MacOS and Linux)\n```bash\nbrew install jnsahaj\u002Flumen\u002Flumen\n```\n\n#### Using Cargo\n> [!IMPORTANT]\n> `cargo` is a package manager for `rust`,\n> and is installed automatically when you install `rust`.\n> See [installation guide](https:\u002F\u002Fdoc.rust-lang.org\u002Fcargo\u002Fgetting-started\u002Finstallation.html)\n```bash\ncargo install lumen\n```\n\n### Configuration (for AI features)\n\nIf you want to use AI-powered features (`explain`, `draft`, `list`, `operate`), run the interactive setup:\n\n```bash\nlumen configure\n```\n\nThis will guide you through:\n1. Selecting an AI provider\n2. Entering your API key (optional if using environment variable)\n3. Specifying a custom model name (optional - press Enter to use the default)\n\nThe configuration is saved to `~\u002F.config\u002Flumen\u002Flumen.config.json`.\n\n> [!NOTE]\n> The `diff` command works without any configuration - it's a standalone visual diff viewer.\n\n\n## Usage 🔅\n\n### Generate Commit Messages\n\nCreate meaningful commit messages for your staged changes:\n\n```bash\n# Basic usage - generates a commit message based on staged changes\nlumen draft\n# Output: \"feat(button.tsx): Update button color to blue\"\n\n# Add context for more meaningful messages\nlumen draft --context \"match brand guidelines\"\n# Output: \"feat(button.tsx): Update button color to align with brand identity guidelines\"\n```\n\n\n### Generate Git Commands\n\nAsk Lumen to generate Git commands based on a natural language query:\n\n```bash\nlumen operate \"squash the last 3 commits into 1 with the message 'squashed commit'\"\n# Output: git reset --soft HEAD~3 && git commit -m \"squashed commit\" [y\u002FN]\n```\n\nThe command will display an explanation of what the generated command does, show any warnings for potentially dangerous operations, and prompt for confirmation before execution.\n\n### Visual Diff Viewer\n\nLaunch an interactive side-by-side diff viewer in your terminal:\n\u003Cimg width=\"3456\" height=\"2158\" alt=\"image\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjnsahaj_lumen_readme_64042acf90d6.png\" \u002F>\n\n```bash\n# View uncommitted changes\nlumen diff\n\n# View changes for a specific commit\nlumen diff HEAD~1\n\n# View changes between branches\nlumen diff main..feature\u002FA\n\n# View changes in a GitHub Pull Request\nlumen diff --pr 123 # (--pr is optional)\nlumen diff https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo\u002Fpull\u002F123\n\n# Filter to specific files\nlumen diff --file src\u002Fmain.rs --file src\u002Flib.rs\n\n# Watch mode - auto-refresh on file changes\nlumen diff --watch\n\n# Stacked mode - review commits one by one\nlumen diff main..feature --stacked\n\n# Jump to a specific file on open\nlumen diff --focus src\u002Fmain.rs\n```\n\n#### Stacked Diff Mode\n\nReview a range of commits one at a time with `--stacked`:\n\n```bash\nlumen diff main..feature --stacked\nlumen diff HEAD~5..HEAD --stacked\n```\n\nThis displays each commit individually, letting you navigate through them:\n- `ctrl+h` \u002F `ctrl+l`: Previous \u002F next commit\n- Click the `‹` \u002F `›` arrows in the header\n\nThe header shows the current commit position, SHA, and message. Viewed files are tracked per commit, so your progress is preserved when navigating.\n\nWhen viewing a PR, you can mark files as viewed (syncs with GitHub) using the `space` keybinding.\n\n#### Theme Configuration\n\nCustomize the diff viewer colors with preset themes:\n\n```bash\n# Using CLI flag\nlumen diff --theme dracula\n\n# Using environment variable\nLUMEN_THEME=catppuccin-mocha lumen diff\n\n# Or set permanently in config file (~\u002F.config\u002Flumen\u002Flumen.config.json)\n{\n  \"theme\": \"dracula\"\n}\n```\n\n**Available themes:**\n| Theme | Value |\n|-------|-------|\n| Default (auto-detect) | `dark`, `light` |\n| Catppuccin | `catppuccin-mocha`, `catppuccin-latte` |\n| Dracula | `dracula` |\n| Nord | `nord` |\n| One Dark | `one-dark` |\n| Gruvbox | `gruvbox-dark`, `gruvbox-light` |\n| Solarized | `solarized-dark`, `solarized-light` |\n\nPriority: CLI flag > config file > `LUMEN_THEME` env var > OS auto-detect.\n\n#### Selection & Annotations\n\n**Selection**: Click-drag in the content area for character-level selection, or on line numbers for line-level selection. Selected text can be copied or annotated.\n\n**Annotations**: Add review comments at three levels of granularity:\n- **Selection** — select lines with mouse, press `i` to annotate the selected range\n- **Hunk** — focus a hunk with `{`\u002F`}`, press `i` to annotate the hunk\n- **File** — press `i` with no selection or hunk focus to annotate the whole file\n\nAnnotated lines display a `▍` gutter indicator. Use `I` to view, edit, delete, copy, or export all annotations.\n\n#### Keybindings\n\n- `j\u002Fk` or arrow keys: Navigate\n- `{\u002F}`: Jump between hunks\n- `tab`: Toggle sidebar\n- `space`: Mark file as viewed\n- `e`: Open file in editor\n- `y`: Copy selection (or filename)\n- `i`: Annotate selection \u002F hunk \u002F file\n- `I`: View all annotations\n- `ctrl+h\u002Fl`: Previous\u002Fnext commit (stacked mode)\n- `?`: Show all keybindings\n\n### Explain Changes\n\nUnderstand what changed and why:\n\n```bash\n# Explain current changes in your working directory\nlumen explain                         # All changes\nlumen explain --staged                # Only staged changes\n\n# Explain specific commits\nlumen explain HEAD                    # Latest commit\nlumen explain abc123f                 # Specific commit\nlumen explain HEAD~3..HEAD            # Last 3 commits\nlumen explain main..feature\u002FA         # Branch comparison\nlumen explain main...feature\u002FA        # Branch comparison (merge base)\n\n# Ask specific questions about changes\nlumen explain --query \"What's the performance impact of these changes?\"\nlumen explain HEAD --query \"What are the potential side effects?\"\n\n# Interactive commit selection\nlumen explain --list                  # Select commit interactively\n```\n\n### Interactive Mode\n```bash\n# Launch interactive fuzzy finder to search through commits (requires: fzf)\nlumen explain --list\n\n# Deprecated: lumen list (use lumen explain --list instead)\n```\n\n### Tips & Tricks\n\n```bash\n# Copy commit message to clipboard\nlumen draft | pbcopy                  # macOS\nlumen draft | xclip -selection c      # Linux\n\n# View the commit message and copy it\nlumen draft | tee >(pbcopy)\n\n# Open in your favorite editor\nlumen draft | code -      \n\n# Directly commit using the generated message\nlumen draft | git commit -F -           \n```\n\nIf you are using [lazygit](https:\u002F\u002Fgithub.com\u002Fjesseduffield\u002Flazygit), you can add this to the [user config](https:\u002F\u002Fgithub.com\u002Fjesseduffield\u002Flazygit\u002Fblob\u002Fmaster\u002Fdocs\u002FConfig.md)\n```yml\ncustomCommands:\n  - key: '\u003Cc-l>'\n    context: 'files'\n    command: 'lumen draft | tee >(pbcopy)'\n    loadingText: 'Generating message...'\n    showOutput: true\n  - key: '\u003Cc-k>'\n    context: 'files'\n    command: 'lumen draft -c {{.Form.Context | quote}} | tee >(pbcopy)'\n    loadingText: 'Generating message...'\n    showOutput: true\n    prompts:\n          - type: 'input'\n            title: 'Context'\n            key: 'Context'\n```\n\n## AI Providers 🔅\n\nConfigure your preferred AI provider:\n\n```bash\n# Using CLI arguments\nlumen -p openai -k \"your-api-key\" -m \"gpt-5-mini\" draft\n\n# Using environment variables\nexport LUMEN_AI_PROVIDER=\"openai\"\nexport LUMEN_API_KEY=\"your-api-key\"\nexport LUMEN_AI_MODEL=\"gpt-5-mini\"\n```\n\n### Supported Providers\n\n| Provider | API Key Required | Models |\n|----------|-----------------|---------|\n| [OpenAI](https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fmodels) `openai` (Default) | Yes | `gpt-5.2`, `gpt-5`, `gpt-5-mini`, `gpt-5-nano`, `gpt-4.1`, `gpt-4.1-mini`, `o4-mini` (default: `gpt-5-mini`) |\n| [Claude](https:\u002F\u002Fwww.anthropic.com\u002Fpricing) `claude` | Yes | `claude-sonnet-4-5-20250930`, `claude-opus-4-5-20251115`, `claude-haiku-4-5-20251015` (default: `claude-sonnet-4-5-20250930`) |\n| [Gemini](https:\u002F\u002Fai.google.dev\u002F) `gemini` | Yes (free tier) | `gemini-3-pro`, `gemini-3-flash-preview`, `gemini-2.5-pro`, `gemini-2.5-flash`, `gemini-2.5-flash-lite` (default: `gemini-2.5-flash`) |\n| [Groq](https:\u002F\u002Fconsole.groq.com\u002Fdocs\u002Fmodels) `groq` | Yes (free) | `llama-3.3-70b-versatile`, `llama-3.1-8b-instant`, `meta-llama\u002Fllama-4-maverick-17b-128e-instruct`, `openai\u002Fgpt-oss-120b` (default: `llama-3.3-70b-versatile`) |\n| [DeepSeek](https:\u002F\u002Fwww.deepseek.com\u002F) `deepseek` | Yes | `deepseek-chat` (V3.2), `deepseek-reasoner` (default: `deepseek-chat`) |\n| [xAI](https:\u002F\u002Fx.ai\u002F) `xai` | Yes | `grok-4`, `grok-4-mini`, `grok-4-mini-fast` (default: `grok-4-mini-fast`) |\n| [OpenCode Zen](https:\u002F\u002Fopencode.ai\u002Fdocs\u002Fzen) `opencode-zen` | Yes | [see list](https:\u002F\u002Fopencode.ai\u002Fdocs\u002Fzen#models) (default: `claude-sonnet-4-5`) |\n| [Ollama](https:\u002F\u002Fgithub.com\u002Follama\u002Follama) `ollama` | No (local) | [see list](https:\u002F\u002Follama.com\u002Flibrary) (default: `llama3.2`) |\n| [OpenRouter](https:\u002F\u002Fopenrouter.ai\u002F) `openrouter` | Yes | [see list](https:\u002F\u002Fopenrouter.ai\u002Fmodels) (default: `anthropic\u002Fclaude-sonnet-4.5`) |\n| [Vercel AI Gateway](https:\u002F\u002Fvercel.com\u002Fdocs\u002Fai-gateway) `vercel` | Yes | [see list](https:\u002F\u002Fvercel.com\u002Fdocs\u002Fai-gateway\u002Fsupported-models) (default: `anthropic\u002Fclaude-sonnet-4.5`) |\n\n## Advanced Configuration 🔅\n\n### Configuration File\nLumen supports configuration through a JSON file. You can place the configuration file in one of the following locations:\n\n1. Project Root: Create a lumen.config.json file in your project's root directory.\n2. Custom Path: Specify a custom path using the --config CLI option.\n3. Global Configuration (Optional): Place a lumen.config.json file in your system's default configuration directory:\n    - Linux\u002FmacOS: `~\u002F.config\u002Flumen\u002Flumen.config.json`\n    - Windows: `%USERPROFILE%\\.config\\lumen\\lumen.config.json`\n\nLumen will load configurations in the following order of priority:\n\n1. CLI arguments (highest priority)\n2. Configuration file specified by --config\n3. Project root lumen.config.json\n4. Global configuration file (lowest priority)\n\n```json\n{\n  \"provider\": \"openai\",\n  \"model\": \"gpt-5-mini\",\n  \"api_key\": \"sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n  \"theme\": \"catppuccin-mocha\",\n  \"draft\": {\n    \"commit_types\": {\n      \"docs\": \"Documentation only changes\",\n      \"style\": \"Changes that do not affect the meaning of the code\",\n      \"refactor\": \"A code change that neither fixes a bug nor adds a feature\",\n      \"perf\": \"A code change that improves performance\",\n      \"test\": \"Adding missing tests or correcting existing tests\",\n      \"build\": \"Changes that affect the build system or external dependencies\",\n      \"ci\": \"Changes to our CI configuration files and scripts\",\n      \"chore\": \"Other changes that don't modify src or test files\",\n      \"revert\": \"Reverts a previous commit\",\n      \"feat\": \"A new feature\",\n      \"fix\": \"A bug fix\"\n    }\n  }\n}\n```\n\n### Configuration Precedence\nOptions are applied in the following order (highest to lowest priority):\n1. CLI Flags\n2. Configuration File\n3. Environment Variables\n4. Default options\n\nExample: Using different providers for different projects:\n```bash\n# Set global defaults in .zshrc\u002F.bashrc\nexport LUMEN_AI_PROVIDER=\"openai\"\nexport LUMEN_AI_MODEL=\"gpt-5-mini\"\nexport LUMEN_API_KEY=\"sk-xxxxxxxxxxxxxxxxxxxxxxxx\"\n\n# Override per project using config file\n{\n  \"provider\": \"ollama\",\n  \"model\": \"llama3.2\"\n}\n\n# Or override using CLI flags\nlumen -p \"ollama\" -m \"llama3.2\" draft\n```\n## Contributors\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjnsahaj_lumen_readme_6d234de4ad10.png\" \u002F>\n\u003C\u002Fa>\n\nMade with [contrib.rocks](https:\u002F\u002Fcontrib.rocks).\n\n### Interested in Contributing?\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n# Star History\n\n\u003Cp align=\"center\">\n  \u003Ca target=\"_blank\" href=\"https:\u002F\u002Fstar-history.com\u002F#jnsahaj\u002Flumen&Date\">\n    \u003Cpicture>\n      \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjnsahaj_lumen_readme_3bcbb986000e.png&theme=dark\">\n      \u003Cimg alt=\"GitHub Star History for jnsahaj\u002Flumen\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjnsahaj_lumen_readme_3bcbb986000e.png\">\n    \u003C\u002Fpicture>\n  \u003C\u002Fa>\n\u003C\u002Fp>\n","# \u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjnsahaj_lumen_readme_6f862cd7b506.png\" alt=\"lumen\" \u002F>\u003C\u002Fp>\n\n[![Crates.io 总下载量](https:\u002F\u002Fimg.shields.io\u002Fcrates\u002Fd\u002Flumen?label=downloads%20%40crates.io)](https:\u002F\u002Fcrates.io\u002Fcrates\u002Flumen)\n[![GitHub 发布下载量](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdownloads\u002Fjnsahaj\u002Flumen\u002Ftotal?label=dowloads%20%40releases)](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Freleases)\n![GitHub 许可证](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fjnsahaj\u002Flumen)\n![Crates.io 包大小](https:\u002F\u002Fimg.shields.io\u002Fcrates\u002Fsize\u002Flumen)\n\n## AI 编码代理时代缺失的代码评审工具。\n[![演示](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjnsahaj_lumen_readme_64042acf90d6.png)](https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F70d07324-8394-423c-bbc3-9460ed84877b)\n\n## 特别致谢\n\u003Cdiv align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fcoderabbit.link\u002Flumen-oss\">\n    \u003Cimg width=\"2152\" height=\"313\" alt=\"image\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjnsahaj_lumen_readme_f8b0ad5d405b.png\" \u002F>\n  \u003C\u002Fa>\n\u003C\u002Fdiv>\n\n## 目录\n- [功能](#features-)\n- [快速上手](#getting-started-)\n  - [先决条件](#prerequisites)\n  - [安装](#installation)\n  - [配置（针对 AI 功能）](#configuration-for-ai-features)\n- [使用方法](#usage-)\n  - [可视化差异查看器](#visual-diff-viewer)\n  - [生成提交信息](#generate-commit-messages)\n  - [生成 Git 命令](#generate-git-commands)\n  - [解释变更](#explain-changes)\n  - [交互模式](#interactive-mode)\n  - [技巧与提示](#tips--tricks)\n- [AI 提供商](#ai-providers-)\n- [高级配置](#advanced-configuration-)\n  - [配置文件](#configuration-file)\n  - [配置优先级](#configuration-precedence)\n\n## 功能 🔅\n\n- **美观且符合人体工学的差异查看器**：支持语法高亮，方便代码审查并添加注释\n- **智能提交信息**：为暂存的更改自动生成规范化的提交信息\n- **交互式搜索**：通过模糊搜索查找和浏览提交记录\n- **多 AI 提供商支持**：兼容 OpenAI、Claude、Groq、Ollama 等多种模型\n- **灵活性强**：适用于任何 Git 工作流，并支持多种 AI 提供商\n- **丰富输出**：支持 Markdown 格式，提供易读的说明和差异对比（需安装 mdcat）\n\n## 快速上手 🔅\n\n### 先决条件\n在开始之前，请确保您已安装：\n1. 系统中已安装 `git`\n2. [fzf](https:\u002F\u002Fgithub.com\u002Fjunegunn\u002Ffzf)（可选）——用于 `lumen explain --list` 命令\n3. [mdcat](https:\u002F\u002Fgithub.com\u002Fswsnr\u002Fmdcat)（可选）——用于美化输出格式\n\n### 安装\n\n#### 使用 Homebrew（MacOS 和 Linux）\n```bash\nbrew install jnsahaj\u002Flumen\u002Flumen\n```\n\n#### 使用 Cargo\n> [!重要]\n> `cargo` 是 Rust 的包管理工具，\n> 在安装 Rust 时会自动一同安装。\n> 详情请参阅 [安装指南](https:\u002F\u002Fdoc.rust-lang.org\u002Fcargo\u002Fgetting-started\u002Finstallation.html)\n```bash\ncargo install lumen\n```\n\n### 配置（针对 AI 功能）\n\n若要使用 AI 驱动的功能（`explain`、`draft`、`list`、`operate`），请运行交互式设置：\n\n```bash\nlumen configure\n```\n\n该命令将引导您完成以下步骤：\n1. 选择 AI 提供商\n2. 输入 API 密钥（如使用环境变量则可省略）\n3. 指定自定义模型名称（可选——按回车键使用默认值）\n\n配置信息将保存至 `~\u002F.config\u002Flumen\u002Flumen.config.json`。\n\n> [!注意]\n> `diff` 命令无需任何配置即可使用——它是一个独立的可视化差异查看器。\n\n\n## 使用方法 🔅\n\n### 生成提交信息\n\n为暂存的更改创建有意义的提交信息：\n\n```bash\n# 基本用法——根据暂存内容生成提交信息\nlumen draft\n# 输出： \"feat(button.tsx): 将按钮颜色更新为蓝色\"\n\n# 添加上下文以生成更丰富的信息\nlumen draft --context \"符合品牌规范\"\n# 输出： \"feat(button.tsx): 更新按钮颜色以符合品牌标识规范\"\n```\n\n\n### 生成 Git 命令\n\n让 Lumen 根据自然语言查询生成 Git 命令：\n\n```bash\nlumen operate \"将最近的 3 次提交压缩成 1 次，提交信息为 'squashed commit'\"\n# 输出： git reset --soft HEAD~3 && git commit -m \"squashed commit\" [y\u002FN]\n```\n\n该命令会显示所生成命令的作用说明，提示潜在危险操作，并在执行前要求确认。\n\n### 可视化差异查看器\n\n在终端中启动交互式的并排差异查看器：\n\u003Cimg width=\"3456\" height=\"2158\" alt=\"image\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjnsahaj_lumen_readme_64042acf90d6.png\" \u002F>\n\n```bash\n# 查看未提交的更改\nlumen diff\n\n# 查看特定提交的更改\nlumen diff HEAD~1\n\n# 查看分支之间的差异\nlumen diff main..feature\u002FA\n\n# 查看 GitHub Pull Request 中的更改\nlumen diff --pr 123 # (--pr 为可选)\nlumen diff https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo\u002Fpull\u002F123\n\n# 过滤到特定文件\nlumen diff --file src\u002Fmain.rs --file src\u002Flib.rs\n\n# 监视模式——文件变化时自动刷新\nlumen diff --watch\n\n# 堆叠模式——逐个查看提交\nlumen diff main..feature --stacked\n\n# 打开时直接跳转到指定文件\nlumen diff --focus src\u002Fmain.rs\n```\n\n#### 堆叠差异模式\n\n使用 `--stacked` 选项逐个查看一系列提交：\n\n```bash\nlumen diff main..feature --stacked\nlumen diff HEAD~5..HEAD --stacked\n```\n\n此模式会单独显示每个提交，您可以进行导航：\n- `ctrl+h` \u002F `ctrl+l`：上一个 \u002F 下一个提交\n- 点击页眉中的 `‹` \u002F `›` 箭头\n\n页眉会显示当前提交的位置、SHA 值和提交信息。每次查看的文件都会被记录，因此在导航时您的进度会被保留。\n\n查看 PR 时，您可以通过空格键标记已查看的文件（与 GitHub 同步）。\n\n#### 主题配置\n\n使用预设主题自定义差异查看器的颜色：\n\n```bash\n# 使用命令行参数\nlumen diff --theme dracula\n\n# 使用环境变量\nLUMEN_THEME=catppuccin-mocha lumen diff\n\n# 或者在配置文件中永久设置（~\u002F.config\u002Flumen\u002Flumen.config.json）\n{\n  \"theme\": \"dracula\"\n}\n```\n\n**可用主题：**\n| 主题 | 值 |\n|-------|-------|\n| 默认（自动检测） | `dark`、`light` |\n| Catppuccin | `catppuccin-mocha`、`catppuccin-latte` |\n| Dracula | `dracula` |\n| Nord | `nord` |\n| One Dark | `one-dark` |\n| Gruvbox | `gruvbox-dark`、`gruvbox-light` |\n| Solarized | `solarized-dark`、`solarized-light` |\n\n优先级：命令行参数 > 配置文件 > `LUMEN_THEME` 环境变量 > 操作系统自动检测。\n\n#### 选择与注释\n\n**选择**：在内容区域中单击并拖动以进行字符级别的选择，或在行号上单击以进行行级别的选择。选定的文本可以被复制或添加注释。\n\n**注释**：可以在三个不同粒度上添加评审评论：\n- **选择** — 使用鼠标选择行，然后按 `i` 键为所选范围添加注释\n- **块** — 使用 `{`\u002F`}` 聚焦一个代码块，然后按 `i` 键为该块添加注释\n- **文件** — 在没有选择或聚焦任何代码块的情况下按 `i` 键，即可为整个文件添加注释\n\n带有注释的行会在侧边栏显示一个 `▍` 标记。使用 `I` 键可以查看、编辑、删除、复制或导出所有注释。\n\n#### 快捷键\n\n- `j\u002Fk` 或方向键：导航\n- `{\u002F}`：在代码块之间跳转\n- `tab`：切换侧边栏\n- `space`：将文件标记为已查看\n- `e`：在编辑器中打开文件\n- `y`：复制选中的内容（或文件名）\n- `i`：为选中的内容\u002F代码块\u002F文件添加注释\n- `I`：查看所有注释\n- `ctrl+h\u002Fl`：上一个\u002F下一个提交（堆叠模式）\n- `?`：显示所有快捷键\n\n### 解释变更\n\n了解发生了哪些变化以及原因：\n\n```bash\n# 解释当前工作目录中的所有更改\nlumen explain                         # 所有更改\nlumen explain --staged                # 仅暂存的更改\n\n# 解释特定的提交\nlumen explain HEAD                    # 最近一次提交\nlumen explain abc123f                 # 特定提交\nlumen explain HEAD~3..HEAD            # 最近3次提交\nlumen explain main..feature\u002FA         # 分支对比\nlumen explain main...feature\u002FA        # 分支对比（合并基点）\n\n# 针对变更提出具体问题\nlumen explain --query \"这些更改对性能有什么影响？\"\nlumen explain HEAD --query \"可能有哪些副作用？\"\n\n# 交互式选择提交\nlumen explain --list                  # 交互式选择提交\n```\n\n### 交互模式\n```bash\n# 启动交互式模糊查找工具来搜索提交记录（需要安装 fzf）\nlumen explain --list\n\n# 已弃用：lumen list（请改用 lumen explain --list）\n```\n\n### 小贴士与技巧\n\n```bash\n# 将提交信息复制到剪贴板\nlumen draft | pbcopy                  # macOS\nlumen draft | xclip -selection c      # Linux\n\n# 查看并复制提交信息\nlumen draft | tee >(pbcopy)\n\n# 在你喜欢的编辑器中打开\nlumen draft | code -      \n\n# 直接使用生成的信息提交\nlumen draft | git commit -F -           \n```\n\n如果你正在使用 [lazygit](https:\u002F\u002Fgithub.com\u002Fjesseduffield\u002Flazygit)，可以将其添加到 [用户配置文件](https:\u002F\u002Fgithub.com\u002Fjesseduffield\u002Flazygit\u002Fblob\u002Fmaster\u002Fdocs\u002FConfig.md)中：\n```yml\ncustomCommands:\n  - key: '\u003Cc-l>'\n    context: 'files'\n    command: 'lumen draft | tee >(pbcopy)'\n    loadingText: '生成消息...'\n    showOutput: true\n  - key: '\u003Cc-k>'\n    context: 'files'\n    command: 'lumen draft -c {{.Form.Context | quote}} | tee >(pbcopy)'\n    loadingText: '生成消息...'\n    showOutput: true\n    prompts:\n          - type: 'input'\n            title: '上下文'\n            key: 'Context'\n```\n\n## AI 提供商 🔅\n\n配置你偏好的 AI 提供商：\n\n```bash\n# 使用命令行参数\nlumen -p openai -k \"your-api-key\" -m \"gpt-5-mini\" draft\n\n# 使用环境变量\nexport LUMEN_AI_PROVIDER=\"openai\"\nexport LUMEN_API_KEY=\"your-api-key\"\nexport LUMEN_AI_MODEL=\"gpt-5-mini\"\n```\n\n### 支持的提供商\n\n| 提供商 | 是否需要 API 密钥 | 模型 |\n|----------|-----------------|---------|\n| [OpenAI](https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fmodels) `openai`（默认） | 是 | `gpt-5.2`、`gpt-5`、`gpt-5-mini`、`gpt-5-nano`、`gpt-4.1`、`gpt-4.1-mini`、`o4-mini`（默认：`gpt-5-mini`） |\n| [Claude](https:\u002F\u002Fwww.anthropic.com\u002Fpricing) `claude` | 是 | `claude-sonnet-4-5-20250930`、`claude-opus-4-5-20251115`、`claude-haiku-4-5-20251015`（默认：`claude-sonnet-4-5-20250930`） |\n| [Gemini](https:\u002F\u002Fai.google.dev\u002F) `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`） |\n| [Groq](https:\u002F\u002Fconsole.groq.com\u002Fdocs\u002Fmodels) `groq` | 是（免费） | `llama-3.3-70b-versatile`、`llama-3.1-8b-instant`、`meta-llama\u002Fllama-4-maverick-17b-128e-instruct`、`openai\u002Fgpt-oss-120b`（默认：`llama-3.3-70b-versatile`） |\n| [DeepSeek](https:\u002F\u002Fwww.deepseek.com\u002F) `deepseek` | 是 | `deepseek-chat`（V3.2）、`deepseek-reasoner`（默认：`deepseek-chat`） |\n| [xAI](https:\u002F\u002Fx.ai\u002F) `xai` | 是 | `grok-4`、`grok-4-mini`、`grok-4-mini-fast`（默认：`grok-4-mini-fast`） |\n| [OpenCode Zen](https:\u002F\u002Fopencode.ai\u002Fdocs\u002Fzen) `opencode-zen` | 是 | [见列表](https:\u002F\u002Fopencode.ai\u002Fdocs\u002Fzen#models)（默认：`claude-sonnet-4-5`） |\n| [Ollama](https:\u002F\u002Fgithub.com\u002Follama\u002Follama) `ollama` | 否（本地运行） | [见列表](https:\u002F\u002Follama.com\u002Flibrary)（默认：`llama3.2`） |\n| [OpenRouter](https:\u002F\u002Fopenrouter.ai\u002F) `openrouter` | 是 | [见列表](https:\u002F\u002Fopenrouter.ai\u002Fmodels)（默认：`anthropic\u002Fclaude-sonnet-4.5`） |\n| [Vercel AI Gateway](https:\u002F\u002Fvercel.com\u002Fdocs\u002Fai-gateway) `vercel` | 是 | [见列表](https:\u002F\u002Fvercel.com\u002Fdocs\u002Fai-gateway\u002Fsupported-models)（默认：`anthropic\u002Fclaude-sonnet-4.5`） |\n\n## 高级配置 🔅\n\n### 配置文件\nLumen 支持通过 JSON 文件进行配置。您可以将配置文件放置在以下任一位置：\n\n1. 项目根目录：在项目的根目录下创建一个 `lumen.config.json` 文件。\n2. 自定义路径：使用 `--config` CLI 选项指定自定义路径。\n3. 全局配置（可选）：将 `lumen.config.json` 文件放置在系统的默认配置目录中：\n    - Linux\u002FmacOS：`~\u002F.config\u002Flumen\u002Flumen.config.json`\n    - Windows：`%USERPROFILE%\\.config\\lumen\\lumen.config.json`\n\nLumen 将按照以下优先级顺序加载配置：\n\n1. CLI 参数（最高优先级）\n2. 使用 `--config` 指定的配置文件\n3. 项目根目录下的 `lumen.config.json`\n4. 全局配置文件（最低优先级）\n\n```json\n{\n  \"provider\": \"openai\",\n  \"model\": \"gpt-5-mini\",\n  \"api_key\": \"sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n  \"theme\": \"catppuccin-mocha\",\n  \"draft\": {\n    \"commit_types\": {\n      \"docs\": \"仅涉及文档的更改\",\n      \"style\": \"不影响代码含义的更改\",\n      \"refactor\": \"既不修复错误也不添加新功能的代码更改\",\n      \"perf\": \"提升性能的代码更改\",\n      \"test\": \"添加缺失的测试或修正现有测试\",\n      \"build\": \"影响构建系统或外部依赖项的更改\",\n      \"ci\": \"CI 配置文件和脚本的更改\",\n      \"chore\": \"不修改源代码或测试文件的其他更改\",\n      \"revert\": \"撤销之前的提交\",\n      \"feat\": \"新增功能\",\n      \"fix\": \"修复 bug\"\n    }\n  }\n}\n```\n\n### 配置优先级\n选项将按以下顺序应用（从高到低）：\n1. CLI 标志\n2. 配置文件\n3. 环境变量\n4. 默认选项\n\n示例：为不同项目使用不同的提供商：\n```bash\n# 在 .zshrc 或 .bashrc 中设置全局默认值\nexport LUMEN_AI_PROVIDER=\"openai\"\nexport LUMEN_AI_MODEL=\"gpt-5-mini\"\nexport LUMEN_API_KEY=\"sk-xxxxxxxxxxxxxxxxxxxxxxxx\"\n\n# 使用配置文件为每个项目覆盖设置\n{\n  \"provider\": \"ollama\",\n  \"model\": \"llama3.2\"\n}\n\n# 或者使用 CLI 标志覆盖\nlumen -p \"ollama\" -m \"llama3.2\" draft\n```\n## 贡献者\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjnsahaj_lumen_readme_6d234de4ad10.png\" \u002F>\n\u003C\u002Fa>\n\n由 [contrib.rocks](https:\u002F\u002Fcontrib.rocks) 制作。\n\n### 想要贡献吗？\n\n欢迎任何贡献！请随时提交 Pull Request。\n\n# 星标历史\n\n\u003Cp align=\"center\">\n  \u003Ca target=\"_blank\" href=\"https:\u002F\u002Fstar-history.com\u002F#jnsahaj\u002Flumen&Date\">\n    \u003Cpicture>\n      \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjnsahaj_lumen_readme_3bcbb986000e.png&theme=dark\">\n      \u003Cimg alt=\"GitHub 星标历史 - jnsahaj\u002Flumen\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjnsahaj_lumen_readme_3bcbb986000e.png\">\n    \u003C\u002Fpicture>\n  \u003C\u002Fa>\n\u003C\u002Fp>","# Lumen 快速上手指南\n\nLumen 是 AI 编码代理时代的代码审查工具，提供美观的差异查看器、智能提交消息生成及多模型 AI 支持。\n\n## 环境准备\n\n在开始之前，请确保您的系统满足以下要求：\n\n1.  **Git**: 必须已安装并配置好。\n2.  **fzf** (可选): 用于 `lumen explain --list` 的交互式模糊搜索。\n    *   安装参考：[junegunn\u002Ffzf](https:\u002F\u002Fgithub.com\u002Fjunegunn\u002Ffzf)\n3.  **mdcat** (可选): 用于终端内渲染美观的 Markdown 输出。\n    *   安装参考：[swsnr\u002Fmdcat](https:\u002F\u002Fgithub.com\u002Fswsnr\u002Fmdcat)\n\n> **注意**：基础的 `diff` 命令无需任何额外配置即可直接使用。若需使用 `explain`、`draft` 等 AI 功能，需配置 API Key。\n\n## 安装步骤\n\n### 方式一：使用 Homebrew (推荐 macOS\u002FLinux 用户)\n\n```bash\nbrew install jnsahaj\u002Flumen\u002Flumen\n```\n\n### 方式二：使用 Cargo (Rust 包管理器)\n\n如果您已安装 Rust 环境，可直接通过 cargo 安装：\n\n```bash\ncargo install lumen\n```\n\n> **提示**：国内用户若遇到下载缓慢，可配置 Rust 镜像源：\n> ```bash\n> export CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse\n> export CARGO_REGISTRIES_CRATES_IO_INDEX=https:\u002F\u002Fmirrors.tuna.tsinghua.edu.cn\u002Fgit\u002Fcrates.io-index.git\n> ```\n\n## 基本使用\n\n### 1. 配置 AI 功能 (可选)\n\n若需使用智能生成提交信息或解释代码变更等功能，请先运行交互式配置向导：\n\n```bash\nlumen configure\n```\n\n按提示选择 AI 提供商（如 OpenAI, Claude, Ollama 等），输入 API Key 并选择模型。配置将保存至 `~\u002F.config\u002Flumen\u002Flumen.config.json`。\n\n### 2. 查看代码差异 (Visual Diff)\n\n启动终端内的交互式并排差异查看器，支持语法高亮和注释：\n\n```bash\n# 查看未提交的更改\nlumen diff\n\n# 查看特定提交的更改\nlumen diff HEAD~1\n\n# 查看分支间差异\nlumen diff main..feature\u002FA\n\n# 堆叠模式：逐个审查一系列提交\nlumen diff main..feature --stacked\n```\n\n**常用快捷键：**\n*   `j\u002Fk` 或方向键：导航\n*   `{` \u002F `}`：跳转到上一个\u002F下一个代码块 (hunk)\n*   `i`：添加注释 (支持选中行、代码块或整个文件)\n*   `space`：标记文件为已读\n*   `?`：查看所有快捷键\n\n### 3. 生成提交消息 (Smart Commit)\n\n根据暂存区（staged）的更改自动生成符合规范的提交消息：\n\n```bash\n# 基础用法\nlumen draft\n# 输出示例：feat(button.tsx): Update button color to blue\n\n# 添加上下文以生成更精准的消息\nlumen draft --context \"match brand guidelines\"\n# 输出示例：feat(button.tsx): Update button color to align with brand identity guidelines\n```\n\n**实用技巧：直接提交**\n```bash\nlumen draft | git commit -F -\n```\n\n### 4. 解释代码变更 (Explain Changes)\n\n利用 AI 分析变更内容及其潜在影响：\n\n```bash\n# 解释当前工作目录的所有更改\nlumen explain\n\n# 仅解释暂存区的更改\nlumen explain --staged\n\n# 针对特定提交提问\nlumen explain HEAD --query \"这些更改对性能有什么影响？\"\n\n# 交互式选择提交进行解释 (需安装 fzf)\nlumen explain --list\n```\n\n### 5. 生成 Git 命令 (Operate)\n\n通过自然语言描述让 Lumen 生成复杂的 Git 命令：\n\n```bash\nlumen operate \"squash the last 3 commits into 1 with the message 'squashed commit'\"\n# 输出预览：git reset --soft HEAD~3 && git commit -m \"squashed commit\" [y\u002FN]\n```\n系统会展示命令解释及安全警告，确认无误后输入 `y` 执行。","资深后端工程师小林正在赶在周五下班前修复一个紧急的生产环境 Bug，他刚刚完成了代码修改并暂存了文件，准备提交代码。\n\n### 没有 lumen 时\n- **审查困难**：在终端直接运行 `git diff`，输出是一大片黑白文本，缺乏语法高亮，难以快速定位关键逻辑变更。\n- **提交耗时**：为了写出符合团队规范的 Commit Message，需要手动回忆修改细节，反复斟酌措辞，耗费大量脑力。\n- **上下文割裂**：若需向同事解释改动原因，必须切换窗口去写文档或口头复述，无法直接从命令行生成清晰的变更摘要。\n- **操作繁琐**：想要撤销某个特定文件的暂存或查找历史类似提交，需要记忆复杂的 Git 命令参数，容易出错。\n\n### 使用 lumen 后\n- **视觉清晰**：运行 `lumen diff` 即可在终端获得带语法高亮的美观差异视图，像看 IDE 一样轻松审查代码。\n- **智能生成**：输入 `lumen draft --context \"fix race condition\"`，lumen 瞬间生成符合约定式提交规范的消息，如 `fix(auth): resolve token race condition during login`。\n- **一键解释**：通过 `lumen explain` 直接获取 Markdown 格式的变更总结，包含修改原因和影响范围，可直接复制到 PR 描述或团队群聊中。\n- **自然语言交互**：只需输入“如何只取消暂存 config 文件”，lumen 便能生成对应的 Git 命令甚至直接执行，大幅降低记忆负担。\n\nlumen 将原本枯燥易错的 Git 操作流程，转变为流畅、智能且可视化的开发体验，让工程师专注于代码本身而非工具命令。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjnsahaj_lumen_64042acf.png","jnsahaj","Sahaj Jain","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fjnsahaj_392ac218.jpg","Software engineer @vercel","@vercel",null,"iamsahaj_xyz","iamsahaj.xyz","https:\u002F\u002Fgithub.com\u002Fjnsahaj",[82,86,89],{"name":83,"color":84,"percentage":85},"Rust","#dea584",97.7,{"name":87,"color":88,"percentage":32},"Shell","#89e051",{"name":90,"color":91,"percentage":92},"Nix","#7e7eff",0.3,2059,90,"2026-04-11T05:17:24","MIT","Linux, macOS, Windows","未说明",{"notes":100,"python":101,"dependencies":102},"该工具是基于 Rust 编写的命令行程序，通过 Cargo 或 Homebrew 安装。核心功能（如 diff 查看器）无需配置即可运行；若使用 AI 功能（生成提交信息、解释代码等），需配置 AI 提供商（支持 OpenAI, Claude, Ollama 等）及 API Key。若使用本地模型（Ollama），则依赖本地环境资源，但 README 未指定具体硬件需求。","不需要 (基于 Rust 构建)",[103,104,105],"git","fzf (可选，用于交互式搜索)","mdcat (可选，用于美化输出)",[35,14,52],[108,109,103,110,111,112],"cli","commit","llm","openai","rust","2026-03-27T02:49:30.150509","2026-04-11T22:10:33.857676",[116,121,126,131,136,141],{"id":117,"question_zh":118,"answer_zh":119,"source_url":120},29804,"如何配置 Lumen 以使用本地 Ollama 模型？","Lumen 已支持 Ollama。使用时可以通过 `-p` 参数指定提供商为 ollama，并通过 `-m` 参数指定模型名称。例如，运行命令 `lumen draft -p ollama -m \"llama3.1\"` 即可使用本地运行的 llama3.1 模型生成提交信息。默认情况下，它会连接本地的 `http:\u002F\u002F127.0.0.1:11434\u002F` 接口。","https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fissues\u002F7",{"id":122,"question_zh":123,"answer_zh":124,"source_url":125},29805,"在 Intel Mac 上通过 Homebrew 安装时架构类型错误怎么办？","该问题已在最新版本 `2.5.0` 中修复。如果您在 Intel Mac 上遇到安装的二进制文件是 arm64 架构的问题，请升级 Lumen 到 2.5.0 或更高版本。升级后，Homebrew 将正确拉取 x86_64 架构的版本。","https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fissues\u002F43",{"id":127,"question_zh":128,"answer_zh":129,"source_url":130},29806,"默认主题下文本难以阅读或颜色显示不正常如何解决？","Lumen 的主题选择依赖于系统偏好设置（浅色\u002F深色模式），而非终端本身的颜色方案。如果您的系统是浅色模式但终端是深色背景，可能会导致对比度不足。解决方法是手动配置深色主题：在配置文件或命令行中指定使用 `default-dark` 主题，以确保在深色终端中获得良好的阅读体验。","https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fissues\u002F115",{"id":132,"question_zh":133,"answer_zh":134,"source_url":135},29807,"运行 `lumen draft` 时报错 \"diff (staged) is empty\" 但 `git diff` 有输出是怎么回事？","Lumen 默认仅处理已暂存（staged）的更改。如果报错提示 diff 为空，请检查您是否执行了 `git add` 操作。您可以运行 `git diff --staged` 来确认是否有已暂存的更改。如果 `git diff` 有输出但 `git diff --staged` 为空，说明更改尚未暂存，需要先执行 `git add \u003Cfile>`。","https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fissues\u002F20",{"id":137,"question_zh":138,"answer_zh":139,"source_url":140},29808,"Phind 作为默认 AI 提供商是否存在数据隐私风险？","是的，免费的 Phind 服务会利用用户数据进行模型训练。出于数据安全和隐私考虑，特别是对于企业用户，建议不要依赖默认的 Phind 配置。维护者计划移除或不再默认启用 Phind 支持。推荐用户配置其他提供商（如需要登录验证的 Claude Code 等）以确保代码数据不被用于训练。","https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fissues\u002F72",{"id":142,"question_zh":143,"answer_zh":144,"source_url":145},29809,"为什么生成的提交信息不符合 Conventional Commits 规范？","默认情况下，AI 可能不会严格遵循 Conventional Commits 格式。要生成规范的提交信息（如 `feat:`, `fix:` 等前缀），您需要通过上下文参数引导 AI。可以使用 `-c` 或 `--context` 标志提供意图说明，例如运行 `lumen draft -c \"improve perf\"`，这样 AI 会根据您的意图和代码变更生成更符合规范的提交信息。","https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fissues\u002F35",[147,152,157,162,167,172,177,182,187,192,197,202,207,212,217,222,227,232,237,242],{"id":148,"version":149,"summary_zh":150,"released_at":151},206371,"v2.22.0","## 变更内容\n\n* 显著提升大文件和选区的性能 ([a791d7c](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Fa791d7c534e86199329b340e325074b6bed74a1e))\n* 杂项：版本号升级至 2.22.0 ([6053b4e](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F6053b4ef3bc341332809ebfc712964cdeca902e6))","2026-04-07T10:34:18",{"id":153,"version":154,"summary_zh":155,"released_at":156},206372,"v2.21.0","## 变更内容\n\n* 杂项：将版本号升级至 2.21.0 ([c0797c5](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Fc0797c589484e50636ab7cfb32e7c4bd2cacebd8))\n* 重构（注释）：使用行范围代替内嵌源代码 ([7e27bb6](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F7e27bb6ee580ad7857c21931dbfcc3027c8963f4))\n* 新功能（差异）：添加选择操作提示并更新文档 ([ccfe39d](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Fccfe39dd2f8c46d533ed8fa7c7a3e3bdc8089f2a))\n* 改进选择功能，提升注释精度 ([30dcb3d](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F30dcb3d99a1c569b6af17365d693ecbc0003080d))","2026-03-12T18:19:56",{"id":158,"version":159,"summary_zh":160,"released_at":161},206373,"v2.20.1","## 变更内容\n\n* 繁琐任务：将版本号更新至 2.20.1 ([06d0409](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F06d0409c081c42559e208240a88bf9e2cf0898ba))\n* 修复：未跟踪文件未显示在差异中 ([4f1ea23](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F4f1ea2392e1945dd548978756c5831a11fd0a59d))\n* 更新 README.md ([af5fa88](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Faf5fa88eba126dc4508ddd307fd0a2c78f77c898))","2026-03-11T21:26:24",{"id":163,"version":164,"summary_zh":165,"released_at":166},206374,"v2.20.0","## 变更内容\n\n* 杂项：将版本号升级至 2.20.0 ([eebf291](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Feebf291cfb3e52304016011aa3c4f4ef18f96148))\n* 改进 Lumen Diff 的 Pull Request 加载界面 ([635045d](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F635045d6c23d3feab174d68cb4cda1da28b6a02d))\n* 新特性：添加 Elixir 语法高亮支持 (#128) ([ce40c24](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Fce40c245fe96432ee7cc28c4a16c775b3dce54cd))\n* 新特性：添加 --focus 标志 (#113) ([ed0b2cc](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Fed0b2cc39d646c84055e0167642e56528d809380))\n* 更新 README，增加新章节并调整格式 ([5a9603f](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F5a9603f12851458b907199d86cf06ab934c38720))","2026-01-29T10:46:52",{"id":168,"version":169,"summary_zh":170,"released_at":171},206375,"v2.19.0","## 变更内容\n\n* chore: 版本号升级至 2.19.0 ([fb0e429](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Ffb0e429ff65113ba39d23c6ed8c7ba3592bb7eb6))\n* feat: 在终端主题检测中使用 terminal-light 替代 light-dark (#121) ([96a8937](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F96a89379ed716a477732032f050cf5d39045aed8))\n* feat: 在差异视图中支持水平触控板滚动 (#126) ([bfc63b3](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Fbfc63b3d52f863eb71aaf6f34cc1831fb3d0fd0c))\n* 更新 README.md ([3fd17da](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F3fd17da47ccf263e57eccc5319d949c5adc2b98b))\n* 更新 README.md ([ccfb4b2](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Fccfb4b2dee2db33fb0d137029d7533204a055b45))","2026-01-22T20:10:54",{"id":173,"version":174,"summary_zh":175,"released_at":176},206376,"v2.18.0","## 变更内容\n\n* chore: 版本号升级至 2.18.0 ([13e518e](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F13e518e3ef2b9fc1de78b298554769b5e0489e85))\n* feat(diff): 为目录添加收起\u002F展开功能 (#112) ([294ba19](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F294ba19adf061d20334d1c81e343c597d108cc0e))","2026-01-19T13:25:43",{"id":178,"version":179,"summary_zh":180,"released_at":181},206377,"v2.17.3","## 变更内容\n\n* 杂项：将版本号更新至 2.17.3 ([f1e678a](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Ff1e678ac576495f854a066c7a3f9a207e0bdd223))\n* 改进注释列表：扩大弹出窗口宽度并处理溢出问题 ([3fcbe97](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F3fcbe977c6bdff90d1afac326379ff1cbba1e38e))","2026-01-19T12:38:14",{"id":183,"version":184,"summary_zh":185,"released_at":186},206378,"v2.17.2","## 变更内容\n\n* 杂项：将版本号更新至 2.17.2 ([e93b140](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Fe93b1400ad02630af50d7d8f45130e3d738d4a88))\n* 在注释列表中截断过长的文件名 ([8100ea8](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F8100ea85b8b5d207c7a15571708caa9f02baba5e))","2026-01-19T12:30:22",{"id":188,"version":189,"summary_zh":190,"released_at":191},206379,"v2.17.1","## 变更内容\n\n* 杂项：将版本号更新至 2.17.1 ([72182d3](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F72182d39a35eb97391335dfb8a41cca4ba3c72a2))\n* 更新注释格式 ([411d8c3](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F411d8c367e1785cbe92aa823fcfa480021e50cfc))\n* 更新注释格式 ([6848bac](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F6848bacc1d8cb2b79a80f96253924770caef464e))","2026-01-19T12:09:29",{"id":193,"version":194,"summary_zh":195,"released_at":196},206380,"v2.17.0","## 变更内容\n\n* 杂项：将版本号更新至 2.17.0 ([6393663](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F639366369ac9189b962c54343a6a5a2bc15fff33))\n* 文档（README）：在差异查看器部分添加注释功能 ([6e49da6](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F6e49da65d11a68c7439d0a73bbdd1019eaa2941e))\n* 修复（差异）：改进页脚布局和路径截断 ([244f419](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F244f4197d59a963f87b9e5d6a3aeb358af44b967))\n* 重构（差异）：提取辅助函数并简化差异渲染 ([3d8fecb](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F3d8fecb69b55974e41a5b73da95f5d36792b3ee5))\n* 新特性（UI）：使快捷键模态窗口可滚动 ([137fae7](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F137fae76066ed7c1ac2bbe63cd1e9acb176ce3a1))\n* 功能\u002F注释 (#117) ([faedf6f](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Ffaedf6ffde9b0429ed4154cdd35f04a8eacc9e9e))","2026-01-19T01:27:25",{"id":198,"version":199,"summary_zh":200,"released_at":201},206381,"v2.16.0","## What's Changed\n\n* chore: bump version to 2.16.0 ([bd29015](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Fbd29015ba21f8bc91efdab9c8ebf20f4f7ba3d8b))\n* fix theme bg color and footer color ([4948a2c](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F4948a2cbfff68ffb9ae5222fdc895ec6ba1f560f))\n* fix(ui): ensure explicit background rendering for light and dark themes (#111) ([33bc8d6](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F33bc8d65e100c4a0f39fcb7673e8d91a1f61c1d1))\n* chore: fix nix build (#107) ([a25ad05](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Fa25ad0500528f61c8778845adc3a0d91af915922))\n* feat: add ruby-treesitter for lumen (#104) ([4159705](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F41597057fb0852387d0190273a9c94e82b2fefca))","2026-01-14T19:56:26",{"id":203,"version":204,"summary_zh":205,"released_at":206},206382,"v2.15.0","## What's Changed\n\n* chore: bump version to 2.15.0 ([dd570ed](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Fdd570ede2d65052ebedb265127c01b1423a67827))\n* fix: don't render binary file's content ([42cc36d](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F42cc36d66a6d9239b81f77bf2eab72ae0464e0dc))\n* Feature\u002Fword diff (#103) ([5b4bb24](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F5b4bb24ec3579e226dcf4f15fc64f146e8fc990c))\n* chore: upgrade jj-lib 0.36 -> 0.37 (#102) ([ff95f24](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Fff95f242b40c6743ac10459d8dbed1420940d5d5))","2026-01-10T19:48:39",{"id":208,"version":209,"summary_zh":210,"released_at":211},206383,"v2.14.0","## What's Changed\n\n* chore: bump version to 2.14.0 ([f3ea7ac](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Ff3ea7acd435e551086d7097a52851f411adda805))\n* Merge pull request #100 from aashish2057\u002Faashish2057\u002Fdev-flake ([7c00f12](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F7c00f12f53e80cf614adc30655b469269d608780))\n* Merge pull request #101 from aashish2057\u002Faashish2057\u002Fcsharp ([e759233](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Fe759233596d7a175b434f099773c01459259a788))\n* chore: add nix dev shell ([ac7b106](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Fac7b1065755d87824e3c6dbc13c603c6e76613c8))\n* feat: add c# syntax highlighting ([f5fe993](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Ff5fe993aa02f46504309cdc2ff2fdcb45adf7ec1))\n* Merge pull request #99 from tobeycodes\u002Ffeat\u002Fadd-opencode-zen-provider ([be41ca4](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Fbe41ca448c9aca09142b22df7db7e9491aad9c39))\n* feat(provider): add opencode zen ([cb83ecc](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Fcb83ecc9f7e36720519c70b8600f5bd954275a41))","2026-01-10T03:09:46",{"id":213,"version":214,"summary_zh":215,"released_at":216},206384,"v2.13.0","## What's Changed\n\n* chore: bump version to 2.13.0 ([e760fc2](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Fe760fc2c3f170a06f8de485db56f3a88eff6ee2b))\n* chore: bump version to 2.12.0 ([5a4c6fe](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F5a4c6fe84c27c7c7ab068634a55992cbbaaccc09))\n* Merge pull request #98 from dmmulroy\u002Flibgit2-migration ([bdcfd9c](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Fbdcfd9c493ee287cb3bfe9be0a82c4b13f52ecc5))\n* feat(vcs): migrate GitBackend from CLI to git2 (libgit2) ([6800453](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F6800453116a8ee7b51ab56f46812447becc43c4a))","2026-01-09T15:13:41",{"id":218,"version":219,"summary_zh":220,"released_at":221},206385,"v2.11.1","## What's Changed\n\n* chore: bump version to 2.11.1 ([184ceb3](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F184ceb365e4f3c31d1f06906700f2bdac1ebc98f))\n* Merge pull request #97 from xlab\u002Fmain ([6caf640](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F6caf640505f7e614ea41717df5726d446a6eccd9))\n* fix: glitchy rendering of golang files ([9ba9fa5](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F9ba9fa5e7b9a4b3d496df2e152d4d64df2b46501))","2026-01-08T22:34:26",{"id":223,"version":224,"summary_zh":225,"released_at":226},206386,"v2.11.0","## What's Changed\n\n* chore: bump version to 2.11.0 ([afd7fd1](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Fafd7fd1d404ec7514f5a6ba667c06bdf710c6ee9))\n* modify release script ([6051424](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F6051424dbbef57e4a5d40e47a3228873b3ba8496))\n* Merge pull request #93 from dmmulroy\u002Fstacked-diff ([bafc37f](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Fbafc37fe7f3ddabb0bc383fa99bbdb3fbd962398))\n* Merge pull request #92 from dmmulroy\u002Ffix\u002Fvcs-code-review ([45e3c90](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F45e3c900b268b303fc844a58a0df575b52a165ae))\n* Merge pull request #88 from dmmulroy\u002Fjj-vcs-foundation ([e797cac](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Fe797cac620448dc09e1054e54043df4c629d6d66))\n* feat(vcs): add stacked diff support with VcsBackend abstraction ([c562c0e](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Fc562c0e13a2e6bbf4ab6abaf196692afb31d75e2))\n* fix(vcs): code review fixes - root commit diffs, flag injection protection, code quality ([27b4393](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F27b4393aa4544622d17701fdc2916ee401600350))\n* feat(app): integrate VcsBackend into commands and diff TUI ([1861e3b](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F1861e3bb6b7d5c2d55b061b24b3b86fac7c7ff3d))\n* feat(vcs): add VcsBackend trait and VCS detection module ([ad0a798](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Fad0a798d8d0160dd6b3c30ab8cbf2e2e50f7721b))\n* feat(vcs): implement JjBackend using jj-lib crate ([4e05ca4](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F4e05ca46972c3b847ddfdc21bea6809185c145bb))\n* feat(vcs): implement GitBackend for git CLI integration ([948e4e2](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F948e4e24ccafe65b2401e723fad16839af07215b))","2026-01-08T09:23:55",{"id":228,"version":229,"summary_zh":230,"released_at":231},206387,"v2.10.0","## What's Changed\n\n* chore: bump version to 2.10.0 ([66824d3](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F66824d37879be66a856c352fd49264eee6fad2c6))\n* add support for stacked diffs ([8a71961](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F8a7196133a4ee570da8994bfa35d6529fa11d444))\n* Merge pull request #87 from parkerhendo\u002Ffix\u002Fpreserve-events-during-scroll ([9172468](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F917246816427f5dc142a8143bddf540690260d45))\n* fix: preserve non-scroll events during scroll coalescing ([c9994e3](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Fc9994e3c79a978d9e26060efbbc5b2506ff8bcd9))\n* add cli flag for themes ([93c5905](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F93c5905a45f1407b0ee188e7047285e0ff6190c0))\n* Merge pull request #85 from parkerhendo\u002Fmain ([3410c13](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F3410c134cc91c61a00ef5c5d79f5b58927550f2e))\n* Merge branch 'jnsahaj:main' into main ([483eec9](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F483eec9389bd92c96de078fc296e92cc04b5f67a))\n* docs: add theme configuration to README ([6e65bc6](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F6e65bc6ebe3f4e249bb3d5b5748e8549e74dff2b))\n* feat: add configurable color themes ([2651092](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F2651092af98b2d1c4bbb1fcae4596bd8feca6124))","2026-01-07T19:50:07",{"id":233,"version":234,"summary_zh":235,"released_at":236},206388,"v2.9.1","## What's Changed\n\n* chore: bump version to 2.9.1 ([dbe2315](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Fdbe231572b707aee3fd247432f5d539626bac7b2))\n* fix: fast mouse scrolling in lumen diff ([b803fd7](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Fb803fd7bc413896d2bf620b0f2a213310eb46a5f))","2026-01-06T18:38:05",{"id":238,"version":239,"summary_zh":240,"released_at":241},206389,"v2.9.0","## What's Changed\n\n* chore: bump version to 2.9.0 ([8e63422](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F8e63422fe49d40633217f7ed373d8d30d51cc947))\n* fix: complex comment highlighting ([f8c45c0](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Ff8c45c0aa93ff9719a1e4c3773c48a4c169ba2fd))\n* feat(diff): allow focusing hunks! ([b6db2eb](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002Fb6db2ebd9c81bb84b29cbbea1db3492f1bcb7a20))\n* Replace image in Visual Diff Viewer section ([5739118](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F57391182e84e08236b0c962af75dce8ccd5cbd6f))","2026-01-06T15:35:46",{"id":243,"version":244,"summary_zh":245,"released_at":246},206390,"v2.8.1","## What's Changed\n\n* chore: bump version to 2.8.1 ([4af6bd3](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F4af6bd37dd09e7bb9d396c341934a4ee139d8388))\n* lumen diff border style improvements ([2b7fd31](https:\u002F\u002Fgithub.com\u002Fjnsahaj\u002Flumen\u002Fcommit\u002F2b7fd31d5b757ba4bb8d3eca78020488106f4e68))","2026-01-04T11:42:18"]