AIContextBuilder について
AIContextBuilder(`aicb`)はRoslynでC#および.NETのソリューションを解析し、コーディングエージェントにコードインテリジェンスを提供します。シンボル間の関係を追跡し、タスクに必要なコードをトークン予算内のMarkdownにまとめます。ローカルMCPサーバーとコマンドラインツールに加え、可視化分析と編集に対応するWindowsデスクトップアプリがあります。
主な機能
- 01呼び出し元、実装、テスト、依存関係の追跡
- 02依存性注入と変更影響の分析
- 03トークン予算内でタスク向けMarkdownを生成
- 04XAMLとAXAMLの関係を分析
- 05不確実性と分析の鮮度を示す情報
活用シーン
- 01シンボル変更による影響の評価
- 02エージェント向けのコード・テスト文脈の準備
- 03シンボルに関連する実装やテストの検索
- 04マークアップのバインディングとリソース使用状況の確認
MCP 対応
ローカルMCPサーバーは、コーディングエージェントにコード分析とコンテキスト作成のツールを公開します。各サーバープロセスは独自のライブ分析セッションを保持し、更新動作を設定できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
AIContextBuilder (aicb)
コーディングエージェントに、Roslyn に基づく正確な C#/.NET ソリューションのマップを提供します。 aicb は、C# と .NET 向けのコードインテリジェンスサーバーです。呼び出し元、実装、依存性注入、テスト、副作用、変更の影響に関する質問に回答し、関連するコードをコンパクトな Markdown にまとめて LLM に渡します。ローカルで MCP サーバーおよび CLI として動作し、Windows デスクトップアプリでは視覚的なコンテキスト選択、分析、編集機能を利用できます。
このソフトウェアはクローズドソースです。この公開リポジトリには、ドキュメント、ライセンス、リリースが含まれています。ライセンスのしきい値を下回る個人、教育機関、組織は無料で利用できます。
このページは概要であり、リファレンスではありません。エージェントがデフォルトで利用できる 54 個のツールのうち 35 個を紹介しています。3 つのマニュアルは全 35 章で、このページの約 39 倍の分量があります。
コードに関する質問への回答を見る
コーディングエージェントに質問します。
ColorMixerServiceを変更した場合、どのような影響がありますか?AICB を使ってください。
または、ターミナルから同じツールを呼び出します。
aicb call impact_of_change --sln C:/repo/App.sln --arg symbol=ColorMixerService
同梱の ColorMixer.SelectionLab サンプルからの抜粋出力:
{
"symbol": "ColorMixerService",
"resolvedKind": "type",
"directCount": 1,
"transitiveCount": 2,
"risk": "low",
"productionImpactCount": 2,
"directImpact": {
"items": [
{
"name": "DemoCompositionRoot",
"file": "ColorMixer.SelectionLab.ConsoleApp/DemoCompositionRoot.cs",
"line": 9
}
]
}
}
デスクトップアプリの MCP Usage ページでは、呼び出しがローカルに記録され、ガイドに沿った拒否と不具合の疑いが区別されます。

この回答は部分文字列検索ではなく、Roslyn のシンボルグラフに基づいています。AICB はオーバーロードを区別し、インターフェースとオーバーライドの関係をたどり、部分型を理解して、DI の構築経路を記録します。
タスクに適したコンテキストを構築する
AICB は個々のシンボルに関する質問に答えるだけではありません。フィルタリングされていないソース一式を送る代わりに、エージェント向けの、タスクに合わせた焦点の絞られたコンテキストパッケージを組み立てることができます。
| 必要なこと | ツール | 返される内容 |
|---|---|---|
| コンテキスト内で 1 つのシンボルを読む | get_context | シンボルと、その直接的な依存関係および呼び出し先 |
| 指定したシンボルと、選択した周辺情報を調べる | explain_symbol | 呼び出し元、呼び出し先、実装、テスト、または指定したその他の観点 |
| 自然言語の目標に合わせてコンテキストをまとめる | pack_for_task | 目標に関連する名前のシンボルと、その意味的な近傍 |
| 編集の準備をする | prepare_task | 目標に焦点を当てたコンテキストに加え、それをカバーするテストや、ファクトリーやバリデーターなどの関連する可能性が高い項目 |
| 応答コストを事前に確認する | measure | 予定している 1 つ以上のツール応答の正確なトークン数。大きなペイロードは返しません |
焦点を絞ったコンテキストツールではトークン予算を指定できるため、パッケージをエージェントの処理可能な範囲に収められます。指定したシンボルは含まれます。予算が厳しい場合、ブロックの途中で切り捨てるのではなく、その周辺の詳細度を下げ、除外された型、テスト、関連項目を先頭の注記で示します。そのため AICB は、パッケージが縮小または上限に達したことを伝えられますが、残った情報だけでタスクを正しく解決できるとは保証できません。ドキュメント全体のレンダリングでも、パイプラインプロファイルを通じて同じ予算を使用でき、超過分の許容幅や、削られた内容の任意のレポートを設定できます。
生成されるのはAI-Builder-MDです。選択されたコードと、シンボル間の関係、アーキテクチャグラフ、意味的なメタデータ、出典情報を含む、LLM 向けの構造化 Markdown です。従来のタグ表記または YAML を使用できます。コンテキストドキュメントガイドとタスク向けパッキングツールをご覧ください。
AI タグと意味注釈で明示的な意味を加える
AICB は注釈なしでも動作します。ソース構造や規約だけでは十分でない場合、XML ドキュメントの任意の <ai> タグを使って、開発者が型やメソッドの意図された役割を明示できます。
/// <ai
/// role="service"
/// layer="Application"
/// responsibility="Coordinates order validation and submission."
/// stability="Stable"
/// />
public sealed class OrderService
注釈では、役割、ドメイン、アーキテクチャ層、優先度、安定性、責務、副作用などの意味を記述できます。明示的な値はヒューリスティックによる推論より優先されます。none などのセンチネル値を指定すると、特定のフィールドについて推論を意図的に抑制できます。AICB は出典情報を保持するため、エージェントはソースから得られた事実、作成者が付与した意味、推論によるヒントを区別できます。AI 注釈リファレンスでは、サポートされている形式とフィールドを説明しています。

分析とメモリの仕組み
.sln / .slnx / .slnf + C# + XAML/AXAML
↓
MSBuild + Roslyn semantic models
↓
AICB facts and consolidated semantic indexes
↓
individual answers or budgeted AI-Builder-MD
AICB はソリューションを一度分析し、学習した内容に基づいて各質問に回答します。どのコードが何を呼び出すか、どの型がどの型を使用または実装するか、マークアップが何を参照するか、そしてどのコードがプログラムの外部にアクセスするかを把握します。そのため、追加の質問にもすばやく回答でき、コンテキストツールはタスクに必要なコード部分を選んで表示します。だからといって、考えられるすべての回答や実行時の関係があらかじめ把握されているわけではありません。
各 aicb mcp プロセスは、それぞれ独自のライブセッションを保持します。2つ目のサーバープロセスは独立して分析します。デスクトップアプリ、CLI、MCP サーバーは同じエンジンを使って回答し、ローカルデータベースを介して構成や保存済みスナップショットを共有できますが、それぞれ独自のライブ分析を保持します。ソースファイルを編集した後、次の更新では通常、ソリューション全体を再読み込みせずに変更箇所だけが更新されます。force: true を指定すると、ソリューション全体を読み込みます。同時に更新を要求した呼び出し元は、1つの更新を共有します。
ライブセッション、スナップショット、永続化されたコードベースのメモリ
これらの状態はそれぞれ目的が異なり、相互に置き換えられるものとして扱わないでください。
| 状態 | 存続期間と目的 | 重要な制約 |
|---|---|---|
| ライブ MCP セッション | 1つのサーバープロセスで再利用される、メモリ内グラフと Roslyn ワークスペース | 保存済みファイルを参照し、未保存のエディター バッファーは参照しません。別のサーバープロセスには別のセッションがあります |
| 記憶されたコードベース | remember_codebase で分析済みモデルを永続化します。recall_codebase を使うと、Roslyn を実行せずに後から、または別のプロセスでモデルを再読み込みできます | 再読み込みしたセッションにはライブワークスペースがなく、信頼できる行番号もなく、インサイトの提供範囲も縮小されます。ライブでの正確さが必要な場合は refresh_remembered を使ってください |
| 保存済みスナップショット | compare_with_previous と公開コントラクトの比較に使用する、名前付きの基準データ | 比較の基準であり、ライブワークスペースではありません |
<Solution>.aicb.json | Git で追跡可能なソリューション構成 | ルールと選択内容を含みます。分析結果、セッション、認証情報は含みません |
remember_codebase、recall_codebase、refresh_remembered はオプトインのツールです。MCP プロファイルには公開されていないため、これらを指定する AICB_MCP_TOOLS(または AICB_MCP_TOOLS=all)を設定してサーバーを起動してください。recall_codebase は、永続化されたモデルがソース、ペイロードスキーマ、アナライザーの識別情報と依然として一致するかどうかを報告します。モデルが古くなっていても、エージェントがライブでの再分析が必要なタイミングを判断できるメタデータを付けて、意図的に再読み込みしたモデルを返します。セッション、再読み込み、古さの判定を参照してください。
モデルで証明できることとできないこと
- AICB は、静的に確認できる C#(
.cshtmlビューから Razor ジェネレーターがコンパイルする C# を含む)と、選択された Razor、XAML、AXAML の関係を分析します。リフレクション、実行時のアセンブリスキャン、動的構成、または外部の利用者を介してのみ到達するコードは、検出できないことがあります。 - DI 分析では、静的に読み取れる Microsoft-DI 形式の登録と MEF エクスポート属性を認識します。 実行時に生成される登録は、推測で補わず、動的または不明として提示します。
- XAML バインディングの検証は、データ型が確実に分かっている場合に限られます。データ型が不明な場合、そのバインディングは評価対象外となり、破損しているとは報告されません。
- 副作用として報告されるのは、対象のメソッド自身、または呼び出すメソッドを介して、コード内でそのような操作に到達することを意味します。メソッドがファイルに書き込む可能性があることは示しますが、どのファイルに、いつ書き込むかは示しません。
- 応答には、古いセッション、解決されていないプロジェクト、上限に達した結果セットが示されます。空または短い回答を証拠として扱う前に、
staleness、incompleteProjects、totalFound、truncatedを確認してください。
エージェントが回答を評価する方法
AICB の応答は、その限界を伴う証拠です。空の結果、短い結果、または一見断定的な結果に基づいて行動する前に、付随するシグナルを確認してください。
| シグナル | 意味 | 一般的な対応 |
|---|---|---|
staleness | 保存済みのソースが分析後に変更されたか、自動更新が実行または失敗しました | 応答が最新でない場合は、ファイルを保存して更新します |
incompleteProjects または verdict: "inconclusive" | 完全なセマンティックグラフを作成できるほど十分に、プロジェクト参照を解決できませんでした | 復元またはビルドしてから、refresh_session(force: true) を呼び出します |
totalFound と truncated | 返された件数より多くの一致があります | 範囲を絞る、ページ分割する、または文書化された上限を引き上げます |
| バンドルマニフェストまたは冒頭の省略に関する注記 | トークン予算によって、周辺の型、テスト、または同系列の実装が除外されました | 予算を増やすか、不足している観点を明示してリクエストします |
mergedNamesakes、曖昧さ、または複数の候補 | 名前が一意のシンボルに解決されませんでした | 修飾シンボル名を指定してクエリを再実行します |
confidence、プロベナンス、動的または不明を示すマーカー | 値は測定済み、作成者指定、推論済み、または静的には判定できません | 不確実性を保持し、必要に応じて関連するランタイム構成を検証します |
origin: "Recalled" または lineNumbersAvailable: false | ライブの Roslyn ワークスペースではなく、永続化されたメモリから回答が得られました | ライブ状態に限られる詳細に依拠する前に、refresh_remembered を使用します |
MCP プロファイルは自動更新を制御します。Off は変更を通知するだけです。Reactive は読み取りツールが回答する前に更新し、出荷時の標準設定です。一方、Proactive は保存済みの編集が落ち着いた後に分析を開始します。自動更新では、エディターの未保存バッファーは参照されません。古さと参照の不完全さも異なります。前者には更新が必要で、後者には通常、復元またはビルドの後に強制更新が必要です。
AICB は、不明と不在が検証済みも区別します。assert_absence などのツールは、証拠の欠如を偽の否定に変えるのではなく、confirmed、refuted、または indeterminate を返します。
質問を起点とするアーキテクチャ、制限、証拠に関するガイドでは、メモリに保存される内容、更新とコンテキスト選択の仕組み、測定済みの主張、公開されている規模ベンチマークの現状について説明しています。
役立つ場面
| 質問 | ツール |
|---|---|
| これを呼び出したり使用したりするのは誰ですか? | find_usages |
| 変更の影響範囲はどのくらいですか? | impact_of_change |
| このインターフェイスはどこで実装またはオーバーライドされていますか? | find_implementations, find_overrides |
| このシンボルを使用するテストはどれですか? | find_tests_for |
| ここには何が注入されますか? | resolve_injection |
| 副作用があるコード、または外部 API を呼び出すコードはどれですか? | find_by_side_effects, calls_external |
| このタスクに必要なコンテキストは何ですか? | explain_symbol, prepare_task, pack_for_task |
| これらの回答を取り込む前に、その規模を確認できますか? | measure |
| XAML/AXAML で、このプロパティやリソースはどこで使われていますか? | find_binding_usages, find_resource_usages |
| 安全に解決できないマークアップのバインディングはどれですか? | find_unresolved_bindings |
| 分析済みの 2 つの状態の間で、何が変わりましたか? | semantic_diff, diff_review |
| この変更セットはポリシーや公開契約に違反していますか? | evaluate_change_set, compare_public_api |
| このシンボルが未使用、未テスト、または存在しないという主張は、実際に裏付けられていますか? | assert_absence, verify_claim |
| 変更されたシンボルについて、レビュー担当者にどの証拠を提示すべきですか? | review_context |
| 並行処理、リソースのライフタイム、イベントの購読に関するリスクはどこにありますか? | find_by_concurrency_risk, find_by_resource_leak, find_by_event_subscription |
| 繰り返し現れる構造、規約、ドキュメントの間に、どこで差異が生じていますか? | find_structural_twins, check_pattern_drift, check_doc_drift |
デフォルトプロファイルでは、この表のすべてのツールが公開されます。ただし、
semantic_diff、
diff_review、find_by_concurrency_risk、find_by_resource_leak、
find_structural_twins、check_pattern_drift、check_doc_drift は
Full Select プロファイルが必要であり、compare_public_api はオプトインです(
ツールセットとエージェントスキルを参照してください)。
これらのツールは、単なる検索カタログではなく、より幅広い機能マップを構成します。
| 機能 | 例 |
|---|---|
| セマンティックナビゲーション | 使用箇所、実装、オーバーライド、階層、DI、XAML |
| 変更の安全性 | 影響、テスト、診断、レビューコンテキスト、公開 API の比較 |
| 実行時リスクの指標 | 並行処理、リソース、イベント、外部呼び出し、副作用 |
| アーキテクチャと一貫性 | レイヤー、循環、構造上の類似箇所、パターンのずれ、ドキュメントのずれ |
| 検証 | 否定的な主張、ベースラインから変更後への主張、変更セットのポリシー |
| コンテキストの効率化 | タスクのパッキング、測定、トークン予算、圧縮 |
デスクトップアプリは、コード品質、セキュリティ、設計、アーキテクチャに関する検出結果を、実行可能なレビューキューに変換します。

AICB は、規模の大きい C#/.NET ソリューションや、プレーンテキスト検索では確実に答えられないセマンティックな質問に最も役立ちます。C# を分析し、選択された XAML/AXAML の関連性がそのグラフを補います。その他のプログラミング言語は対象外です。
複数のターゲットを持つプロジェクトは、デフォルトでターゲットフレームワークごとに一度読み込まれますが、クエリの各種機能では通常、1 つの論理プロジェクトに重複排除されます。<Solution>.aicb.json で analyzePreferredTfmOnly を設定すると、分析とエクスポートの対象を最新のターゲットフレームワークのインスタンスに絞れます。シンボルのインベントリは引き続き利用できますが、別のターゲットにのみ存在するファンインエッジが失われる可能性があります。したがって、これは処理コストと精度のトレードオフとして明示された選択肢であり、透過的な最適化ではありません。
安全なエージェントワークフロー
エージェントは、ツールカタログを暗記しなくても AICB を使用できます。
server_infoを呼び出して接続を確認し、バイナリや構成の不整合を検出します。機能の全体像を確認するにはlist_skillsを、組み込みの操作マニュアルを確認するにはdocs()を使用します。- 編集タスクを開始する際は
prepare_taskを呼び出し、指定されたシンボル、関連コンテキスト、対象テスト、関連する可能性の高い実装を、ひとつの予算内で収集します。 - 他のコードから参照されているシンボルを変更する前に、
impact_of_changeを呼び出します。タスクバンドルに十分なテスト情報が含まれていない場合は、find_tests_forを使用します。 - 空の結果を証拠として扱う前に、不確実性と完全性に関するシグナルを確認します。曖昧なシンボル名を明確にし、不完全なプロジェクトは復元して強制的に更新します。
- 変更を加えて保存します。その後、
get_diagnosticsを呼び出す前にrefresh_sessionを呼び出します。通常のReactiveプロファイルでは、たいてい不要ですが、どのモードでも正しく動作し、意図した境界を明示できます。 - タスクにレビューやポリシーに関する主張が含まれる場合は、
review_context、evaluate_change_set、またはverify_claimを使用します。検索結果が短いというだけで、該当するものが存在しないと推測しないでください。 - リポジトリで実際に使用されているビルドコマンドとテストコマンドを実行して完了します。
get_diagnosticsが報告するのは Roslyn コンパイラの診断であり、サードパーティ製アナライザーやランタイムの結果ではありません。
互いに独立した読み取り専用の質問が複数ある場合、batch はひとつのセッションを再利用し、上限付きのレスポンスをひとつ返します。レスポンスのサイズが重要になりそうな場合は、まず measure を使用します。
再現可能な分析、CI、レビュー
| 必要なこと | AICB ワークフロー |
|---|---|
| 移植可能なソリューションルールをバージョン管理する | <Solution>.aicb.json をソリューションの隣にコミットします。レイヤールール、名前空間の除外、テスト定義、抑制、自動初期化フラグ、分析スコープを設定できます。各サーフェスは、そのサーフェスについて文書化された軸のみを使用します。このサイドカーに含まれるのは設定であり、分析結果、セッション、スナップショット、認証情報は含まれません。solution_config_status → init_solution_config → apply_solution_config を使用します。aicb init ではこのファイルは作成されません。 |
| CI で品質しきい値を適用する | aicb analyze -s App.sln -o context.md --fail-on "critical>0 OR debt>120min" を実行します。ゲートに失敗すると終了コード 6 が返され、診断用のコンテキストドキュメントも書き出されます。 |
| インプレースの変更をベースラインと比較する | 編集前に save_session を呼び出し、その後 refresh_session と compare_with_previous を呼び出します。重要な契約がパブリック API である場合は、diff_public_contract(Full Select プロファイル)を使用します。 |
| ライブ分析済みの 2 つの状態をレビューする | semantic_diff は構造上の変更を報告します。diff_review は影響範囲、テスト、新たに導入された指摘に加え、ポリシー判定も提示します。これら 2 つのセッションツールには Full Select プロファイルが必要です。 |
| プロセス間で分析済みモデルを再利用する | remember_codebase はモデルを永続化し、recall_codebase は Roslyn を使わずにモデルを読み込み、必要に応じて refresh_remembered が完全なライブ分析を復元します。これら 3 つはオプトインのツールです(AICB_MCP_TOOLS)。 |
| コンテキストを視覚的に整理する | Windows アプリでは、ソリューションツリー、コンテキストの手動選択、詳細とトークンの制御、AI-Builder-MD のプレビューとエクスポート、スナップショット、Insights、LLM の実行、ソースエディターを利用できます。 |
GitHub Actions では、ゲートは 1 つのステップで実行されます。このリポジトリのルートにある
アクションは .NET 10 SDK をセットアップし、公開済みのツールをインストールし、ソリューションを復元して
aicb analyze を実行します。ゲートに失敗すると終了コード 6 でステップが失敗しますが、ドキュメントは引き続き
書き出されます。
- uses: gregordadera/[email protected]
with:
version: 0.5.505.1
solution: App.sln
output: artifacts/context.md
fail-on: "critical>0 OR debt>120min"
この例では、両方のバージョンを固定しています。@v0.5.505.1 はアクションを固定し、version はインストールするパッケージを固定します。version を指定しない場合、アクションは公開済みの最新パッケージをインストールします。また、@main はアクションへのすべての変更を追跡するため、依存するビルドではどちらも使用しないでください。リリースタグは原理上、移動される可能性があります。そのタグの完全なコミット SHA が不変の形式です。その他の入力には、別の aicb analyze オプションを指定する dotnet-version、restore、args があります。出力は output と exit-code です。action.yml を参照してください。
設定の優先順位は、軸とサーフェスによって異なります。たとえば、ヘッドレスのレイヤーマッピングではサイドカーをフォールバックとして使用できますが、現在、ヘッドレスのテスト検出はサイドカーのテスト軸ではなく、データベースまたは組み込みルールから解決されます。正確な対応表は
設定ガイド に記載されています。
実行中の MCP セッションでは、分析時の設定が維持されます。サイドカーを編集した後は、refresh_session が再読み込みすると想定せず、新たに分析を開始してください。
抑制は、抑制に対応した読み取りサーフェスで承認済みの指摘を非表示にしますが、solution_metrics と CLI の品質ゲートでは引き続きカウントされます。したがって、共有抑制はゲートのしきい値を下げる手段ではなく、明示的なレビュー上の決定です。
セマンティックエンジンからヒューマン・イン・ザ・ループのワークスペースへ
MCP サーバーは現在、AICB で最も完成度が高く、運用面でも成熟した統合インターフェースです。登録済みの 82 個のツールは、セマンティックナビゲーション、変更影響分析、依存性注入、テスト検出、アーキテクチャ、品質、コンテキストのパッキング、レビュー、セッション管理をカバーしています。プロファイルでは、厳選された 54 個のツールからなるデフォルトセット、または 72 個のツールからなる Full Select セットを公開します。また、セッション、古さを示すシグナル、応答の上限により、このインターフェースはコーディングエージェントが実用的に利用できます。これらの数値は利用可能な製品機能の範囲を示すものであり、エージェントの成果品質に関する公開ベンチマークではありません。
アクティブな MCP プロファイルでは、タスク指向のファセットも選択します。各ファセットは、エージェント向けガイダンス、コンテキストテンプレートのスロット、対応するツールのサブセットを結び付けます。list_skills は、どのツールが公開されているか、どのツールを呼び出せるか、またどの追加登録ツールがアクティブなプールの外にあるかを示す、実行時の信頼できる情報源です。
Windows アプリは、エージェント向けの機能を補完し、ソリューションのナビゲーション、手動でのコンテキスト選択、詳細とトークンの制御、AI-Builder-MD のプレビューとエクスポート、スナップショット、Insights、再利用可能な設定、手動での LLM 実行といった、人向けのビジュアルワークスペースを提供します。
品質プロファイルとソリューション固有の分析プロファイル
品質プロファイルは、どのインサイト生成機能を実行するか、およびメソッドの長さ、循環的複雑度、クラスのサイズなどに用いるしきい値を制御します。それ自体では、検出結果の重大度や CLI の品質ゲートは定義しません。

各ソリューションには、互いに独立した 3 つの分析軸もあります。
| 軸 | 答える問い | 制御する内容 |
|---|---|---|
| レイヤープロファイル | このコードはアーキテクチャ上のどこに属しますか? | Domain、Application、Infrastructure などのレイヤーに対する、順序付きの名前空間パターンとレイヤーのマッピングです。最初に一致したルールが適用されます。また、検出されたレイヤー間違反を Advisory(警告)とするか、Strict(重大)とするかもこのプロファイルで決まります。 |
| 除外する名前空間 | 分析対象から何を除外しますか? | Contains、StartsWith、EndsWith、Exact のいずれかで照合し、アナライザーがスキップする名前空間パターンを指定します。これにより、設定済みのフレームワークやベンダーの依存関係がセマンティックグラフを占めすぎないようにします。付属のプリセットは BCL と SAP Business One を対象としています。 |
| テストプロファイル | 何をテストコードとして扱いますか? | プロジェクト名のルールとメソッド属性のマーカーです。組み込みプロファイルは xUnit、NUnit、MSTest の規約を認識し、本番コードに重点を置くツールでは、検出されたテストコードをデフォルトで除外できます。 |
デスクトップアプリでは、選択中のソリューションについて、この 3 つの選択項目を横並びで表示します。Settings ページはライブラリの編集画面であり、Workspace の選択項目では、各ライブラリエントリのうち、このソリューションに適用するものを選びます。ソリューションごとの選択は、グローバルなデフォルトより優先されます。

3つの軸を初期化する
新しく登録したソリューションでは、3つの自動初期化フラグがすべて有効になっています。次回デスクトップの Context Builder で読み込むと、AICB は未設定の各軸の初期化を試みます。サイドカーがすでに軸をカバーしている場合、GUI ではモデルを呼び出さずに復元できます。それ以外の場合、使用可能なデフォルトのモデルプロファイルがあれば、宣言済みおよび参照済みの名前空間リストをもとに、1回の LLM リクエストでレイヤールールと除外項目が提案されます。テストの検出は、解析したプロジェクトとテスト属性からローカルで行われます。確認ダイアログで提案を適用するかどうかを決めます。その時点で LLM リクエストはすでに実行されています。モデルプロファイルがない場合、テストが検出されない場合、または提案を辞退した場合、軸が未設定のままになることがあります。既存の選択内容が上書きされることはありません。
GUI による自動初期化が成功すると、選択したプロファイルがローカルデータベースに保存されます。<SolutionName>.aicb.json が自動的に作成されるわけではありません。Workspace → Profiles → Export Config を使って移植可能なサイドカーを書き出し、コミットしてください。後で GUI から、サポートされている軸を LLM の呼び出しなしで復元できます。ヘッドレスの利用者は、設定マトリックスに記載された軸ごとのルールを適用します。Initialize Now はサイドカーの即時復元のみを行います。モデルの呼び出しやソリューションの解析は行いません。
エージェントを使って同じ設定手順を明示的に進めることもできます。
solution_config_statusは、どの軸が初期化されているか、またその有効な値の取得元がローカルデータベース、サイドカー、それ以外のどれかを報告します。init_solution_configは提案の素材を返します。レイヤーマップ用の宣言済み名前空間、除外項目用の参照済み名前空間、テストプロファイル用の検出済みテストプロジェクトと属性が含まれます。- 提案を確認または調整した後、
apply_solution_configはカスタム項目を作成して有効化し、軸を初期化済みとしてマークし、ローカル設定データベースとソリューションの隣にある<SolutionName>.aicb.jsonの両方に書き込みます。 - 移植可能なソリューション設定をリポジトリとともに利用できるよう、サイドカーをコミットしてください。各利用者は上記で説明したサポート対象の軸を適用します。すべての画面で各フィールドが同じように解決されるとは限らない点に注意してください。後で
check_solution_config_driftを実行すると、その設定でカバーされなくなった名前空間やテストプロジェクトが報告されます。
aicb init は別の操作です。リポジトリを MCP サーバーに接続し、エージェントスキルとオプションのシンボルガードをインストールします。この操作は、3つのソリューション軸を初期化したり、<SolutionName>.aicb.json を作成したりしません。
優先順位、サイドカーのスキーマ、初期化動作の詳細については、プロファイルとソリューション設定を参照してください。
コンテキストテンプレートと実行テンプレート
2種類のテンプレートは、それぞれ異なる役割を担います。
| テンプレートの種類 | 目的 |
|---|---|
コンテキストテンプレート(Templates) | エクスポートに含める内容を定義します。プロンプト、Markdown プロファイル、詳細度プリセット、展開戦略、圧縮、品質設定、エクスポート切り替えが含まれます |
実行テンプレート(Run Templates) | タスクの実行方法を定義します。実行タイプ、選択したコンテキストテンプレート、モデルのデフォルト値、実行固有のオプションが含まれます |
詳細度プリセット、Markdown プロファイル、展開戦略、圧縮ルール、パイプラインプロファイル、品質プロファイルは、コンテキストテンプレートから参照される再利用可能な構成要素です。実行テンプレートでは、そのコンテキストテンプレートを選択します。

製品の方向性であり、リリースの確約ではありません
デスクトップアプリの方向性は、人が操作するオーケストレーションワークスペースです。開発者がコンテキストを選択して制限し、中間結果を確認し、判断を承認して、AI モデルが次に実行する内容を制御します。現在リリースされている実行タイプは Manual です。Iteration は選択したノードを1つずつ処理し、Preselection はメインの実行前にモデルが関連するコンテキストを絞り込むことを意図しています。どちらもアプリケーション内に実装されていますが、まだリリースされていません。Pipeline は現在、データモデル内のプレースホルダーとしてのみ存在し、何も実行しません。
インストール
マシンごとに、いずれか1つの形式をインストールしてください。
| 必要なもの | インストールするもの | プラットフォーム |
|---|---|---|
| MCP サーバーと CLI | .NET グローバルツール aicb-roslyn-mcp | Windows、Linux、macOS |
| デスクトップアプリと同じ MCP サーバーおよび CLI | Windows インストーラーまたはポータブル ZIP | Windows |
.NET ツールには .NET 10 SDK が必要です。.NET 10 がない場合、マシン上でそれより新しい次の .NET を使って実行され、そのバージョンの SDK が必要になります。.NET 8 または .NET 9 しかないマシンでは起動できません。
dotnet tool install -g aicb-roslyn-mcp
aicb --version
0.5.465.1 までは、パッケージ名は AIContextBuilder でした。この名称変更をまたいで更新することはできません。先に古いパッケージを削除してから、上記の手順で新しいパッケージをインストールしてください。
dotnet tool uninstall -g AIContextBuilder
後で更新するには、dotnet tool update -g aicb-roslyn-mcp を実行してください。コンテナーの場合は、リポジトリの Dockerfile が同じ .NET ツールをインストールし、stdio 経由で MCP を提供します。コンテナーは root 以外のユーザーとして実行され、分析ではマウントしたソリューションに obj/ が書き込まれるため、マウントの所有者として実行し、最初にコンテナー内でソリューションを復元してください。
docker run --rm --user "$(id -u):$(id -g)" -v "$PWD:/src" \
-v aicb-nuget:/home/aicb/.nuget/packages --entrypoint dotnet aicb restore /src/App.sln
docker run --rm -i --user "$(id -u):$(id -g)" -v "$PWD:/src" \
-v aicb-nuget:/home/aicb/.nuget/packages aicb
復元をコンテナー内で実行する必要がある理由は、Dockerfile のヘッダーで説明しています。
ツールから MSBuild を登録できなかったと報告された場合、ツールが実行されている .NET から利用可能な SDK が見つかっていません。その .NET より新しい SDK は対象になりません(たとえば、.NET 10 ランタイムがある一方で .NET 11 SDK しかない場合です)。.NET 10 SDK をインストールしてください。.NET 10 ランタイムがあれば、.NET 8 および .NET 9 SDK も使用できます。または、環境変数 DOTNET_ROLL_FORWARD=LatestMajor を設定して、ツールを最新の .NET で実行することもできます。プレビュー版の .NET を使用する場合は、さらに DOTNET_ROLL_FORWARD_TO_PRERELEASE=1 が必要です。
Windows 用のダウンロードは自己完結型ですが、ソリューションを分析するには、.NET SDK または Visual Studio の MSBuild が必要です。インストーラーとプログラムにはコード署名が付与されています(発行者:Gregor Dadera)。ただし、新しいリリースは十分なダウンロード実績が得られるまで、Windows SmartScreen に警告が表示される場合があります。すべてのリリースに SHA-256 チェックサムが用意されています。
コーディングエージェントを接続する
エージェントに作業させたいプロジェクトで、次を実行します。
aicb init
既存のファイルを上書きせずに、MCP の設定である .mcp.json(Claude Code が読み取ります)と、.claude/skills/ 内の aicb-csharp-context エージェントスキルを書き込みます。プロジェクトで Codex または OpenCode(.codex/ または .opencode/ フォルダー)を使用している場合は、そのクライアント独自の設定にもサーバーを登録し、両方がスキルを読み取る .agents/skills/ にスキルを書き込みます。Claude Code、Codex、または OpenCode のプロジェクト設定を検出した場合は、grep による C# シンボル検索をブロックし、エージェントをセマンティックツールに誘導するシンボルガードもインストールします。これにより、エージェントの動作が意図的に変更されます。無効にするには、次を実行します。
aicb init --hooks none
--hooks none を指定すると、ガードのみがスキップされます。サーバーは引き続き登録されます。まだフォルダーが存在しないクライアントを設定するには、クライアントを指定します。例:aicb init --hooks codex または aicb init --hooks opencode。
クライアントごとの設定状況:
| クライアント | MCP の設定 | スキルとガード |
|---|---|---|
| Claude Code | aicb init が .mcp.json を書き込みます | スキルと任意のガードがインストールされます |
| Codex | aicb init が .codex/config.toml を書き込みます。Codex は信頼済みのプロジェクトでのみこのファイルを読み取ります | .agents/skills/ にスキルが配置され、任意のガードがインストールされます |
| OpenCode | aicb init が opencode.json を書き込みます | .agents/skills/ にスキルが配置され、任意のガードがインストールされます |
| Cursor / Cline / その他の stdio クライアント | mcp を引数として aicb コマンドを追加します | クライアントがエージェントスキルに対応している場合は、公開済みのスキルを使用します |
.mcp.json を読み取るクライアント向けの手動設定:
{
"mcpServers": {
"aicb": {
"command": "aicb",
"args": ["mcp"]
}
}
}
クライアントに server_info を呼び出すよう依頼して、接続を確認します。すべての分析ツールでは、セッションとして絶対パスの .sln、.slnx、または .slnf を指定できるため、別途分析ステップを実行する必要はありません。設定、最初の質問、トラブルシューティングについては、5 分でわかるガイドをご覧ください。
ツールセットとエージェントスキル
| セット | サイズ | 目的 |
|---|---|---|
| デフォルト MCP プロファイル | 54 個のツール | 通常のエージェント作業向けに厳選された、セマンティックおよび構造に関するツール |
| Full Select プロファイル | 72 個のツール | デフォルトセットに、測定されたロングテールを追加 |
| サーバーの全機能 | 82 個のツール | Full Select に、オプトインのセッションメモリー、データベース、API 比較ツールを追加 |
この README では 54 個のデフォルトツールのうち 35 個を紹介しており、以下のリファレンスですべてを説明しています。
Full Select プロファイルは
aicb mcp --mcp-profile mcp-profile/full で起動します。AICB_MCP_TOOLS=all を設定すると、
オプトインのツールも追加されます。生成されるツールリファレンスには
デフォルトセットが記載されています。MCP サーバーマニュアルには、
82 個のツールとそのパラメーターに加えて、セッションと古さ、プロファイル、プールとファセット、
および aicb init が書き込む内容が記載されています。Markdown 形式の全 12 章は、ブラウザーや
エージェントで読むことができ、PDFとしても
公開されています。
公開されている 3 つの数は出発点であり、固定されたエディションではありません。デスクトップ版の MCP Profiles エディターでは、プロファイルを作成または複製し、必要なタスクファセットだけを有効にして、コアツールとファセットツールを個別に選択できます。ロックされた診断用の server_info を除き、すべてのコアツールを削除できるため、タスクに特化した非常に小さな tools/list も可能です。サーバーの固定リードインはエージェント向けのガイダンスであり、選択可能な別のツールグループではありません。ヘッドレス環境での設定では、AICB_MCP_TOOLS=methods:<tool>,<tool>,... により、指定した関数だけが公開されます。クラス一覧、lean、all もサポートされています。プロファイルと環境の変更は、次回のサーバー起動時に適用されます。list_skills で、プール内外のツールを確認できます。プロファイル、プール、ファセットを参照してください。
4 つのエージェントスキルが skills/ に含まれています。
aicb-csharp-contextは、セマンティックな C# の質問を適切なツールに振り分けます。aicb-code-reviewは、完了した変更の正しさを確認します。aicb-code-simplifierは、不要な複雑さを探します。aicb-usage-checkは、このサーバーが実際に何のために呼び出されたかを報告します。
最後の 3 つはオプトインです。aicb init --skills=all を実行してください。
規模、リリース、互換性
AICB には、公開されているプロジェクト数の上限はありません。初期コストとピークメモリ使用量はソリューションによって異なり、読み込むプロジェクト、ドキュメント、ターゲットフレームワークのインスタンス、グラフの密度に応じて増加します。最初の分析には数秒から数分かかることがあります。以降の質問ではウォーム状態のグラフを再利用し、条件を満たす保存済みソースの編集には増分更新パスを使用します。非常に大きなリポジトリでは、.slnf を使用して MSBuild が読み込む範囲を絞り、必要に応じて analyzePreferredTfmOnly を設定し、すべてのターゲットフレームワークのインスタンスを分析しないようにできます。summaryOnly、クエリスコープ、トークン予算によって応答量を減らせますが、基盤となるソリューション分析が必ずしも減るとは限りません。デスクトップアプリの load-perf.log と MCP の usage_report では、ローカルでフェーズごとの測定値とレイテンシを確認できます。公開されている 3 つの .NET ソリューション(C# が約 25k 行、約 55k 行、約 1.8M 行)を対象にした、標準化されたコールド/ウォーム時の時間と RAM のベンチマークは、アーキテクチャと根拠のガイドで公開されています。これらの制御は、依然として普遍的なパフォーマンスを保証するものではありませんが、測定済みの境界を示せるようになりました。
現在、公開リリースには、明示された LTS 期間、応答時間の SLA、またはすべての MCP 応答と永続化スキーマがバージョン間で変更されないという保証はありません。代わりに、運用上の保護策を明示しています。変更履歴にリリースを記録し、server_info でバージョン、ビルド、構成の差異を報告します。永続化された分析にはペイロードスキーマとアナライザーの識別情報が含まれ、互換性がない場合はライブ分析にフォールバックします。また、デスクトップアプリは新しいスキーマで作成されたデータベースへの書き込みを拒否します。データベースの移行は一方向になることがあるため、確実にロールバックするには、更新前にバックアップを作成し、移行前のデータベースを別途用意するか復元したうえで、旧ビルドを使用してください。必要に応じて、商用契約でより強固なサポート、応答時間、バージョン保守に関する取り決めを定められます。詳しくはサポートをご覧ください。
CLI の概要
aicb init Connect a project to the MCP server and install the agent skill.
aicb analyze Analyze a solution and emit context Markdown.
aicb export Re-render Markdown from an existing session database.
aicb import Import a constellation JSON.
aicb list List built-in and custom profiles and presets.
aicb mcp Start the stdio MCP server.
aicb call Invoke one MCP tool without an MCP client.
オプションを確認するには、aicb <command> --help を実行してください。
デフォルトでローカル
- CLI と MCP サーバーには外部ネットワークへの接続機能がなく、分析対象のソースコードを変更しません。
- 外部向けのテレメトリ、分析、更新チェック、アカウント、ライセンスサーバーはありません。MCP サーバーは、
usage_reportとデスクトップアプリの MCP Usage ページで確認できるよう、ツールの呼び出しをローカルに記録します。このログがマシンの外部に送信されることはありません。 - デスクトップアプリが接続できるのは、設定した LLM エンドポイントのみです。手動実行、モデルプロファイルの接続テスト、または Layer Profile と Exclude Namespaces の初回読み込み時に、自動初期化フラグが有効になっている場合の提案に使用されます。エンドポイントにはローカルモデルも指定できます。Details タブは実際のエディターでもあり、明示的に Save を使用した場合にのみファイルを保存します。
- ソリューションを開くと、IDE や
dotnet buildと同様に、参照を解決するためにそのソリューションの MSBuild ロジックが実行されます。また、コンパイルをビルドすると、プロジェクトが参照するソースジェネレーターが実行されます。信頼できるソリューションのみを分析してください。AICB はサードパーティ製 Roslyn アナライザーを実行しません。ただし、明示的に有効化できる例外として、get_diagnosticsにrunSuppressors: trueを指定すると、実際のビルドと同様にプロジェクトの診断サプレッサーが実行されます。
明示的に名前が付けられた一部のツールは、構成またはエクスポートを書き込めます。これについては各ツールの説明に記載されています。脅威モデルの全容と非公開の報告方法は、SECURITY.mdをご覧ください。
ライセンスの概要
以下の用途は無料です。
- 個人による私的利用、趣味での利用、教育目的での利用、
- 認定教育機関による、教育、学習、非営利の研究目的での利用、
- 次の基準のいずれにも達していない組織:従業員数100人、年間売上高1,000万ユーロ、開発者21人。
基準はクライアントではなく、お客様の組織に適用されます。いずれかの基準に初めて達した後、商用ライセンスに合意するまで90日間の猶予があります。この期間中も利用は無料です。この90日間は契約上の規定にすぎません。AICBはライセンスのカウントダウンを開始せず、基準や期限に関するデータを送信せず、機能をブロックせず、期間終了時に技術的に動作を停止することもありません。商用ライセンスは、ライセンス対象の開発者1人あたり月額25ユーロからです。正確な価格と範囲は、ユーザー数、希望するサポートレベル、改善リクエストに関して合意した優先度によって異なります。商用契約には、サポート、明確に定めた応答やメンテナンスに関する約束、改善の優先的な検討や実装などを含めることができます。たとえば、一般に役立つアナライザーが、お客様のコードに見られるパターンをより正確に処理できるようにすることが可能です。このような作業はAICB製品全般の改善につながりますが、お客様専用のフォークを作成したり、AICBを特定のコードベースに特化させたりするものではありません。お客様のコードが自動的に収集されたり、改善に使用されたりすることはありません。コードを調査するには、お客様が意図的に提供する資料やアクセス権、および対象範囲と機密保持に関する別途の合意が必要です。具体的な成果物、優先事項、保証が有効となるのは、個別契約に明記されている場合に限ります。文書化されたインターフェイスを通じてAICBをMCPクライアント、エージェントハーネス、スクリプト、ビルドシステム、CIに接続することは許可されています。AICBのバイナリを再配布、変更、再パッケージ、再販売すること、またはホステッドサービスとして提供することは禁止されています。お問い合わせ先:[email protected]。わかりやすいガイド、LICENSE.txt、および二言語併記の全文版EULA.mdをご覧ください。
サポートと継続的な開発
AICB は現在も積極的に開発されています。 変更履歴には各リリースの記録があり、公開済みのリリースは リリースページで確認できます。
サポートはライセンスに準じます。
| 無料 | 商用契約 | |
|---|---|---|
| 対象者 | しきい値未満のすべての方 | しきい値以上の組織、またはより強固な条件を希望する方 |
| チャネル | GitHub Discussions、Issues | 直接の連絡に加え、公開チャネルも利用可能 |
| 回答目標 | 可能な範囲で対応 | 2 営業日以内 |
| セキュリティ修正 | 公開リリースを通じて提供 | 確認済みの脆弱性について、10 営業日以内の修正を目標 |
| バージョンの保守 | 現行リリース | 個別に合意した保守期間 |
| 改善要望 | コミュニティ主導 | 優先的に検討。合意した優先事項は契約に明記 |
| ソースへのアクセス | なし | NDA のもとでのコードレビューに合意可能 |
この表の目標値は、個別の契約に盛り込める一般的な目安です。
契約書に明記された場合にのみ拘束力を持ち、支払いだけで明示されていない SLA が生じることはありません。価格はライセンスの概要をご覧ください。お問い合わせ先は
[email protected]です。
ご質問や機能のリクエストは、
GitHub Discussionsで歓迎します。バグは
GitHub Issuesから報告し、
aicb --versionと、MCP の問題の場合はserver_infoの出力を添えてください。セキュリティ上の問題は、
SECURITY.mdに記載の方法で非公開で報告してください。
ドキュメント
上記は概要です。以下の 3 つのマニュアルに詳細なリファレンスを掲載しています。 全 35 章で、各マニュアルは 70,000~88,000 語、合計でこの README の約 39 倍の長さです。
- はじめに - インストール、接続、最初の質問
- ツールリファレンス - デフォルトの MCP プロファイル向けに生成されたリファレンス
- アーキテクチャ、制限、根拠資料 - インメモリモデル、更新、コンテキスト選択、静的解析の範囲、ベンチマークの状況
- MCP サーバーマニュアル - 12 の Markdown 章からなる詳細なリファレンス:クライアントへの接続、
aicb init、セッションと古さ、プロファイルとファセット、すべてのツール、トラブルシューティング - 総合リファレンスマニュアル - 12 の Markdown 章からなる詳細なリファレンス。同じフォルダーに印刷用 PDF もあります
- デスクトップアプリリファレンスマニュアル - 11 の Markdown 章からなる詳細なリファレンス。同じフォルダーに印刷用 PDF もあります
- 変更履歴と最新リリース
「AIContextBuilder」と「AIContextBuilder for .NET」は Gregor Dadera が使用する製品名です。商標登録を主張するものではありません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。