mcpField
A
Aegis

Aegis

ローカル
github.com/fuwasegu開発ツール11520 週間前に更新

Aegis について

Aegis は、AI コーディングエージェントにアーキテクチャガイドラインを提供する MCP サーバーです。RAG による検索ではなく、依存エッジの DAG から決定的にコンテキストを編成します。エージェントに設計ルールを守らせつつ、トークン消費を抑えたいチーム向けです。ルールの変更には、別の admin サーフェスでの人による承認が必要です。

主な機能

  1. 01DAG に基づく決定的なコンテキスト編成
  2. 02対象ファイルに応じたドキュメント選択
  3. 03agent と admin の MCP サーフェスを分離
  4. 04ルール変更には人による承認が必要
  5. 05Git で管理する bundle による知識の共有

活用シーン

  1. 01コーディングエージェントにモジュール別の設計制約を渡す
  2. 02不足しているガイドラインを observe で記録し提案を作成する
  3. 03承認済みのアーキテクチャ知識をチーム間で同期する

MCP 対応

Aegis は MCP サーバーとして動作し、agent サーフェスで aegis_compile_context や aegis_observe などのツールを公開します。admin サーフェスは初期化、ドキュメント取り込み、承認を担当します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"aegis": {
"command": "npx",
"args": [
"-y",
"@fuwasegu/aegis"
]
}
}
}
起動コマンドnpx -y @fuwasegu/aegis

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@fuwasegu/aegis

ツール

6

掲載時のツール一覧 · 3 週間前に更新

パラメーター型必須説明
target_filesarrayはい編集中のファイルパス(必須)
target_layersarrayいいえ明示的なレイヤー名(省略可。省略した場合はパスから推定)
agent_idstringいいえワークスペースの可視性に使用する任意のクライアント自己 ID(compile_log にのみ保存され、コンパイル出力には影響しません)。
commandstringいいえコマンド名:scaffold、refactor、review など。
planstringいいえコンテキスト拡張用の自然言語による計画テキスト(IntentTagger が必要)
intent_tagsarrayいいえコンテキスト拡張用の明示的な意図タグ。設定すると([] を含む)、SLM タガーは使用されません。省略すると、plan に基づいて SLM にフォールバックします。
max_inline_bytesnumberいいえインラインコンテンツの上限(UTF-8 バイト単位、デフォルト:131072 = 128KB)
content_modeenumいいえコンテンツ配信モード(デフォルト:auto)auto | always | metadata
include_debugbooleanいいえdebug_info(near_miss_edges、layer_classification、budget_dropped)をレスポンスに含めます。デフォルト:false — 同じ診断情報は常に記録され、aegis_get_compile_audit から取得できます。
min_relevancenumberいいえ関連性スコアがこのしきい値(0-1)を下回るドキュメント/テンプレートを省略します。関連性スコアのないドキュメント(plan が指定されていない場合)は常に保持されます。デフォルト:0(フィルタリングなし)。

詳細

Aegis Aegis

Aegis

AI コーディングエージェント向け DAG ベースの決定論的コンテキストコンパイラー

日本語版 README | 技術ガイド

Aegis は、AI コーディングエージェントにアーキテクチャガイドラインを適用する MCP サーバーです。RAG の代わりに、依存関係のエッジで構成される DAG を使用して、指定されたターゲットファイルに必要なドキュメントだけを決定論的にコンパイルします。検索も順位付けもありません。決定論的です。

クイックスタート

  1. IDE の MCP 設定に Aegis を追加します(インストールを参照)
  2. AI エージェントに次のように依頼します。「このプロジェクト用に Aegis を初期化して、アダプタールールをデプロイしてください。」
  3. エージェントが aegis_init_detect → aegis_init_confirm → npx @fuwasegu/aegis deploy-adapters を自動的に実行します

データベースは、プロジェクトのルートにある .aegis/aegis.db に保存されます。.aegis/ ディレクトリには専用の .gitignore が含まれているため、手動設定は不要です。

インストール

Aegis は 2 つの MCP サーフェスを使用します。両方が必要です。

サーフェス役割ツール
agentコンテキストのコンパイル、観測の記録、および関連する読み取り — Canonical の変更は不可6 個のツール(compile、observe、audit、known_tags、workspace_status、detect)
admin初期化、承認、トリアージ24 個のツール(共通 6 個 + admin 専用 18 個)

agent サーフェスだけでは、プロジェクトの初期化や提案の承認はできません。この分離により、人間の承認なしに AI エージェントがアーキテクチャルールを変更できないようにしています。(INV-6)

Cursor

.cursor/mcp.json に追加します。

{
  "mcpServers": {
    "aegis": {
      "command": "npx",
      "args": ["-y", "@fuwasegu/aegis", "--surface", "agent"]
    },
    "aegis-admin": {
      "command": "npx",
      "args": ["-y", "@fuwasegu/aegis", "--surface", "admin"]
    }
  }
}

初期化後、deploy-adapters は .cursor/rules/aegis-process.mdc を生成します。これは、コードを書く前に Aegis を参照し、その後に違反を報告するようエージェントに指示する Cursor ルールです。

Claude Code
claude mcp add aegis -- npx -y @fuwasegu/aegis --surface agent
claude mcp add aegis-admin -- npx -y @fuwasegu/aegis --surface admin
または、.mcp.json に手動で追加します
{
  "mcpServers": {
    "aegis": {
      "command": "npx",
      "args": ["-y", "@fuwasegu/aegis", "--surface", "agent"]
    },
    "aegis-admin": {
      "command": "npx",
      "args": ["-y", "@fuwasegu/aegis", "--surface", "admin"]
    }
  }
}

初期化後、deploy-adapters は CLAUDE.md に `` セクションを追記します(存在しない場合は作成します)。

Codex
codex mcp add aegis -- npx -y @fuwasegu/aegis --surface agent
codex mcp add aegis-admin -- npx -y @fuwasegu/aegis --surface admin
または、.mcp.json に手動で追加します
{
  "mcpServers": {
    "aegis": {
      "command": "npx",
      "args": ["-y", "@fuwasegu/aegis", "--surface", "agent"]
    },
    "aegis-admin": {
      "command": "npx",
      "args": ["-y", "@fuwasegu/aegis", "--surface", "admin"]
    }
  }
}

初期化後、deploy-adapters は AGENTS.md に `` セクションを追記します(存在しない場合は作成します)。

注: Codex の MCP サポートは CLI のバージョンによって異なります。MCP を利用できない場合でも、エージェントは生成された AGENTS.md の指示に従って Aegis のガイドラインを利用できます。

使い方

1. プロジェクトを初期化する

admin サーフェスを使用して、空のナレッジベースで Aegis を初期化します。

aegis_init_detect({ project_root: "/path/to/your/project", skip_template: true })
aegis_init_confirm({ preview_hash: "<hash from detect>" })

空のナレッジベースが作成されます。次の手順でアーキテクチャドキュメントを追加します。

次に、CLI を使って AI コーディングツール用のアダプタールールと Agent Skills をデプロイします。

npx @fuwasegu/aegis deploy-adapters
npx @fuwasegu/aegis deploy-adapters --targets cursor,codex  # specific adapters only
2. 開発中に使用する

agent サーフェスは、AI コーディングエージェント向けのツールを提供します。拡張コンテキスト(タグ駆動のドキュメント)を使う場合の推奨フローは、セッションごとに aegis_get_known_tags を 1 回呼び出し(tag_catalog_hash をキャッシュ)、その後 intent_tags を compile に渡すことです。

aegis_get_known_tags({})
aegis_compile_context({
  target_files: ["src/core/store/repository.ts"],
  plan: "Add a new query method for archived observations",
  intent_tags: ["<tags from known_tags>"]
})

代わりに、オプションのサーバー側 SLM タガー(--slm が有効な場合)に plan からタグを推定させる場合に限り、intent_tags を省略してください(ADR-004)。SLM を使わずに拡張コンテキストをスキップするには、intent_tags: [] を渡します。

ベース DAG のみ(拡張コンテキストをスキップします。intent_tags: [] によって拡張コンテキストが無効になり、SLM によるタグ付けもスキップされるため、--slm の有無にかかわらず同じように動作します)。

aegis_compile_context({
  target_files: ["src/core/store/repository.ts"],
  plan: "Add a new query method for archived observations",
  intent_tags: []
})

編集対象のファイルに関連するアーキテクチャガイドライン、パターン、制約が返されます。

3. アーキテクチャドキュメントを追加する

初期化後、コードベースを分析してナレッジベースに内容を追加します。aegis_import_doc を admin サーフェスで使用し、ファイルパスに接続する edge_hints を指定してアーキテクチャドキュメントを追加します。

aegis_import_doc({
  file_path: "/absolute/path/to/docs/architecture-guide.md",
  doc_id: "architecture-guide",
  title: "Architecture Guide",
  kind: "guideline",
  tags: ["architecture"],
  edge_hints: [
    { source_type: "path", source_value: "src/domain/**", edge_type: "path_requires" }
  ]
})

file_path を使用すると、ディスクから直接内容を読み込めるため、LLM のコンテキストウィンドウによる切り詰めを回避できます。インポートごとに proposal_ids が返されます。ドキュメントを有効にするには、これらを承認してください。

インポートしたドキュメントをソースファイルと同期した状態に保つには、次のようにします。

aegis_sync_docs()   # detects changes via content hash, creates update_doc proposals

aegis_import_doc と aegis_sync_docs は、どちらも admin サーフェスを必要とします。詳細な手順を含む一括インポートのワークフローについては、deploy-adapters を介してデプロイする aegis-bulk-import スキルを参照してください。

4. 気づいた点を報告する

エージェントがガイドラインの欠落や修正点に気づいた場合は、次のようにします。

aegis_observe({
  event_type: "compile_miss",
  related_compile_id: "<from compile_context>",
  related_snapshot_id: "<from compile_context>",
  payload: { target_files: ["..."], review_comment: "Missing error handling guideline" }
})
5. 提案を確認する

気づいた点は分析され、提案にまとめられます。admin サーフェスから確認して承認してください。

aegis_list_proposals({ status: "pending" })
aegis_approve_proposal({ proposal_id: "<id>" })

プロジェクトの共有(チームのワークフロー)

Aegis では、Git にコミットするバンドル成果物を使って、承認済みの Canonical Knowledge をチームメンバー間で共有できます。これにより、開発者がそれぞれ一からナレッジベースを構築する必要がなくなります。

仕組み
ディレクトリ用途Git で追跡するか
.aegis/ローカルのランタイムデータベース(気づいた点、提案、コンパイルログ)いいえ
aegis-share/承認済み Canonical Knowledge の共有スナップショットはい
作成ワークスペース(ナレッジメンテナー)

提案を承認した後、現在の Canonical の状態をエクスポートします。

npx @fuwasegu/aegis share-export                # writes aegis-share/manifest.json + canonical.json
npx @fuwasegu/aegis share-export --out /path    # custom output directory

その後、aegis-share/ をコミットしてプッシュします。

レプリカワークスペース(チームメンバー)

更新された aegis-share/ を含む変更をプルした後、次のようにします。

npx @fuwasegu/aegis share-hydrate               # rebuild .aegis/aegis.db from aegis-share/
npx @fuwasegu/aegis share-hydrate --replace     # overwrite existing initialized DB
npx @fuwasegu/aegis share-hydrate --bundle-dir /path  # custom bundle directory

警告: share-hydrate は DB 全体を置き換えます。ローカルの運用状態(気づいた点、提案、コンパイルログ)は保持されません。これは設計どおりです。レプリカワークスペースは共有ナレッジの利用者であり、作成者ではありません。

共有状態の監視

Aegis は、ローカル DB と共有バンドルの間にある差異を自動的に検出します。

  • npx @fuwasegu/aegis doctor — 共有状態(in_sync、bundle_newer、local_ahead、diverged、unreadable_bundle)を表示します。対応が必要な状態の場合は終了コード 1 を返します。
  • npx @fuwasegu/aegis stats — JSON 出力に project_share を含め、詳細な状態を表示します。
  • aegis_compile_context の通知 — バンドルが同期されていない場合、エージェントに対応方法のヒント(例:「share-hydrate を実行して更新してください」)を提供します。

not_configured 状態(aegis-share/ ディレクトリがない場合)は通知されません。共有を設定するまでは余計な通知はありません。

一般的なチームのワークフロー
                    Authoring Workspace                    Replica Workspace
                    ───────────────────                    ─────────────────
  approve proposals ──► share-export ──► git push ──► git pull ──► share-hydrate
                                  aegis-share/ committed
  1. 作成者がナレッジベースを操作します(ドキュメントのインポート、提案の承認、同期)
  2. 作成者が share-export を実行して、aegis-share/ をコミットします
  3. チームが git pull を実行し、その後 share-hydrate --replace を実行します
  4. レプリカで compile_context を実行すると、作成者と同じガイドラインが返されます

共同編集(ソースネイティブ)

上記の DB ネイティブのワークフロー(観察 → 提案 → 承認)に加えて、Aegis はソースネイティブの共同編集モードにも対応しています。チームメンバーは aegis-share/source/ の人が読めるソースファイルを編集し、プルリクエストで変更を確認してから、データベースに反映します。

重要なルール: compile_context は常にデータベースから読み込み、ソースファイルを直接参照することはありません。ソースファイルは編集用の形式であり、DB はランタイム用の形式です。

2 つの承認経路
経路起点承認方法適した用途
DB ネイティブエージェントが不足に気づく → aegis_observe → aegis_approve_proposal人が admin サーフェスで提案を承認エージェントの気づきを起点とした、状況に応じたナレッジの改善
ソースネイティブ人が aegis-share/source/ を編集 → PR → マージ → share-materializePR のマージを承認とするGit ベースのコードレビューを通じた、先回りした共同編集

どちらの経路も併用できます。状況に合った方法を使うか、両方を使ってください。

ディレクトリ構成
aegis-share/
├── manifest.json              # Distribution bundle manifest (ADR-017)
├── canonical.json             # Distribution bundle data (ADR-017)
└── source/                    # Collaborative authoring source (ADR-018)
    ├── documents/
    │   └── <doc_id>.md        # Frontmatter + Markdown body
    ├── edges/
    │   ├── path-requires.json
    │   ├── layer-requires.json
    │   ├── command-requires.json
    │   └── doc-depends-on.json
    ├── layer-rules.json
    └── tag-mappings.json
ソースネイティブのワークフロー
# 1. Bootstrap: export current DB to source format (one-time setup)
npx @fuwasegu/aegis share-source-export

# 2. Edit source files (documents, edges, rules, mappings)
#    Create a branch, make changes, open a PR

# 3. Validate before committing
npx @fuwasegu/aegis share-format                 # Normalize formatting (deterministic, in-place)
npx @fuwasegu/aegis share-lint                   # Check for errors (after formatting)

# 4. After PR merge: apply source to DB
npx @fuwasegu/aegis share-materialize            # Applies changes + auto-approves
npx @fuwasegu/aegis share-materialize --dry-run  # Preview changes without applying

# 5. Export updated bundle for replicas
npx @fuwasegu/aegis share-export
CI 連携

マージ前にエラーを検出するため、CI パイプラインに share-lint を追加します。

npx @fuwasegu/aegis share-lint  # exits 1 on errors — suitable for CI checks
フェーズ 1 の制限事項
  • ローカルオーバーレイはサポートされていません。すべての変更は共有ソースを通じて行います
  • share-materialize は全体を適用します(増分パッチではありません)

拡張コンテキスト向け SLM — オプトイン

Aegis には、任意で SLM ベースの意図タグ付けを行うための llama.cpp エンジンが組み込まれています。SLM はデフォルトで無効です。決定論的な DAG ベースのコンテキストは、SLM なしでも問題なく機能します。

有効にするには、エージェントのサーフェスに --slm を追加します。

{
  "mcpServers": {
    "aegis": {
      "command": "npx",
      "args": ["-y", "@fuwasegu/aegis", "--surface", "agent", "--slm", "--model", "qwen3.5-4b"]
    },
    "aegis-admin": {
      "command": "npx",
      "args": ["-y", "@fuwasegu/aegis", "--surface", "admin"]
    }
  }
}

SLM を有効にして初めて起動すると、選択したモデルが ~/.aegis/models/ にダウンロードされます(すべてのプロジェクトで共有されます)。

モデルサイズ説明
qwen3.5-4b~2.5 GB推奨デフォルト — 高速で軽量
qwen3.5-9b~5.5 GBより高品質 — ベンチマークで最高の成績

HuggingFace URI を直接渡すこともできます:--model hf:user/repo:file.gguf

レガシー: Ollama ベースの推論を使用する場合は、--ollama フラグを利用できます。--ollama を使用すると、SLM が暗黙的に有効になります。

リファレンス

MCP ツール — エージェントサーフェス(6 ツール)
ツール説明
aegis_compile_context対象ファイルの決定論的なコンテキストをコンパイルします。出力サイズを制御するため、content_mode(auto/always/metadata)、max_inline_bytes、min_relevance(関連性の低いドキュメントを省略)、include_debug(オプトインの debug_info。デフォルトはオフ)をサポートします
aegis_observe観察結果を記録します(compile_miss、review_correction、pr_merged、manual_note、document_import、doc_gap_detected)
aegis_get_compile_audit過去のコンパイルの監査ログを取得します
aegis_get_known_tagstag_mappings(承認済みリンク)から、knowledge_version とキャッシュ用の SHA-256 tag_catalog_hash を伴う個別の意図タグを取得します
aegis_workspace_status読み取り専用のワークスペーススナップショット:最近のコンパイル領域、未解決の compile_miss のバックログ、保留中の提案数、調整のバックログ(hash-sync/anchor-sync/semantic-review)
aegis_init_detectプロジェクトを分析し、初期化プレビューを生成します
MCP ツール — 管理サーフェス(追加の 18 ツール、合計 24 ツール)
ツール説明
aegis_init_confirmプレビューハッシュを使用して初期化を確定します
aegis_list_proposalsオプションのステータスフィルターを指定して提案を一覧表示します
aegis_get_proposal証拠を含む提案の詳細をすべて取得します
aegis_approve_proposal保留中の提案を承認します
aegis_preflight_proposal_bundlebundle_id を共有する保留中の提案をドライランします
aegis_approve_proposal_bundleバンドル内の保留中の提案をすべて承認します(アトミック)
aegis_reject_proposal理由を指定して保留中の提案を却下します
aegis_check_upgradeテンプレートのバージョンアップグレードを確認します
aegis_apply_upgradeテンプレートのアップグレード用の提案を生成します
aegis_archive_observations古い観察結果をアーカイブします
aegis_get_statsナレッジ数と健全性シグナルを集計します
aegis_list_observations結果に基づくフィルタリング(proposed / skipped / pending)を行い、観察結果を一覧表示します
aegis_import_docドキュメントを Canonical Knowledge にインポートします(content または file_path から)。大きなコンテンツ、複数のセクション、または semantic-review の調整モードに対する注意喚起を返します
aegis_analyze_docADR-015:コンテンツまたは file_path を ImportPlan に分析します(読み取り専用)
aegis_analyze_import_batchADR-015:ドキュメント間の重複を考慮した一括インポート分析
aegis_execute_import_planbundle_id を共有する document_import 提案を作成します
aegis_process_observations保留中の観察結果に対する観察分析パイプラインを開始します
aegis_sync_docsファイルにアンカーされたドキュメントをソースファイルと同期します(調整モード対応:hash-sync、anchor-sync、semantic-review)
CLI サブコマンド
サブコマンド説明
deploy-adaptersIDE アダプター設定(Cursor ルール、CLAUDE.md、AGENTS.md)と Agent Skills をデプロイします
maintenance観測処理、ドキュメント同期、アーカイブ、アップグレード確認を実行します
statsナレッジの件数、使用状況、健全性、プロジェクトの共有状況を JSON 形式で出力します
doctor人が読みやすい形式で健全性を確認します(問題が見つかった場合は 1 で終了します)
share-export承認済みの Canonical Knowledge を aegis-share/ にエクスポートします
share-hydrate共有バンドルからローカル DB を再構築します(DB 全体を置き換えます)
share-source-export初期設定:DB を人が編集可能な aegis-share/source/ にエクスポートします
share-lintaegis-share/source/ を検証します(解析エラー、参照先のない項目)
share-formataegis-share/source/ を決定的に正規化します(インプレース)
share-materializeaegis-share/source/ を DB に適用します(ソース側で承認)
npx @fuwasegu/aegis deploy-adapters                         # Deploy all adapters
npx @fuwasegu/aegis deploy-adapters --targets cursor,codex  # Deploy specific adapters
npx @fuwasegu/aegis deploy-adapters --project-root /path    # Specify project root
npx @fuwasegu/aegis deploy-adapters --db /path/to/aegis.db  # Use custom DB path
npx @fuwasegu/aegis maintenance                             # Process observations, sync, archive
npx @fuwasegu/aegis maintenance --dry-run                   # Report only (no writes)
npx @fuwasegu/aegis stats                                   # JSON health and usage data
npx @fuwasegu/aegis doctor                                  # Health check summary
npx @fuwasegu/aegis share-export                            # Export to aegis-share/
npx @fuwasegu/aegis share-hydrate --replace                 # Rebuild DB from bundle
npx @fuwasegu/aegis share-source-export                     # Export DB to aegis-share/source/
npx @fuwasegu/aegis share-lint                              # Validate shared source
npx @fuwasegu/aegis share-format                            # Normalize shared source
npx @fuwasegu/aegis share-materialize                       # Apply source to DB
npx @fuwasegu/aegis share-materialize --dry-run             # Preview changes
npx @fuwasegu/aegis --list-models                           # List available SLM models

注記:バージョン追跡が更新されるのは、--targets を指定しない完全デプロイの場合のみです。部分デプロイではバージョン記録が更新されないため、完全デプロイを実行するまで「アダプターテンプレートが古い可能性があります」という通知が表示され続けます。

CLI フラグ(MCP サーバーモード)
フラグデフォルト説明
--surfaceagentagent または admin
--db.aegis/aegis.dbSQLite データベースのパス
--templates./templates同梱テンプレートのディレクトリ
--template-dir追加のテンプレート検索パス(ローカルの設定が同梱テンプレートより優先されます)
--slmfalseコンテキスト拡張のために SLM を有効にします(インテントタグ付け)
--modelqwen3.5-4bSLM のモデル名または HuggingFace URI(--slm が必要です)
--list-models利用可能なモデルを表示して終了します
--ollamafalse組み込みの llama.cpp の代わりに Ollama を使用します(--slm を暗黙的に指定します)
--project-rootcwd()リポジトリ相対の source_path 解決とデフォルト DB パスに使用するプロジェクトルート
--ollama-urlhttp://localhost:11434Ollama API の URL(--ollama 使用時)

開発

ビルド
npm run build    # Compile TypeScript
npm test         # Run all tests (406+)
npm run test:watch
ソースからビルド
git clone https://github.com/fuwasegu/aegis.git
cd aegis
npm install && npm run build
アーキテクチャ
┌─ MCP Layer (src/mcp/) ──────────────────┐
│ Tool registration, surface separation   │
└──────────────┬──────────────────────────┘
               │
┌─ Core Layer (src/core/) ────────────────┐
│ ContextCompiler, Repository, Init,      │
│ Automation (Analyzers), Tagging         │
└──────────────┬──────────────────────────┘
               │
┌─ Adapters (src/adapters/) ──────────────┐
│ Cursor, Claude rule generation          │
└──────────────┬──────────────────────────┘
               │
┌─ Expansion (src/expansion/) ────────────┐
│ llama.cpp engine, IntentTagger          │
└─────────────────────────────────────────┘

依存関係は下位方向に流れます。Core が MCP、Adapters、Expansion からインポートすることはありません。

主な概念
  • Canonical Knowledge:承認済みのアーキテクチャ文書と DAG エッジ
  • Observation Layer:エージェントが報告するイベント(コンパイルの見落とし、修正、PR のマージ)
  • Proposed Layer:人による承認が必要な自動提案
  • Snapshots:Canonical Knowledge の不変でコンテンツアドレス可能なバージョン

ライセンス

ISC

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。