AI が書いたコードに「なぜそうなったか」の記録はあるか — git-memento と AI コード追跡の新標準
@SatoshiSsSs 氏が X で投稿した、git-memento に関する解説が注目を集めています。
AIが書いたコードに「なぜそうなったか」の記録はあるか? Hacker News(HN)で議論になっている git-memento を読み解く
Hacker News での議論では、AI が生成したコードのセッション履歴をコミットに紐づけるべきか否かが活発に議論されています。AI コーディングの普及とともに、「コードは動くが、なぜその実装になったのか誰も分からない」という問題が深刻化しています。本記事では、この問題の構造と、git-memento をはじめとする解決策の技術的な仕組みを掘り下げます。
問題 — AI が書いたコードの「なぜ」が消えている
Vibe Coding 時代の追跡可能性の危機
2026 年、AI コーディングツール(Claude Code、Cursor、GitHub Copilot など)でコードを書くことが日常になりました。しかし、AI が生成したコードには構造的な問題があります。
従来の開発:
開発者が考える → コードを書く → コミットメッセージに意図を記録
→ 「なぜそうしたか」は開発者の頭の中 + コミット履歴にある
AI 駆動開発:
開発者が指示する → AI が考える → AI がコードを書く → コミット
→ 「なぜそうなったか」は AI セッションの中に閉じている
→ セッションが終わると消える
CodeRabbit の分析(2025 年 12 月)によると、AI と共著されたコードは人間が書いたコードと比較して、ロジックエラーが 75% 多く、セキュリティ脆弱性が 2.74 倍多いとされています。問題が発見されたとき、「なぜこの実装になったのか」を遡れなければ、修正の方針すら立てられません。
3 つの「消える記録」
| 消える記録 | 影響 |
|---|---|
| 意思決定の経緯 | なぜライブラリ A ではなく B を選んだのか分からない |
| 却下された選択肢 | 検討して却下したアプローチを後任が再び検討する無駄 |
| AI の推論プロセス | AI がどのような前提で実装したかが不明、バグの原因特定が困難 |
git-memento — AI セッションを Git に紐づける
インストール
git-memento は Git の拡張ツールです。git notes は Git に標準搭載されていますが、git-memento は別途インストールが必要です。
ワンライナーインストール(推奨):
| |
ソースからビルド(.NET SDK 10 が必要):
| |
ビルド後、生成された実行ファイルを PATH の通ったディレクトリに git-memento として配置します。NativeAOT コンパイルにより、ランタイム依存なしの単一バイナリとして動作します。
初期設定(リポジトリごとに実行):
| |
環境変数でプロバイダを切り替えることもできます。
| |
init コマンドは .git/config に設定を永続化するため、環境変数の設定は初回のみで十分です。
仕組み
git-memento は、AI コーディングセッションの会話ログを Git Notes としてコミットに紐づける Git 拡張ツールです。
開発者が AI と会話しながらコードを書く
↓
git memento commit <session-id> -m "機能追加"
↓
1. AI プロバイダからセッション履歴を取得
2. Markdown に整形
3. git notes としてコミットに添付
↓
通常のコミット履歴はクリーンなまま
AI セッションの全記録が notes に保存される
重要なのは、Git Notes を使っている点です。通常のコミットメッセージやファイルツリーを汚さず、メタデータとして会話ログを保持します。
Git Notes とは
Git Notes は、コミットオブジェクトに対して後から追加できるメタデータです。コミットハッシュを変更せずに情報を添付できるため、履歴の改変なしに補足情報を記録できます。
| |
git-memento は 2 つの notes ref を使い分けます。
| ref | 内容 |
|---|---|
refs/notes/commits | 要約またはセッション全文(通常の git log で表示) |
refs/notes/memento-full-audit | 完全な監査記録(詳細な調査時に参照) |
主要コマンド
| |
CI/CD 統合
git-memento は GitHub Actions との統合も提供しています。
| モード | 用途 |
|---|---|
comment | セッション notes をコミットコメントとして投稿 |
gate | notes のカバレッジを CI チェックとして強制 |
merge-carry | PR のコミットからマージコミットへ notes を転送 |
gate モードは特に注目に値します。「AI が書いたコードには必ずセッション記録を添付せよ」というポリシーを CI で強制できます。
競合ツールと標準化の動き
git-memento だけでなく、AI コードの追跡は 2026 年のホットトピックです。
Git AI
Git AI は、AI が書いた行を行単位で追跡するツールです。
Git AI のアプローチ:
1. 開発中にチェックポイント(ローカルスナップショット)を記録
2. コミット時にチェックポイントを Authorship Log に集約
3. Authorship Log を Git Notes としてコミットに添付
git-memento が「会話ログの保存」に焦点を当てるのに対し、Git AI は「どの行を AI が書いたか」の行レベルの帰属追跡を行います。Cursor、Claude Code、GitHub Copilot、Gemini など主要なコーディングエージェントに対応しています。
特筆すべき機能として、リベース・マージ・スカッシュ・チェリーピックなど Git の履歴操作を透過的に処理し、Authorship Log を自動的に書き換えます。
Agent Trace
Agent Trace は、AI 生成コードを追跡するためのオープンな仕様(フォーマット標準)です。
| |
ツール固有のフォーマットではなく、ベンダー中立の標準仕様を定義することで、異なるツール間での相互運用性を目指しています。
ツール比較
| ツール | アプローチ | 追跡粒度 | 保存先 |
|---|---|---|---|
| git-memento | 会話ログの保存 | セッション単位 | Git Notes |
| Git AI | 行レベルの帰属追跡 | 行単位 | Git Notes (Authorship Log) |
| Agent Trace | 標準フォーマット定義 | ファイル・行単位 | 実装者に委任 |
Hacker News での議論 — 賛否両論
賛成派の論点
将来のメンテナーへの価値: 「会話履歴にアクセスできれば、なぜコードがそのように書かれたかを逆引きできる。これは素晴らしいコンテキストだ」
却下された選択肢の記録: プロジェクトの計画ファイル(project.md、plan.md)をコードと一緒にコミットすることで、「何が作られたか」だけでなく「何が検討され、却下されたか」を将来のモデルが理解できるという意見。
反対派の論点
ノイズの問題: AI セッションの全文には「大量のノイズ、誤った実装、レッドヘリング(誤った手がかり)」が含まれ、有意義な情報が埋もれるという批判。セッションをそのまま保存するのではなく、蒸留されたコミットメッセージやドキュメントに加工すべきだという主張。
実用上の懸念:
- モデルは頻繁に変わり、非決定的(同じ入力でも異なる出力)
- コンテキスト肥大が将来の AI タスクのパフォーマンスを低下させる
- 蓄積された Markdown ファイルによるリポジトリの肥大化
折衷案 — ADR としての蒸留
議論の中で浮上した折衷案が、AI セッションを Architecture Decision Record(ADR) に蒸留するアプローチです。
ADR は、アーキテクチャ上の意思決定を構造化して記録するドキュメントです。以下の要素で構成されます。
| 要素 | 内容 |
|---|---|
| Context | 決定の背景・状況 |
| Decision | 何を決めたか |
| Consequences | 予想される影響 |
| Status | 採用/却下/保留 |
AI セッションの生ログをそのまま保存するのではなく、AI に「このセッションの意思決定を ADR 形式でまとめて」と指示し、構造化された記録だけを残すアプローチです。git-memento の --summary-skill オプションはまさにこの用途に対応しています。
なぜ今この問題が重要か
コンプライアンスとガバナンス
企業の AI 利用が拡大するにつれ、「AI が書いたコードの監査可能性」が法的・規制的な要件になりつつあります。
| 業界 | 要件 |
|---|---|
| 金融 | AI が生成したアルゴリズムの説明可能性 |
| 医療 | ソフトウェア医療機器(SaMD)の開発プロセス追跡 |
| 自動車 | 機能安全規格(ISO 26262)における開発記録 |
| 全業界 | EU AI Act によるリスクレベルに応じた文書化義務 |
git-memento の gate モードのように、CI パイプラインで「AI セッション記録の添付」を強制できる仕組みは、こうしたコンプライアンス要件への対応策になります。
チーム開発での知識共有
AI コーディングは本質的に「個人と AI の対話」です。チームメンバーが同じリポジトリで AI を使って開発する場合、各自の AI セッションは他のメンバーからは見えません。
開発者 A: Claude Code で認証機能を実装
→ セッション: 「JWT vs セッションを検討し、JWT を採用」
→ コミットメッセージ: 「認証機能を追加」
→ セッションを閉じる → 検討過程が消える
開発者 B: 3 ヶ月後に認証機能を改修
→ 「なぜ JWT なんだろう?セッションの方がよくないか?」
→ 同じ検討を最初からやり直す
AI セッションがコミットに紐づいていれば、開発者 B は git notes show で A の検討過程を確認でき、同じ議論の繰り返しを避けられます。
まとめ
- AI コードの「なぜ」が消えている: AI が書いたコードは動くが、なぜその実装になったかの記録がセッション終了とともに失われる
- git-memento は Git Notes で解決する: AI セッションの会話ログを Git Notes としてコミットに紐づけ、履歴を汚さずに記録を保持する
- 行レベルの追跡も進化中: Git AI は Authorship Log で「どの行を AI が書いたか」を行単位で追跡し、リベースやマージにも対応する
- 標準化が始まっている: Agent Trace のようなベンダー中立の仕様が登場し、ツール間の相互運用性が模索されている
- 生ログ vs 蒸留の議論: HN では全セッション保存(ノイズが多い)vs ADR 形式への蒸留(構造化された記録)で議論が分かれている
- コンプライアンス要件の高まり: EU AI Act や業界規制により、AI 生成コードの監査可能性が法的要件になりつつある
- CI での強制が現実解: git-memento の
gateモードのように、AI セッション記録の添付を CI パイプラインで強制する仕組みが実用的
参考
- @SatoshiSsSs 氏のポスト
- GitHub: git-memento - Keep track of your codex sessions per commit
- Hacker News: git-memento Discussion
- Git AI: Track AI Code all the way to production
- GitHub: git-ai - A Git extension for tracking AI-generated code
- Agent Trace: Open specification for tracking AI-generated code
- DEV.to: Should Your AI Coding Session Be Part of the Git Commit?
- NIFTY Engineering: 意思決定を記録するArchitecture Decision Record (ADR)の話
- AWS 規範ガイダンス: ADR プロセス
- InfoQ: AI “Vibe Coding” Threatens Open Source as Maintainers Face Crisis
- BrightCoding: The AI Code Tracking Revolution