コンテンツにスキップ

AIエージェント「Closure」

最初は GitHub App だった「Closure」

Section titled “最初は GitHub App だった「Closure」”

当初、PRをレビューする GitHub App「Closure」を開発していました。

PR作成時、もしくは「/closure」とコメントするとレビューしてくれました。

また、「.github/closure-review-rules.md」にレビュー時の観点などを記載すると、その内容に沿ってレビューしてくれました。

ClosureがGitHubのPRに投稿したコードレビュー

仕組みとしては、「Closure」用のサーバーを用意し、Goで実装したサーバーでGitHubからWebhookを受け取り、Closureにレビューを依頼する構成でした。

sequenceDiagram
    participant Dev as 開発者
    participant GH as GitHub
    participant SV as Go Server
    participant CL as Closure

    Dev->>GH: PR作成 / Ready for Review
    GH->>SV: Webhook POST (pull_request)
    SV->>SV: 署名検証
    SV->>GH: JWT認証 → インストールトークン取得
    SV->>GH: PR diff 取得
    SV->>GH: .github/closure-review-rules.md 取得
    SV->>CL: レビュー指示
    CL-->>SV: レビュー結果
    SV->>GH: PRレビュー投稿 (closure-review[bot])

レビュー精度も高く気に入っていましたが、「修正までしてくれたら」と思い、改良し始めました。

当初は、GitHubのPRコメントに「ここを修正して!」と書くと対応してくれる仕組みを考えていました。しかし、実現しようとすると処理が複雑になり、開発の負担が大きくなってきました。

また、「PRを出すまでレビューできない」ことへの不満も大きく、いっそエージェントそのものを作ろうと考え始めました。

当初はデスクトップのチャット形式を考えましたが、OSごとにGUI開発の事情が異なるため、CLIとして開発することにしました。

将来的にWindowsでも使えるよう、Rustで開発を始めました。

こだわったのは、ClaudeやCodexのようなリッチなターミナルUIです。しかし、実際に作ってみると、想像以上に大変でした。

カーソル位置や表示行数の計算を間違え、意図した位置にカーソルが表示されなかったり、スクロールが正しく動かなかったりしました。

MVP版の使い心地はなかなか良く、日々使う中で自分に合わせてカスタマイズを重ね、少しずつ機能を増やしていきました。

これまでボトルネックになっていたレビューや確認の時間を、Closureによって大きく短縮できました。

Closure CLIでAIエージェントとやり取りするチャット画面

当初の目的であったPRレビューもコマンドで対応しています。

Closure CLIにGitHub App時のレビューを実施するコマンド表示画面

現在のClosure CLIでは、AIエージェントとのチャットに加え、PR作成前にコードを確認できるレビュー機能も実装しています。

GitHub Appから始まったレビューの仕組みを手元のCLIに移したことで、実装、レビュー、修正の流れをPR作成前に完結できるようになりました。

今後も実際の開発で使いながら、必要な機能や使い勝手を少しずつ改善していきます。