どのエンジニアリングチームにも部族的な知識(tribal knowledge)があります。つまり、シニアエンジニアだけが知っている、書かれていないルールです。
"その関数には触るな。"
"このリトライ制限には理由がある。"
"2023年にまったく同じリファクタを試したら、本番が4時間止まった。"
そうした知識が文書化されていないと、ジュニア開発者は、すでに爆発してしまった地雷の真っ直中に突っ込んでしまいます。標準的なリンターでは、過去に起きたようなミスは検知できません。コードレビューは助けになりますが、レビュー担当者がその歴史を覚えている場合に限ります。
私たちは、この問題を解決するためにShadow Architectを作りました。これは、デジタル部族史(Digital Tribal Historian)として振る舞うAIエージェントです。GitHubのワークフロー内に常駐し、PRが危険なコードに触れた瞬間に、チームの実際のインシデント履歴に基づいて警告を発します。
仕組み
開発者がPull Requestを開いた瞬間:
GitHubがShadow ArchitectサーバーにWebhookを送信
サーバーがGitHub REST APIを使ってPRの差分(diff)全体を取得
変更されたファイルパスと関数名が差分から抽出される
これらは、Hindsight(Vectorizeによる永続メモリシステム)にセマンティッククエリとして送られる
Hindsightは、メモリから最も関連性の高いインシデント、アーキテクチャ上の意思決定、ホットフィックスを思い出す
Groq搭載のLLMが、具体的な過去の文脈を引用して自然言語の警告を生成する
その警告は、GitHubのPR Review Commentとして直接投稿される
基本的なRAGラッパーと何が違うのか
多くのAIコードレビューツールは単純な検索(retrieval)です。同様のテキストを見つけてプロンプトに注入するだけ。Shadow Architectは、Hindsightのエージェント的な推論を使ってそれをさらに進めます。
ディスポジション(気質)に基づくレビュー。エージェントには定義されたパーソナリティがあります――認証や決済のようなクリティカルな経路では、懐疑的でかつ逐語的です。見た目が無害に見える変数名のリネームに流されません。
強制可能な指示。例えば「認証メカニズムを決して削除したり弱めたりするな」といった厳格なルールは、LLMが何かを見る前に、Hindsightによって評価される指示として注入されます。これはソフトなプロンプト指示ではなく、強制される制約です。
メモリの引用。すべての警告には、発火した原因となった「正確なインシデントと指示」を結び付けるBased_Onの引用が含まれます。これは説明可能なAIであってブラックボックスではありません。
自然なフォールバック。Hindsight APIが利用できない場合、スコア付きのローカルな関連性アルゴリズムに切り替えます。CI/CDパイプラインがブロックされることはありません。
それを現実のものにする瞬間
デモでは、ジュニア開発者がPRを開き、jwt.sign()呼び出しからexpiresInパラメータを削除します。ログインタイムアウトの不具合を直すための、何の変哲もない変更に見えます。
Shadow Architectは15秒以内に応答します:
リスクレベル:CRITICAL
2024年2月に、このまったく同じ変更によってJWTセッションがRedisキャッシュに2GB/時のペースで蓄積しました。本番は4時間停止しました(Incident #41)。ログインタイムアウトは、期限(expiry)ではなく、壊れたリフレッシュトークンのフローが原因です。有効期限の削除は、はるかに深刻な問題を引き起こします。
より安全な手順:PR #88からリフレッシュトークンのパターンを実装すること。
Shadow Architectがなければ、これはそのままコードレビューを通過していたでしょう。修正案は妥当に見えました。今日のチームの誰も、2024年のその場にいません。
テックスタック
VectorizeによるHindsight Cloudが、すべての永続メモリを扱います――retainを使ってインシデントを保存し、recallを使って意味的に思い出し、reflectを使ってエージェント的な推論を実行します。Groqはopenai/gpt-oss-120bによる高速なLLM推論を提供します。GitHubのWebhookがすべてのPRでエージェントを起動します。Node.jsとExpressがサーバーを処理します。単純なHTMLダッシュボードにより、エージェントの推論がチームに見えるようになります。
自分で試してみる
GitHub: https://github.com/Rishikanth-S007/Hindsight-Prj
READMEにはセットアップの詳細手順があります。合成インシデント12件をあなた自身のHindsightメモリバンクに投入し、20分以内にライブのGitHubリポジトリに対してテストできます。
「同じやり方で本番を再び壊さないでください。」




