AI のレビューは「指摘して終わり」になりやすい
Claude Code や Cursor でコードレビューを頼むと、精度の高い指摘が大量に返ってきます。ところが、それらは多くの場合チャット画面に流れて消えてしまいます。「後で直そう」と思ってもどの指摘が残っているのか把握できず、結果的に何も変わらないまま次のタスクに移る——そういった経験を繰り返していました。
この問題は、AI が見つけたこと(レビュー結果)と人間が決めること(対応方針)を分けて管理する仕組みがないことから来ています。チャット履歴はその場限りで、構造化されていないためです。
そこで ReviewOps という OSS を作りました。AI のレビュー出力を JSON ファイルとして保存し、ダッシュボード上で人間が仕分けて、AI が実行する——という一連の流れを定義した小さなシステムです。
ReviewOps の 3 層構成
ReviewOps は 3 つの層で成り立っています。
| 層 | 役割 |
|---|---|
| Skill | AI エディタ(Claude Code / Cursor)がレビュー JSON を出力するための契約定義 |
| Schema | JSON Schema によるレビュー(immutable)と人間の決定(mutable)の定義 |
| Manager | CLI とローカルサーバー。ダッシュボードを提供し、.ai-review/ を読み書きする |
最も重要な設計判断は、AI が書くファイルと人間が書くファイルを明示的に分けた点です。
.ai-review/<id>.json— AI が出力するレビュー結果。immutable(上書きしない).ai-review/review-state.json— 人間が決めた対応方針。mutable(ダッシュボードが更新する)
この分離があることで、AI は「自分が見つけたこと」を安全に保存でき、人間は「どう対応するか」だけに集中できます。
ダッシュボードの仕組み:5 つのレーン
ダッシュボードはカンバンボード形式で、すべてのレビュー指摘を 5 つの disposition(対応方針) レーンに仕分けます。

| UI 表示 | disposition 値 | 意味 |
|---|---|---|
| New | triage |
新規指摘のデフォルト置き場。人間の判断待ち |
| In Progress | ai-fix |
AI の作業キュー。AI はここだけ処理する |
| In Review | manual |
人間が対応中。AI は触らない |
| Won't Fix | wontfix |
理由付きで却下 |
| Done | done |
解決確認済み |
各カードには severity と category がバッジで表示されます。severity のラベルは must / should / imo / nit / fyi(critical から info の順)と表記されており、コードレビュー文脈に馴染みやすい形になっています。また confidence(high / medium / low)バッジもあり、AI の確信度を一目で確認できます。
In Progress レーンのカードには Fix instruction の入力欄があり、人間がここに修正方針を書いておくと AI がその指示に従って実装します。AI は In Progress レーンのカードしか処理しないため、In Review や Won't Fix に置いたものが誤って上書きされる心配がありません。
ボードのほかに Files(ファイル別グループ)、History(レビュー実行履歴)、Insights(severity / category / ツール別の統計グラフ)の 3 タブがあります。
コントロールループ:人間がトリアージし、AI が実行する
ReviewOps のコアは、このコントロールループです。
- AI エディタがレビューを実行し、
.ai-review/<id>.jsonに結果を書き出す reviewops serveが.ai-review/を監視し、ダッシュボードをhttp://localhost:4517で提供する- 人間がダッシュボードで各指摘をトリアージする。In Progress に動かしたカードには Fix instruction を記入する
- AI が
review-state.jsonを読み込み、ai-fixの指摘だけを処理する - 処理が完了したら再レビューを走らせ、指摘が解消されていれば Done に移動する
このループを回すことで、「AI が見つける → 人間が仕分ける → AI が直す → 確認する」という作業フローが明確になります。
カードに紐づく Investigation thread 機能もあり、詳細パネルから「なぜこれが問題なのか」を AI に質問しながら対応方針を決めていく使い方ができます。
クイックスタート
# インストール
npm install -g reviewops
# プロジェクトを初期化(スキルとスキーマをコピー)
reviewops init
# AI エディタでレビューを実行
# .claude/skills/ai-code-review/ の指示に従い .ai-review/<id>.json が生成される
# ダッシュボードを起動
reviewops serve
# http://localhost:4517 でアクセス
起動後、AI が見つけた指摘が New レーンに並びます。重要度(must / should)を見ながら In Progress か In Review に仕分け、Fix instruction を書いたら AI に渡します。
現在の状況をターミナルで素早く確認したい場合は reviewops status が便利です。disposition と severity 別の集計が表示されます。
今後のロードマップ
Phase 1(現在リリース済み)では CLI とサーバー、カンバンボード、Fix instruction の書き込み、Investigation thread が動作します。
Phase 2 では ai-fix-from-board スキルを追加する予定です。In Progress レーンのカードを自動で処理し、修正後に元のレビュー JSON と fingerprint で照合して「本当に直ったか」を確認するところまでを自動化します。
Phase 3 ではトレーサビリティ(どの指摘がいつ、どう処理されたか)、スコアトレンドの可視化、複数 AI による合意分析を実装する予定です。複数の AI エージェントが同じコードをレビューしたとき、どの指摘が共通しているかを集計することで、優先度の信頼性を上げる狙いがあります。
まとめ
- AI コードレビューの指摘が「見て終わり」になる原因は、レビュー結果の管理と対応方針の決定が混在しているため
- ReviewOps は
.ai-review/<id>.json(AI が書く・immutable)とreview-state.json(人間が書く・mutable)を分離することで、責任範囲を明確にする - ダッシュボードの 5 レーン(New / In Progress / In Review / Won't Fix / Done)で人間がトリアージし、AI は
In Progressレーンのみ処理するという制約でコントロールを保つ - Phase 2 以降で自動修正と再レビュー照合、スコアトレンドまで広げていく予定