<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Maguyvaブログ</title><description>MCPコードインテリジェンス、AIエージェントアーキテクチャ、そして多言語対応コード検索プラットフォーム構築で得た教訓についての技術的な深掘り記事。</description><link>https://maguyva.ai/ja/blog</link><language>ja</language><atom:link href="https://maguyva.ai/ja/rss.xml" rel="self" type="application/rss+xml"/><item><title>ついてくるコンテキスト</title><link>https://maguyva.ai/ja/blog/context-that-travels</link><guid isPermaLink="true">https://maguyva.ai/ja/blog/context-that-travels</guid><description>Cursorのインデクサーは、Cursorの中では優秀です。Maguyvaは、同じエージェントが他のエディタやCLI、CIからも問い合わせられる、ホスト型のMCPマップです。</description><pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Cursorのインデクサーは、Cursorの中では優秀です。タブ補完、インライン編集、チャット、そしてそのウィンドウの中のエージェントは、すでにCursorが開いているワークスペース用に運用しているプロジェクトインデックスの上に乗っています。Cursorがコードを書く唯一の場所で、そのインデックスがすでに正しいファイルを見つけてくれるなら、そこに留まってください。それが正直な「そこに留まる」ケースであり、このページの最初の一文になる資格があります。&lt;/p&gt;
&lt;p&gt;この記事は、よくある一週間のもう半分についての話です。同じリポジトリがClaude Codeでも開かれ、Codex CLIから質問され、二台目のマシンでレビューされ、CIで動くエージェントから問い合わせられます。問題は「どちらのインデクサーが優れているか」ではありません。問題は、あるウィンドウでエージェントが信頼するマップが、次のウィンドウで信頼するマップと同じかどうかです。&lt;/p&gt;
&lt;p&gt;Maguyvaが、そのついてくるマップです。リモートのMCPコードベース・コンテキストレイヤーです。エージェントは他のMCPツールを問い合わせるのと同じ方法でこれを問い合わせます。結果は行番号付きのランク付けされたパスとして返ってきます。Cursorはエディタのままです。動くのはコンテキストのほうです。&lt;/p&gt;
&lt;h2 id=&quot;cursorのインデクサーは何のためにあるのか&quot;&gt;Cursorのインデクサーは何のためにあるのか&lt;/h2&gt;
&lt;p&gt;Cursorの組み込みインデックスは、モデルの生のコンテキストウィンドウに収まるものだけに頼るのではなく、エディタ内のチャット、エージェント、検索が関連コードを取得できるようにするために存在します。それはIDEにとって正しい設計です。このインデックスはCursorにネイティブなものです。MCPサーバーではなく、他のどのクライアントからもアクセスできません。&lt;/p&gt;
&lt;p&gt;その仕組みは、本稿執筆時点のCursorの公開ドキュメントとCursor自身の説明によれば次のとおりです。主要な検索経路は、もはやクラウドのエンベディングインデックスではありません。Cursorのチームはコミュニティフォーラムで、現在のモデルは生きたツリーを自力でも十分に探索できるため、専用のセマンティック/エンベディングベースの検索はgrepベースの検索に取って代わられて縮小されていると述べています。その代わりにあるのがInstant Grepで、n-gram、転置リスト、ブルームフィルタから構築されたローカル検索インデックスであり、メモリマップされたルックアップテーブルに保持されるため、問い合わせはサーバーではなく開発者自身のマシン上で解決されます。&lt;/p&gt;
&lt;p&gt;インデックス自体は、リポジトリ自身の&lt;code&gt;.git/cursor/&lt;/code&gt;ディレクトリの中に、特定のgitコミットに固定されて存在します。そのコミット以降の変更は再スキャンを引き起こすのではなく、その上に層として積み重なり、ローカルの状態が構築時の対象から大きく乖離したときにだけインデックスは再構築されます。&lt;code&gt;.git&lt;/code&gt;の中にあるため、追跡もプッシュも一切されません──フォルダを削除すれば、インデックスは消えます。gitで追跡されているコンテンツだけが対象になるため&lt;code&gt;.gitignore&lt;/code&gt;は構造上尊重され、&lt;code&gt;.cursorignore&lt;/code&gt;は読み取り経路で強制されます。もうこの経路にはサーバー側のエンベディングのステップも、リモートのベクターデータベースもありません。以前のドキュメントは、チャンクの暗号化、Merkleツリーによる同期、チームメイト間でのインデックス再利用といった、クラウド支援型の設計を説明していましたが、Cursor自身のチームはその設計が縮小されつつあると述べているため、本稿はもうそれを現状として説明しません。&lt;/p&gt;
&lt;p&gt;エディタ内で際立った強みは、CursorのExploreサブエージェントです。より高速なモデルを使い、自身のコンテキストウィンドウの中で複数の並列検索を発射し、関連する結果だけを返すことができるため、メインの会話が検索結果で膨れ上がることがありません。これはエディタ内部での本物の強みです。維持してください。&lt;/p&gt;
&lt;p&gt;マルチルートワークスペースもサポートされています。開いている各フォルダのコンテキストがAgentに提供されます。worktreeのような一部のgit依存機能はマルチルート設定では無効になり、Cloud Agentsはマルチルートワークスペースをまったくサポートしません。&lt;/p&gt;
&lt;p&gt;これらのどれも、Cursorを離れる理由にはなりません。それは、自分が生きている場所で優れているマップについての正確な記述です。&lt;/p&gt;
&lt;h2 id=&quot;ついてくるが実際に意味すること&quot;&gt;「ついてくる」が実際に意味すること&lt;/h2&gt;
&lt;p&gt;マップがついてくるのは、同じ質問が複数のクライアントから、開いて確認できる引用付きで、同じ種類の答えを返すときです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cursorで:「&lt;code&gt;parseConfig&lt;/code&gt;はどこで定義されていて、誰が呼び出しているか?」&lt;/li&gt;
&lt;li&gt;Claude Codeで、同じリポジトリに対して:同じ質問。&lt;/li&gt;
&lt;li&gt;Codex CLIで、Cursorのウィンドウを一度も開いたことのないレビュー用マシン上で:同じ質問。&lt;/li&gt;
&lt;li&gt;MCPを話すCIエージェントで:同じホスト型スナップショットに対して、同じ質問。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;各サーフェスが自分専用のプライベートインデックスを構築するなら、あなたが持っているのは一つのマップではありません。互いにずれていく複数のキャッシュです。エディタのインデックスはディスク上のツリーについては最新かもしれません。CLIセッションは一日遅れているかもしれません。CIジョブは別のチェックアウトを見ているかもしれません。それでもエージェントは自信満々に聞こえ続けます。&lt;/p&gt;
&lt;p&gt;Cursorのインデクサーはそれを解決するようにはできていません。エディタの中に生きているため、それが構築するコンテキストはそのエディタのためのものです。CLIやCIパイプライン、別のエディタも必要とする読者は、それらのサーフェス用に別のツールが必要です。それは範囲の事実であり、欠陥ではありません。Maguyvaがその別のツールです。&lt;/p&gt;
&lt;p&gt;Cursorのインデクサーの公開された言語数は、本稿が使える資料には明記されていません。Maguyvaは279以上の言語とテキストベースの技術を公開しています。Cursorの価格もここには転載しません。彼らの価格ページを参照してください。Maguyvaは席数ではなくワークスペース単位で課金し、インデックス済みのフットプリントとワークスペースの規模に応じて$0、$19、$49、$149の公開プランがあります。&lt;/p&gt;
&lt;h2 id=&quot;一つのホスト型マップすべてのmcpクライアント&quot;&gt;一つのホスト型マップ、すべてのMCPクライアント&lt;/h2&gt;
&lt;p&gt;MaguyvaはリモートのMCPサーバーです。GitHubを接続し、リポジトリを選ぶと、クラウドパイプラインがシンボルとグラフのエッジ、そしてランク付けされたマップを構築します。すでに使っているクライアントのMCP設定にAPIキーを追加します。Maguyvaには、Cursorを含む24の文書化されたMCPクライアント向けのセットアップガイドがあり、標準的なMCP設定をサポートする他のMCP互換クライアントにも接続できます。&lt;/p&gt;
&lt;p&gt;Cursorが作業場所であれば、&lt;a href=&quot;https://maguyva.ai/ja/for-cursor&quot;&gt;Cursorセットアップページ&lt;/a&gt;がエディタ固有の経路です。同じサーバーがClaude Code、VS Code、Windsurf、Codex CLIなどにも応答します。エディタを乗り換える必要はありません。すべてのエージェントに、検索、シンボル、依存関係分析、ファイル取得、リポジトリコンテキスト、決定論的なユーティリティワークフローにまたがる11の顧客向けMCPツールという、同じツールサーフェスを提供します。セマンティック、構造、グラフ、テキストの検索がランク付けされた結果に融合されます。&lt;/p&gt;
&lt;p&gt;それがポータビリティの利点です。今朝Cursorで確認した引用は、今晩Codex CLIが返す引用と同じ形をしています。ファイルパスと行番号。開いてみてください。間違っていれば、それが見えます。正しければ、次の編集には着地する場所ができます。承認された主張は、幻覚編集が減ることであり、すべての編集が正しいという約束ではありません。&lt;/p&gt;
&lt;p&gt;鮮度は公開されています。スナップショットにはタイムスタンプが付いているため、エージェントはどのバージョンのツリーを読んでいるかを知ることができます。再構築の頻度は、無料プランでは毎日、有料プランでは毎時です。正直な限界は、同期されていないローカルの作業です。作業ツリーにしか存在しない編集は、まだホスト型マップに入っていません。この限界はどのクライアントから問い合わせても同じであり、それこそがポイントです。クライアント間のずれは、もはや二つ目の隠れた限界ではありません。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://maguyva.ai/ja/docs&quot;&gt;ドキュメント&lt;/a&gt;は、どのクライアントにも当てはまる有効化ループを示しています。すでに知っているリポジトリをインデックスし、クライアントを接続し、確認できる質問を一つ尋ねる。Cursorで一度それをやってください。実際にレビューの日に使うCLIからもう一度やってください。両方の答えが同じハンドラーを引用していれば、マップはついてきたことになります。&lt;/p&gt;
&lt;h2 id=&quot;二つのマップが並び立つ方法&quot;&gt;二つのマップが並び立つ方法&lt;/h2&gt;
&lt;p&gt;両方を使ってください。比較ページ的な意味での代替関係ではありません。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ディスク上のプロジェクトのために、Cursorのインデクサーを有効にしたままにしてください。Explore、Instant Grep、そしてエディタ内のエージェントにそれを使わせてください。このループはネイティブで高速です。&lt;/li&gt;
&lt;li&gt;Cursorに、MaguyvaをMCPサーバーとして追加し、同じセッションからホスト型のワークスペースマップにも問い合わせられるようにしてください。CursorはMaguyvaの文書化されたクライアントです。片方のインデックスを選んでもう片方を消す、という話ではありません。&lt;/li&gt;
&lt;li&gt;リポジトリに触れるClaude Code、Codex CLI、その他どのMCPクライアントにも、同じMaguyvaサーバーを追加してください。一つのAPIキーの形。一つのワークスペース。&lt;/li&gt;
&lt;li&gt;CIエージェントがMCP互換であれば、同じサーバーを指させてください。ノートパソコンが読んだのと同じタイムスタンプ付きスナップショットを読むことになります。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;エディタのインデックスは、「今このウィンドウのディスク上に何があるか」に対する最良のツールであり続けます。ホスト型マップは、「今日それに触れるすべてのエージェントにとって、このワークスペースがどう見えるか」に対する最良のツールです。この二つの文は競合しません。&lt;/p&gt;
&lt;p&gt;ワークスペースのクォータは&lt;a href=&quot;https://maguyva.ai/ja/pricing&quot;&gt;価格ページ&lt;/a&gt;で公開されています。リポジトリ数、インデックス済み行数、ユーザー数を、ワークスペース単位で課金します。エージェントと人間は同じユーザー数を共有します。すでに評価できるリポジトリで無料で始めてください。引用がツリーとの接触を生き延びてから、ワークスペースを引き上げてください。&lt;/p&gt;
&lt;h2 id=&quot;このページが主張しないこと&quot;&gt;このページが主張しないこと&lt;/h2&gt;
&lt;p&gt;Cursorのインデクサーが弱い、不完全だ、あるいはエディタを乗り換える理由だ、とは主張しません。本稿の最初の一文はその逆です。&lt;/p&gt;
&lt;p&gt;MaguyvaがInstant GrepやExploreサブエージェントを置き換える、とは主張しません。それらはCursorの機能です。Cursorの中に留まります。&lt;/p&gt;
&lt;p&gt;どちらの製品についても、言語数、レイテンシの数値、トークン節約量を捏造しません。分からない数値は公開されないままにします。&lt;/p&gt;
&lt;p&gt;プッシュされていないローカルの作業がホスト型マップに入っているふりはしません。タイムスタンプ付きスナップショットがその限界を可視化します。それを取り除くわけではありません。&lt;/p&gt;
&lt;p&gt;テストはありふれています。すでに知っているリポジトリをインデックスしてください。確認できる質問を、まずCursorで、次に二つ目のMCPクライアントで尋ねてください。ついてくるコンテキストとは、両方の場所で同じ引用が得られることです。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;// same map, wherever you opened it.&lt;/code&gt;&lt;/p&gt;
</content:encoded><category>Ecosystem</category><category>MCP</category><category>Portability</category></item><item><title>マップが先、レビューは後</title><link>https://maguyva.ai/ja/blog/map-first-review-second</link><guid isPermaLink="true">https://maguyva.ai/ja/blog/map-first-review-second</guid><description>コーディングエージェントが書く前に、リポジトリのマップに根拠を持たせてください。その後でGreptileにプルリクエストをレビューさせてください。互いを置き換えるのではなく、補い合うペアです。</description><pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;プルリクエストの両側には、二つの異なる仕事があります。エージェントが書く前には、これから変更しようとしているツリーのマップが必要です。エージェントがPRを開いた後は、何かがその変更をシステムの残りの部分と照らし合わせて読み、人間が行動に移せるコメントを残す必要があります。&lt;/p&gt;
&lt;p&gt;これらの仕事は、どちらも「コードベースを理解すること」を含むため、遠くから見ると似ています。同じ製品ではありません。一方は「この変更はどこに着地すべきか」に答えます。もう一方は「行単位のリンターが見逃す、このdiffが何を壊したか」に答えます。この二つを混同すると、より悪い最初の草稿と、より騒がしいレビューが生まれます。&lt;/p&gt;
&lt;p&gt;この記事は、共同ワークフローのガイドです。Maguyvaは、エージェントが最初に問い合わせるマップです。Greptileは、その後でPRにコメントするレビューエージェントです。このペアは構造的に補完的です。Maguyvaはプルリクエストをレビューしませんし、Greptileはエージェントがそれらを書くのに使ったコンテキストレイヤーを置き換えません。&lt;/p&gt;
&lt;h2 id=&quot;この分業が役立つ理由&quot;&gt;この分業が役立つ理由&lt;/h2&gt;
&lt;p&gt;訓練事前知識といくつかの貼り付けられたファイルから出発するコーディングエージェントは、もっともらしいパスを捏造して編集します。それが間違ったファイルの失敗であり、検索の問題です。Maguyvaはリモートのmcpコードベース・コンテキストレイヤーです。セマンティック、構造(AST)、グラフ/依存関係、テキストの検索がランク付けされた結果に融合され、加えてシンボル検索とファイル取得もあります。根拠のある答えは&lt;code&gt;path/file.ext:line&lt;/code&gt;として返ってくるため、パッチが存在する前に見当違いを拒否できます。主張は控えめなままです。幻覚編集が減ること。モデルはそれでも推測できます。ただ最初のステップが、もう推測ではなくなるだけです。&lt;/p&gt;
&lt;p&gt;GreptileはAIコードレビューエージェントです。彼ら自身の言葉によれば、コードベースの完全な理解をもって、すべてのプルリクエストを自動的にレビューし、それをシステム全体ではなくファイルを個別に確認する従来のリンターと対比させています。セットアップは、GitHubまたはGitLabアプリをインストールし、リポジトリを選択することです。あなたが運用すべきローカルインデックスはありません。ホスティングはGreptile Cloudで(要求に応じて提供されるレポートとともにSOC 2 Type II準拠を表明しています)、企業向けにセルフホストのオプションも提供しています。&lt;/p&gt;
&lt;p&gt;彼ら自身の番号付きフローはこうです。接続し、すべての関数、クラス、依存関係の依存関係グラフを構築する。すべてのプルリクエストで、そのリポジトリ全体のグラフを使って変更を分析し、約三分で修正案付きのPRコメントとして結果を投稿する。各コメントは、チームがすでに使っているコーディングエージェントに問題を引き渡せる。彼らはまた、チームのコーディング標準を学び、騒がしい提案を減らすために、過去の人間によるPRコメントを時間をかけて読むとも述べています。彼らの学習システムは、適応するのに2〜3週間必要だと述べられています。&lt;/p&gt;
&lt;p&gt;これはレビューであって、起草ではありません。Greptileの際立った点は、すでにPRに着地した変更に対する、リポジトリ全体のグラフコンテキストであり、その後、発見をClaude Code、Codex、Conductor、Cursor、あるいはDevinに送る閉じたループです。Maguyvaの際立った点は、その変更が書かれる前にエージェントが問い合わせた、ランク付けされたマップです。両方使ってください。どちらにも相手の仕事をさせないでください。&lt;/p&gt;
&lt;p&gt;Maguyva–Greptile間のファーストパーティ製品統合は明言されていません。それも必要ありません。MaguyvaはMCPを通じてエージェントと話します。Greptileは自分たちのアプリを通じてGitHubやGitLabと話します。両者はプルリクエストで出会います。糊付けスクリプトも、一方を他方につなぐcronもありません。それぞれの製品がすでに自分の持ち場に立っているため、このペアはbash不要です。&lt;/p&gt;
&lt;h2 id=&quot;これが何ではないか&quot;&gt;これが何ではないか&lt;/h2&gt;
&lt;p&gt;これはGreptileを貶める記事ではありません。「レビュアーを乗り換えろ」という記事でもありません。Greptileは2024年3月5日、Y Combinator W24の企業としてHacker Newsでローンチし、そのスレッドは多くの人がこの製品に初めて出会った方法です。もしそれがあなたの出会い方なら、そのまま使い続けてください。このページは、そのループの欠けている前半部分です。Greptileが見るPRが、すでに正しいファイルを狙っているように、先にエージェントに根拠を持たせることです。&lt;/p&gt;
&lt;p&gt;Greptileのマーケティング資料は、レビュー速度とバグ検出の主張を前面に出しています。それらを、独立して検証された数値ではなく、Greptile自身の主張として扱ってください。本稿はそれらを事実として繰り返しません。&lt;/p&gt;
&lt;p&gt;言語カバレッジも同じ種類の誠実さです。Greptileは、列挙されたリストではなく、すべてのプログラミング言語をカバーするという枠組みでサポートを表現しており、正確な数は明記されていません。Maguyvaは279以上の言語とテキストベースの技術を公開しており、質問が技術的なものであるときは、サイト上で技術的な区分(パーサー支援のASTかテキストのみか)も公開しています。これらは異なる主張をする異なる製品です。混同しないでください。&lt;/p&gt;
&lt;p&gt;Greptileの価格は、本稿が使える資料には明記されていません。有料プランは存在します。彼らの価格ページを参照してください。Maguyvaは席数ではなくワークスペース単位で課金します。プランは無料から始まります。ワークスペースの数値が必要なら、&lt;a href=&quot;https://maguyva.ai/ja/pricing&quot;&gt;価格ページ&lt;/a&gt;に公開された階層が載っています。&lt;/p&gt;
&lt;h2 id=&quot;ワークフロー&quot;&gt;ワークフロー&lt;/h2&gt;
&lt;p&gt;名前の付いた三つの段階です。この順序で実行してください。このペアを初めて試すときは、どれも飛ばさないでください。&lt;/p&gt;
&lt;h3 id=&quot;1-maguyvaのコンテキスト&quot;&gt;1. Maguyvaのコンテキスト&lt;/h3&gt;
&lt;p&gt;すでに知っているリポジトリを一つインデックスしてください。すでにコードを書いているMCPクライアントを接続してください──Claude Code、Cursor、Codex CLI、VS Code、Windsurf、あるいは他のMCP互換クライアント。Maguyvaには24の文書化されたMCPクライアント向けのセットアップガイドがあり、標準MCP設定をサポートする他のクライアントにも接続できます。&lt;/p&gt;
&lt;p&gt;誰かが一行でも書く前に、評価できる質問をしてください。「セッションの有効期限はどこで処理されていて、何がそれを呼び出しているか?」は「認証を直して」よりも良い最初の一手です。引用を要求してください。&lt;code&gt;file.ext:line&lt;/code&gt;の結果を開いてください。シンボルをたどってください。今から触れようとしている依存関係を確認してください。&lt;/p&gt;
&lt;p&gt;Maguyvaは、検索、シンボル、依存関係分析、ファイル取得、リポジトリコンテキスト、決定論的なユーティリティワークフローにまたがる11の顧客向けMCPツールを提供します。四つの検索モードがランク付けされた結果に融合されます。すでに名前を知っている場合、&lt;code&gt;find_symbol&lt;/code&gt;は別のツールです。&lt;a href=&quot;https://maguyva.ai/ja/docs&quot;&gt;ドキュメント&lt;/a&gt;は最短経路を説明しています。無料で始め、すでに知っているリポジトリをインデックスし、クライアントを接続し、それから確認できる質問を尋ねる。&lt;/p&gt;
&lt;p&gt;スナップショットにはタイムスタンプが付いているため、エージェントはどのバージョンのツリーを読んでいるかを判別できます。正直な限界は、同期されていないローカルの作業です。編集が作業ツリーにしか存在せず、プッシュされていない場合、ホスト型マップはまだそれを含んでいません。指示ファイル(&lt;code&gt;CLAUDE.md&lt;/code&gt;、&lt;code&gt;AGENTS.md&lt;/code&gt;)は、慣習と触れてはいけないもののために、依然としてここに居場所があります。それらは生きたマップではありません。振る舞いにはそれらを使い、事実にはMaguyvaを使ってください。&lt;/p&gt;
&lt;p&gt;引用がリポジトリとの接触を生き延びる前に、エージェントにPRを開かせないでください。この関門こそが、この段階の意義のすべてです。&lt;/p&gt;
&lt;h3 id=&quot;2-エージェントのpr&quot;&gt;2. エージェントのPR&lt;/h3&gt;
&lt;p&gt;同じエージェントが今度は、あなたがすでに料金を払っているクライアントの中で変更を書きます。Maguyvaはエディタでもレビュアーでもありません。エージェントは依然としてdiffを生成します。あなたは依然として、すでにやっているようにGitHubやGitLabでプルリクエストを開きます。&lt;/p&gt;
&lt;p&gt;違うべきなのは最初のファイルです。PRは、その振る舞いを実際に実装しているハンドラー、壊れることになる呼び出し元、そして変更が間違っていれば失敗するテストを名指しすべきです。第1段階が飛ばされていれば、第3段階は間違ったパッケージに着地した変更に、そのコメントを費やすことになります。Greptileはそれでも体系的な問題を見つけられます。それに加えて、幻覚のパスからも回復しなければならない必要はないはずです。&lt;/p&gt;
&lt;p&gt;PRの範囲を絞ってください。根拠のある最初のファイルは、モジュールを書き直すライセンスではありません。この補完的なペアが機能するのは、エージェントがマップを使って一つの仕事をし、その後レビュアーに、範囲を限定したdiffで別の仕事をするよう頼んだときです。&lt;/p&gt;
&lt;h3 id=&quot;3-greptileのレビュー&quot;&gt;3. Greptileのレビュー&lt;/h3&gt;
&lt;p&gt;GreptileはすでにGitHubまたはGitLabアプリを通じてリポジトリに接続されています。新しいプルリクエストでは、自ら構築したリポジトリ全体のグラフを使って変更を分析し、修正案付きのコメントとして結果を投稿します。彼ら自身の資料は、この処理を約三分としています。&lt;/p&gt;
&lt;p&gt;コメントは、注意深いチームメイトを読むように読んでください。引用された場所を開き、その発見が本物かどうかを判断し、それから行動する。Greptileが「Fix with your Agent」を提供する場所では、ファイルパス、行番号、提案されたコードを含む問題を、Claude Code、Codex、Conductor、Cursor、あるいはDevinに送ります。「Fix All」はレビュー内のすべての問題を一度に送ります。彼らはまた、その引き渡しのためにGreptile MCPとClaude Codeプラグインも提供しています。Maguyvaはその名指しされた対象リストには入っていません。その不在は問題ではありません。Maguyvaはすでに第1段階で自分の仕事を終えています。PRを書いたコーディングエージェントこそが、修正ペイロードを受け取るべき対象です。&lt;/p&gt;
&lt;p&gt;Greptileの学習システムがあなたのチームが実際に残すコメントに適応する最初の2〜3週間は、ノイズを覚悟してください。それは彼らが表明したスケジュールであって、このペアの欠陥ではありません。人間によるレビューはループの中に残ります。Greptileは自動化された最初のパスであり、マージボタンではありません。&lt;/p&gt;
&lt;p&gt;Greptileのコメントが、エージェントが第1段階で一度も問い合わせなかったファイルを指している場合、それは有用なシグナルです。マップが呼び出し元を見逃したか、エージェントが引用を飛ばしたかのどちらかです。そのコメントに合わせて草稿を直してください。レビュアーを無効化しないでください。&lt;/p&gt;
&lt;h2 id=&quot;この補完関係を誠実に保つ方法&quot;&gt;この補完関係を誠実に保つ方法&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Maguyvaが常に先。間違ったファイルのPRをレビューしても、それは依然として間違ったファイルのレビューです。&lt;/li&gt;
&lt;li&gt;Greptileが常に後。よく引用された草稿でも、システム全体レベルでのdiffの通読は依然として必要です。&lt;/li&gt;
&lt;li&gt;MaguyvaにPRコメントを投稿するよう求めないでください。それはしません。&lt;/li&gt;
&lt;li&gt;エージェントがまだパスを選んでいる最中に、Greptileにその最初の検索レイヤーになるよう求めないでください。それは、彼らのGitHubやGitLabアプリが担うよう作られている仕事ではありません。&lt;/li&gt;
&lt;li&gt;両者を「同期」するbashパイプラインを捏造しないでください。PRがインターフェースです。&lt;/li&gt;
&lt;li&gt;両側を独立して検証してください。すでに知っているリポジトリをインデックスしてください。確認できる質問を尋ねてください。それから小さなPRを開き、Greptileが実際に何をコメントするかを読んでください。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;名前を付けてしまえば、このループはありふれたものです。マップが先。エージェントのPR。レビューが後。それぞれの製品は、自分が得意なプルリクエストの側に留まります。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;// map first. review second. in that order.&lt;/code&gt;&lt;/p&gt;
</content:encoded><category>Ecosystem</category><category>Workflow</category><category>Code Review</category></item><item><title>ローカルインデクサーなしで、大規模リポジトリのコンテキストをAIエージェントに与える</title><link>https://maguyva.ai/ja/blog/large-repo-context-without-a-local-indexer</link><guid isPermaLink="true">https://maguyva.ai/ja/blog/large-repo-context-without-a-local-indexer</guid><description>ノートパソコンでローカルインデクサーを動かさずに、クラウドから大規模リポジトリの問い合わせ可能なマップをコーディングエージェントに与える方法。</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;大規模なリポジトリはコンテキストウィンドウに収まりません。そして、本物のmonorepoにノートパソコンのインデクサーを向けたことがあるなら、そこにも心地よくは収まらないことを知っているはずです──メモリが跳ね上がり、最初のインデックス作成に一時間かかり、それでもあなたのエージェントは次のセッションの開始時に、どのファイルが重要かをまだ推測しています。&lt;/p&gt;
&lt;p&gt;よくある答えは、エディタの隣でインデクサーを動かすことで、一台のマシンに心地よく収まるリポジトリであれば、それは良い答えです。あなたのmonorepoがすでにCursorで高速にインデックスされていて、マップが必要な場所がそこだけなら、この記事に付け加えることは何もありません──読み飛ばしてください。&lt;/p&gt;
&lt;p&gt;この記事は別のケース、つまりエージェントが大規模リポジトリの問い合わせ可能なマップを必要としていて、それを手に入れるためにローカルインデクサーを動かしたくないときの話です。&lt;/p&gt;
&lt;h2 id=&quot;ローカルインデクサーが間違ったツールになるとき&quot;&gt;ローカルインデクサーが間違ったツールになるとき&lt;/h2&gt;
&lt;p&gt;ローカルインデックスは、コードがそれを問い合わせるマシンの上に存在することを前提としており、本物のmonorepoの規模では、この前提は単一のエディタの中でさえ限界に近づきます。リポジトリは、ノートパソコンでずっと温めておきたい大きさを単純に超えています。あるパッケージで作業している間、影響範囲は三つ先のディレクトリにあり、200万行のツリーの最初のコールドインデックス作成は、二度経験したいことではありません──あなたのマシンでも、そのツリーを一度もクローンしたことのないCIランナーでも。あるいは、チームメイトが自分のマシンで同じインデックスを苦労して通過するのを待たずに、あなたと同じマップを問い合わせられるべきかもしれません。&lt;/p&gt;
&lt;p&gt;これらのどれも、良いエディタのインデクサーを捨てる理由にはなりません。それは、どのエージェントもMCPで問い合わせられるホスト型マップも持つべき理由です。&lt;/p&gt;
&lt;p&gt;そして規模の問題は、「貼り付けるにはファイルが多すぎる」よりも根深いものです。大きなツリーでは、興味深い質問はほとんど「このファイルを見せて」ではありません──どのファイルか、どのシンボルか、どの呼び出し元か、どのテストかです。&lt;code&gt;src/&lt;/code&gt;を一覧表示して最初の三件の結果を読むことから始めるエージェントは、&lt;code&gt;apps/api&lt;/code&gt;にあるハンドラーと&lt;code&gt;packages/sdk&lt;/code&gt;にある生成されたクライアントを、平然と見逃すでしょう。必要なのは、ツリー全体から構築され、ランク付けされ、引用された検索です。&lt;/p&gt;
&lt;h2 id=&quot;大規模リポジトリのコンテキストが実際に意味すること&quot;&gt;「大規模リポジトリのコンテキスト」が実際に意味すること&lt;/h2&gt;
&lt;p&gt;ファイルをプロンプトに流し込むことはコンテキストではありません──それはツリーのより小さく、より劣ったコピーにすぎません。あなたのエージェントが実際に必要としているのは、質問をして引用付きの答えを受け取ることです。このシンボルはどこで定義されていて誰が呼び出しているか、今変更しようとしているモジュールに何が依存しているか、どのテストファイルがこの振る舞いをカバーしているか、そしてツリーが前四半期ではなく&lt;em&gt;今&lt;/em&gt;どう見えるか。&lt;/p&gt;
&lt;p&gt;これらの答えは、他人のリポジトリについてのモデルの記憶ではなく、あなたのリポジトリから構築されたインデックスから来る必要があり、そのインデックスはエージェントのコンテキストウィンドウ以外のどこかに存在する必要があります。この問題については、あなたのノートパソコン以外のどこかにも存在すべきです。&lt;/p&gt;
&lt;p&gt;指示ファイルがあなたのためにできないことがもう一つあります。&lt;code&gt;CLAUDE.md&lt;/code&gt;と&lt;code&gt;AGENTS.md&lt;/code&gt;は慣習と振る舞いのための正しい場所ですが、200万行のツリーの、生きていて、ランク付けされた、問い合わせ可能なマップではありません。振る舞いにはルールを、事実にはリポジトリインテリジェンスを使ってください。&lt;/p&gt;
&lt;h2 id=&quot;クラウドでマップを構築しどのクライアントからも問い合わせる&quot;&gt;クラウドでマップを構築し、どのクライアントからも問い合わせる&lt;/h2&gt;
&lt;p&gt;MaguyvaはリモートのMCPコードベース・コンテキストレイヤーです。GitHubを接続し、リポジトリを選べば、あとはクラウドパイプラインがツリーを解析し、シンボルとグラフのエッジを構築し、ランク付けされたマップを維持している間、その場を離れられます──ローカルインデクサーは決して不要です。&lt;/p&gt;
&lt;p&gt;コードをプッシュすると、変更されたファイルは段階的に解析され、グラフとランキングのレイヤーはスケジュールに従って再構築されます。無料プランでは毎日、有料プランでは毎時です。すべてのスナップショットにはタイムスタンプが付いているため、あなたのエージェントはどのバージョンのツリーを読んでいるかを判別できます。ここでの正直な限界は、同期されていないローカルの作業です。あなたの作業ツリーにしか存在せず、一度もプッシュされていない編集は、まだホスト型マップに入っていません。&lt;/p&gt;
&lt;p&gt;次に、すでに使っているクライアントのMCP設定にAPIキーを追加して接続します。24の文書化されたMCPクライアント向けのセットアップガイドがあり、標準設定をサポートする他のMCP互換クライアントも接続できます。Cursorが本拠地であれば、&lt;a href=&quot;https://maguyva.ai/ja/for-cursor&quot;&gt;Cursorページ&lt;/a&gt;がその経路をたどります。同じサーバーがClaude Code、VS Code、Windsurf、Codex CLIなどにも応答します。&lt;/p&gt;
&lt;p&gt;エディタを乗り換える必要はありません。検索、シンボル、依存関係分析、ファイル取得、リポジトリコンテキストにまたがる11のMCPツールというツールサーフェスを、あなたのエージェントに与えます。279以上の言語とテキストベースの技術をカバーしており、何年も前から単一言語ではなくなったmonorepoでは、これは思う以上に重要です。&lt;/p&gt;
&lt;p&gt;答えは行番号付きのファイルパスとして、根拠のある形で返ってきます。セマンティック、構造、グラフ、テキストの検索がランク付けされた結果に融合されるため、「parseConfigに何が依存しているか」のような質問に対して、grepのダンプでも単一のセマンティックな断片でもなく、実際に重要な数か所が返ってきます。&lt;/p&gt;
&lt;h2 id=&quot;具体的なやり方&quot;&gt;具体的なやり方&lt;/h2&gt;
&lt;p&gt;会社全体をインデックスすることから始めないでください。実際に機能する経路はこうです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;すでによく知っているリポジトリを一つ選んでください。手で評価できるパッケージのほうが、手元にある最大のツリーよりも価値があります。&lt;/li&gt;
&lt;li&gt;無料で始めてください。リポジトリ3件、インデックス済み5万行、11ツールすべて、月間クエリ上限なし。代表的なリポジトリがそれより大きい場合、&lt;a href=&quot;https://maguyva.ai/ja/pricing&quot;&gt;価格ページ&lt;/a&gt;に、席数ではなくインデックス済みフットプリントによるワークスペース階層($0、$19、$49、$149)が掲載されています。&lt;/li&gt;
&lt;li&gt;GitHubを接続し、最初のインデックス作成が終わるのを待ってください。ローカルでは何もコンパイルしていません。&lt;/li&gt;
&lt;li&gt;MCPクライアントを接続してください──設定は数行です。Maguyvaはリモートのmcpサーバーなので、プラグインも拡張機能も、採用すべき二つ目のエディタもありません。&lt;/li&gt;
&lt;li&gt;確認できる質問を一つしてください。「parseConfigに何が依存しているか?」あるいは「ログインセッションの有効期限はどこで処理されているか?」引用された&lt;code&gt;file.ext:line&lt;/code&gt;の結果を開き、目の前のツリーと照らし合わせてください。&lt;/li&gt;
&lt;li&gt;引用がその照合を生き延びてから、初めてエージェントに編集させてください。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;最初のリポジトリがうまく合っていて、あなたのツリーが大きいなら、インデックス済み行数と再構築の頻度に合わせてワークスペースを引き上げてください。人間とエージェントは同じユーザー数を共有します──Maguyvaは席数ではなくワークスペース単位で課金するため──ループに三体目のエージェントを加えても、あなたに追加コストはかかりません。&lt;/p&gt;
&lt;p&gt;有効化テストは、&lt;a href=&quot;https://maguyva.ai/ja/docs&quot;&gt;ドキュメント&lt;/a&gt;がどの初回実行にも推奨するものと同じです。すでに知っているリポジトリをインデックスし、確認できる質問を尋ねる。大規模なリポジトリだからといってテストが変わるわけではありません。最初に選び間違えたファイルの代償が大きくなるだけです。&lt;/p&gt;
&lt;h2 id=&quot;接続した後に注意すべきこと&quot;&gt;接続した後に注意すべきこと&lt;/h2&gt;
&lt;p&gt;三つのことに注意してください。鮮度:有料プランは毎時、無料プランは毎日再構築され、プッシュされていないローカルの作業はマップに入りません──それがあなたが受け入れるトレードオフです。範囲:アーカイブされたフォークすべてではなく、代表的なリポジトリの集合をインデックスしてください。無料枠は、その答えが保持する価値があるかどうかを見極めるために、意図的にそのくらいの規模に設定されています。そして検証:パスと行番号を引用できない大規模リポジトリのマップは、より遅い推測エンジンにすぎません。だから、パッチを出す前にエージェントに場所を示させてください。&lt;/p&gt;
&lt;p&gt;それから、小規模なリポジトリで行うのと同じテストを実行してください。すでに知っているリポジトリをインデックスしてください。確認できる質問を尋ねてください。マップが本物なら、あなたのエージェントは冷えたツリーから出発するのをやめます。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;// no laptop got hot building this map.&lt;/code&gt;&lt;/p&gt;
</content:encoded><category>AI Agents</category><category>MCP</category><category>Indexing</category><category>Monorepos</category></item><item><title>AIコーディングエージェントがファイルパスを幻覚する理由</title><link>https://maguyva.ai/ja/blog/why-ai-coding-agents-hallucinate-file-paths</link><guid isPermaLink="true">https://maguyva.ai/ja/blog/why-ai-coding-agents-hallucinate-file-paths</guid><description>AIコーディングエージェントは、リポジトリの本物のマップを持っていないとき、ファイルパスを捏造します。なぜそれが起きるのか、そして根拠を持たせることがどのように幻覚編集の減少につながるのかを説明します。</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;その兆候は、間違った関数本体ではありません。存在しないファイル、あるいは存在してもその振る舞いを実装していないファイルに対する、自信満々の編集です。&lt;/p&gt;
&lt;p&gt;あなたはセッション有効期限の修正を依頼しました。エージェントは&lt;code&gt;src/auth/session.ts&lt;/code&gt;を開きました。そのパスはもっともらしい。そして間違ってもいます。本物のハンドラーは&lt;code&gt;apps/api/src/middleware/expiry.ts&lt;/code&gt;にあり、二回のリファクタリング前に名前が変わりました。エージェントはあなたに嘘をついたわけではありません。訓練事前知識と、すでにコンテキストウィンドウにあったものを組み合わせて、パス形状の文字列を補完しただけです。&lt;/p&gt;
&lt;p&gt;これは実際のリポジトリでよくある失敗パターンです。モデルはコードを書けます。ミスは、書く場所を間違えることにあります。&lt;/p&gt;
&lt;h2 id=&quot;エージェントがパスを捏造する理由&quot;&gt;エージェントがパスを捏造する理由&lt;/h2&gt;
&lt;p&gt;コーディングエージェントは、ツールを持った次トークン予測モデルです。「セッション有効期限を直して」と言うと、何かを読んだりパッチしたりする前に、まずファイルを一つ名指ししなければなりません。まだ根拠のあるマップを持っていない場合、次のものからパスを構築します。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;他のリポジトリで見た命名規則。&lt;code&gt;src/auth/session.ts&lt;/code&gt;はよくある形です。&lt;/li&gt;
&lt;li&gt;すでに会話にあるファイル。それは今重要なものではなく、先週貼り付けたものかもしれません。&lt;/li&gt;
&lt;li&gt;たまたま実行したディレクトリ一覧。大きなツリーでは不完全です。&lt;/li&gt;
&lt;li&gt;指示ファイル。&lt;code&gt;CLAUDE.md&lt;/code&gt;と&lt;code&gt;AGENTS.md&lt;/code&gt;はエージェントにどう振る舞うべきかを伝えます。それらはシンボルや呼び出し元、現在のパスの生きたインデックスではありません。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;これらの出典のどれも、今日のこのリポジトリのマップではありません。モデルは、どんな空白でも埋めるのと同じ方法で、この空白を埋めます。確率の高い続きでです。その続きは、しばしば本物のパスのように見えます。ファイルが存在していて、正しいファイルの隣にあることもあります。先月マージされたブランチに存在していたこともあります。一度も存在しなかったこともあります。&lt;/p&gt;
&lt;p&gt;エージェントが正しい文字列をそもそも検索していないなら、ここではgrepもあなたを救いません。エージェントはパスを推測し、そのパスが返したものを読み、それを編集しました。最初の誤ったステップはパスであり、パッチではありませんでした。&lt;/p&gt;
&lt;p&gt;ファイルを読むことも、正しいファイルを見つけることと同じではありません。Claude Code、Cursor、Codex、そして似たようなツールは、あなたが指し示すものなら何でも開けます。問題は、編集する前に、正しいファイル、重要なシンボル、依存関係、テスト、そして影響範囲を確実に見つけられるかどうかです。マップのないファイルアクセスは、依然として推測から始まります。&lt;/p&gt;
&lt;h2 id=&quot;間違ったファイルの編集は検索の問題である&quot;&gt;間違ったファイルの編集は検索の問題である&lt;/h2&gt;
&lt;p&gt;捏造されたパスを、性格上の欠陥としてではなく、検索の見当違いとして扱ってください。&lt;/p&gt;
&lt;p&gt;エージェントが編集を許可される前に&lt;code&gt;path/file.ext:line&lt;/code&gt;を返さなければならないとしたら、二つのことが起きます。第一に、あなたはその引用を開いて、十秒でその作業を却下できます。第二に、エージェントは実際にツリーを知っている何かに問い合わせなければならなくなります。&lt;/p&gt;
&lt;p&gt;それがコードベース・コンテキストレイヤーの仕事です。セマンティック検索だけでは十分ではありません。「セッション有効期限っぽく聞こえる」断片が、それでも廃止されたパッケージに着地することがあります。文字列を知っているときには正確なテキストも、名前を知っているときにはシンボル検索も、形を知っているときには構造検索も、呼び出し元と影響範囲が必要なときには依存関係グラフも必要です。&lt;/p&gt;
&lt;p&gt;Maguyvaは、MCP互換のコーディングエージェント向けのそのレイヤーです。エディタではありません。Claude Code、Cursor、Codex CLI、VS Code、Windsurf、そして他のMCPクライアントは、それぞれいた場所に留まります。エージェントは、一行に触れる前にランク付けされたマップに問い合わせます。&lt;/p&gt;
&lt;p&gt;その主張は意図的に控えめです。幻覚編集が減ること。Maguyvaはモデルから推測する能力を奪いません。デフォルトの最初のステップを、「もっともらしいパスを捏造する」ことから、「ランク付けされ引用された場所を要求する」ことへと変えるだけです。&lt;/p&gt;
&lt;h2 id=&quot;根拠のある答えとはどんなものか&quot;&gt;根拠のある答えとはどんなものか&lt;/h2&gt;
&lt;p&gt;「セッション有効期限はどこで処理されているか」に対する有用な答えは、一つの段落ではありません。短い場所のリストです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;apps/api/src/middleware/expiry.ts:48&lt;/code&gt; - ハンドラー&lt;/li&gt;
&lt;li&gt;&lt;code&gt;apps/web/src/lib/auth-client.ts:112&lt;/code&gt; - 呼び出し元&lt;/li&gt;
&lt;li&gt;&lt;code&gt;apps/api/tests/expiry.test.ts:20&lt;/code&gt; - 変更が間違っていれば失敗するテスト&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;あなたはこれらの行を開けます。間違っていれば、そこで止まります。正しければ、エージェントは編集してもかまいません。ポイントは検証であって、スローガンではありません。&lt;/p&gt;
&lt;p&gt;Maguyvaは、検索、シンボル、依存関係分析、ファイル取得、リポジトリコンテキスト、決定論的なユーティリティワークフローにまたがる11の顧客向けMCPツールを提供します。四つの検索モード(セマンティック、構造、グラフ/依存関係、テキスト)がランク付けされた結果に融合され、シンボル検索は独立したMCPツール(&lt;code&gt;find_symbol&lt;/code&gt;)です。根拠のある答えはファイルパスと行番号とともに返ってくるため、目の前のツリーと照らし合わせて評価できます。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://maguyva.ai/ja/docs&quot;&gt;ドキュメント&lt;/a&gt;は最短経路を説明しています。無料で始め、すでに知っているリポジトリをインデックスし、クライアントを接続し、それから確認できる質問を尋ねる。&lt;/p&gt;
&lt;h2 id=&quot;最初の編集を変えるループ&quot;&gt;最初の編集を変えるループ&lt;/h2&gt;
&lt;p&gt;新しいワークフローの信条は必要ありません。最初に書く前に、もう一つのステップが必要なだけです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;すでに評価できる質問をしてください。「ログインとセッション有効期限を扱うコードは何か」は「認証を直して」よりも優れています。&lt;/li&gt;
&lt;li&gt;引用を要求してください。「認証モジュール」の要約ではなく、ファイルパスと行番号を。&lt;/li&gt;
&lt;li&gt;引用されたファイルを開いてください。シンボルをたどってください。今から触れようとしている依存関係を確認してください。&lt;/li&gt;
&lt;li&gt;そのときになって初めて、エージェントにパッチさせてください。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;ステップ2が何も有用なものを返さない場合、エージェントにはパスを即興で作る資格がありません。もう一度検索するか、あなたが指し示します。この一つの関門こそが、幻覚編集の減少を生み出します。モデルは同じモデルです。変わったのはマップのほうです。&lt;/p&gt;
&lt;p&gt;指示ファイルは依然として重要です。維持してください。慣習、レビュールール、触れてはいけないもののために使ってください。それらにインデックスであることを求めないでください。三つの重要なディレクトリを列挙した&lt;code&gt;CLAUDE.md&lt;/code&gt;は、パッケージ分割の翌週には古くなります。問い合わせ可能なマップは、リポジトリが更新されれば更新されます。&lt;/p&gt;
&lt;p&gt;関連する失敗は、惜しいファイルです。振る舞いが&lt;code&gt;auth-client.ts&lt;/code&gt;にあるのに、エージェントが&lt;code&gt;auth.ts&lt;/code&gt;を開く。ソースの代わりに生成されたファイルにパッチを当てる。あるいは、名前が一致したという理由で&lt;code&gt;packages/legacy&lt;/code&gt;のコピーを編集する。引用は、そうしたミスを不可能にするわけではありません。diffが着地する前に、それらを見えるようにするだけです。&lt;/p&gt;
&lt;h2 id=&quot;マップがあなたのために解決してくれないこと&quot;&gt;マップがあなたのために解決してくれないこと&lt;/h2&gt;
&lt;p&gt;何を得ているのかについて、冷静でいてください。根拠のあるマップは、すべての編集を正しくしてくれるわけではありません──あなたのエージェントは、まさに正しいファイルの中で、それでも悪いパッチを書くことがあります。あなたのコードベースが動的ディスパッチ、リフレクション、モンキーパッチに依存しているなら、一部のシンボル検索は、あなたが望むよりも薄い結果を返すでしょう。実行時の間接性が、どんな静的インデックスにもそうさせるからです。そして、もしあなたがパーセンテージを期待しているなら──「幻覚パスがX%減少」──ここではそれを見つけられません。あなた自身以外の誰も、あなたのリポジトリについてのその数字を正直に測定できないからです。&lt;/p&gt;
&lt;p&gt;あなたが期待できるのは、もっと狭く、もっと役に立つものです。エージェントは、推測したパスで編集を始めることをやめます。その最初のステップが本物のマップに根拠を持つようになり、幻覚編集の減少はそこから生まれます。引用の後のすべて──diffを読むこと、パッチを判断すること──は、これまでずっとそうであったように、依然としてあなたの仕事です。&lt;/p&gt;
&lt;p&gt;このテストはほとんど何も費やしません。すでに知っているリポジトリをインデックスし、確認できる質問を尋ねてください。以前に痛い目にあったパスから始めてください。引用が間違っていれば、すぐにそれが分かります。正しければ、あなたのエージェントの次の編集には、より良い着地場所ができます。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;// it doesn&apos;t know the file. it knows how to find it.&lt;/code&gt;&lt;/p&gt;
</content:encoded><category>AI Agents</category><category>Hallucination</category><category>Retrieval</category><category>MCP</category></item><item><title>コード検索をvoyage-4-largeへアップグレードした理由</title><link>https://maguyva.ai/ja/blog/upgrading-code-search-to-voyage-4-large</link><guid isPermaLink="true">https://maguyva.ai/ja/blog/upgrading-code-search-to-voyage-4-large</guid><description>私たちはコード埋め込みをvoyage-4-largeへ移行しました ―― 現在、公開RTEBコード検索リーダーボードのトップに立つモデルです。正直に言うと:私たちが受け入れているトレードオフ、実際に何をインデックス化しているか、そしてなぜプレミアムな埋め込みにお金を払うのか。</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;この記事のベンチマーク数値は、公開時点(2026年6月)のRTEBリーダーボードを反映しています。リーダーボードは変動するものなので、この順位は永続的な事実ではなく、ある時点のスナップショットとして捉えてください。&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;セマンティック検索の質は、その土台にある埋め込みの質次第です。&lt;/p&gt;
&lt;p&gt;エージェントがMaguyvaに「リトライはどこで処理しているか」と尋ねるとき、それは「retry」という単語をgrepしているわけではありません。求めているのは&lt;em&gt;意味&lt;/em&gt;です ―― バックオフループ、サーキットブレーカー、不安定な呼び出しをラップしているもの。この問いに答えるのは、コードを空間上の1点に変換し、その近傍を見つけるベクトルモデルです。より良いモデルを選べば、プロダクト内のあらゆるセマンティッククエリが静かに鋭くなります。&lt;/p&gt;
&lt;p&gt;そこで私たちは自分たちのモデルを変更しました。2026年6月時点で、Maguyvaのコード埋め込みは**&lt;code&gt;voyage-4-large&lt;/code&gt;**上で動作しており、&lt;code&gt;voyage-code-3&lt;/code&gt;を置き換えています。&lt;/p&gt;
&lt;h2 id=&quot;ベンチマーク&quot;&gt;ベンチマーク&lt;/h2&gt;
&lt;p&gt;この判断を、なんとなくの感覚で下したわけではありません。公開されている&lt;a href=&quot;https://embedding-benchmark-rteb.hf.space/code&quot;&gt;Retrieval Embedding Benchmark(RTEB)&lt;/a&gt;は、実際の検索タスクで埋め込みモデルをランク付けしており、その&lt;strong&gt;Code&lt;/strong&gt;リーダーボードでは&lt;code&gt;voyage-4-large&lt;/code&gt;が**総合1位(90.86)**につけています ―― &lt;code&gt;gemini-embedding-2-preview&lt;/code&gt;(90.26)を上回り、そして特筆すべきは、私たちがそれまで使っていたモデルである&lt;code&gt;voyage-code-3&lt;/code&gt;(89.73、3位)をも上回っている点です。&lt;/p&gt;
&lt;p&gt;絶対値としては小さな差です。しかしそれは、公開ベンチマークにおいて、私たちが気にかけているまさにそのタスク ―― 意味によってコードを検索すること ―― において、正しい方向への差です。&lt;/p&gt;
&lt;h2 id=&quot;私たちが受け入れるトレードオフバイナリ量子化&quot;&gt;私たちが受け入れるトレードオフ:バイナリ量子化&lt;/h2&gt;
&lt;p&gt;ここが、たいていの「モデルをアップグレードしました」系の記事が省略する部分です。&lt;/p&gt;
&lt;p&gt;Maguyvaはフル精度のベクトルを保存していません。私たちが保存しているのは&lt;strong&gt;バイナリ量子化&lt;/strong&gt;された埋め込みです。2048次元のベクトルはそれぞれ2048ビットの署名へと圧縮されます ―― &lt;strong&gt;ベクトルあたり256バイト&lt;/strong&gt;です。これらの署名はハミング距離で検索され、テナントごとにインデックス化・パーティション分割されています。&lt;/p&gt;
&lt;p&gt;これは意図的なトレードオフです。バイナリ量子化は、劇的に小さいストレージと、別途ベクトルデータベースを運用する必要のない高速で安価な距離計算と引き換えに、いくらかの検索精度を犠牲にします。ワークスペースごとにリポジトリ全体をインデックス化するプロダクトにとっては、ベンチマークの最後の端数を絞り出すことよりも、この経済性の方が重要です。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;voyage-4-large&lt;/code&gt;は、ストレージ層の移行を強いることなく、この設計にぴたりと収まります。&lt;code&gt;voyage-code-3&lt;/code&gt;と同じく2048次元の出力を生成するため、私たちの&lt;code&gt;bit(2048)&lt;/code&gt;カラムとハミング検索の経路は変更する必要がありませんでした。モデルは良くなり、スキーマはそのままです。&lt;/p&gt;
&lt;h2 id=&quot;コードはほんの始まりに過ぎなかった&quot;&gt;コードはほんの始まりに過ぎなかった&lt;/h2&gt;
&lt;p&gt;Maguyvaはコードインテリジェンスのツールです。しかし私たち自身も最初の顧客であり、それを別のものにも向けています。コードと並んでリポジトリに存在するMarkdownです。アーキテクチャ上の意思決定記録、ランブック、契約書、財務・ポリシー文書 ―― そのすべてがGitでバージョン管理され、そのすべてが同じMCPサーバーの背後にあり、ソースコードだけでなく&lt;em&gt;文書&lt;/em&gt;そのものに対するセマンティックインデックスが張られています。&lt;/p&gt;
&lt;p&gt;だからこそ、voyage-4-largeの守備範囲の広さが重要なのです。同じRTEBファミリーのリーダーボード群において、これは&lt;strong&gt;finance(金融)で1位、healthcare(医療)で1位、そして総合テキスト検索でも1位&lt;/strong&gt;です ―― GoogleのGemini Embedding、CohereのEmbed v4、OpenAIのtext-embedding-3-largeを上回っています。(Voyageは RTEBの共同開発者でもあるため、私たちはこれを完全に中立な審判というより、強力な公開シグナルとして読んでいます ―― とはいえ、プライベートなホールドアウトセットの上で、あらゆる主要な商用モデルと直接比較されてはいます。)エージェントのために正しい関数を見つけ出すのと同じインデックスが、契約書の中の正しい条項や、ポリシーの中の正しい一文を見つけ出します ―― そしてそれらの領域において、voyage-4-largeは妥協案ではなく、トップランナーです。&lt;/p&gt;
&lt;h2 id=&quot;なぜプレミアムな埋め込みにお金を払うのか&quot;&gt;なぜプレミアムな埋め込みにお金を払うのか&lt;/h2&gt;
&lt;p&gt;検索にはもっと安く済ませる方法があり、その多くは無料です。字句検索 ―― BM25やその類 ―― はキーワードにマッチし、ローカルで動作し、コストはゼロです。BGE、Nomic、embeddinggemmaのようなオープンソースの埋め込みモデルは、正真正銘&lt;em&gt;まずまず&lt;/em&gt;なセマンティック検索を提供してくれますし、GPU1台分の費用で自前ホストすることもできます。Maguyvaもこの無料の側面を使っています ―― すべてのクエリは、テキスト検索、AST検索、グラフ検索、セマンティック検索を統合しています。私たちが手を抜かないのは、このセマンティックレイヤーです。&lt;/p&gt;
&lt;p&gt;私たちは、無料モデルを自前ホストする代わりに、トークンあたりの課金でプレミアムな埋め込み ―― &lt;code&gt;voyage-4-large&lt;/code&gt; ―― を利用しています。理由は2つあります。第一に、コードが&lt;code&gt;backoff&lt;/code&gt;や&lt;code&gt;circuit breaker&lt;/code&gt;と書いていて「retry」という単語を一度も使っていない場合、キーワード検索だけでは「リトライはどこで処理しているか」に答えられません ―― 意味こそが埋め込みの存在意義であり、私たちが扱うドメインにおいてオープンモデルはプレミアムモデルに後れを取っています。一般的なテキストでは数ポイント差、コード・契約書・金融のようなニッチな領域ではさらに差が開きます。第二に、私たちの経験では、最終的な答えの質は、応答する側のモデルよりも検索の質によって形作られます ―― 優れたエージェントであっても、誤ったコンテキストを渡されれば誤った答えを返しますし、渡されなかった文書を目にすることは決してありません。&lt;/p&gt;
&lt;p&gt;つまりプレミアムな埋め込みは、インデックス化するリポジトリや文書が増えるたびにスケールする、トークンあたりの請求書です ―― そして私たちは、それを意図的に払っています。ユーザーが得る成果 ―― 正しい関数、あるいは正しい条項 ―― を考えれば、そのトレードオフには十分見合う価値があると私たちは考えています。&lt;/p&gt;
&lt;h2 id=&quot;正直な部分&quot;&gt;正直な部分&lt;/h2&gt;
&lt;p&gt;Voyage自身のドキュメントは、今も&lt;code&gt;voyage-code-3&lt;/code&gt;をコードに最適化されたモデルとして位置づけています。では、なぜ移行したのでしょうか?&lt;/p&gt;
&lt;p&gt;私たちは、ベンダーのモデル表だけでなく、公開ベンチマークそのものを読んだからです。そしてそのベンチマークは、コード検索において&lt;code&gt;voyage-4-large&lt;/code&gt;をトップに置いていました。これは先を見据えた判断でした。より新しく、全般的により強力なモデルを選び、重要なタスクにおいて公開リーダーボードで検証する、という判断です。私たちがこの賭けに踏み切れるのは、その根拠が幅広いからです ―― voyage-4-largeはコードだけで勝っているのではなく、金融、医療、そして総合検索でも先頭に立っています。&lt;/p&gt;
&lt;h2 id=&quot;静かな土台&quot;&gt;静かな土台&lt;/h2&gt;
&lt;p&gt;私たちが公開しているすべてのツール ―― セマンティック検索、タスクコンテキストの収集、根拠に基づくQ&amp;amp;A ―― は、最終的には検索に行き着きます。検索エンジンが改善されれば、その先にいるエージェントはより良いエビデンスを手にし、誤った方向へ進む回数が減り、正しいコード ―― あるいは正しい条項、正しいポリシー ―― に自らの答えを根拠づけられるようになります。より鋭い埋め込みモデルは、派手な機能ではありません。それは、他のすべてを支える土台であり、私たちはたった今、それを引き上げました。あなたは気づかないでしょう。それこそが狙いです。&lt;/p&gt;
</content:encoded><category>Embeddings</category><category>Search</category><category>Architecture</category></item><item><title>言語の再帰的自己改善:約280言語にわたるコードインテリジェンスの磨き上げ</title><link>https://maguyva.ai/ja/blog/autonomous-quality-loops-language-grind</link><guid isPermaLink="true">https://maguyva.ai/ja/blog/autonomous-quality-loops-language-grind</guid><description>私たちは約280言語のコードインテリジェンスに対応しています。人間の手でそのすべてを監査することはできません。そこで私たちは、言語の再帰的自己改善ループ ―― 抜き取り検査、LLM-as-judge、1点修正、再検証 ―― を構築し、抽出が単に「グリーン」であるだけでなく実際に正しくなるまで、隔離されたエージェント群でこれを回し続けています。</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;この記事の数値は公開時点(2026年5月)のシステムを反映しています。最新の数値は&lt;a href=&quot;https://maguyva.ai/ja/team&quot;&gt;チームページ&lt;/a&gt;をご覧ください。&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Maguyvaは、約280言語のソースコードからシンボル、参照、そして依存関係グラフを抽出します。言語ごとにカスタムのtree-sitterハンドラー ―― クエリ、ヒューリスティクス、エッジケース ―― が存在し、どのハンドラーもそれぞれ独自の形で微妙に間違っている可能性があります。メソッド呼び出しがreadとして出力される。関数が誤った包含スコープに帰属させられる。本来は存在しないはずの関係が生成される、といった具合です。&lt;/p&gt;
&lt;p&gt;これを手作業で監査することはできません。どんなチームであっても、280種類の文法にまたがる抽出結果をすべて読んで、誤ったエッジを見つけ出すことはできません。だから興味深い問いは「私たちの抽出は正しいか」ではなく、「この規模で、すべてのループに人間を挟むことなく、どうやって間違いを&lt;em&gt;見つけ出す&lt;/em&gt;か」なのです。私たちの答えは、言語エージェントが主導する品質ループと、判定者として振る舞うLLM、そして繰り返し学び直している1つのルール ―― グリーンであることと正しいことは同じではない ―― による、言語の再帰的自己改善です。&lt;/p&gt;
&lt;h2 id=&quot;グリーンは正しさではない&quot;&gt;グリーンは正しさではない&lt;/h2&gt;
&lt;p&gt;どの言語にもフィクスチャ(テスト用固定データ)一式があり、リリースゲートは精度、構造的整合性、網羅性、品質、パフォーマンスという5つの次元でスコアを付けます。ある言語が&lt;strong&gt;GREEN&lt;/strong&gt;になるのは、そのフィクスチャ上でprecision(適合率)が0.95以上、recall(再現率)が0.99以上、F1が0.97以上、かつ統計的な信頼性のために期待エッジ数が20以上ある場合のみです。それを下回るとYELLOWまたはREDとなり、出荷されません。&lt;/p&gt;
&lt;p&gt;このゲートは必要条件ではありますが、十分条件ではありません。フィクスチャは&lt;em&gt;私たちが書いた&lt;/em&gt;フィクスチャに対して検証されるものです。つまり、私たちがすでに思いついたケースしか反映されていません。ハンドラーはフィクスチャ上では完璧でも、実際のコードにしか現れないパターン ―― マクロのイディオム、ジェネリック型の制約を持つメソッド、誰もフィクスチャを書かなかった言語機能 ―― をぐちゃぐちゃにしてしまうことがあります。GREENが意味するのは、フィクスチャが通ったということだけです。実際のリポジトリがきれいに抽出できることを意味するわけではありません。だからこのループは、フィクスチャを離れて野生のコードに目を向けなければならないのです。&lt;/p&gt;
&lt;h2 id=&quot;内側のループ抜き取り検査判定修正証明&quot;&gt;内側のループ:抜き取り検査、判定、修正、証明&lt;/h2&gt;
&lt;p&gt;中核となるループは、一度に1言語ずつ実行されます:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ┌──────────────────────────────────────────────────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  1. corpus run ── clone real-world repos, extract relationships   │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  2. spot-check 100 edges (seed 42, then seed 123 to cross-check)  │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  3. LLM judge classifies every sampled edge:                      │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        CORRECT · FALSE_POSITIVE · TYPE_ERROR ·                    │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        SCOPE_ERROR · METADATA_ERROR                               │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  4. fix ONE thing — handler .py, .scm query, or config           │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  5. re-validate — F1 + re-classify + manifest diff (no regressions)│&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   better? ──no──► revert, try a different fix ────────────────────┤&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │ yes                                                       │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼                                                           │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  6. promote the fix into fixtures (a permanent regression guard) ──┘&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;これが空回りせずに機能するのには、いくつかの理由があります。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;判定者はAPI呼び出しではなく、エージェント自身です。&lt;/strong&gt; 私たちが「LLM-as-judge」と言うとき、それは言語エージェント自身が、サンプリングされた各エッジを実際のソースコードと突き合わせて読み、固定の5カテゴリーからなるルーブリックで分類することを意味します。すなわち、そのエッジは正しいのか、偽陽性なのか、関係は正しいが型が間違っているのか、誤ったスコープに紐づいているのか、それとも誤ったメタデータを持っているのか、という分類です。このルーブリックがすべての鍵です。「エラー率23%」という数字は、それが本物の欠陥なのか、それとも判定者の数え間違いなのかがわからない限り、何の意味も持ちません。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1点だけ修正し、それを証明する。&lt;/strong&gt; 各イテレーションは編集可能な資産をちょうど1つだけ変更し、固定のハーネスに対して再実行し、F1が改善し再分類の結果もよくなった場合にのみその変更を残します。そうでなければロールバックします。投機的な変更をまとめて行うことも、「よくなるはずだ」という思い込みもありません。変更はその価値を証明して初めて残るのであり、そうでなければ消えます。そして修正が定着すると、それはフィクスチャ一式に昇格します ―― これにより、修正したバグが静かに再発することは二度となくなります。この昇格のステップこそが、このループを単なる反復ではなく&lt;em&gt;再帰的&lt;/em&gt;なものにしています。1回のパスごとに、次のパスが検証の基準とするオラクルそのものが強化されていくのです。&lt;/p&gt;
&lt;h2 id=&quot;繰り返し学び直している教訓メトリクスは過大報告する&quot;&gt;繰り返し学び直している教訓:メトリクスは過大報告する&lt;/h2&gt;
&lt;p&gt;ここに落とし穴があり、私たちはまさにそこへまっすぐ踏み込んでしまいました。副次的なコーパスメトリクス ―― 抽出されたターゲットに解決可能なシンボルがない頻度や、いくつのシンボルが「孤立」しているように見えるか、といった指標 ―― は、問題を大幅に過大報告します。それらのほとんどは、バグではなく*パラダイム上のアーティファクト(現れ方の癖)*にすぎません。&lt;/p&gt;
&lt;p&gt;もっとも分かりやすい例が&lt;code&gt;llvm&lt;/code&gt;です。かつて「シンボルなしソース」率が73%を示し、壊滅的だと烙印を押されました。しかし掘り下げてみると、実際の精度は**98.5%**でした。「欠落しているシンボル」のほとんどは、標準ライブラリやフレームワーク、リポジトリの外にあるコードへの、正当な外部参照だったのです。このメトリクスが測っていたのは、ハンドラーの欠陥ではなく、その言語自体の性質でした。Zig、COBOL、Odinのような言語は65〜70%の「孤立」率を示しますが、まったく正しく、COBOLに至っては実際のエラーはゼロでした。&lt;/p&gt;
&lt;p&gt;もしこの数字に作業を主導させていたら、すでに正しいハンドラーを何週間もかけて「修正」し続け、静かに本物のバグを抱えている言語を無視していたことでしょう。結論は率直です。集計メトリクスは、よくてもおおまかなトリアージ用のシグナルにすぎません。&lt;strong&gt;本当の品質シグナルは、エッジ分類つきの抜き取り検査&lt;/strong&gt;です ―― 実際のリポジトリにある実際のエッジを1つずつ見て判断すること。直感よりデータを優先すべきですが、それはどのデータが真実を語っているかがわかって初めて成り立つのです。&lt;/p&gt;
&lt;h2 id=&quot;外側のループマラソンではなく艦隊で&quot;&gt;外側のループ:マラソンではなく艦隊で&lt;/h2&gt;
&lt;p&gt;280言語すべてを一度に1言語ずつ処理していては永遠に終わりません。そこで内側のループは、多数を並列に実行する外側のループの中に包み込まれています。&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   pick a wave of near-GREEN / high-error languages&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   fan out 10–15 agents, each ISOLATED in its own git worktree,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   each grinding ONE language, committing to its own branch&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   orchestrator integrates serially: file-scoped apply, then&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   `manifest diff` — any cross-language regression blocks the batch&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   gated push (reviewed and confirmed) ──► rotate to the next wave&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;各エージェントは使い捨てのworktreeの中で作業するため、互いに干渉することはありません。オーケストレーターは、各エージェントの修正を1つずつ、フルマニフェストの回帰チェックを通した上で統合します。自分の言語には効果があっても、他の3言語を静かに壊してしまうような変更は取り込まれません。統合は何かをプッシュする前にゲートを通り、確認されます ―― 回帰ゲートが決めるのは何が&lt;em&gt;安全&lt;/em&gt;かであり、何を&lt;em&gt;出荷するか&lt;/em&gt;を決めるのは今も人間です。その後、プールは次の言語群へとローテーションし、同じプロセスがまた繰り返されます。&lt;/p&gt;
&lt;h2 id=&quot;まだ不完全な部分&quot;&gt;まだ不完全な部分&lt;/h2&gt;
&lt;p&gt;判定者は間違えることがあり、その間違い方には方向性があります。コンテキストが不足した状態で動いているエージェントは&lt;em&gt;過大報告&lt;/em&gt;する傾向にあるのです。あるバッチでは8言語がエラー率5〜20%としてフラグ付けされましたが、調べてみると本物の言語固有バグだったのは1件だけで、残りはすべて、その言語固有のセマンティクスを判定者が見落としたことによる誤りでした(1行のソースが正当に複数のエッジを生成する、パラメータバインディングが代入としてモデル化される、識別子ごとに参照を持つ言語、など)。だからこそ私たちは2つのシードでサンプリングして相互チェックを行い、判定者とフィクスチャの間の不一致を、確定した判定としてではなく&lt;em&gt;もっとも&lt;/em&gt;興味深いシグナルとして扱っています ―― ときには、間違っているのはフィクスチャの方だからです。&lt;/p&gt;
&lt;p&gt;目標についても正直でありたいと思います。ゴールは正真正銘のゼロエラーであり、それ以上でも以下でもありません ―― しかし「ゼロ」はチェックボックスにチェックを入れて終わるものではなく、言語ごとに少しずつ磨き上げていく方向性です。常に、また別のイディオムを持つ別のリポジトリが存在するからです。&lt;/p&gt;
&lt;h2 id=&quot;主張するのではなく勝ち取る&quot;&gt;主張するのではなく、勝ち取る&lt;/h2&gt;
&lt;p&gt;Maguyvaがエージェントのために行うすべてのこと ―― シンボルを見つけること、依存関係をたどること、コードを引用しながら質問に答えること ―― は、その土台にある抽出が正しいという前提の上に成り立っています。280言語にわたって、「正しい」ということは主張できるものではなく、実際のコードに対して継続的に&lt;em&gt;勝ち取る&lt;/em&gt;ものでなければなりません。私たちがそれを勝ち取る方法がこのループです。自らのメトリクスを疑ってかかり、あらゆる変更を証明し、それぞれの修正を次の回帰に対する防御へと変えていく、自律的な抜き取り検査と修正のサイクル。華やかな仕事ではありません。しかしこれこそが、「あなたの言語に対応しています」と、本気でそう言い切るための土台となる仕事なのです。グリーンになるのは簡単です。正しさは、勝ち取るものです。&lt;/p&gt;
</content:encoded><category>Architecture</category><category>Languages</category><category>Agents</category></item><item><title>マルチモーダル・フュージョン検索:あらゆるクエリに最適な検索エンジンを選ぶ</title><link>https://maguyva.ai/ja/blog/multi-modal-fusion-search</link><guid isPermaLink="true">https://maguyva.ai/ja/blog/multi-modal-fusion-search</guid><description>「parseConfigはどこで定義されているか」のようなクエリと「認証はどう動いているか」のようなクエリでは、求められる検索の種類が異なります。Maguyvaは意図を分類し、それに応じて4つの検索モダリティに重みを付け、重み付き相互順位融合で結果を統合します。</description><pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;過去の設計について：この2026年4月の記事は、当時のルーティング設計を説明するものであり、現在のデフォルト動作を説明するものではありません。以下の9月の訂正は、測定に関する主張のみを対象としています。現在のルーティング、プリセット、明示的なモダリティ制御については、&lt;a href=&quot;https://maguyva.ai/ja/docs/how-it-works&quot;&gt;仕組み&lt;/a&gt;をご覧ください。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;検索クエリは、一枚岩ではありません。&lt;/p&gt;
&lt;p&gt;「&lt;code&gt;parseConfig&lt;/code&gt;はどこで定義されているか」は、正確なシンボル ―― 素早く得られる1つの正確な場所 ―― を求めています。「認証はどう動いているか」は意味を求めています ―― ある概念を説明する、関連コードの広がりです。「この関数を変更したら何が壊れるか」は依存関係グラフを求めています。「文字列&lt;code&gt;ECONNREFUSED&lt;/code&gt;を見つけて」はリテラルな一致を求めているのであって、気の利いたことは何もいりません。&lt;/p&gt;
&lt;p&gt;Grepはリテラルな一致には優れており、一部の参照探しにも有用ですが、依存関係グラフではありませんし、意味を理解することもありません。埋め込み(embedding)は意味的な側面をカバーしますが、正確な文字列や影響分析には向いていないツールです。ほとんどのコード検索ツールは1つのエンジンを選び、あらゆるクエリをそのエンジンで処理します。Maguyvaはエンジンを固定しません。あなたがどんな種類の問いを立てたのかを見極め、その問いにふさわしい比率で4つの検索エンジンをブレンドします。&lt;/p&gt;
&lt;h2 id=&quot;4つのモダリティ&quot;&gt;4つのモダリティ&lt;/h2&gt;
&lt;p&gt;内部には、コードを見つけるための4つの独立した方法があります:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;semantic(意味検索)&lt;/strong&gt; ―― Voyageのバイナリ埋め込みによるベクトル検索。意味でコードを見つける。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;text(テキスト検索)&lt;/strong&gt; ―― トライグラムマッチング。リテラル、エラー文字列、正確な識別子を見つける。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;structural(構造検索)&lt;/strong&gt; ―― ASTクエリ。定義、シグネチャ、言語構文を見つける。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;graph(グラフ検索)&lt;/strong&gt; ―― 依存関係グラフ。呼び出し元、呼び出し先、影響範囲を見つける。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;それぞれが異なる種類の問いに強みを持っています。肝心なのは、目の前のクエリに対してそれぞれをどれだけ信頼するかを見極めることです。&lt;/p&gt;
&lt;h2 id=&quot;意図分類&quot;&gt;意図分類&lt;/h2&gt;
&lt;p&gt;検索を実行する前に、軽量な分類器がクエリを6つの意図のいずれかに振り分け、確信度スコアを付けます。これはホットパス上で動作し、加わる遅延はわずか1〜2ミリ秒程度であるべきなので、意図的に軽量に作られています ―― 順序付きのヒューリスティクスで、最初に一致したものが採用されます:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def &lt;/code&gt;、&lt;code&gt;class &lt;/code&gt;、&lt;code&gt;func &lt;/code&gt;、&lt;code&gt;import &lt;/code&gt;…で始まる → &lt;strong&gt;find_definition&lt;/strong&gt;(確信度0.95)&lt;/li&gt;
&lt;li&gt;「who calls」「usages of」「references to」→ &lt;strong&gt;find_references&lt;/strong&gt;(0.90)&lt;/li&gt;
&lt;li&gt;「impact」「blast radius」「what depends on」→ &lt;strong&gt;impact_analysis&lt;/strong&gt;(0.90)&lt;/li&gt;
&lt;li&gt;引用符付きの&lt;code&gt;&quot;string&quot;&lt;/code&gt;や&lt;code&gt;traceback&lt;/code&gt;のようなエラートークン → &lt;strong&gt;exact_match&lt;/strong&gt;(0.85〜0.90)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CamelCase&lt;/code&gt;や&lt;code&gt;snake_case&lt;/code&gt;形式の識別子 → &lt;strong&gt;find_definition&lt;/strong&gt;(0.60〜0.80)&lt;/li&gt;
&lt;li&gt;「how」「why」「explain」「architecture」→ &lt;strong&gt;understand_code&lt;/strong&gt;(0.75)&lt;/li&gt;
&lt;li&gt;何も一致しない → &lt;strong&gt;understand_code&lt;/strong&gt;、低確信度(0.40)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;それぞれの意図は、4つのモダリティにまたがる重みプロファイルを持っています。これが実際の数値です:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;意図&lt;/th&gt;
&lt;th&gt;semantic&lt;/th&gt;
&lt;th&gt;text&lt;/th&gt;
&lt;th&gt;structural(AST)&lt;/th&gt;
&lt;th&gt;graph&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;find_definition&lt;/td&gt;
&lt;td&gt;0.2&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.6&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;find_references&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;td&gt;0.2&lt;/td&gt;
&lt;td&gt;0.2&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.5&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;understand_code&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.5&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0.2&lt;/td&gt;
&lt;td&gt;0.2&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;find_similar&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.4&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0.3&lt;/td&gt;
&lt;td&gt;0.2&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;impact_analysis&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.7&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;exact_match&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.9&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;つまり「&lt;code&gt;parseConfig&lt;/code&gt;はどこで定義されているか」はASTに大きく傾きます(0.6)。「認証はどう動いているか」は意味ベクトルに傾きます(0.5)。「これに依存しているのは何か」はほぼグラフだけです(0.7)。「&lt;code&gt;ECONNREFUSED&lt;/code&gt;を見つけて」はほぼトライグラムだけで(0.9)、埋め込みモデルは完全にオフになります ―― 正確な文字列に対して、意味的類似度はまさに誤ったツールだからです。&lt;/p&gt;
&lt;h2 id=&quot;高速経路と統合された経路&quot;&gt;高速経路と、統合された経路&lt;/h2&gt;
&lt;p&gt;分類器の確信度が高く(スコア0.85以上)、クエリが通常のものであれば、Maguyvaは統合(フュージョン)を完全にスキップし、単一の支配的なモダリティへ直接ルーティングします。「Xはどこで定義されているか」には4つの検索エンジンは不要で、今すぐASTインデックスが必要なだけです。この直接経路は&lt;code&gt;fusion_strategy: &quot;direct&quot;&lt;/code&gt;として返されます。&lt;/p&gt;
&lt;p&gt;あいまいなクエリはすべて統合を経由します。4つ(デフォルトのプリセットでは3つ)のモダリティが並列に実行され、それぞれが独自のランク付けされたリストを返し、私たちはそれらを結合します。&lt;/p&gt;
&lt;h2 id=&quot;重み付き相互順位融合&quot;&gt;重み付き相互順位融合&lt;/h2&gt;
&lt;p&gt;性質の異なる検索エンジンを統合するのは、見た目以上に難しい作業です。コサイン類似度0.82と、トライグラムスコア137と、グラフ中心性0.004は同じスケール上にないため、単純に足し合わせることはできません。相互順位融合は、生のスコアを捨て、各エンジンが割り当てた&lt;strong&gt;順位&lt;/strong&gt;だけを残すことで、この問題を回避します。あるモダリティからの結果の寄与度は次の通りです:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;contribution = weight × 1 / (k + rank + 1)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ここで&lt;code&gt;rank&lt;/code&gt;はそのモダリティのリストにおける順位、&lt;code&gt;k&lt;/code&gt;は平滑化定数です。複数のエンジンが見つけた結果については、寄与度がモダリティをまたいで合算されます ―― 検索エンジン同士の一致は、自然と上位に浮かび上がります。デフォルトのプリセットでは&lt;strong&gt;k = 40&lt;/strong&gt;を、&lt;code&gt;thorough&lt;/code&gt;では60を使用しています(&lt;code&gt;quick&lt;/code&gt;はセマンティックのみで動作するため、そこでは統合は発生しません)。RRFのオリジナルの研究では、汎用検索においてk = 60に落ち着いていますが、私たちのデフォルトはやや鋭めに設定しており、これによりモダリティ間で上位に一致する結果にわずかに大きな重みを与えています ―― そしてこれを手動でチューニングすることはお勧めしません。&lt;/p&gt;
&lt;p&gt;さらに、結果には&lt;strong&gt;グラフ重要度ブースト&lt;/strong&gt;が加わります。ハブ ―― コードベース全体が頼りにしている関数 ―― は、テキスト上の関連度が同じであっても、目立たない末端の関数より上位に来るべきです。そこで各寄与度に次を乗じます:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;boost = min(1 + 0.3 × ln(1 + centrality), 1.5)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;中心性は、パイプラインが事前計算したPageRank/次数メトリクスから得られ、ブーストは1.5倍で頭打ちになります。これにより、人気のある関数が、より関連性の高い目立たない関数を完全に埋もれさせてしまうことはありません。最後に、vendor・build・archiveパス配下の結果を格下げし、ファイルごとに最良のチャンクへ重複排除します。&lt;/p&gt;
&lt;h2 id=&quot;まだ不完全な部分&quot;&gt;まだ不完全な部分&lt;/h2&gt;
&lt;p&gt;意図分類器は正規表現の集合であり、学習済みモデルではありません。よくあるクエリの形をヒューリスティックで処理し、曖昧なクエリは &lt;code&gt;understand_code&lt;/code&gt; とセマンティック寄りの組み合わせにフォールバックします。この記事の以前の版では、検索結果ゼロの割合が約15%から5%未満に低下したことを、達成済みの改善として説明していました。実際には、2025年12月の提案に記載されていたのは推定の初期値と目標であり、裏付けとなるクエリ集合や測定記録は提示されていません。改善を達成したというその主張を撤回します。&lt;a href=&quot;https://maguyva.ai/evidence/search-quality.md&quot;&gt;出典の根拠資料と訂正&lt;/a&gt;をご覧ください。分類器を学習済みモデルに置き換えていないのは、安価な現行版が高速で、想定するルーティングの役割には十分であり、自信を持って間違える分類器より、正直なフォールバックのほうがよいからです。重み自体も手作業で選んだ事前設定値であり、収集していないクリックデータから学習したものではありません。&lt;/p&gt;
&lt;h2 id=&quot;ツールにではなく問いに語らせる&quot;&gt;ツールにではなく、問いに語らせる&lt;/h2&gt;
&lt;p&gt;エージェントは、grepと埋め込みとコールグラフのどれに手を伸ばすべきかを知っている必要はありません ―― ただ平易な言葉で問いを立て、正しい答えを得られればよいのです。マルチモーダル・フュージョンこそが、&lt;code&gt;find_symbol&lt;/code&gt;、セマンティック検索、依存関係分析を1つのクエリ入口の裏側に置くことを可能にしています。システムが問いの形を読み取り、それにふさわしい検索エンジンを静かに組み立てます。埋め込みをスコアリングするモデルも重要ですが、それを&lt;em&gt;使わない&lt;/em&gt;べきタイミングを知っていることも同じくらい重要です。クエリごとに正しいツールを選ぶこと自体が1つの品質であり、私たちはそれを呼び出し側に押し付けるのではなく、自分たちで引き受けたいと考えています。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;// you bring the question. it brings the tools.&lt;/code&gt;&lt;/p&gt;
</content:encoded><category>Search</category><category>Architecture</category></item><item><title>エージェントオブザーバビリティ:フック、Alloy、Grafana</title><link>https://maguyva.ai/ja/blog/agent-observability-hooks-alloy-grafana</link><guid isPermaLink="true">https://maguyva.ai/ja/blog/agent-observability-hooks-alloy-grafana</guid><description>Claude CodeとCodexを1つのGrafanaスタックにOpenTelemetryとAlloyで配線し、トレースとログを使ってエージェントの挙動の問題を根源から見つけて直す。</description><pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;エージェントシステムは、思いもよらない形で壊れます。&lt;/p&gt;
&lt;p&gt;モデルが原因のこともあれば、ツールが原因のこともあります。MCPサーバー自体は正常なのに、エージェントが誤った専門エージェントを選んでしまったり、想定外のシェル作業にセッションの半分を費やしていたり、外からは順調に見えるループの中で静かにコストを溶かしていたりすることもあります。&lt;/p&gt;
&lt;p&gt;その違いを見分けられないなら、あなたはエージェントシステムを運用しているのではなく、ただ推測しているだけです。&lt;/p&gt;
&lt;p&gt;そこで私たちは、自分たちのワークフロー向けにオブザーバビリティスタックを構築しました。Claude Code、Codex、Claudeのフックイベント、Codexの通知イベント、ネイティブのOpenTelemetry、Grafana Alloy、そしてその先にあるGrafana Cloudです。&lt;/p&gt;
&lt;p&gt;興味深いのは「ダッシュボードを作った」という点ではありません。興味深いのは、単一のフィードでは全体像がつかめなかったため、テレメトリを2つの異なるストリームに分割せざるを得なかったという点です。&lt;/p&gt;
&lt;h2 id=&quot;問題エージェントのテレメトリは断片化している&quot;&gt;問題:エージェントのテレメトリは断片化している&lt;/h2&gt;
&lt;p&gt;現代のコーディングエージェントは、すでにある程度のテレメトリを出力しています。それは助けにはなりますが、十分ではありません。&lt;/p&gt;
&lt;p&gt;ネイティブのOTELは、次のような問いに答えるのは得意です:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;いくつリクエストを送ったか?&lt;/li&gt;
&lt;li&gt;セッションのコストはいくらだったか?&lt;/li&gt;
&lt;li&gt;スパンやトレースはどこにあるか?&lt;/li&gt;
&lt;li&gt;レイテンシは急増したか?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一方で、次のような問いに答えるのはかなり苦手です:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;エージェントはどのMCPサーバーに依存していたか?&lt;/li&gt;
&lt;li&gt;この失敗は&lt;code&gt;Bash&lt;/code&gt;、組み込みのファイルツール、それともMCP呼び出しのどれで起きたのか?&lt;/li&gt;
&lt;li&gt;実際にどのスキルが発動したのか?&lt;/li&gt;
&lt;li&gt;どのタイプのサブエージェントがディスパッチされたのか?&lt;/li&gt;
&lt;li&gt;そのセッションは有益な作業をしていたのか、それとも空回りしていただけなのか?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この2つ目のカテゴリーの問いは、トレースよりもフックに近いところにあります。&lt;/p&gt;
&lt;p&gt;しかし逆もまた真です。もっとも重要なパフォーマンスに関する問いのいくつかは、フックよりもトレースに近いところにあります。&lt;/p&gt;
&lt;p&gt;実際にどこでレイテンシが積み上がったのか、どのスパンが遅かったのか、あるいはセッションがモデル呼び出しとツール実行のどちらに時間を費やしていたのかを知りたいなら、意味的なイベントに加えてトレースデータも必要になります。&lt;/p&gt;
&lt;h2 id=&quot;最終的に行き着いたアーキテクチャ&quot;&gt;最終的に行き着いたアーキテクチャ&lt;/h2&gt;
&lt;p&gt;私たちは2つのテレメトリ経路を並行して運用しています。&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Claude Code&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  native OTEL -&amp;gt; Alloy -&amp;gt; Grafana Cloud&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  hooks        -&amp;gt; send_event.py -&amp;gt; Grafana Cloud Loki&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Codex&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  native OTEL -&amp;gt; Alloy -&amp;gt; Grafana Cloud&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  notify hook -&amp;gt; codex_notify.py -&amp;gt; shared Loki schema&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;この分割は意図的なものです。&lt;/p&gt;
&lt;p&gt;また、この構成は非対称でもあります。Claude Codeははるかに豊富なライフサイクルフックのインターフェースを提供してくれます。Codexはネイティブ OTEL に加えて通知(notify)のインターフェースを提供してくれるので、両方のランタイムが同じ制御機構を持っているかのように装うのではなく、情報量の少ないターン完了イベントを同じログスキーマへ正規化しています。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ネイティブOTEL&lt;/strong&gt;はベースラインとなるストリームを提供します。ランタイム自体からのログとトレース、そしてランタイムが実際にメトリクスを出力している場合はそのメトリクスです。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;フックと通知イベント&lt;/strong&gt;は意味的なレイヤーを提供します。&lt;code&gt;PreToolUse&lt;/code&gt;、&lt;code&gt;PostToolUse&lt;/code&gt;、&lt;code&gt;PostToolUseFailure&lt;/code&gt;、&lt;code&gt;UserPromptSubmit&lt;/code&gt;、&lt;code&gt;SubagentStop&lt;/code&gt;、&lt;code&gt;SkillActivated&lt;/code&gt;といったもの、そしてエージェントの挙動をデバッグする際に本当に必要となる分類済みメタデータです。ここではClaude Codeがより豊富なイベントストリームを提供し、Codexは情報量こそ少ないものの、有用な正規化済みストリームを提供します。&lt;/p&gt;
&lt;h2 id=&quot;そもそもなぜフックが必要なのか&quot;&gt;そもそもなぜフックが必要なのか&lt;/h2&gt;
&lt;p&gt;私たちのフックパイプラインは、イベントがLokiに到達する前にそれを拡充(エンリッチ)します。&lt;/p&gt;
&lt;p&gt;単に「ツールが実行された」と記録するのではなく、イベントを次のようなフィールドに分類します:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;tool_type&lt;/code&gt;: builtin、mcp、skill、agent、bash&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mcp_server&lt;/code&gt;: どのMCPバックエンドが呼び出しを処理したか&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bash_cli&lt;/code&gt;: シェルコマンドのファミリー&lt;/li&gt;
&lt;li&gt;&lt;code&gt;subagent_type&lt;/code&gt;: どの種類の専門エージェントがディスパッチされたか&lt;/li&gt;
&lt;li&gt;&lt;code&gt;agent_tool&lt;/code&gt;: ソースがClaude CodeかCodexか&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;つまり、運用上意味のある問いを立てられるようになります:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;{service_name=&quot;claude-code-hooks&quot;} | agent_tool=&quot;codex-cli&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;{service_name=&quot;claude-code-hooks&quot;} | tool_type=&quot;mcp&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;{service_name=&quot;claude-code-hooks&quot;} | json | bash_cli=&quot;git&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;これらは見せかけのフィールドではありません。「エージェントが遅く感じた」という感覚と、「エージェントは直近10分間、失敗率の高いシェル中心のgit操作に費やしていた」という事実との違いを生み出すものです。&lt;/p&gt;
&lt;p&gt;実装の細部として、見た目ほど奇妙ではないものが1つあります。共有のLokiストリームは、イベントの発生元がCodexであっても&lt;code&gt;service_name=&quot;claude-code-hooks&quot;&lt;/code&gt;というラベルを使い続けます。ランタイム間の本当の区別は&lt;code&gt;agent_tool&lt;/code&gt;の側で行われます。&lt;/p&gt;
&lt;h2 id=&quot;なぜalloyが中間に位置するのか&quot;&gt;なぜAlloyが中間に位置するのか&lt;/h2&gt;
&lt;p&gt;この構成において、Grafana Alloyは単なるフォワーダーではありません。ポリシーの境界線です。&lt;/p&gt;
&lt;p&gt;Claude CodeとCodexからのネイティブOTELストリームを、&lt;code&gt;localhost:4318&lt;/code&gt;上のローカルAlloyプロキシに向け、Grafana Cloudへ転送する前にAlloyにペイロードを整理させています。&lt;/p&gt;
&lt;p&gt;これが重要なのは、生のエージェントテレメトリには、分析には有用だがインデックス済みラベルとしては最悪な、高カーディナリティのフィールドが大量に含まれているからです:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;session_id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;prompt_id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;トークン数&lt;/li&gt;
&lt;li&gt;所要時間&lt;/li&gt;
&lt;li&gt;ツールパラメータのblob&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;すべてをインデックスすると、ラベルの爆発的増加と、ろくでもない1日が待っています。&lt;/p&gt;
&lt;p&gt;そのためAlloyには次の3つを担わせています:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;低カーディナリティのラベルをごく少数だけインデックス化する。&lt;/li&gt;
&lt;li&gt;ノイズが多いが有用なフィールドを構造化メタデータへ移す。&lt;/li&gt;
&lt;li&gt;純粋なノイズは完全に破棄する。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;重要な考え方はシンプルです。&lt;strong&gt;観測は多く、インデックスは少なく&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&quot;なぜフックストリームはalloyを迂回するのか&quot;&gt;なぜフックストリームはAlloyを迂回するのか&lt;/h2&gt;
&lt;p&gt;フックストリームはすでにLoki向けに整形済みです。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;send_event.py&lt;/code&gt;がイベントをプッシュする時点で、どのフィールドをラベルとして扱い、どのフィールドを構造化されたJSON本文に含めるかはすでに決まっています。このストリームはAlloyをもう一度経由することなく、Grafana CloudのOTLPゲートウェイへ直接送られます。&lt;/p&gt;
&lt;p&gt;つまり、このシステムには明確な役割分担があります:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Alloy&lt;/strong&gt;は生のネイティブOTELストリームを飼いならします。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;フックによる拡充&lt;/strong&gt;は意味的なイベントをクエリ可能にします。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これにより、すべてを1本の経路に無理やり通そうとするよりも、アーキテクチャがシンプルに保たれます。&lt;/p&gt;
&lt;h2 id=&quot;ダッシュボードが実際に示しているもの&quot;&gt;ダッシュボードが実際に示しているもの&lt;/h2&gt;
&lt;p&gt;下のスクリーンショットは、私たちのエージェントワークフローを支えるオブザーバビリティダッシュボードの1つです。これはベンチマークではなく、数値はあくまである時点の断面にすぎません。重要なのはデータの形です。アクティビティフィード、ツール呼び出し、失敗、プロンプト、そしてエージェント別・組み込みツール別・MCP利用状況別・シェルコマンド別・スキル別の内訳です。&lt;/p&gt;
&lt;p&gt;有用なのは、このダッシュボードが他のエージェントテレメトリと同じGrafanaスタック上に存在している点です。ソースとなるエージェントやツールファミリーでフィルタリングでき、システムごとに別々のオブザーバビリティの物語を作ることなく、ランタイムをまたいで俯瞰できます。&lt;/p&gt;
&lt;figure class=&quot;feature-figure feature-figure--wide&quot;&gt;
  &lt;a
    href=&quot;https://maguyva.ai/blog/agent-observability-dashboard.png&quot;
    target=&quot;_blank&quot;
    rel=&quot;noreferrer&quot;
    aria-label=&quot;観測ダッシュボードのスクリーンショットをフル解像度で開く&quot;
  &gt;
    &lt;img
      src=&quot;https://maguyva.ai/blog/agent-observability-dashboard.png&quot;
      alt=&quot;エージェントワークフローのアクティビティフィード、ツール呼び出し数、失敗、プロンプト、そしてエージェント・組み込みツール・MCP利用状況・CLIコマンド・スキル別の内訳を示すGrafanaダッシュボード。&quot;
    /&gt;
  &lt;/a&gt;
  &lt;figcaption&gt;
    私たちのエージェントワークフローを支えるライブダッシュボードの1つ。このスクリーンショットは、他のエージェントランタイムやシステムからのテレメトリも受け取っている共有Grafanaスタックの、ほんの一断面にすぎません。画像をクリックするとフル解像度版を表示します。
  &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&quot;トレースが見た目以上に重要な理由&quot;&gt;トレースが見た目以上に重要な理由&lt;/h2&gt;
&lt;p&gt;ログはどのカテゴリーの作業が行われたかを教えてくれます。トレースは、その作業が時間の経過とともにどう展開したかを教えてくれます。&lt;/p&gt;
&lt;p&gt;この区別はエージェントシステムにおいて重要です。「遅い」という言葉だけでは、あまりに大雑把で役に立たないからです。&lt;/p&gt;
&lt;p&gt;トレースを見れば、問題がどこから来ているのかがわかります:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;モデルのレイテンシ&lt;/li&gt;
&lt;li&gt;ツール実行時間&lt;/li&gt;
&lt;li&gt;繰り返されるリトライ&lt;/li&gt;
&lt;li&gt;特別にコストの高い1回のMCPインタラクション&lt;/li&gt;
&lt;li&gt;個別に見れば無害に見える、小さな操作のロングテール&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;実際には、フックストリームとTempoのトレースを組み合わせて使っています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;フックログ&lt;/strong&gt;が答えるのは:何が起きたか?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;トレース&lt;/strong&gt;が答えるのは:時間はどこへ消えたか?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この組み合わせこそが、オブザーバビリティを単なるダッシュボードから「説明」へと変えるものです。&lt;/p&gt;
&lt;h2 id=&quot;codexの位置づけ&quot;&gt;Codexの位置づけ&lt;/h2&gt;
&lt;p&gt;Codexは同じスタックの一部ですが、Claude Codeと同一というわけではありません。&lt;/p&gt;
&lt;p&gt;Codexについては、次の2つを組み込んでいます:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CodexのネイティブOTELをAlloyへ&lt;/li&gt;
&lt;li&gt;通知webhookを&lt;code&gt;codex_notify.py&lt;/code&gt;へ。これはターン完了をフックイベントで使っているのと同じLokiスキーマへマッピングします&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これにより、同一のログストリーム内で&lt;code&gt;agent_tool=&quot;codex-cli&quot;&lt;/code&gt;のような統一フィルタが使えるようになります。&lt;/p&gt;
&lt;p&gt;正直に言うと注意点もあります。Codexの通知ペイロードは、統合の性質そのものが異なるため、現時点ではClaude Codeのフックペイロードよりも薄いものです。現在の私たちの構成では、Codexのターン完了は共通スキーマへ正規化できますが、ツールごとの詳細な抽出については、通知ブリッジよりもネイティブOTELストリームの方が依然として優れています。&lt;/p&gt;
&lt;p&gt;だからといってこの記事を書かない理由にはなりません。むしろそれこそがこの記事の要点です。本物のオブザーバビリティシステムは、不完全なシグナルを組み合わせて作られるものなのです。&lt;/p&gt;
&lt;h2 id=&quot;mcp経由のgrafanaがゲームを変える&quot;&gt;MCP経由のGrafanaがゲームを変える&lt;/h2&gt;
&lt;p&gt;より大きな変化は、Grafanaが人間がブラウザで訪れるだけの場所ではなくなったという点です。&lt;/p&gt;
&lt;p&gt;このリポジトリでは、GrafanaもMCP経由で公開しています。つまり、人間がまずダッシュボードを手動で確認するのを待つことなく、エージェントが直接Loki、Prometheus、Tempoへクエリを投げられるということです。&lt;/p&gt;
&lt;p&gt;これにより、オブザーバビリティはワークフローへの受動的な報告手段ではなく、能動的な入力へと変わります。&lt;/p&gt;
&lt;p&gt;エージェントは、次のような問いを立てられます:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;直近1時間で最も失敗の多かったツールファミリーはどれか?&lt;/li&gt;
&lt;li&gt;どのMCPサーバーがセッションを支配していたか?&lt;/li&gt;
&lt;li&gt;最近の変更はツールの失敗を減らしたのか、それとも同じミスをより多くのシェル中心の経路へ移しただけなのか?&lt;/li&gt;
&lt;li&gt;もっともレイテンシが高い、あるいはリトライが繰り返されているトレースはどれか?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ここまでくれば、自己改善ループはすぐ目の前です。&lt;/p&gt;
&lt;h2 id=&quot;ダッシュボードからフィードバックループへ&quot;&gt;ダッシュボードからフィードバックループへ&lt;/h2&gt;
&lt;p&gt;ここが私たちにとって最も興味深い部分です。&lt;/p&gt;
&lt;p&gt;オブザーバビリティスタックがエージェントレイヤーからクエリ可能になった瞬間、テレメトリは受動的な報告手段であることをやめ、制御シグナルになります。&lt;/p&gt;
&lt;p&gt;ループは次のような形になります:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;エージェントの活動が、トレース、メトリクス、拡充されたフックログを生成する。&lt;/li&gt;
&lt;li&gt;Grafanaがその証拠をLoki、Tempo、そしてメトリクスが存在する場合はPrometheusに保存する。&lt;/li&gt;
&lt;li&gt;エージェントがGrafana MCP経由でその証拠にクエリを投げる。&lt;/li&gt;
&lt;li&gt;システムが、悪いツールの組み合わせ、壊れやすいスキル、弱いルーティング、あるいは避けられるはずのミスを繰り返し生むシェル中心のワークフローを特定する。&lt;/li&gt;
&lt;li&gt;エージェントやオペレーターが、プロンプト、エージェント設定、スキルの説明、ルーティングルール、ツールアクセスを調整する。&lt;/li&gt;
&lt;li&gt;次のセッションが新しいテレメトリの形を生み出し、サイクルが繰り返される。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;こうして「興味深いダッシュボード」から「測定可能な改善システム」へと移行していくのです。&lt;/p&gt;
&lt;p&gt;目標は特定のツールカテゴリーを最大化することではありません。実際に行われている作業に対して、CLI、組み込みツール、MCP呼び出し、スキルの適切な組み合わせに落ち着くことです。&lt;/p&gt;
&lt;h2 id=&quot;これによって何がわかるようになるか&quot;&gt;これによって何がわかるようになるか&lt;/h2&gt;
&lt;p&gt;両方のランタイムが同じGrafanaスタックに収まると、運用上の問いにはるかに速く答えられるようになります:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;失敗は特定のツールファミリーに集中しているか?&lt;/li&gt;
&lt;li&gt;より高レベルなツールがあるべき場面で、シェル中心のワークフローが避けられるはずのミスを生んでいないか?&lt;/li&gt;
&lt;li&gt;どのMCPサーバーが作業負荷を担っているか?&lt;/li&gt;
&lt;li&gt;意味のある進捗を生んでいないエージェントの活動に対価を払っていないか?&lt;/li&gt;
&lt;li&gt;セッションが不健全なのは、モデルのせいか、ツールのせいか、それともオーケストレーション層のせいか?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これはマルチエージェントのワークフローにおいて特に有用です。「エージェントが忙しかった」という説明では、ほとんど何もわからないからです。&lt;/p&gt;
&lt;p&gt;特定の専門エージェントが繰り返しディスパッチされ、高い失敗率を出し続けているなら、それはルーティングかプロンプト設計の問題です。&lt;/p&gt;
&lt;p&gt;1つのMCPサーバーがすべての呼び出しを占めているなら、それは優れたアーキテクチャの証かもしれませんし、他のすべてが無駄な重荷になっているサインかもしれません。&lt;/p&gt;
&lt;p&gt;コストが高止まりしたままツールの失敗が急増しているなら、それは品質の問題ではなく運用上の問題です。&lt;/p&gt;
&lt;p&gt;より高レベルなツールがあるべき場面で、シェル作業が予測可能かつ避けられる形で失敗し続けているなら、それはプロダクトへのシグナルです。&lt;/p&gt;
&lt;p&gt;特定のスキルが常に発動しているのに成果が改善しないなら、それはプロンプトかルーティングへのシグナルです。&lt;/p&gt;
&lt;h2 id=&quot;本当の教訓&quot;&gt;本当の教訓&lt;/h2&gt;
&lt;p&gt;ここでのより深い教訓は、エージェントのオブザーバビリティには&lt;strong&gt;ランタイムテレメトリ&lt;/strong&gt;と&lt;strong&gt;ワークフローテレメトリ&lt;/strong&gt;の両方が必要だということです。&lt;/p&gt;
&lt;p&gt;ランタイムテレメトリは、システムが何をしたかを教えてくれます。&lt;/p&gt;
&lt;p&gt;ワークフローテレメトリは、エージェント自身が何をしているつもりだったかを教えてくれます。&lt;/p&gt;
&lt;p&gt;その両方が必要です。&lt;/p&gt;
&lt;p&gt;トレースとカウンターだけを残していると、意味的なレイヤーを見逃します。フックイベントだけを残していると、レイテンシやスパン、そしてより広いランタイム全体の姿を見逃します。&lt;/p&gt;
&lt;p&gt;そして両方を残していても、それをエージェントレイヤーへフィードバックしなければ、それは「適応」ではなく単なる「監視」でしかありません。&lt;/p&gt;
&lt;p&gt;この組み合わせこそが、システムを運用できるだけ説明可能にし、改善できるだけ調整可能にするものです。&lt;/p&gt;
&lt;h2 id=&quot;まだ不完全な部分&quot;&gt;まだ不完全な部分&lt;/h2&gt;
&lt;p&gt;まだ粗削りな部分は残っています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;すべてのフックイベントに、欲しいだけの所要時間やトークンのデータが含まれているわけではない。&lt;/li&gt;
&lt;li&gt;タイミングに関する最良のビューの一部は、フックログではなく依然としてTempoのトレースから得られる。&lt;/li&gt;
&lt;li&gt;拡充されたイベントストリームにおいて、現時点のCodexはClaude Codeほど意味的に豊かではない。&lt;/li&gt;
&lt;li&gt;ダッシュボードのスクリーンショットは、磨き上げられたマーケティング素材ではなく、実際の運用画面である。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最後の点は意図的なものです。エージェントシステムがまるで魔法のように自明であるかのように装うより、本物の計器パネルを見せる方を私たちは選びます。&lt;/p&gt;
&lt;h2 id=&quot;これがmaguyvaにとって重要な理由&quot;&gt;これがMaguyvaにとって重要な理由&lt;/h2&gt;
&lt;p&gt;Maguyvaは、エージェントによりよいコードインテリジェンスを与えることを目的としています。しかし、エージェントが実際に有益な作業をこなし始めた瞬間、新たな要件が即座に浮かび上がります。それは、エージェントがどう振る舞っているかを可視化する必要がある、ということです。&lt;/p&gt;
&lt;p&gt;検索の質、ルーティングの質、ツール選択、コンテキストの効率性は、すべて観測可能な問題になります。&lt;/p&gt;
&lt;p&gt;だからこそ、これは書く価値があると私たちは考えています。未来のエージェントスタックは、プロンプトとツールだけでは成り立ちません。プロンプトとツール、そして全体が機能しているかどうかを教えてくれる計測レイヤーがあって初めて成り立つのです。&lt;/p&gt;
&lt;p&gt;本気でエージェントワークフローを構築しているなら、オブザーバビリティはあってもなくてもいいインフラではありません。それはプロダクトの一部です。&lt;/p&gt;
</content:encoded><category>Observability</category><category>Grafana</category><category>OpenTelemetry</category><category>Architecture</category></item><item><title>ループを掘り起こす:変更はいかにして組織の記憶になるか</title><link>https://maguyva.ai/ja/blog/mining-workflow-closing-the-loop</link><guid isPermaLink="true">https://maguyva.ai/ja/blog/mining-workflow-closing-the-loop</guid><description>Gitのコミットは構造化された変更履歴とアーキテクチャ上の意思決定記録になり、クエリ可能な組織の記憶としてAIエージェントへフィードバックされます。</description><pubDate>Tue, 03 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;この記事の数値は公開時点(2026年2月)のシステムを反映しています。最新の数値は&lt;a href=&quot;https://maguyva.ai/ja/team&quot;&gt;チームページ&lt;/a&gt;をご覧ください。&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;どのエンジニアリングチームも同じ課題に直面します。変更は絶えず起こりますが、その変更の背後にある&lt;em&gt;理由&lt;/em&gt;は消え去っていきます。半年後、誰かが「なぜパイプラインのステージにDuckDBを採用したのか?」と尋ねたとき、その答えはその判断を下した本人の頭の中にしか存在しません ―― しかもその人がまだ在籍していればの話です。&lt;/p&gt;
&lt;p&gt;私たちは、このループを閉じるためのマイニングワークフローを構築しました。変更はgitのコミットとして流れ込み、私たちのマイニングパイプラインで処理され、構造化された変更履歴やアーキテクチャ上の意思決定記録になり、そしてCLIクエリを通じて私たちのAIエージェントへとフィードバックされます。結果として得られるのは、人間とAIの両方がアクセスできる組織の記憶です。&lt;/p&gt;
&lt;h2 id=&quot;問題意思決定は蒸発する&quot;&gt;問題:意思決定は蒸発する&lt;/h2&gt;
&lt;p&gt;典型的なシナリオを考えてみましょう。ある開発者が次のようにコミットします:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;feat(canonical): add DuckDB runtime for pipeline stages&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;このコミットは、重要なアーキテクチャ上の選択を表しています。チームは選択肢を評価し、トレードオフを検討し、特定の理由からDuckDBに落ち着きました。しかしそのコンテキストはすべて、次のような場所に存在しています:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Slackのスレッド(おそらく削除済み)&lt;/li&gt;
&lt;li&gt;誰かの記憶(確実に薄れつつある)&lt;/li&gt;
&lt;li&gt;コード中のコメント(運が良ければ、もしかしたら)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;3か月後、新しいチームメンバーがこう尋ねます。「この新しいステージには、DuckDBとSQLiteのどちらを使うべきですか?」組織の記憶がなければ、彼らは車輪の再発明をするか、一貫性のない選択をすることになります。&lt;/p&gt;
&lt;h2 id=&quot;ループコミットからコンテキストへ&quot;&gt;ループ:コミットからコンテキストへ&lt;/h2&gt;
&lt;p&gt;私たちのマイニングワークフローは、git履歴をクエリ可能な知識へと変換します:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Git Commits&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;┌─────────────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  mine sync          │  ← Build index from git history&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─────────────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;┌─────────────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  mine candidates    │  ← Surface commits for review&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─────────────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;┌─────────────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  Classification     │  ← Human or LLM assessment&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  (changelog or ADR) │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─────────────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ├──────────────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ▼                      ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;┌─────────────┐    ┌───────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│ Changelog   │    │ Decisions     │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│ Ledger      │    │ Registry      │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│ (JSONL)     │    │ (YAML files)  │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─────────────┘    └───────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    │                      │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ▼                      ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;┌─────────────┐    ┌───────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│ CHANGELOG.md│    │ orkestra CLI  │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│ per package │    │ queries       │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─────────────┘    └───────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    │                      │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    └──────────────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;              │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;              ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      ┌───────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      │ AI Agents     │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      │ (via CLI)     │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      └───────────────┘&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ここでの重要な洞察は、変更履歴とアーキテクチャ上の意思決定の両方が、同じgit履歴から、統一されたパイプラインを通じて流れ出すということです。これにより、何かが見落とされることがなくなります。&lt;/p&gt;
&lt;h2 id=&quot;マイニングの仕組み&quot;&gt;マイニングの仕組み&lt;/h2&gt;
&lt;h3 id=&quot;ステップ1インデックスを同期する&quot;&gt;ステップ1:インデックスを同期する&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; sync&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;このコマンドはgit履歴をスキャンし、すべてのコミットのインデックスを構築します。各コミットから構造化されたシグナルを抽出します:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Conventional Commitsのタイプ(&lt;code&gt;feat&lt;/code&gt;、&lt;code&gt;fix&lt;/code&gt;、&lt;code&gt;chore&lt;/code&gt;、&lt;code&gt;docs&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;スコープ(どのパッケージまたは領域か)&lt;/li&gt;
&lt;li&gt;破壊的変更のマーカー&lt;/li&gt;
&lt;li&gt;変更されたファイルと複雑度のメトリクス&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;ステップ2カバレッジ状況を確認する&quot;&gt;ステップ2:カバレッジ状況を確認する&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; status&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;現在の状況は次のようになっています:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Mining Status&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;=============&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Decisions&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;---------&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  Coverage:        100.0%&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    Processed:     15637  (of 15637)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    Extracted:       476&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    Skipped:       15161&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Changelog&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;---------&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  Coverage:        100.0%&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    Processed:     15637  (of 15637)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    Released:       6799&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    Skipped:        8838&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;15,637件のコミットを処理済み。うち476件がアーキテクチャ上の意思決定になり、6,799件が変更履歴のエントリになりました。すべてのコミットが分類済みです。&lt;/p&gt;
&lt;h3 id=&quot;ステップ3レビュー対象の候補を取得する&quot;&gt;ステップ3:レビュー対象の候補を取得する&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; candidates&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --limit&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 50&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --full&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;これにより、まだ処理されていないコミットが、分類に必要な完全なコンテキストとともに表示されます:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;sha&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;90571786d99166c0039ca2e80e4d9cd96184bd85&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;date&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;2026-01-26&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;subject&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;feat(canonical): add DuckDB runtime for pipeline stages&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;signals&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;commit_type&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;feat&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;scope&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;canonical&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;breaking&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;is_releasable_type&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;domains_affected&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;pipeline&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;data-architecture&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;body&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Establishes DuckDB as canonical in-process analytical database...&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;files_changed&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;packages/canonical/pipelines/stages/duckdb_runtime.py&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;...&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;stats&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;files&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;insertions&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;450&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;deletions&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;120&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;これらのシグナルは分類の指針になります。&lt;code&gt;is_releasable_type: true&lt;/code&gt;は、これが変更履歴に載るべきものであることを示唆しています。挿入行数の多さとインフラ関連ファイルの存在は、これがアーキテクチャ上の意思決定でもある可能性を示唆しています。&lt;/p&gt;
&lt;h3 id=&quot;ステップ4コミットを分類する&quot;&gt;ステップ4:コミットを分類する&lt;/h3&gt;
&lt;p&gt;ここで2つの経路に分岐します。変更履歴のエントリと、アーキテクチャ上の意思決定です。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;変更履歴のエントリの場合:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; classify&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; abc123&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --changelog&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; added&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;これにより、コミット&lt;code&gt;abc123&lt;/code&gt;が変更履歴の「Added」カテゴリーに載るべきものとして記録されます。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;アーキテクチャ上の意思決定の場合:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;まず、実際の意思決定IDを取得します:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --domain&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; pipeline&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --dry-run&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Returns: DEC-PL-143&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;続いて、その意思決定IDを使って分類します:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; classify&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; abc123&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --decision&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; DEC-PL-143&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;これにより、コミットが、作成または更新されることになる意思決定レコードに紐づけられます。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;バッチ処理の場合(私たちが実際に行っている方法):&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Generate classifications file with LLM assistance&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; commit&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --input&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; classifications.jsonl&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;JSONL形式なら、1回のパスで両方のドメインに対応できます:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;jsonl&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;sha&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;abc123&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;domain&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;changelog&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;action&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;release&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;category&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;added&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;summary&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Add DuckDB runtime for pipeline stages&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;sha&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;abc123&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;domain&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;decisions&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;action&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;extract&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;decision_id&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;DEC-PL-142&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;sha&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;def456&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;domain&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;changelog&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;action&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;skip&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;reason&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Chore: dependency update&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;ステップ5出力をレンダリングする&quot;&gt;ステップ5:出力をレンダリングする&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; changelog&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; render&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --package&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;pk&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;g&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;これにより、台帳からパッケージごとの&lt;code&gt;CHANGELOG.md&lt;/code&gt;ファイルが生成されます。変更履歴は派生成果物です ―― 削除しても、元の台帳から完璧に再生成されます。&lt;/p&gt;
&lt;h2 id=&quot;意思決定レコードの構造&quot;&gt;意思決定レコードの構造&lt;/h2&gt;
&lt;p&gt;抽出された意思決定は、豊富なメタデータを持つYAMLファイルになります:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;DEC-PL-142&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Adopt DuckDB as Canonical Processing Runtime for Pipeline Stages&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;domain&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;pipeline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;status&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;active&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;created&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;2026-01-26&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;summary&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  Establishes DuckDB as the canonical in-process analytical database for pipeline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  stage transformations. Provides a shared runtime module that resolves settings&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  from pipeline defaults with stage-level overrides.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;context&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  Pipeline stages performing data transformations each independently configured&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  DuckDB connections. This led to inconsistent settings, duplicated configuration&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  code, and no way to tune DuckDB globally for a pipeline run.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;rationale&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;DuckDB provides efficient in-process OLAP with zero configuration deployment&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Centralized runtime module eliminates duplicated DuckDB setup across stages&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Hierarchical settings enable global tuning with stage-level overrides&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Memory limits and thread counts can be adjusted per-pipeline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;impact&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  positive&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Consistent DuckDB configuration across all pipeline stages&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Single point of control for memory/thread tuning&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Reduced code duplication in conversion and export stages&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  negative&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Adds dependency on shared runtime module&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Stages must adopt new configuration pattern&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;source_commits&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;sha&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;90571786d99166c0039ca2e80e4d9cd96184bd85&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    message&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;feat(canonical): add DuckDB runtime for pipeline stages&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    date&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;2026-01-26&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    role&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;primary&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;files&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;packages/canonical/pipelines/stages/duckdb_runtime.py&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;packages/canonical/pipelines/runner.py&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;packages/canonical/pipelines/stages/convert_hdx_admin_boundaries_to_geoparquet.py&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;related&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;DEC-DA-014&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;  # Data architecture decisions that influenced this&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;すべての意思決定は、元となったコミットへリンクバックしています。すべての意思決定は、どのファイルに影響するかを明記しています。意思決定同士の関係も明示的です。&lt;/p&gt;
&lt;h2 id=&quot;cliとの統合組織の記憶へのクエリ&quot;&gt;CLIとの統合:組織の記憶へのクエリ&lt;/h2&gt;
&lt;p&gt;ここでループが閉じます。エージェントはCLIを通じて意思決定にクエリを投げられます:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Search by topic&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --query&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;retry&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;リトライロジック、エラーハンドリング、リカバリーパターンに関する意思決定を返します。&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Get full details on a specific decision&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; info&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; DEC-PL-142&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;コンテキスト、根拠、影響を含む完全な意思決定レコードを返します。&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# List recent decisions for context&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --limit&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 15&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最近どのようなアーキテクチャ上の選択が行われたかを表示します。&lt;/p&gt;
&lt;h3 id=&quot;エージェントはこれをどう使うか&quot;&gt;エージェントはこれをどう使うか&lt;/h3&gt;
&lt;p&gt;私たちのオーケストレーターのベースライン指示には、次のような内容が含まれています:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;markdown&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8;font-weight:bold&quot;&gt;**Essential CLI commands:**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; `orkestra registry decisions search &quot;X&quot;`&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; — Find architectural decisions&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;エージェントがDuckDBに関連する何かの実装を依頼されたとき、まず次のように確認できます:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --query&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;DuckDB&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;そしてDEC-PL-142を発見し、次のことを学びます:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;なぜDuckDBを選んだのか(コンテキスト)&lt;/li&gt;
&lt;li&gt;正しい使い方(agent_guidance)&lt;/li&gt;
&lt;li&gt;どのファイルを見ればよいか(files)&lt;/li&gt;
&lt;li&gt;どんな関連する意思決定が存在するか(related)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;エージェントは車輪の再発明をしません。確立されたパターンの上に積み上げていきます。&lt;/p&gt;
&lt;h2 id=&quot;3つの質問テスト&quot;&gt;3つの質問テスト&lt;/h2&gt;
&lt;p&gt;すべてのコミットが意思決定レコードに値するわけではありません。私たちは3つの質問テストでふるいにかけています:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;判断が難しかったか?&lt;/strong&gt; 大きな分析、トレードオフの検討、あるいは議論を要したか?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;変更のコストは高いか?&lt;/strong&gt; この決定を覆すには大幅な作り直しが必要か?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;システム全体に影響するか?&lt;/strong&gt; 複数のパッケージに影響を与えるか、他が従うことになるパターンを確立するか?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;これらの質問のうち少なくとも1つに「はい」と答えられるコミットは、意思決定抽出の候補になります。私たちの典型的な割合は、100コミットあたり1〜4件の意思決定(約1〜4%)です。&lt;/p&gt;
&lt;p&gt;変更履歴のエントリについては、基準はもっと低めです。ユーザーに見える変更(機能、修正、改善)であれば何でも記録されます。内部的な雑務、ドキュメント更新、リファクタリングは通常スキップされます。私たちの典型的な割合は、100コミットあたり30〜50件の変更履歴エントリです。&lt;/p&gt;
&lt;h2 id=&quot;データストレージ追記専用台帳&quot;&gt;データストレージ:追記専用台帳&lt;/h2&gt;
&lt;p&gt;マイニングシステムは、マルチエージェントによる運用で競合が起きないよう、追記専用のJSONL台帳を使用します:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;packages/orchestration/ai_assets/reference/changelog/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── commits_processed.jsonl  # Classification ledger (both domains)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── release_notes.jsonl      # Changelog entries&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── commits_index.yaml       # Derived index (gitignored)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;packages/orchestration/ai_assets/reference/decisions/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── registry.yaml            # Decision index&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── records/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ├── DEC-AD-001.yaml&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ├── DEC-AD-002.yaml&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    └── ...&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;.gitattributes&lt;/code&gt;における&lt;code&gt;merge=union&lt;/code&gt;を伴うJSONL形式のおかげで、複数のエージェントがマージコンフリクトを起こすことなく同時にコミットを分類できます。各行は独立しています。&lt;/p&gt;
&lt;h2 id=&quot;バリデーションゲート&quot;&gt;バリデーションゲート&lt;/h2&gt;
&lt;p&gt;マイニングセッションを行う前には、必ずバリデーションを実行します:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; validate&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --quick&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;これは次を確認します:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SHA形式の妥当性&lt;/li&gt;
&lt;li&gt;意思決定IDの形式準拠&lt;/li&gt;
&lt;li&gt;同一SHAに対する重複エントリがないこと&lt;/li&gt;
&lt;li&gt;参照されている意思決定が実際に存在すること&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;分類後、変更をコミットする前にもう一度バリデーションを行います。&lt;/p&gt;
&lt;h2 id=&quot;これが重要な理由&quot;&gt;これが重要な理由&lt;/h2&gt;
&lt;p&gt;私たちが構築したフィードバックループは、いくつかの問題を解決します:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;新しいチームメンバーにとって:&lt;/strong&gt; 「なぜXをしたのか?」と尋ねる代わりに、意思決定レジストリを検索できます。コンテキストは保存されています。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AIエージェントにとって:&lt;/strong&gt; 真空の中で動作しているわけではありません。提案を行う前に、組織的な知識にクエリを投げられます。新しいパイプラインステージの追加を依頼されたとき、DuckDBのパターンを発見し、それに従うことができます。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;アーキテクチャの一貫性にとって:&lt;/strong&gt; 意思決定は明示的で検索可能です。誰かが既存の意思決定と矛盾するアプローチを提案したとき、システムはその衝突を表面化できます。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;変更履歴の生成にとって:&lt;/strong&gt; リリースノートは土壇場でのドタバタ作業ではなくなります。開発中に継続的に行われる分類の副産物になるのです。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;オンボーディングにとって:&lt;/strong&gt; 新しいエージェントは、コードベースの完全なコンテキストを引き継ぎます。コードを見るだけでなく、それを形作った意思決定も見ることになります。&lt;/p&gt;
&lt;h2 id=&quot;現在の状態&quot;&gt;現在の状態&lt;/h2&gt;
&lt;p&gt;現時点で:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;15,637件のコミット&lt;/strong&gt;がパイプラインで処理済み&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;476件のアーキテクチャ上の意思決定&lt;/strong&gt;が抽出・文書化済み&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;6,799件の変更履歴エントリ&lt;/strong&gt;が記録済み&lt;/li&gt;
&lt;li&gt;両ドメインにわたる&lt;strong&gt;100%のカバレッジ&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;開始以来のすべてのコミットが分類済みです。組織の記憶は完全であり、クエリ可能です。&lt;/p&gt;
&lt;h2 id=&quot;はじめに&quot;&gt;はじめに&lt;/h2&gt;
&lt;p&gt;同様の仕組みを実装したい場合:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;まずConventional Commitsから始める。&lt;/strong&gt; マイニングパイプラインは、コミットに構造化されたプレフィックス(&lt;code&gt;feat:&lt;/code&gt;、&lt;code&gt;fix:&lt;/code&gt;、&lt;code&gt;chore:&lt;/code&gt;)がある場合に最もよく機能します。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;ドメインを定義する。&lt;/strong&gt; 私たちは&lt;code&gt;pipeline&lt;/code&gt;、&lt;code&gt;agent-design&lt;/code&gt;、&lt;code&gt;observability&lt;/code&gt;、&lt;code&gt;data-modeling&lt;/code&gt;のようなドメインを使っています。これらは意思決定を領域別に整理します。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;分類する習慣を作る。&lt;/strong&gt; マイニングは、チームが定期的にコミットを分類することで機能します。LLMの支援によるバッチ処理はスケールを助けます。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;意思決定をクエリ可能にする。&lt;/strong&gt; エージェントがCLI経由で意思決定を検索できるようになると、価値は複利的に積み上がります。出力を機械が消費しやすい形に構造化しましょう。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;ループを閉じる。&lt;/strong&gt; 意思決定は今後の作業に影響を与えるべきです。エージェントへの指示やコードレビューのチェックリストに、意思決定への参照を含めましょう。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;目標は完璧なドキュメントを作ることではありません。変更の背後にある&lt;em&gt;理由&lt;/em&gt;を、今日も半年後も、人間とAIの双方がアクセスできるようにすることです。変更が組織の記憶になるとき、チームは再発明するのではなく、確立されたパターンの上に積み上げていけるようになります。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;マイニングワークフローは、私たちのオーケストレーションエンジンの一部であり、具体的にはオーケストレーションパッケージ内のコンテキストエンジンモジュールに含まれています。&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>Architecture</category><category>Workflows</category></item><item><title>スキルマイニング:3,500の候補から466の能力へ</title><link>https://maguyva.ai/ja/blog/skill-mining-3500-and-counting</link><guid isPermaLink="true">https://maguyva.ai/ja/blog/skill-mining-3500-and-counting</guid><description>私たちは3,500件のスキル候補を審査し、466個を採用しました。一貫性のあるAIエージェントのスキルライブラリを大規模に構築するための、体系的なマイニングと取り込みのループです。</description><pubDate>Tue, 27 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;この記事の数値は公開時点(2026年1月)のシステムを反映しています。最新の数値は&lt;a href=&quot;https://maguyva.ai/ja/team&quot;&gt;チームページ&lt;/a&gt;をご覧ください。&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;3500スキル問題&quot;&gt;3,500スキル問題&lt;/h2&gt;
&lt;p&gt;エージェントオーケストレーションシステムの構築を始めたとき、私たちは興味深い課題に直面しました。AIエコシステム全体に、何千もの潜在的なスキルが散らばっているのです。GitHubのリポジトリ、ベンダーのドキュメント、コミュニティのプロジェクト、社内のパターン ―― スキルはあらゆる場所に存在します。しかしどれが重要なのか? どれが機能するのか? そして、エージェントが実際に使える一貫性のあるスキルライブラリを、どうやって維持すればいいのか?&lt;/p&gt;
&lt;p&gt;私たちの答えは、体系的なマイニングと取り込みのループです。&lt;/p&gt;
&lt;h2 id=&quot;今日の数字&quot;&gt;今日の数字&lt;/h2&gt;
&lt;p&gt;Anthropicが2025年10月16日にAgent Skillsをローンチしてから3か月あまり。この記事が公開された2026年1月27日時点での、私たちの立ち位置は次の通りです:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;指標&lt;/th&gt;
&lt;th&gt;数&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;識別された候補&lt;/td&gt;
&lt;td&gt;3,500以上&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;採用したスキル&lt;/td&gt;
&lt;td&gt;466&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ベンダースキル&lt;/td&gt;
&lt;td&gt;373&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;社内スキル&lt;/td&gt;
&lt;td&gt;93&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;アクティブなベンダー&lt;/td&gt;
&lt;td&gt;25以上&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;スキルあたりの平均トークン数&lt;/td&gt;
&lt;td&gt;2,834&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;参照されているツール&lt;/td&gt;
&lt;td&gt;89&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ユニークなタグ&lt;/td&gt;
&lt;td&gt;635&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;私たちは3,500件を超えるスキル候補をレビューしてきました。そして466個を採用しました。採用率にして13% ―― この選別の厳しさは意図的なものです。&lt;/p&gt;
&lt;h2 id=&quot;ナレッジティアシステム&quot;&gt;ナレッジティアシステム&lt;/h2&gt;
&lt;p&gt;すべてのスキルが平等に作られているわけではありません。私たちはそれらを、それぞれ異なる適用範囲を表す5つのナレッジレイヤー(K0〜K4)に整理しています:&lt;/p&gt;
&lt;h3 id=&quot;k0基盤普遍的&quot;&gt;K0:基盤(普遍的)&lt;/h3&gt;
&lt;p&gt;すべてのエージェントが持つべきスキルです。これらは、どこでも通用する「優れた思考者」としての能力を表しています。&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;foundations/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── test-first-discipline       # TDD: Red-Green-Refactor&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── evidence-based-completion   # Verify before claiming done&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── systematic-debugging        # Root cause methodology&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── structured-planning         # Break work into tasks&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── context-budget-awareness    # Manage token consumption&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;K0のスキルは、どんなプロジェクト、どんなドメイン、どんなスタックにも持ち運べます。普遍的な認知パターンを体現しているからです。&lt;/p&gt;
&lt;h3 id=&quot;k1アイデンティティ専門分野&quot;&gt;K1:アイデンティティ(専門分野)&lt;/h3&gt;
&lt;p&gt;「優れたエンジニア」や「優れたリサーチャー」としての、ある専門分野内のプロジェクト全体に当てはまるスキルです。&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;identities/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── research-workflows          # Multi-source research&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── web-extraction-playbook     # Content extraction&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── code-review                 # PR review patterns&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── cli-interface-standards     # CLI design patterns&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;k2ドメイン専門知識&quot;&gt;K2:ドメイン(専門知識)&lt;/h3&gt;
&lt;p&gt;「優れたデータベース専門家」や「優れたセキュリティエンジニア」としての、ある分野内で持ち運べるスキルです。&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;domains/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── schema-migration-workflow   # Safe migration patterns&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── rpc-validation-checklist    # RPC health checks&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── auth-validation-checklist   # JWT/OAuth patterns&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── secrets-audit-checklist     # Credential scanning&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;k3スタック技術&quot;&gt;K3:スタック(技術)&lt;/h3&gt;
&lt;p&gt;「優れたSupabaseユーザー」や「優れたCloudflare開発者」としての、特定の技術スタックに特化したスキルです。&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;stacks/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── maguyva-quickstart          # Our semantic search patterns&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── cloudflare-deployment       # Workers/Pages deployment&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── mcp-tool-best-practices     # MCP tool selection&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;k4プロジェクト組織&quot;&gt;K4:プロジェクト(組織)&lt;/h3&gt;
&lt;p&gt;私たちの組織とワークフローに固有のスキルです。&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;project/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── agent-creation-workflow     # How we build agents&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── skill-authoring-workflow    # How we write skills&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── mining-session-workflow     # This very process&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── vendor-skill-evaluation     # Evaluation rubrics&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;マイニングループ&quot;&gt;マイニングループ&lt;/h2&gt;
&lt;h3 id=&quot;フェーズ1発見&quot;&gt;フェーズ1:発見&lt;/h3&gt;
&lt;p&gt;スキルはあらゆる場所からやってきます:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ベンダーリポジトリ&lt;/strong&gt;:AWS、Anthropic、Cloudflare、Supabase、そしてコミュニティの貢献者たちが、スキル集を公開しています。私たちは25以上のベンダーのルートを追跡しています。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;コミュニティプロジェクト&lt;/strong&gt;:GitHubには、Claude Codeのテンプレート、エージェントパターン、ワークフロー定義があふれています。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;社内パターン&lt;/strong&gt;:私たちのチームが問題を解決していく中で、パターンが浮かび上がってきます。それらはスキルとして形式化されます。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ドキュメントマイニング&lt;/strong&gt;:技術ドキュメントには、手順、チェックリスト、意思決定ツリーといった暗黙のスキルが含まれていることがよくあります。&lt;/p&gt;
&lt;p&gt;発見は継続的なプロセスです。正式な評価の前に候補を追跡するため、スキルのバックログを使っています。&lt;/p&gt;
&lt;h3 id=&quot;フェーズ2評価&quot;&gt;フェーズ2:評価&lt;/h3&gt;
&lt;p&gt;すべての候補は、同じルーブリックを通過します:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;adoption_criteria&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;fills_real_gap&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;      # We lack this capability&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;well_structured&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;     # Progressive disclosure&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;actively_maintained&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt; # Commits in last 6 months&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;portable&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;            # Not hyper-specific&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;tested&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;              # Evidence of usage&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;5つのプロダクト基準すべてに合格しなければなりません。これが、候補の87%が却下される理由です。&lt;/p&gt;
&lt;p&gt;その上で、すべての候補は別途トラストレビューを通過します。私たちは、公式のベンダーリポジトリ、よく知られたコミュニティメンテナー、そして素性のわからないGitHubリポジトリを、同等の信頼できる情報源としては扱いません。&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;trust_review&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  vendor_credibility&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;ownership_verified&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;       # Official vendor, known maintainer, or internal source&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;maintenance_signal&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;       # Recent commits, issue response, release history&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;adoption_signal&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;          # Evidence of real use, stars alone are not enough&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;provenance_clear&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;         # We can trace where the skill came from&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  prompt_injection_scan&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;hidden_instruction_check&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt; # Buried &quot;ignore previous instructions&quot; patterns&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;exfiltration_check&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;       # Prompts that try to leak files, secrets, or context&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;authority_check&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;          # Claims of priority over system or developer rules&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  script_audit&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;inspect_scripts&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;          # Read shell/python/js helpers before adoption&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;network_and_exec_review&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;  # curl|bash, remote downloads, subprocess execution&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;file_and_secret_review&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;   # Env vars, credential access, broad file writes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;destructive_action_check&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt; # rm, reset, overwrite, or unsafe automation&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;信頼できるベンダーは、より軽めの来歴レビューで済みますが、無条件で通過するわけではありません。信頼できない、あるいは未知の情報源は、より深い手動監査を受けます。同梱されたスクリプトは、読み込み、スコープを確認し、安全であると分類されるまでは実行しません。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ギャップ分析&lt;/strong&gt;:採用する前に、私たちのレジストリを検索します:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; skills&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;&amp;lt;capability&amp;gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;すでに持っているなら、必要ありません。近いものを持っているなら、採用ではなく統合するかもしれません。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;深さと標準のスコアリング&lt;/strong&gt;:候補がエージェントスキルモデルをどれだけ十分に活用しているかもスコアリングします。単独の&lt;code&gt;SKILL.md&lt;/code&gt;でも有用なことはありますが、&lt;code&gt;agentskills.io&lt;/code&gt;が推奨する形で指示を参照・スクリプト・アセットから分離しているような、より深いスキルの方が価値が高くなります。&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;skill_depth&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;level_1&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;SKILL.md only&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;                     # Single instruction file&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;level_2&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;SKILL.md + strong description&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;     # Clear triggers and scope&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;level_3&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;adds references/&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;                  # Load docs only when needed&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;level_4&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;adds atomic scripts/&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;              # Small, reviewable helpers&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;level_5&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;adds assets/examples/templates&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;    # Full progressive disclosure&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;depth_signals&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;standards_adherence&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;        # Structure aligns with agentskills.io conventions&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;reference_quality&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;          # Curated references, not giant context dumps&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;script_atomicity&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;           # Focused helpers, not opaque monoliths&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;tool_boundary_clarity&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;      # Clear limits on what the skill can execute&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;community_signal&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;           # Stars/forks/users help, but only as a weak boost&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;GitHubのスター数は信頼性スコアを多少押し上げることはありますが、浅い、あるいは安全でないスキルを救うことは決してありません。あいまいな&lt;code&gt;SKILL.md&lt;/code&gt;が1つだけで不透明なスクリプトを含む高スター数のリポジトリは、正確な説明、厳選された&lt;code&gt;references/&lt;/code&gt;、そしてスキルの能力を実際に活かすアトミックなヘルパーを持つ、より小さなリポジトリよりも低いスコアになります。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;構造分析&lt;/strong&gt;:スキルの品質を確認します:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;wc&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -l&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; vendor/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;rep&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;o&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;skil&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;/SKILL.md&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;  # Size check&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;ls&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; vendor/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;rep&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;o&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;skil&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;/scripts/&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;     # Supporting files&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;ls&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; vendor/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;rep&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;o&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;skil&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;/references/&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;  # Bundled docs&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;候補にスクリプトが含まれている場合、レビューはより厳格になります。優れたスキルは有用であるだけでは足りません。読みやすく、境界が明確で、エージェントに渡しても安全でなければなりません。この安全性フィルタだけで、他の点では興味深い候補のかなりの割合が失格になります。&lt;/p&gt;
&lt;h3 id=&quot;フェーズ3取り込み&quot;&gt;フェーズ3:取り込み&lt;/h3&gt;
&lt;p&gt;スキルが評価を通過すると、レジストリに加わります。しかしスキルがそのままの形で採用されることは決してありません。私たちのシステムに合わせて修正されます。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;採用時の修正内容:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;メタデータの正規化&lt;/strong&gt;:すべてのスキルに私たちのフロントマタースキーマを適用する&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kティアの割り当て&lt;/strong&gt;:スキルを適切なナレッジレイヤーへ配置する&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;タグの拡充&lt;/strong&gt;:発見しやすくするためタグを追加する&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ツール宣言&lt;/strong&gt;:許可されたツールを明示的に宣言する&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;セクションの整合&lt;/strong&gt;:コンテンツを私たちのテンプレートに合わせて再構成する&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;取り込み後の典型的なスキルYAMLです:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;metadata&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  identifier&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor-skill-evaluation&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  name&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor-skill-evaluation&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  description&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Systematic evaluation of vendor skills for adoption.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  type&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;workflow&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  layer&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;K4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  semantic_folder&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;project&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  source&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;core&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  last_updated&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;2026-01-17&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  tags&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;agents&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;meta&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;skill-adoption&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  allowed_tools&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Bash&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Read&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Write&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Edit&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Grep&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Glob&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Task&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;フェーズ4スコープの割り当て&quot;&gt;フェーズ4:スコープの割り当て&lt;/h3&gt;
&lt;p&gt;スキルはスコープ ―― どのエージェントがどのスキルを読み込むかを決めるカテゴリー ―― に割り当てられます:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;scopes&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  database&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    primary_skills&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;domains/schema-migration-workflow&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;domains/rpc-validation-checklist&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor/supabase/supabase-database&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor/supabase/supabase-auth&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  research&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    primary_skills&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;identities/research-workflows&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;identities/web-extraction-playbook&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;identities/dataset-discovery-quickstart&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;エージェントは自分のスコープを宣言し、スキルは自動的に割り当てられます:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Agent definition&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;scopes&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;database&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;research&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Gets: all database skills + all research skills + universal skills&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;フェーズ5実体化&quot;&gt;フェーズ5:実体化&lt;/h3&gt;
&lt;p&gt;本番環境では、スキルはYAMLのまま存在しているわけではありません。Claude Codeが読み込めるSKILL.mdファイルへとレンダリングされます:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; sync&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;このコマンドは:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;すべてのスキルYAML定義を読み込む&lt;/li&gt;
&lt;li&gt;Jinjaテンプレートを通じてそれらをレンダリングする&lt;/li&gt;
&lt;li&gt;SKILL.mdファイルを&lt;code&gt;.claude/skills/&lt;/code&gt;へ書き出す&lt;/li&gt;
&lt;li&gt;Kティア別(foundations/、identities/、domains/、stacks/、project/)に整理する&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;最終的な出力構造です:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;.claude/skills/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── foundations/     # K0: Universal&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── identities/      # K1: Discipline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── domains/         # K2: Subject&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── stacks/          # K3: Technology&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── project/         # K4: Organization&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── vendor/          # External skills&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;休眠スコープパターン&quot;&gt;休眠スコープパターン&lt;/h2&gt;
&lt;p&gt;私たちの最も強力なパターンの1つが、「採用済みだが読み込まれていない」スキルです。私たちはこれを休眠スコープと呼んでいます。&lt;/p&gt;
&lt;p&gt;k-dense-scientificリポジトリ由来の科学計算スキルを考えてみましょう。私たちは、バイオインフォマティクス、化学、量子コンピューティング、臨床情報学をカバーする120以上のスキルを採用しています。しかし私たちのエージェントのほとんどは、分子ドッキングや遺伝子発現解析を必要としません。&lt;/p&gt;
&lt;p&gt;120個すべてのスキルをすべてのエージェントに読み込ませてコンテキストウィンドウを肥大化させる代わりに、私たちは次を行います:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;特定のスコープ(例:&lt;code&gt;bioinformatics&lt;/code&gt;)付きでスキルを&lt;strong&gt;採用する&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;登録はされているが読み込まれていない、&lt;strong&gt;休眠&lt;/strong&gt;状態に保つ&lt;/li&gt;
&lt;li&gt;エージェントがそのスコープを宣言したときにのみ&lt;strong&gt;有効化する&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# In scopes.yaml - dormant scope&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;bioinformatics&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  description&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Bioinformatics and genomics&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  primary_skills&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: []  &lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Empty - skills exist but aren&apos;t loaded&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# When an agent needs bioinformatics:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Agent YAML&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;scopes&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;research&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;bioinformatics&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]  &lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Now loads bioinformatics skills&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;このパターンによって、レジストリには466個のスキルを持ちながら、典型的なエージェントはそのうち関連する40〜60個だけを読み込む、ということが可能になっています。&lt;/p&gt;
&lt;h2 id=&quot;スキルの種類&quot;&gt;スキルの種類&lt;/h2&gt;
&lt;p&gt;スキルには3つの認知パターンがあります:&lt;/p&gt;
&lt;h3 id=&quot;ワークフロー&quot;&gt;ワークフロー&lt;/h3&gt;
&lt;p&gt;順序立った手続き的なステップです。「1. Xをする、2. 次にYをする、3. 最後にZをする」&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;workflow&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Examples: schema-migration-workflow, mining-session-workflow&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;規律&quot;&gt;規律&lt;/h3&gt;
&lt;p&gt;振る舞いのガードレールです。「常にXせよ」「決してYするな」「Zを優先せよ」&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;discipline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Examples: test-first-discipline, evidence-based-completion&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;チェックリスト&quot;&gt;チェックリスト&lt;/h3&gt;
&lt;p&gt;検証基準です。「Xを確認せよ」「Yを検証せよ」「Zをチェックせよ」&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;checklist&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Examples: auth-validation-checklist, secrets-audit-checklist&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;品質ゲート&quot;&gt;品質ゲート&lt;/h2&gt;
&lt;p&gt;すべてのスキルは、出荷前にバリデーションを通過しなければなりません:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;validation&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  file_exists&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;           # Skill file at declared path&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  frontmatter_valid&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;     # Frontmatter parses correctly&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  sections_complete&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;     # Expected sections present&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  tools_registered&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;      # Declared tools exist in registry&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;説明文は、Claude Codeがいつ提案すればよいかを判断できるよう、トリガーフレーズ(「Use when…」「When you need…」)を含む50〜400文字でなければなりません。&lt;/p&gt;
&lt;p&gt;私たちは継続的に検証しています:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; validate&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --show-warnings&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;ベンダーエコシステム&quot;&gt;ベンダーエコシステム&lt;/h2&gt;
&lt;p&gt;私たちの373個のベンダースキルは、次から来ています:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;プロバイダー&lt;/th&gt;
&lt;th&gt;スキル数&lt;/th&gt;
&lt;th&gt;ドメイン&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AWS Agent&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;クラウドサービス&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Anthropic&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;ドキュメント生成&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloudflare&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;エッジコンピューティング&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Supabase&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;データベース&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;k-dense&lt;/td&gt;
&lt;td&gt;100+&lt;/td&gt;
&lt;td&gt;科学計算&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;silvainfm&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;データサイエンス&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Java Developer Kit&lt;/td&gt;
&lt;td&gt;45+&lt;/td&gt;
&lt;td&gt;Spring/Java&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vercel&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;ブラウザ自動化&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;各ベンダーのルートはmetadata.yamlで宣言されます:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;vendor_roots&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor/aws-agent-skills&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    provider&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;aws&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor/k-dense-scientific/scientific-skills&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    provider&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;k-dense&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor/supabase-skills&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    provider&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;supabase&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;orkestra sync&lt;/code&gt;が実行されると、ベンダースキルはそれぞれのプロバイダー名前空間つきで&lt;code&gt;.claude/skills/vendor/&lt;/code&gt;へシンボリックリンクされます。&lt;/p&gt;
&lt;h2 id=&quot;私たちが学んだこと&quot;&gt;私たちが学んだこと&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;選別の厳しさは報われる。&lt;/strong&gt; 有用そうに見えるものすべてを採用したくなる誘惑はあります。しかしどのスキルにもトークンのコストがかかります。スキルあたり平均2,834トークンともなれば、肥大化はすぐに痛手になります。13%という採用率が、エージェントを軽量に保っています。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;構造が発見を可能にする。&lt;/strong&gt; Kティアシステムは単なる整理ではなく、持ち運びやすさに関わるものです。K0のスキルはどこでも再利用できます。K4のスキルは意図的にプロジェクト固有です。この明確さが、人間とエージェントの双方が必要なものを見つける助けになります。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;休眠スコープはスケールする。&lt;/strong&gt; すべてを読み込ませることなく、何百ものスキルを採用できます。スコープによって、個々のエージェントのコンテキストウィンドウを扱いやすいサイズに保ちながら、包括的なレジストリを構築できます。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;採用時の修正は不可欠である。&lt;/strong&gt; 生のままのベンダースキルが、自分たちのシステムに合うことはめったにありません。メタデータの追加、ティアの割り当て、タグの拡充といった取り込みプロセスが、外部のスキルを社内で機能させます。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;マイニングは継続的である。&lt;/strong&gt; 3,500という数字は増え続けています。新しいベンダーリポジトリが現れます。コミュニティのパターンが生まれます。社内のワークフローが固まっていきます。このループが止まることはありません。&lt;/p&gt;
&lt;h2 id=&quot;次にやること&quot;&gt;次にやること&lt;/h2&gt;
&lt;p&gt;私たちはいくつかの改善に取り組んでいます:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;自動ギャップ検出&lt;/strong&gt;:未採用のスキルによってよくあるエージェントの失敗が解決できそうな場合にアラートを出す&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;スキルの非推奨化ワークフロー&lt;/strong&gt;:置き換えられた、あるいは使われていないスキルを引退させるための正式なプロセス&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;スキル間の依存関係&lt;/strong&gt;:スキルの前提条件を明示的に宣言する&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;利用状況の分析&lt;/strong&gt;:エージェントが実際に呼び出しているスキルと、単に読み込んでいるだけのスキルを追跡する&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;スキルマイニングループはインフラです。華やかではありません。しかしこれこそが、41体のエージェントが466個の能力とともに、コンテキストの上限内に収まりながら一貫して機能する理由です。&lt;/p&gt;
&lt;p&gt;これが、3,500が466になった経緯です。3,000を無視したのではなく、体系的に評価し、機能するものだけを採用した結果です。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;スキルシステムの実際の動きを見てみたいですか? &lt;code&gt;uv run orkestra skills list&lt;/code&gt;をチェックして、私たちの現在のレジストリを探索してみてください。&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>Architecture</category><category>Skills</category></item><item><title>プログレッシブディスクロージャー:エージェントシステムを覗き込むCLIという窓</title><link>https://maguyva.ai/ja/blog/progressive-disclosure-cli-into-agents</link><guid isPermaLink="true">https://maguyva.ai/ja/blog/progressive-disclosure-cli-into-agents</guid><description>エージェントシステムは、デフォルトでは不透明です。プログレッシブディスクロージャーは、素早いステータス確認からエージェント内部の全容や意思決定のトレースまで、オペレーターに階層化されたCLIビューを提供します。</description><pubDate>Tue, 20 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;この記事の数値は公開時点(2026年1月)のシステムを反映しています。最新の数値は&lt;a href=&quot;https://maguyva.ai/ja/team&quot;&gt;チームページ&lt;/a&gt;をご覧ください。&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;エージェントシステムは、設計上不透明です。意思決定を行い、ツールを呼び出し、数十体の専門エージェントにまたがる作業を調整します。しかし何かがうまくいかないとき ―― あるいは単に今何が起きているのかを理解したいとき ―― どこを見ればよいのでしょうか?&lt;/p&gt;
&lt;p&gt;その答えがプログレッシブディスクロージャーです。必要なときに、必要な分だけ複雑さを見せる、階層化されたインターフェースです。&lt;/p&gt;
&lt;h2 id=&quot;不透明性という問題&quot;&gt;不透明性という問題&lt;/h2&gt;
&lt;p&gt;現代的なエージェントオーケストレーションシステムには、次のようなものが存在するかもしれません:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;それぞれ異なる能力を持つ、40体以上の専門エージェント&lt;/li&gt;
&lt;li&gt;内部の自動化からベンダー連携までにまたがる、700個以上のスキル&lt;/li&gt;
&lt;li&gt;振る舞いを形作る、470件以上のアーキテクチャ上の意思決定&lt;/li&gt;
&lt;li&gt;外部機能を提供する、数十のMCPツールサーバー&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この複雑さは意図的なものです。エージェントは、良い意思決定を下すために、ドメイン知識、コードインテリジェンス、データベーススキーマといった豊富なコンテキストへのアクセスを必要とします。しかしその同じ豊かさが、可視性の問題を生み出します。&lt;/p&gt;
&lt;p&gt;どのエージェントがデータベースマイグレーションを担当しているかを、どうやって知ればいいのでしょうか? どんな意思決定が検索システムのランキングの挙動を形作ったのでしょうか? アーキテクチャアドバイザーはどんなツールにアクセスできるのでしょうか?&lt;/p&gt;
&lt;p&gt;構造化されたアクセス手段がなければ、ソースコードを読むか、ドキュメントが最新であることを祈るしかありません。&lt;/p&gt;
&lt;h2 id=&quot;アーキテクチャとしてのプログレッシブディスクロージャー&quot;&gt;アーキテクチャとしてのプログレッシブディスクロージャー&lt;/h2&gt;
&lt;p&gt;プログレッシブディスクロージャーは、単なるUIパターンではありません。アーキテクチャ上の原則です。情報を、それぞれ前の層より深い階層に整理することで、ユーザーは自分の疑問に答えてくれる階層で立ち止まることができます。&lt;/p&gt;
&lt;p&gt;エージェントシステムにおいて、これは深さを増していくCLIコマンド群として実現されます:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;レベル&lt;/th&gt;
&lt;th&gt;コマンド&lt;/th&gt;
&lt;th&gt;答えてくれる問い&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;code&gt;orkestra system status&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;すべて健全か?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;code&gt;orkestra agents list&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;どんなエージェントが存在するか?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;code&gt;orkestra agents info &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;このエージェントは何をするか?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;code&gt;orkestra decisions search&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;なぜこのように動くのか?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Maguyva MCPツール&lt;/td&gt;
&lt;td&gt;コードを見せて。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;各レベルは、自然な追加の疑問に答えてくれます。いきなりレベル5まで飛ぶ必要はめったにありません。&lt;/p&gt;
&lt;h2 id=&quot;レベル1システムの健全性&quot;&gt;レベル1:システムの健全性&lt;/h2&gt;
&lt;p&gt;最初の問いはいつも同じです。すべて正常に動いているか?&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; system&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; status&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;agents&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;40&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;skills_internal&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;466&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;skills_vendor&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;240&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;skills_total&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;706&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;commands&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;17&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;コマンド1つ。数字4つ。システムが正しく設定され、レジストリにデータが入っていることを知るには、それで十分です。&lt;/p&gt;
&lt;p&gt;エージェント数が予期せず減ったり、スキルの読み込みに失敗したりすれば、まずここで気づきます。ログに潜る必要はありません。&lt;/p&gt;
&lt;h2 id=&quot;レベル2エージェントの棚卸し&quot;&gt;レベル2:エージェントの棚卸し&lt;/h2&gt;
&lt;p&gt;システムが健全だとわかったら、次の問いは「何が使えるか?」です。&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; agents&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;これは構造化データ ―― エージェント名、説明、モデルの優先設定、ドメインのカバー範囲 ―― を返します。出力はデフォルトでJSONなので、&lt;code&gt;jq&lt;/code&gt;へパイプしてフィルタリングするのも簡単です:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; agents&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; jq&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &apos;.agents[] | select(.model == &quot;opus&quot;) | .name&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;データベース関連の作業を扱うエージェントが欲しいですか? searchコマンドで絞り込めます:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; agents&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;database&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;これは名前、説明、能力をスキャンします。40体分のエージェント定義を読まなくても、適切な専門家を見つけられます。&lt;/p&gt;
&lt;h2 id=&quot;レベル3エージェントの深掘り&quot;&gt;レベル3:エージェントの深掘り&lt;/h2&gt;
&lt;p&gt;関係がありそうなエージェントを見つけましたか? &lt;code&gt;info&lt;/code&gt;コマンドがすべてを明らかにします:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; agents&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; info&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; architecture-advisor&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;出力には次が含まれます:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;メタデータ&lt;/strong&gt;:名前、カテゴリー、モデルの優先設定、説明&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ドメイン&lt;/strong&gt;:このエージェントがカバーする知識領域&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;アイデンティティ&lt;/strong&gt;:キャラクター特性(アーキテクト、ストラテジスト、ナレッジアーキテクトなど)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ツールガイド&lt;/strong&gt;:コンテキストに注入されるツールドキュメント&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ツール&lt;/strong&gt;:このエージェントが利用できるMCPツールの完全な一覧&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;実際に表示される内容の一部です:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;metadata&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;architecture-advisor&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;model&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;opus&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;description&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Strategic decision-making and architectural guidance...&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;domains&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    &quot;product&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    &quot;development/architecture&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    &quot;meta/strategy&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;tools&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;mcp_tools&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;      &quot;mcp__maguyva__intelligent_search&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;      &quot;mcp__maguyva__analyze_dependencies&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;      &quot;mcp__supabase__execute_sql&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FDAEB7;font-style:italic&quot;&gt;      ...&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;これにより、そのエージェントが何をできるのかが正確にわかります。ソースコードを読む必要はありません。&lt;/p&gt;
&lt;h2 id=&quot;レベル4意思決定の考古学&quot;&gt;レベル4:意思決定の考古学&lt;/h2&gt;
&lt;p&gt;エージェントは、文書化された意思決定に従って振る舞います。何かが特定の形で動く&lt;em&gt;理由&lt;/em&gt;を理解する必要があるとき、意思決定レジストリが信頼できる情報源になります。&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;agent&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;これにより、一致するアーキテクチャ上の意思決定が返されます:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;results&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;      &quot;id&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;DEC-SR-049&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;      &quot;title&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;AI-Agent-First Defaults with Graph Intelligence&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;      &quot;domain&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;search&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;      &quot;status&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;active&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;それぞれの意思決定には完全な来歴があります ―― いつ下されたのか、なぜか、どんなトレードオフが検討されたのか、どのコミットで実装されたのか:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; info&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; DEC-SR-049&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;id&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;DEC-SR-049&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;title&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;AI-Agent-First Defaults with Graph Intelligence&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;summary&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Changes default values for search tools to AI-agent-optimal behavior...&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;rationale&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    &quot;AI agents work better with pre-ranked, importance-weighted results&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    &quot;Graph metrics already computed by pipeline - leverage them&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    &quot;Community context helps agents understand feature scope in single query&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;source_commits&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;      &quot;sha&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;156a880d05eae295669ef7c194b039023f245511&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;      &quot;message&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;feat(maguyva): enable boost_by_importance...&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;これは、手作業で維持されるのではなくコミットからマイニングされているため、常に最新であり続けるアーキテクチャドキュメントです。&lt;/p&gt;
&lt;h2 id=&quot;レベル5直接的なコードインテリジェンス&quot;&gt;レベル5:直接的なコードインテリジェンス&lt;/h2&gt;
&lt;p&gt;実装に関するメタデータではなく、実際の実装そのものを見る必要があるとき、MaguyvaのMCPツールが直接的なアクセスを提供します。&lt;/p&gt;
&lt;p&gt;エージェントセッションの内部からは:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;mcp__maguyva__intelligent_search&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  query: &quot;agent context loading&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;これは、関連コードを見つけるためにセマンティック検索、テキスト検索、AST検索を自動的に振り分けます。特定のシンボルについては:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;mcp__maguyva__find_symbol&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  symbol_name: &quot;load_agent_context&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;依存関係分析については:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;mcp__maguyva__analyze_dependencies&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  target: &quot;packages/orchestration/core/agents.py&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;これらは単なるgrepの代替品ではありません。グラフを意識し、意味的にインデックス化され、エージェント自身を動かしているのと同じコードインテリジェンスと統合されています。&lt;/p&gt;
&lt;h2 id=&quot;レジストリを横断した統合検索&quot;&gt;レジストリを横断した統合検索&lt;/h2&gt;
&lt;p&gt;どのレジストリに答えがあるのか、わからないこともあります。統合検索はすべてを横断します:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;database&quot;&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --summary&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;query&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;database&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;total&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;254&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;counts&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;agents&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;40&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;skills&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;59&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;decisions&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;476&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;truths&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;packages&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;5つのレジストリにまたがる254件の一致。サマリーが、どこを深掘りすべきかを教えてくれます。詳細な結果が欲しければ&lt;code&gt;--summary&lt;/code&gt;を外し、出力を扱いやすく保ちたければ&lt;code&gt;--limit 5&lt;/code&gt;を加えましょう。&lt;/p&gt;
&lt;h2 id=&quot;これが重要な理由&quot;&gt;これが重要な理由&lt;/h2&gt;
&lt;p&gt;プログレッシブディスクロージャーは、単なる利便性の話ではありません。複雑なシステムとの向き合い方そのものを変えます。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;デバッグが手に負えるものになる。&lt;/strong&gt; エージェントが予期しない意思決定をしたとき、ログをgrepする必要はありません。そのエージェントがどんなツールにアクセスできるか(&lt;code&gt;agents info&lt;/code&gt;)、どんな意思決定がその振る舞いを形作っているか(&lt;code&gt;decisions search&lt;/code&gt;)を確認し、必要なら実装をたどります(&lt;code&gt;intelligent_search&lt;/code&gt;)。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;オンボーディングが加速する。&lt;/strong&gt; 新しいチームメンバーは、コードベース全体を読む必要はありません。&lt;code&gt;system status&lt;/code&gt;から始め、&lt;code&gt;agents list&lt;/code&gt;で探索し、理解できない何かにぶつかったときだけ、より深く掘り下げます。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ドキュメントが常に最新であり続ける。&lt;/strong&gt; CLIはエージェントを構成しているのと同じレジストリから読み込むため、出力は常に正確です。ドキュメントの記述とシステムの実際の挙動の間にズレは生まれません。&lt;/p&gt;
&lt;h2 id=&quot;インターフェースとしてのcli&quot;&gt;インターフェースとしてのCLI&lt;/h2&gt;
&lt;p&gt;Webダッシュボードを構築することもできました。膨大なドキュメントを書くこともできました。その代わりに私たちは、信頼できる情報源から直接読み込むCLIを構築しました。&lt;/p&gt;
&lt;p&gt;CLIには次のような利点があります:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;合成可能&lt;/strong&gt;:出力を&lt;code&gt;jq&lt;/code&gt;へパイプし、スクリプトと統合できる&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;スクリプト化可能&lt;/strong&gt;:チェックを自動化し、レポートを生成できる&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;高速&lt;/strong&gt;:ページ読み込みも認証フローも不要&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;正確&lt;/strong&gt;:キャッシュされた表現ではなく、実際の設定を読み込む&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;見た目より正しさが重要なシステムにおいては、CLIに軍配が上がります。&lt;/p&gt;
&lt;h2 id=&quot;自分たちのプログレッシブディスクロージャーを構築する&quot;&gt;自分たちのプログレッシブディスクロージャーを構築する&lt;/h2&gt;
&lt;p&gt;エージェントシステムを構築しているなら、ユーザーがそれをどう検査するかを考えてみましょう:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;ヘルスチェックから始める。&lt;/strong&gt; すべてが動いているかを教えてくれる1つのコマンド。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;棚卸しビューを提供する。&lt;/strong&gt; 何をするかを説明する前に、何が存在するかを一覧化する。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;狙い撃ちのクエリを可能にする。&lt;/strong&gt; 大規模になれば、検索は閲覧に勝る。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;来歴を公開する。&lt;/strong&gt; ユーザーが意思決定をその起源までたどれるようにする。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;コードインテリジェンスへつなぐ。&lt;/strong&gt; 最終的に、ユーザーは実装そのものを見る必要がある。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;それぞれの層が、追加の疑問に答えます。頻度順に構築しましょう ―― ほとんどのユーザーは層2か3で止まります。層5に到達するのはパワーユーザーだけです。&lt;/p&gt;
&lt;p&gt;目標はすべてを公開することではありません。必要なときに、必要なものだけを、正確に公開することです。それこそが、エージェントアーキテクチャに適用されたプログレッシブディスクロージャーです。&lt;/p&gt;
</content:encoded><category>Architecture</category><category>CLI</category><category>Tooling</category></item><item><title>グラウンドトゥルース: AIエージェントを現実につなぎとめる</title><link>https://maguyva.ai/ja/blog/ground-truths-anchoring-ai-to-reality</link><guid isPermaLink="true">https://maguyva.ai/ja/blog/ground-truths-anchoring-ai-to-reality</guid><description>AIエージェントは自信満々にハルシネーションを起こします。グラウンドトゥルースは、バージョン管理され、スコープが明確な事実であり、エージェントの振る舞いを現実につなぎとめます。私たちがどのようにそれを構築し、運用しているかを紹介します。</description><pubDate>Tue, 13 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;この記事の数値は公開時点(2026年1月)のシステムを反映しています。最新の数値は&lt;a href=&quot;https://maguyva.ai/ja/team&quot;&gt;チームページ&lt;/a&gt;をご覧ください。&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;AIエージェントは驚くほど高い能力を持っています。推論し、統合し、生成することができます。しかし根本的な弱点が1つあります。事実を作り出してしまうのです。悪意からではなく、自信満々に。エージェントは、存在しないAPIパラメータをでっち上げたり、一度も定義されたことのない設定を参照したり、実際のアーキテクチャと矛盾する、学習データ由来のパターンを適用したりすることがあります。&lt;/p&gt;
&lt;p&gt;定番の対策は「エージェントにもっとコンテキストを与える」ことです。しかしコンテキスト自体が矛盾していることもあります。ドキュメントは実装から乖離していきます。コメントは嘘をつきます。コードでさえ、意図を理解せずに読めば誤解を招くことがあります。&lt;/p&gt;
&lt;p&gt;私たちには、もっと明示的な何かが必要でした。無視することも誤解することもできない何か。エージェントを検証可能な現実につなぎとめる何かです。&lt;/p&gt;
&lt;p&gt;私たちはそれをグラウンドトゥルースと呼んでいます。&lt;/p&gt;
&lt;h2 id=&quot;グラウンドトゥルースとは何か&quot;&gt;グラウンドトゥルースとは何か&lt;/h2&gt;
&lt;p&gt;グラウンドトゥルースとは、エージェントが尊重しなければならない、明示的かつバージョン管理された事実の記述です。ドキュメントではありません。コメントでもありません。システムにおける第一級のエンティティであり、次の要素を備えています:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;一意の識別子&lt;/strong&gt;(&lt;code&gt;GT-MAG-015&lt;/code&gt;や&lt;code&gt;GT-MAG-036&lt;/code&gt;のような)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ライフサイクルステータス&lt;/strong&gt;(current、tentative、deprecatedのいずれか)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;スコープ&lt;/strong&gt;(プラットフォーム全体、パッケージ固有、ドメイン限定のいずれか)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;エビデンス&lt;/strong&gt;(その記述を裏付けるファイルパス、URL、参照)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;エージェント向けガイダンス&lt;/strong&gt;(明示的な「すべきこと/避けるべきこと」の指示)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;私たちのコードインテリジェンスプラットフォームMaguyvaからの例を示します:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-015&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  status&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;current&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  scope&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;package&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Fuzzy symbol matching is opt-in via `find_similar=true`.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Default behavior returns empty results for non-existent symbols;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    `exact_match=true` enforces strict matching and disables all fuzzy fallbacks.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  rationale&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Deterministic defaults prevent agents from receiving misleading results.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Typos should fail explicitly rather than silently returning unrelated symbols.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  evidence&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;packages/maguyva/server/src/maguyva/services/code_analysis_service.py&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;packages/maguyva/server/docs/quick_reference/parameters.md&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  last_verified&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;2026-01-25&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  tags&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;product&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;ai_first&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;principle&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;これは文章ではありません。契約です。エージェントがこのグラウンドトゥルースに遭遇したとき、次のことがわかります:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;デフォルトの挙動は決定論的である(あいまいな推測ではなく、空の結果を返す)&lt;/li&gt;
&lt;li&gt;定義済みの挙動を持つ特定のパラメータ(&lt;code&gt;find_similar&lt;/code&gt;、&lt;code&gt;exact_match&lt;/code&gt;)が存在する&lt;/li&gt;
&lt;li&gt;検証可能な特定のファイルにエビデンスが存在する&lt;/li&gt;
&lt;li&gt;この記述は特定の日付に検証済みである&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;グラウンドトゥルースレジストリの構造&quot;&gt;グラウンドトゥルースレジストリの構造&lt;/h2&gt;
&lt;p&gt;グラウンドトゥルースは、&lt;code&gt;ai_assets/reference/ground_truths.yaml&lt;/code&gt;配下のYAMLレジストリに格納されます。各パッケージやドメインは、それぞれ独自のレジストリを持つことができます。その構造は次の通りです:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;metadata&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  title&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Maguyva Ground Truths&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  summary&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Foundational constraints and principles that guide Maguyva.&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  last_updated&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;2026-01-26&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  owner&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;maguyva&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  render&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    include_statuses&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;current&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;tentative&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    show_deprecated&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    groups&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Product Principles&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;        tags&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;product&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;principle&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;brand&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Architecture &amp;amp; Boundaries&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;        tags&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;architecture&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;boundaries&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;cqrs&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;statements&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-001&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    status&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;current&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    scope&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;package&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Maguyva is read-only with respect to user repositories...&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    ...&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;レジストリには、コレクション自体に関するメタデータ、ドキュメント生成のためのレンダー設定、そして記述そのものが含まれます。それぞれの記述は、Pydanticモデルによって検証される厳格なスキーマに従います:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; GroundTruthStatement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;BaseModel&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    status: GTStatus  &lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# current, tentative, deprecated&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    source: GTSource &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; None&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;  # claude-code, orkestra, discipline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    scope: GTScope  &lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# platform, package, domain&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    statement: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    rationale: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; None&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    evidence: list[&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    last_verified: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; None&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    tags: list[&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    agent_guidance: AgentGuidance &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; None&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;エージェントはグラウンドトゥルースにどうアクセスするか&quot;&gt;エージェントはグラウンドトゥルースにどうアクセスするか&lt;/h2&gt;
&lt;p&gt;グラウンドトゥルースは複数のチャネルを通じて公開されています:&lt;/p&gt;
&lt;h3 id=&quot;1-レンダリングされたドキュメント&quot;&gt;1. レンダリングされたドキュメント&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;orkestra sync&lt;/code&gt;コマンドは、YAMLレジストリを読みやすいMarkdownへ変換します:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; sync&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;これにより、エージェントのコンテキストに組み込まれる&lt;code&gt;GROUND_TRUTHS.md&lt;/code&gt;ファイルが生成されます。レンダリングされた出力は、記述をステータスとカテゴリー別にグループ化します:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;markdown&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF;font-weight:bold&quot;&gt;## Current&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF;font-weight:bold&quot;&gt;### Product Principles&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Maguyva is read-only with respect to user repositories... (GT-MAG-001)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Design tool responses for AI agents first... (GT-MAG-009)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF;font-weight:bold&quot;&gt;### Architecture &amp;amp; Boundaries&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Pipeline and Maguyva boundaries are intentional... (GT-MAG-006)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;2-cli検索&quot;&gt;2. CLI検索&lt;/h3&gt;
&lt;p&gt;シェルアクセスを持つエージェントは、グラウンドトゥルースをプログラム的に検索できます:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; truths&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;embedding&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; truths&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --tag&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; security&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; truths&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --status&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; current&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;検索機能は、複数のフィールドにまたがるマッチを重み付きの関連度でスコアリングします:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; truth_fields&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(gt: GroundTruthStatement) -&amp;gt; list[FieldSpec]:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        FieldSpec(&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;id&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;weight&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;values&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;[gt.id]),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        FieldSpec(&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;statement&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;weight&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;values&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;[gt.statement]),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        FieldSpec(&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;rationale&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;weight&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;values&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;[gt.rationale] &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; gt.rationale &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; []),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        FieldSpec(&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;tags&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;weight&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;values&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;gt.tags &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;or&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; []),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        FieldSpec(&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;evidence&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;weight&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;values&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;gt.evidence &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;or&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; []),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    ]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;3-コンテキストの構成&quot;&gt;3. コンテキストの構成&lt;/h3&gt;
&lt;p&gt;エージェントがYAML定義からレンダリングされる際、そのコンテキストはグラウンドトゥルースレジストリを参照できます:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;context_composition&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  domain_knowledge&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;packages/maguyva/ai_assets/reference/ground_truths.yaml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;これにより、エージェントが作業を始める前に、関連するグラウンドトゥルースが確実に読み込まれます。&lt;/p&gt;
&lt;h2 id=&quot;グラウンドトゥルースの分類&quot;&gt;グラウンドトゥルースの分類&lt;/h2&gt;
&lt;p&gt;私たちのレジストリ全体を見渡すと、グラウンドトゥルースはいくつかのパターンにまとまっていきます:&lt;/p&gt;
&lt;h3 id=&quot;プロダクト原則&quot;&gt;プロダクト原則&lt;/h3&gt;
&lt;p&gt;プロダクトが何であり、何でないかについての制約です:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「Maguyvaはユーザーのリポジトリに対して読み取り専用である。再構築不可能な唯一のアセットは、有料の埋め込みキャッシュである。」(GT-MAG-001)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;アーキテクチャの境界&quot;&gt;アーキテクチャの境界&lt;/h3&gt;
&lt;p&gt;責務がどこにあり、なぜそこにあるのかです:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「パイプラインとMaguyvaの境界は意図的なものである。パイプラインは再利用可能であり、Maguyvaはコード固有のロジックを保持し、CQRSはステージの書き込みとサーバーの読み取りを分離する。」(GT-MAG-006)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;ハルシネーション防止ルール&quot;&gt;ハルシネーション防止ルール&lt;/h3&gt;
&lt;p&gt;ツールの契約を、推測ではなく決定論的なものに保つための明示的な規定です:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「あいまいなシンボルマッチングは&lt;code&gt;find_similar=true&lt;/code&gt;を介したオプトインである。デフォルトの挙動は、存在しないシンボルに対して空の結果を返す。&lt;code&gt;exact_match=true&lt;/code&gt;は厳格なマッチングを強制し、あいまいなフォールバックをすべて無効化する。」(GT-MAG-015)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;品質ゲート&quot;&gt;品質ゲート&lt;/h3&gt;
&lt;p&gt;維持されなければならない基準です:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「共有インフラ(post_filters.py、関係抽出器、共有ハンドラー)への変更は、コミット前にフルマニフェスト生成を通じて、サポートするすべての言語に対して検証されなければならない。共有コードに対して単一言語での検証だけでは不十分である。」(GT-MAG-036)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;コードパターン&quot;&gt;コードパターン&lt;/h3&gt;
&lt;p&gt;実装上の要件です:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「非同期コンテキストにおけるCPUバウンドな処理には&lt;code&gt;asyncio.to_thread()&lt;/code&gt;を使用する。非推奨の&lt;code&gt;loop.run_in_executor()&lt;/code&gt;パターンは新規コードで使用してはならない。」(GT-MAG-018)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;グラウンドトゥルースのライフサイクル&quot;&gt;グラウンドトゥルースのライフサイクル&lt;/h2&gt;
&lt;p&gt;グラウンドトゥルースは静的なものではありません。定義されたライフサイクルを通じて進化していきます:&lt;/p&gt;
&lt;h3 id=&quot;tentative暫定&quot;&gt;Tentative(暫定)&lt;/h3&gt;
&lt;p&gt;評価中の、提案された真実です。記述は記録されますが、変更される可能性があります:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-044&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  status&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;tentative&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    get_file with include_metadata=false may still return metadata in the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    response because middleware may re-inject it for AI agent disambiguation.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;current有効&quot;&gt;Current(有効)&lt;/h3&gt;
&lt;p&gt;エージェントが尊重しなければならない、検証済みの真実です。エビデンスは検証済みです:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-017&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  status&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;current&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  last_verified&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;2026-01-26&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  evidence&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;packages/maguyva/server/src/maguyva/services/supabase.py&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;deprecated廃止&quot;&gt;Deprecated(廃止)&lt;/h3&gt;
&lt;p&gt;もはや適用されない真実です。何に置き換えられたかへのポインタとともに、歴史的な参照として保持されます:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-099&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  status&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;deprecated&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  superseded_by&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-015&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  notes&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Replaced when we moved to explicit matching behavior&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;なぜドキュメントだけではだめなのか&quot;&gt;なぜドキュメントだけではだめなのか&lt;/h2&gt;
&lt;p&gt;ドキュメントは異なる目的に奉仕します。説明します。教えます。あいまいであってもよく、「一般的に」や「通常は」といった限定語を使うこともできます。&lt;/p&gt;
&lt;p&gt;グラウンドトゥルースはあいまいであってはなりません。それは断定です。適用されるか、されないかのどちらかです。&lt;/p&gt;
&lt;p&gt;その違いを見てみましょう:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ドキュメント:&lt;/strong&gt; 「APIは、シンボルが見つからない場合、一般的には空の結果を返しますが、設定によってはあいまいマッチングが有効になっている場合もあります。」&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;グラウンドトゥルース:&lt;/strong&gt; 「デフォルトの挙動は、存在しないシンボルに対して空の結果を返す。&lt;code&gt;exact_match=true&lt;/code&gt;は厳格なマッチングを強制し、あいまいなフォールバックをすべて無効化する。」&lt;/p&gt;
&lt;p&gt;前者はシステムを学ぼうとする人間にとって有用です。後者は、判断を下すエージェントにとって実行可能なものです。&lt;/p&gt;
&lt;h2 id=&quot;エージェント向けガイダンスすべきこと避けるべきこと&quot;&gt;エージェント向けガイダンス:すべきこと・避けるべきこと&lt;/h2&gt;
&lt;p&gt;一部のグラウンドトゥルースには、明示的なエージェント向けガイダンスが含まれています:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-022&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Accuracy fixes must happen at extraction time via production code,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    never via validator filters.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  agent_guidance&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    do&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Fix extraction bugs in YAML config, handlers, or tree-sitter queries&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Add test cases at the layer where the fix lives&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    avoid&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Adding validator filters to mask production bugs&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Creating test-only workarounds for extraction issues&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;これによりあいまいさが排除されます。これを読んだエージェントは、何が真実であるかだけでなく、その真実がどのような行動を意味するのかも理解できます。&lt;/p&gt;
&lt;h2 id=&quot;検証とメンテナンス&quot;&gt;検証とメンテナンス&lt;/h2&gt;
&lt;p&gt;グラウンドトゥルースにはメンテナンスが必要です。私たちは次を追跡しています:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;last_verified&lt;/strong&gt;:誰かがその記述が今も成り立っていることを確認した日時&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;evidence&lt;/strong&gt;:その記述を裏付けるファイル(存在確認が可能)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;source&lt;/strong&gt;:その真実がどこから生まれたか(CLIによる調査、アーキテクチャレビュー、インシデント後の学び)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;検証日が古くなっていたり、エビデンスへのリンクが壊れていたりするグラウンドトゥルースは、調査すべきサインです。その真実がまだ有効で再検証が必要なのか、それとも現実が変わってしまいその真実を更新する必要があるのか、どちらかです。&lt;/p&gt;
&lt;h2 id=&quot;本番環境からの実例&quot;&gt;本番環境からの実例&lt;/h2&gt;
&lt;h3 id=&quot;セキュリティ境界&quot;&gt;セキュリティ境界&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-014&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Maguyva queries are search patterns, not executable code.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    SQL injection prevention is handled by PostgREST parameterization;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    application-layer SQL keyword blocking must never be added.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  rationale&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Blocking SQL keywords breaks legitimate code search. Users search FOR&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    code containing patterns like &apos;DROP TABLE&apos;, they don&apos;t execute them.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;このグラウンドトゥルースは、プロダクトを壊してしまうであろう、見当違いの「セキュリティ改善」の一群を未然に防ぎます。&lt;/p&gt;
&lt;h3 id=&quot;抽出時点での精度&quot;&gt;抽出時点での精度&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-022&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Accuracy fixes must happen at extraction time via production code&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    (YAML config, handlers, queries), never via validator filters.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  rationale&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Validator filters only run during tests. They can hide extractor bugs&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    while production responses remain wrong.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;これは痛い経験から生まれたルールです。エージェントは、失敗している言語パックに対して、テストハーネスをより「グリーン」に見せかけるだけのバリデータ限定フィルタを追加してパッチを当てていました。その一方で、実際に稼働しているMaguyvaの抽出器は、依然として誤ったエッジを出力し続けていたのです。このルールは、修正を本来あるべき本物の経路 ―― YAML設定、クエリ、あるいはハンドラー ―― へ強制的に差し戻します。&lt;/p&gt;
&lt;h3 id=&quot;多層フィルタリング&quot;&gt;多層フィルタリング&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-023&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Language engine uses three-tier filtering: external_method_patterns&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    (builtins/stdlib), allowlists (legitimate idioms), and expected_call_targets&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    (validation-time deduplication). Each tier serves a distinct purpose.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  rationale&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Conflating filter purposes leads to either over-filtering (missing real&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    relationships) or under-filtering (noise).&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;これにより、エージェントが誤った場所にフィルタを追加してしまうという、精度の退行を引き起こしがちなよくあるミスを防ぎます。&lt;/p&gt;
&lt;h2 id=&quot;オーケストレーションシステムとの統合&quot;&gt;オーケストレーションシステムとの統合&lt;/h2&gt;
&lt;p&gt;グラウンドトゥルースは、より広いコンテキストシステムにおける1つのレイヤーです:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;アーキテクチャ上の意思決定(ADR)&lt;/strong&gt; ―― なぜアプローチAをBより選んだのかを記録する&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;グラウンドトゥルース&lt;/strong&gt; ―― 今この瞬間、確定的に真実であることを述べる&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ドメインパターン&lt;/strong&gt; ―― 正しい進め方を説明する&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;アンチパターン&lt;/strong&gt; ―― 何を避けるべきか、なぜかを説明する&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;このシステムの中で作業するエージェントは、この4つすべてにアクセスできます。グラウンドトゥルースが事実の錨(いかり)を提供し、意思決定が歴史を説明し、パターンが実装を導き、アンチパターンが落とし穴を警告します。&lt;/p&gt;
&lt;h2 id=&quot;効果の測定&quot;&gt;効果の測定&lt;/h2&gt;
&lt;p&gt;グラウンドトゥルースを導入して以来、私たちは次のような変化を観測しています:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「ハルシネーションによる修正を、さらに修正する」サイクルの減少&lt;/li&gt;
&lt;li&gt;事実が明確なときの、エージェントによるより自信を持った意思決定&lt;/li&gt;
&lt;li&gt;期待値が明示的であることによる、PRレビューの質の向上&lt;/li&gt;
&lt;li&gt;新しいエージェント(そして人間)のオンボーディング時間の短縮&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;グラウンドトゥルースを維持するための投資は、デバッグ時間の削減と、より明確なシステム境界という形で報われます。&lt;/p&gt;
&lt;h2 id=&quot;はじめに&quot;&gt;はじめに&lt;/h2&gt;
&lt;p&gt;あなたのシステムにグラウンドトゥルースを追加するには:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;パッケージの&lt;code&gt;ai_assets/reference/&lt;/code&gt;ディレクトリに&lt;code&gt;ground_truths.yaml&lt;/code&gt;を作成する&lt;/li&gt;
&lt;li&gt;メタデータとレンダー設定を定義する&lt;/li&gt;
&lt;li&gt;スキーマに従って記述を追加する&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uv run orkestra sync&lt;/code&gt;を実行してドキュメントを生成する&lt;/li&gt;
&lt;li&gt;エージェントのコンテキスト構成にレジストリを組み込む&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;もっとも混乱を招く事実や、もっとも頻繁に破られる制約から始めましょう。それらが、あなたにとって最も価値の高いグラウンドトゥルースです。&lt;/p&gt;
&lt;h2 id=&quot;結論&quot;&gt;結論&lt;/h2&gt;
&lt;p&gt;AIエージェントはハルシネーションを起こします。それがその本質です。しかし私たちは、ハルシネーションが制約された環境、特定の事実が交渉の余地なく確定している環境、エージェントが自らの前提を検証済みの現実と照らし合わせて確認できる環境を作ることができます。&lt;/p&gt;
&lt;p&gt;グラウンドトゥルースは完全な解決策ではありません。メンテナンスが必要です。古くなることもあります。開発プロセスにオーバーヘッドを加えます。&lt;/p&gt;
&lt;p&gt;しかし、価値あるものを提供してくれます。人間とエージェントの両方が信頼できる、事実についての共有語彙です。エージェントがソフトウェア開発にますます参加するようになる世界において、その共有された基盤は不可欠なものになっていきます。&lt;/p&gt;
&lt;p&gt;その代替案は、エージェントが自信満々に間違いを犯し、人間がそれを訂正し続けるという終わりのないサイクルです。グラウンドトゥルースは、その訂正を明示的かつ永続的なものにすることで、そのサイクルを断ち切ります。&lt;/p&gt;
&lt;p&gt;あなたのエージェントには、何が真実かを知る資格があります。それを、教えてあげましょう。&lt;/p&gt;
</content:encoded><category>Architecture</category><category>Grounding</category></item><item><title>Orkestra:AIエージェントを大規模にオーケストレーションする</title><link>https://maguyva.ai/ja/blog/orkestra-agent-orchestration</link><guid isPermaLink="true">https://maguyva.ai/ja/blog/orkestra-agent-orchestration</guid><description>1つのオーケストレーターが、それぞれ異なるスキルと記憶を持つ専門AIエージェントへ作業を振り分ける。Orkestraが本番環境で46体のエージェントと466個のスキルをどう調整しているか。</description><pubDate>Tue, 06 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;この記事の数値は公開時点(2026年1月)のシステムを反映しています。最新の数値は&lt;a href=&quot;https://maguyva.ai/ja/team&quot;&gt;チームページ&lt;/a&gt;をご覧ください。&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Claude Codeでの構築を始めたとき、AIコーディングアシスタントを使うあらゆるチームがいずれ直面する問題にぶつかりました。単一のエージェントでは、すべてをうまくこなすことはできないのです。&lt;/p&gt;
&lt;p&gt;エージェントにデータベース専門家であるようプロンプトすることはできます。あるいはセキュリティ監査官として。あるいはフロントエンドエンジニアとして。しかしその3つすべてを同時にこなすよう求めた瞬間、品質は損なわれます。コンテキストは薄まります。指示は衝突します。エージェントは、何をやらせても平凡なジェネラリストになってしまいます。&lt;/p&gt;
&lt;p&gt;そこで私たちはOrkestraを構築しました。&lt;/p&gt;
&lt;h2 id=&quot;orkestraとは何か&quot;&gt;Orkestraとは何か&lt;/h2&gt;
&lt;p&gt;OrkestraはClaude Codeや類似のAIコーディングツール向けのエージェントオーケストレーションシステムです。それぞれ異なる専門知識を持つ複数の専門エージェントを、適切な専門家へ作業を振り分ける単一のオーケストレーターのもとで調整します。&lt;/p&gt;
&lt;p&gt;AIエージェント向けの人材派遣会社だと思ってください。オーケストレーターがタスクを受け取り、どの専門家が担当すべきかを見極め、適切なコンテキストとともに委任します。作業が終わると、結果はオーケストレーターへ戻り、そこで統合されます。&lt;/p&gt;
&lt;p&gt;数字がその実態を物語っています:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;構成要素&lt;/th&gt;
&lt;th&gt;数&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;専門エージェント&lt;/td&gt;
&lt;td&gt;46&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;再利用可能なスキル&lt;/td&gt;
&lt;td&gt;466&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;アイデンティティのアーキタイプ&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;マインドセット&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;コミュニケーションスタイル&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;知識ドメイン&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&quot;キャラクターシステムエージェント版のdd&quot;&gt;キャラクターシステム:エージェント版のD&amp;amp;D&lt;/h2&gt;
&lt;p&gt;Orkestraの中核にある洞察は、エージェントの振る舞いが3つの組み合わせ可能なプリミティブから生まれるということです。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;アイデンティティ&lt;/strong&gt;は、そのエージェントが&lt;em&gt;何であるか&lt;/em&gt;を定義します。アーキテクトはシステム構造を設計します。デバッガーは障害を根本原因までたどります。ガーディアンはコンプライアンスとセキュリティ境界を守ります。私たちには、組み合わせ可能な27のアイデンティティのアーキタイプがあります。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;マインドセット&lt;/strong&gt;は、そのエージェントが&lt;em&gt;どう考えるか&lt;/em&gt;を定義します。分析的なマインドセットは、エビデンスに根ざした主張を行い、不確実性を定量化します。懐疑的なマインドセットは前提を疑い、反証となる証拠を積極的に探します。探索的なマインドセットはあいまいさを受け入れ、複数のアプローチを試みます。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;スタイル&lt;/strong&gt;は、そのエージェントが&lt;em&gt;どうコミュニケートするか&lt;/em&gt;を定義します。技術的なスタイルは、正確な値と具体的なファイルへの参照を含みます。簡潔なスタイルは無駄をそぎ落とし、結論から述べます。外交的なスタイルは正直さと配慮のバランスを取ります。&lt;/p&gt;
&lt;p&gt;エージェントは、これらのプリミティブを組み合わせます:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# architecture-advisor.yaml&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;identity&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;knowledge-architect&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;architect&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;strategist&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;mindset&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;analytical&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;concise&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;この組み合わせは、システムを設計し(アーキテクト)、ドメインをまたいで知識をつなぎ(ナレッジアーキテクト)、戦略的な方向性を定め(ストラテジスト)、エビデンスとデータで考え(分析的)、無駄なく伝える(簡潔)、そんなエージェントを生み出します。&lt;/p&gt;
&lt;p&gt;その力は、組み合わせ爆発にあります。27のアイデンティティ×11のマインドセット×10のスタイルで、およそ3,000通りのエージェント人格が生まれます。しかし、実際に定義するのは自分たちの作業にとって意味のある組み合わせだけです。&lt;/p&gt;
&lt;h2 id=&quot;スキル再利用可能な能力モジュール&quot;&gt;スキル:再利用可能な能力モジュール&lt;/h2&gt;
&lt;p&gt;スキルは、エージェントが呼び出せる知識とワークフローです。スコープに基づく階層システムに従います:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;ティア&lt;/th&gt;
&lt;th&gt;名称&lt;/th&gt;
&lt;th&gt;スコープ&lt;/th&gt;
&lt;th&gt;例&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;K0&lt;/td&gt;
&lt;td&gt;基盤&lt;/td&gt;
&lt;td&gt;普遍的な方法論&lt;/td&gt;
&lt;td&gt;テストファースト規律、エビデンスに基づく完了判断&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K1&lt;/td&gt;
&lt;td&gt;アイデンティティ&lt;/td&gt;
&lt;td&gt;役割ベースのワークフロー&lt;/td&gt;
&lt;td&gt;CLIインターフェース標準、パフォーマンスプレイブック&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K2&lt;/td&gt;
&lt;td&gt;ドメイン&lt;/td&gt;
&lt;td&gt;ドメイン固有の知識&lt;/td&gt;
&lt;td&gt;データベースマイグレーションパターン、認証の検証&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K3&lt;/td&gt;
&lt;td&gt;スタック&lt;/td&gt;
&lt;td&gt;技術固有&lt;/td&gt;
&lt;td&gt;Cloudflareデプロイ、Supabase運用&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K4&lt;/td&gt;
&lt;td&gt;プロジェクト&lt;/td&gt;
&lt;td&gt;このコードベース限定&lt;/td&gt;
&lt;td&gt;プロジェクト固有のワークフローと規約&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;スキルは遅延ロードされます。エージェントは起動時にスキルの名前と説明を目にしますが、実際に発動したときにのみ完全な内容が読み込まれます。これにより、何百ものスキルを発見可能にしながら、コンテキストを軽量に保てます。&lt;/p&gt;
&lt;p&gt;各スキルには次が含まれます:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;明確な発動条件(「データベーススキーマを移行するときに使う」)&lt;/li&gt;
&lt;li&gt;ステップバイステップのガイダンス&lt;/li&gt;
&lt;li&gt;そのワークフローで許可されるツール&lt;/li&gt;
&lt;li&gt;成功基準と失敗時のリカバリー経路&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;私たちのレジストリにある466のスキルは、gitのworktree分離からWebリサーチのワークフロー、デプロイの健全性検証まで、あらゆるものをカバーしています。&lt;/p&gt;
&lt;h2 id=&quot;なぜオーケストレーションが重要なのか&quot;&gt;なぜオーケストレーションが重要なのか&lt;/h2&gt;
&lt;p&gt;単一エージェントのアーキテクチャは、すぐに壁にぶつかります:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;コンテキストの希釈。&lt;/strong&gt; 20万トークンのコンテキストウィンドウは、データベーススキーマ、APIドキュメント、テストフィクスチャ、ドメイン知識を読み込むまでは大きく感じられます。専門エージェントであれば、絞り込んだコンテキストで作業できます。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;指示の衝突。&lt;/strong&gt; エージェントに「徹底的に、しかし速く」「すべて検証せよ、しかし過剰設計はするな」と伝えると、緊張が生まれます。専門エージェントは明確なスコープを持つことでこれを解決します。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;専門性の深さ。&lt;/strong&gt; ジェネラリストのエージェントは、何についても少しずつ知っています。適切なアイデンティティとスキルで構成された専門エージェントは、自分のドメインを深く知っています。&lt;/p&gt;
&lt;p&gt;Orkestraはフラットなオーケストレーションを実装しています。1つのオーケストレーターが複数の専門エージェントを調整します。専門エージェントはサブ専門エージェントを生成できません。これにより、複雑性の爆発を防ぎながら並行作業を可能にしています。&lt;/p&gt;
&lt;p&gt;オーケストレーターは、実質220万トークンの容量にアクセスできます。自身の20万トークンのウィンドウに加え、それぞれ20万トークンを持つ10体の同時実行サブエージェントです。単一のエージェントなら使い果たしてしまうような作業も、この編隊なら余裕をもってこなせます。&lt;/p&gt;
&lt;h2 id=&quot;レンダリングパイプライン&quot;&gt;レンダリングパイプライン&lt;/h2&gt;
&lt;p&gt;エージェント定義はYAMLで存在します。Claude CodeはMarkdownを読みます。Orkestraは、決定論的なレンダリングパイプラインでこのギャップを橋渡しします:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;YAML Registries → Jinja Templates → .claude/agents/*.md&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;オペレーターはYAMLソースを編集します。&lt;code&gt;orkestra sync&lt;/code&gt;を実行します。レンダリングされたMarkdownは&lt;code&gt;.claude/agents/&lt;/code&gt;に現れます。Claude Codeがその変更を取り込みます。&lt;/p&gt;
&lt;p&gt;この分離は、異なる読み手に対応しています:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;YAMLソース&lt;/strong&gt;には、ツール連携のためのライフサイクルメタデータ、タグ、検証ルール、非推奨の注記が含まれます&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;レンダリングされたMarkdown&lt;/strong&gt;には、モデルが必要とするものだけが含まれます。説明、ツール、スキル、振る舞いに関するガイダンスです&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;このパイプラインは、アイデンティティ、マインドセット、スタイル、スキルを1つの一貫したプロンプトへと合成します。アーキテクト×分析的×簡潔なエージェントは、いくつかの基盤スキルを共有していたとしても、デバッガー×懐疑的×技術的なエージェントとはまったく異なるシステムプロンプトを持つことになります。&lt;/p&gt;
&lt;h2 id=&quot;ドメイン知識4ファイルパターン&quot;&gt;ドメイン知識:4ファイルパターン&lt;/h2&gt;
&lt;p&gt;すべての知識ドメインは、一貫した構造に従います:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;domain-name/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  decisions.md      # Key choices, rationale, consequences&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  patterns.md       # Step-by-step guidance and examples&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  anti-patterns.md  # Failure modes and remediation&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  evolution.md      # Dated log of changes&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;この構造は、エージェントのコンテキスト読み込みに役立ちます。認証まわりの作業をしているエージェントは、ガイダンスのために&lt;code&gt;authentication/patterns.md&lt;/code&gt;を、既知の落とし穴を避けるために&lt;code&gt;authentication/anti-patterns.md&lt;/code&gt;を読み込みます。ファイルは効率的なコンテキスト読み込みのためにサイズ調整されています。有用であるために十分に絞り込まれており、権威あるものであるために十分に包括的です。&lt;/p&gt;
&lt;p&gt;私たちは、分析、認証、データサイエンス、インフラ、機械学習、パフォーマンス、セキュリティなどを含む21のトップレベルドメインを維持しています。各ドメインは、より細かい粒度のためのサブドメインを持つことができます。&lt;/p&gt;
&lt;h2 id=&quot;価値観オペレーティングシステム&quot;&gt;価値観:オペレーティングシステム&lt;/h2&gt;
&lt;p&gt;すべてのエージェントは、その動作を定義する共通の価値観のベースレイヤーを共有しています:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;シンプルさを最優先。&lt;/strong&gt; 機能する最もシンプルな解決策を使う。複雑さは正当化される場合にのみ加える。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;根本原因を直す。&lt;/strong&gt; 失敗を回避するパッチを当てない。パイプラインが失敗したらパイプラインをデバッグする。テストが失敗したらコードかテストを直す。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;エビデンスに基づく。&lt;/strong&gt; 主張には「検証済み」(ベンチマーク付き)か「推定」(前提条件付き)のラベルを付ける。パターンの検出は、問題の確定を意味しない。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;コンテキストの経済学。&lt;/strong&gt; MCPツールのコストはコンテキストの0.1%。ファイル読み込みは1回あたり2%。コードを探索する前にドメインの専門知識を適用する。&lt;/p&gt;
&lt;p&gt;これらの価値観は、レンダリングパイプラインを通じてすべての専門エージェントへ伝播します。エージェントは組み合わせによってこれを迂回することはできません。&lt;/p&gt;
&lt;h2 id=&quot;cliコントロールプレーン&quot;&gt;CLI:コントロールプレーン&lt;/h2&gt;
&lt;p&gt;Orkestraには、エージェントエコシステムを管理するためのCLIが付属しています:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Discovery&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; agents&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;database&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; agents&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; info&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; database-architect&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Validation&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; validate&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --show-warnings&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Rendering&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; sync&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --dry-run&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; sync&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Skills&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; skills&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; skills&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; info&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; schema-migration-workflow&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Decisions&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;authentication&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;このCLIは、どんなエージェントが存在し、どんなスキルを持ち、システムが健全かどうかを知るための信頼できる情報源です。問題を早期に発見するため、同期前にバリデーションを実行します。&lt;/p&gt;
&lt;h2 id=&quot;オープンソースについての検討&quot;&gt;オープンソースについての検討&lt;/h2&gt;
&lt;p&gt;私たちがOrkestraを構築したのは、自分たち自身の問題 ―― 複雑なコードベースに対して、大規模にAIエージェントを調整すること ―― を解決するためでした。そこで発見したパターンは、私たちのドメインに特有のものではありません。&lt;/p&gt;
&lt;p&gt;キャラクター合成システム(アイデンティティ+マインドセット+スタイル)は、エージェントの人格を定義するどんなチームにも当てはまります。&lt;/p&gt;
&lt;p&gt;スキルティアシステム(K0〜K4)は、再利用可能な能力をスコープ別に整理するためのメンタルモデルを提供します。&lt;/p&gt;
&lt;p&gt;レンダリングパイプラインのパターン(YAMLソース+テンプレート+生成された成果物)は、ツール連携とモデルによる読み込みとを分離します。&lt;/p&gt;
&lt;p&gt;フラットなオーケストレーションモデル(1つのコーディネーター、多数の専門エージェント)は、並行性を可能にしながら複雑さを回避します。&lt;/p&gt;
&lt;p&gt;Orkestraがオープンソースになるかどうかは、これらのパターンが、Claude Codeで構築している他の人々にとっても価値があるかどうかにかかっています。もしあなたが私たちの説明したのと同じ壁にぶつかっているなら、このアーキテクチャは助けになるかもしれません。&lt;/p&gt;
&lt;h2 id=&quot;私たちが学んだこと&quot;&gt;私たちが学んだこと&lt;/h2&gt;
&lt;p&gt;Orkestraを構築して学んだのは、オーケストレーションはエージェントを賢くすることではない、ということです。エージェントをより集中させることなのです。&lt;/p&gt;
&lt;p&gt;完璧な指示を持つ単一のエージェントでも、いずれコンテキストは尽きます。すべてのスキルを持つ単一のエージェントでも、どれを適用すべきか混乱します。すべてになろうとする単一のエージェントは、あらゆる場面で平凡な結果しか出せません。&lt;/p&gt;
&lt;p&gt;それぞれの領域で卓越した40体の専門エージェントを、いつ委任すべきかを知るオーケストレーターが調整する ―― それが私たちの出荷の仕方です。&lt;/p&gt;
&lt;p&gt;数字よりも重要なのはアーキテクチャです。必要なのは5体のエージェントかもしれませんし、50体かもしれません。原則は変わりません。能力より合成を、汎用化より専門化を、個人技より協調を。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Orkestraは、私たちのコードインテリジェンスプラットフォームMaguyvaを支えるエージェントエコシステムの原動力です。もっと知りたいですか? チームまでお問い合わせください。&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>Architecture</category><category>Open Source</category></item></channel></rss>