モデル / データセット
jnsahaj/lumen avatar
jnsahaj/lumen

lumen: ターミナルで完結する差分レビューとAIコミット生成

Beautiful git diff viewer, generate commits with AI, get summary of changes, all from the CLI

スター 2,865フォーク 149RustMIT
GitHub

ひと目でわかる

これは何?
Rustで書かれたTUIのgit差分ビューア。サイドバイサイド表示、GitHub PRの取得、注釈、AIによるコミットメッセージ生成を1つのバイナリにまとめている。AI機能は任意で、設定しなければ単なる差分ビューアとして動く。
誰に向いている?
ターミナルから離れずに差分を読み、PRのレビュー状態まで同期させたい開発者には向く。逆に、GUIの差分ツールで画像やバイナリの差分を扱いたい場合や、AI機能をチーム全員に配りたい場合は、APIキーの配布とプロバイダ設定が各自に必要になるため、まずその運用を決めてからでないと導入は進まない。
商用利用できる?
できます。MIT は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 61 日前です。
何の言語で書かれている?
主に Rust です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

lumenが埋めるのは「差分を読む場所」の空白

gitの差分を読む作業は、意外と環境が分断されている。エディタで開けば差分は見えるが、コミットをまたいだ比較やPRの確認には向かない。GitHubのWeb画面を開けばPRは読めるが、ローカルの未コミット変更は見えない。lumenはこの両方をターミナル内の1つのTUIに寄せる。READMEが挙げる用途は、未コミットの変更、特定コミット、ブランチ間、GitHubのPRで、いずれも `lumen diff` の引数を変えるだけで切り替わる。対象読者はターミナルを主戦場にしている開発者で、gitとJujutsu (jj) の両方に対応するとREADMEは述べている。単一の静的バイナリとして配布される点も特徴で、crates.ioとHomebrewの両方からインストールできる。

サイドバイサイド表示とtree-sitterの役割分担

lumenの中核は差分の描画である。READMEは「side-by-side diff viewer with tree-sitter syntax highlighting」と説明しており、左右に並べた差分に対してtree-sitterでシンタックスハイライトをかける。ハイライトが差分の行単位ではなく構文単位で効くため、長い関数の一部が変更されたときに、その変更が構文のどこに位置するかを色から判断しやすい。READMEには「multi-thousand-line diffs」でも動作が軽快だと書かれているが、これは文書内の主張であり、筆者が計測した数値ではない。実際の描画速度は端末の種類と差分の内容に依存する。差分の粒度はファイル単位で絞り込める。`lumen diff --file src/main.rs --file src/lib.rs` のように `--file` を並べる形式で、複数ファイルを指定できる。

PRの取得とスタックドレビューという設計

lumenはローカルのgitリポジトリだけでなく、GitHubのPRを直接開ける。`lumen diff --pr 123` のように番号を渡すか、`lumen diff https://github.com/owner/repo/pull/123` のようにURLを渡す。現在のブランチに対応するPRを開く `--detect-pr` もある。PR表示中は `space` キーでファイルを「viewed」としてマークでき、READMEによればこの状態はGitHubと同期する。つまりlumen側でレビュー進捗を付けると、Web側のPR画面にも反映される。もう1つの設計が `--stacked` で、これはコミット範囲を1つずつ表示する。`lumen diff main..feature --stacked` のように使う。ヘッダーに現在のコミット位置、SHA、メッセージが出て、`ctrl+h` と `ctrl+l` で前後のコミットへ移動する。READMEは「Viewed files are tracked per commit」と書いており、コミットごとに既読状態が保存される。

インストールと設定ファイルの優先順位

導入はHomebrewかCargoの2通り。`brew install jnsahaj/lumen/lumen` または `cargo install lumen` で入る。実行に必要な外部コマンドとしてREADMEが挙げているのは `git` で、これは必須。`fzf` は `lumen explain --list` に、`mdcat` は整形出力に必要で、どちらも任意と明記されている。設定は `~/.config/lumen/lumen.config.json` に置く。テーマを例にすると、優先順位はREADMEに「CLI flag > config file > LUMEN_THEME env var > OS auto-detect」と明示されている。つまり `lumen diff --theme dracula` は設定ファイルの値を上書きし、環境変数 `LUMEN_THEME=catppuccin-mocha` は設定ファイルより弱い。用意されているテーマはdark/lightの自動検出のほか、catppuccin-mocha、catppuccin-latte、dracula、nord、one-dark、gruvbox-dark/light、solarized-dark/light、flexoki-dark/lightがある。`--wrap` による折り返しもCLIと設定ファイルの両方から指定できる。

AI機能は「任意」であり、設定しなければ動かない

READMEはAI機能について「optional AI helpers」と位置づけ、差分ビューア本体には不要だと明言している。設定は `lumen configure` を実行して対話式に行い、プロバイダ、APIキー、モデルを決めると `~/.config/lumen/lumen.config.json` に保存される。READMEは10以上のプロバイダに対応すると書いているが、本文中で具体的に列挙されているのはOpenAIと、トピックにあるllm、openaiの語までで、残りの名前はこの資料からは確認できない。コミットメッセージ生成は `lumen draft` で、ステージ済みの変更を元にメッセージを作る。READMEの例では出力が `feat(button.tsx): Update button color to blue` のようになり、`--context "match brand guidelines"` を付けるとブランド指針に沿う表現に寄る例が示されている。変更の説明と自然言語からのgitコマンド生成も同じ仕組みの上に載っている。

注釈の3段階と、レビューを閉じる動線

lumenの注釈は粒度が3つに分かれている。マウスで行を選んで `i` を押せば選択範囲への注釈、`{` と `}` でハンクにフォーカスして `i` ならハンク単位、選択もハンクフォーカスもない状態で `i` を押せばファイル全体への注釈になる。注釈が付いた行には `▍` のガター指標が出る。`I` で全注釈を開き、閲覧、編集、削除、コピー、エクスポートができる。ここはlumenの使い方を左右する部分で、レビュー中に気づいた点をその場に留めておける。ただし注釈がどこに保存されるのか、ファイルとして書き出せるのかは、この資料からは読み取れない。エクスポートがある以上、外部に持ち出す手段は用意されていると推測できるが、形式は不明である。

向かない場面と、選ぶなら何と比べるか

lumenが適さないのは、差分をGUIで見たい場合や、画像、バイナリ、ノートブックの差分を視覚的に確認したい場合である。ターミナルのTUIである以上、描画できるのはテキストとその構文ハイライトに限られる。またAI機能を使うなら、各開発者が自分のAPIキーを `lumen configure` で設定する必要があり、キーをチームで共有する前提の設計には見えない。比較対象として分かりやすいのは `git diff` とページャの組み合わせだ。`git diff | delta` のような構成は、差分をパイプで流して整形するだけで、PRの取得や注釈、既読管理は持たない。lumenは差分の表示だけでなく、PRの取得、注釈、スタックドレビュー、AI生成までを1つのコマンド体系にまとめている点で方向性が異なる。逆に、差分を見るだけで十分でPRやAIを一切使わないなら、既存の `git diff` にページャを足す構成のほうが依存は少ない。

メンテナンス状況とライセンスの確認点

リポジトリはアーカイブされておらず、直近のリリースはv2.32.0で、日付は2026-07-16。その前がv2.31.0で2026-07-15、さらに前がv2.30.0で2026-06-04である。7月中旬に2日連続でリリースが出ており、その後v2.30.0からv2.31.0までは約1か月空いている。この間隔からは、活発な期間と落ち着いた期間が交互に来る運用が読み取れる。バージョン番号は2系で、破壊的変更が入る可能性は残る。ライセンスはMITで、これは寛容な条件の部類に入る。ただしMITが課す条件の具体的な解釈や、同梱される依存クレートのライセンスが自社の方針に合うかは、法務判断の領域であり、ここで断定はしない。導入前に `lumen --version` で手元のバージョンを確認し、リリースノートで設定キーの変更履歴を追うところから始めるのが現実的である。

編集部の結論

ターミナルから離れずに差分を読み、PRのレビュー状態まで同期させたい開発者には向く。逆に、GUIの差分ツールで画像やバイナリの差分を扱いたい場合や、AI機能をチーム全員に配りたい場合は、APIキーの配布とプロバイダ設定が各自に必要になるため、まずその運用を決めてからでないと導入は進まない。最初に確認すべきは、自分の環境で `lumen diff` が起動し、`lumen draft` が意図したプロバイダに接続できるかどうかである。

公式情報源

  1. Issues
  2. jnsahaj/lumen on GitHub
  3. License: MIT
  4. README
  5. Releases
コミュニティノート

コミュニティノート