mcpField
C
CogniRepo

CogniRepo

ローカル
github.com/ashlesh-t開発ツール153 週間前に更新

CogniRepo について

CogniRepoは、AIコーディングエージェント向けのオフラインコードコンテキスト・永続メモリーサーバーで、大規模なコードベースで特に役立ちます。シンボル索引、コードとメモリーの検索、プロジェクト履歴、アーキテクチャ情報を組み合わせ、APIキーなしで利用できます。

主な機能

  1. 01シンボルとコードの関係を索引化
  2. 02コードとメモリーのセマンティック検索
  3. 03トークン予算に応じたコンテキスト取得
  4. 04セッション、エラー、決定事項の記録
  5. 05プロジェクトのアーキテクチャ要約を生成
  6. 06APIキーなしでオフライン動作

活用シーン

  1. 01リファクタリング前にシンボルと呼び出し元を検索
  2. 02過去のセッション情報から作業を再開
  3. 03トークン予算内で関連コードのコンテキストを取得
  4. 04過去のエラーやアーキテクチャ上の決定を確認

MCP 対応

CogniRepoは、コード検索、グラフ照会、メモリー、セッション履歴、ユーザー設定、エラー追跡のための36個のMCPツールを提供します。Claude、Cursor、Gemini CLIなどのMCP対応クライアントが、索引化されたプロジェクト情報を利用できます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"ashlesh-t-cognirepo": {
"command": "uvx",
"args": [
"cognirepo"
]
}
}
}
起動コマンドuvx cognirepo

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

パッケージ
pypicognirepo1.1.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

CogniRepo

mcp-name: io.github.ashlesh-t/cognirepo

あらゆる AI ツールのための永続的なメモリとコンテキスト。チャットボットではなく、インフラです。

CI Security PyPI version GitHub Stars License: MIT Python 3.11+ Discord

alt text


lookup_symbol はファイル名と行番号を非常に高速に返します。grep では 2~8 秒かかります。 15K LOC 以上の Python リポジトリでは、CogniRepo によって、対象を絞った grep+read を基準に AI コーディングエージェントのトークン使用量が 約 30~78% 削減されます(該当するすべてのファイルを無造作に読み込む場合と比べると、最大 96~99% 削減)。Flask、FastAPI、Celery、Ansible(5,900 以上のファイル)でベンチマーク済みです。Claude Code、Cursor、Gemini CLI で動作します。完全オフラインです。インデックス作成や 36 個の MCP ツールのいずれにも API キーは不要です。


機能

AI との会話は、毎回ゼロから始まります。Claude、Cursor、Gemini は、昨日修正したこと、どのファイルがどの機能に関連しているか、前回のスプリントでどのような決定がなされたかを覚えていません。CogniRepo はそれを解決します。

コードベースとあらゆる AI ツールの間に位置し、次の機能を提供します。

  • セマンティックメモリ — sentence-transformer の埋め込みを使用した FAISS ベクトルストアです。決定事項、ドキュメント、アーキテクチャに関するメモを保存し、自然言語で検索できます。
  • エピソードログ — 追記専用のイベントジャーナルです。エラーが起きる前に何があったかを把握できます。
  • ナレッジグラフ — 関数、クラス、ファイル、インポート、継承チェーン、呼び出し関係、概念を結びつける NetworkX DiGraph です。すべて検索できます。
  • AST リバースインデックス — サポートされているあらゆる言語で、コードベース全体のシンボルを O(1) で検索できます。
  • ユーザー行動プロファイリング — あなたのプロンプトの傾向を追跡するため、毎回好みを説明し直さなくても、Claude が応答スタイルを調整します。
  • エラー追跡 — エラーと再発防止のヒントを記録し、Claude がセッションをまたいで同じ間違いを繰り返すのを防ぎます。
  • セッション履歴 — 会話のやり取りを永続化し、どのセッションからでも前回の続きから再開できます。
  • アーキテクチャ概要 — 初回初期化時に自動生成されます。ローカルの AST インデックスだけを使用して構築されるため、API キーは不要です。ファイル → ディレクトリ → リポジトリの概要ツリーを作成し、セマンティック検索用に FAISS に埋め込みます。
  • 複数モデルのオーケストレーション — クエリの複雑さを分類し、コンテキストを構築して、適切なモデルに振り分けます。深い推論には Claude、素早い検索には Gemini Flash を使用します。すべて自動です。

接続するすべての AI ツールが、蓄積された同じプロジェクト知識を利用できます。メモリはセッションやツールをまたいで、時間が経っても保持されます。


CogniRepo を使用するタイミング

15K LOC 以上のコードベースで最も効果を発揮します。 小規模なリポジトリ(10K LOC 未満)では、ネイティブのファイル読み込みが十分に高速なため、MCP ツールスキーマのオーバーヘッド(36 個のツールで約 3,700 トークン)が、節約できる量を上回ります。損益分岐点は、中規模のリポジトリでおよそ 4 回のツール呼び出しです。

CogniRepo と claude-context/類似ツールの比較:

機能CogniRepoclaude-context/類似ツール
純粋なコード検索✓(FAISS + graph + AST)✓ 初回利用時はより高速な場合が多い
エピソード記憶(前のスプリントで何が起きたか)✓ 永続的な BM25 + ベクトル✗
エージェント間の引き継ぎ(Claude → Gemini → Cursor)✓ last_context.json を共有✗
ユーザー行動プロファイル(深さ/スタイルを適応)✓ get_user_profile()✗
エラーパターンの回避(過去の失敗から学習)✓ record_error()✗
アーキテクチャ決定記録✓ record_decision()✗
複数リポジトリの組織グラフ(マイクロサービス)✓ CHILD_OF / CALLS_API エッジ✗

結論: セッションをまたいだ組織の記憶を重視する場合は、CogniRepo を選んでください。小規模なコードベースから一度だけコードを検索する場合は、よりシンプルなツールを使用してください。


効果 — 測定結果

FastAPI、Flask、Celery、Ansible、Moby/Docker、Kubernetes の 6 つの実際のオープンソースリポジトリを対象に、Claude、Gemini、Cursor/Codex でテストした 30 個の構造化プロンプトを使用してベンチマークしました。

指標値備考
トークン削減率 — Python リポジトリ50–84%FastAPI FA-2:12 000 → 2 500 · FA-4:2 000 → 450 · FL-4:8 000 → 1 250
トークン削減率 — 全テストの平均~60%両方のベースラインを取得できた FA/FL/CE/AN 全体
トークン削減率 — 複雑で動的なコードベース20–35%Celery CE-4/CE-5。深い非同期処理/動的ディスパッチのパターンでは、削減効果が低下します
シンボル検索のレイテンシ< 1 ms大規模なリポジトリでの grep は 2–8 s
ベースラインとの精度比較テストの 100% で同等以上精度の低下は確認されませんでした。FA-2 では精度が Moderate → High に向上しました
エージェント間のコンテキスト引き継ぎ✅ 検証済みCE-4:Claude がインデックスを準備し、Gemini CLI が利用しました。同じ精度でトークンを 35% 削減しました
動的ディスパッチのカバレッジ正直なギャップCE-3(APScheduler の beat ディスパッチ)は両方とも NA を返しました。CogniRepo は呼び出しチェーンを捏造しません
Go/複数言語のカバレッジ文法を同梱済みMoby MO-2 では 67% 削減しました。Go の tree-sitter 文法が追加されて以降(COGNIREPO-500、2026-09)、MO-3-5/K-* はまだ再実行していません

正直な限界: CogniRepo が最も効果を発揮するのは、静的構造が明確な Python リポジトリです。 動的ディスパッチのパターン(Celery beat、プラグインレジストリ)、深い Go コードベース、Ansible の 22 段階にわたる変数の優先順位チェーンでは、検索の信頼性が低下します。このツールは呼び出しチェーンを 幻覚で補うのではなく、不確実性を報告します。

測定結果:検索レイテンシとトークン削減(外部リポジトリ4件)

実際のリポジトリ4件をインデックス化し、v2.4.0+(2026-09-17)で cognirepo index-repo と cognirepo benchmark --json を使用して測定しました。CPU のみで、GPU は使用していません。

Repoファイル数検索レイテンシトークン削減(ナイーブ)トークン削減(ターゲット)context_relevance
flask920.002 ms97.3%29.5%80.5%
fastapi1,1780.003 ms97.6%63.5%97.1%
celery4440.003 ms99.7%77.7%100.0%
ansible4,1960.008 ms96.1%28.6%56.6%

2026-09-17 に測定しました。すべてのリポジトリで検索レイテンシは 0.1 ms 未満です。「ターゲット」は現実的なベースライン(grep と一致度が最も高いファイルを上位2件読み込み、エージェントが実際に行う処理を近似)です。「ナイーブ」は一致したファイルをすべて全体まで読み込む方法で、現実的な比較ではなく上限値です。moby と kubernetes はインデックス化できます(Go のサポートを確認済み、COGNIREPO-500)が、まだこの表には含まれていません。インデックス化に数時間かかるため、別途実施予定です。precision@k、シンボルヒット率、メモリー再現率を含む詳細な数値と方法については、docs/METRICS.md を参照してください。

ご自身のコードベースで cognirepo benchmark を実行すると、結果を再現できます。docs/METRICS.md を参照してください。


仕組み

代替テキスト


クイックスタート

必要条件
  • Python 3.11+
  • API キー(任意。cognirepo ask にのみ必要です): ANTHROPIC_API_KEY、GEMINI_API_KEY、OPENAI_API_KEY、または GROK_API_KEY。 インデックス化、メモリー、要約、およびすべての MCP ツールは完全にオフラインで動作します。
インストール
推奨 — pipx(グローバルにインストール、コマンド1つ、すべてのディストリビューションで動作)
pipx install cognirepo

これだけです。cognirepo setup が残りの設定を行います。ウィザードで有効にすると、pipx inject を使ってオプションの追加機能(言語、セキュリティ、プロバイダー)を自動的にインストールします。

pipx を推奨する理由: cognirepo 用の隔離された venv が自動的に作成されるため、fastembed とすべての依存関係を問題なくインストールできます。その後、cognirepo コマンドは すべてのディレクトリからグローバルに利用できるため、リポジトリごとの venv は不要です。

Arch Linux / Debian 12+ / Ubuntu 24.04+: システムの Python に pip install しないでください。 これらのディストリビューションでは PEP 668 が適用され、システム全体への pip インストールがブロックされます。pipx を使用してください。

pipx を先にインストール(必要な場合)
# Arch Linux
sudo pacman -S python-pipx

# Debian / Ubuntu
sudo apt install pipx

# macOS
brew install pipx

# Any platform (fallback)
pip install pipx --user
仮想環境内にインストール(代替方法)
python -m venv .venv && source .venv/bin/activate
pip install cognirepo
# extras are installed by the setup wizard automatically
開発用インストール(ソースから)
pipx install -e '.[dev,security,languages]'
# or inside a venv: pip install -e '.[dev,security,languages]'

注: CPU のみを使用した埋め込みがデフォルトです(fastembed/ONNX。PyTorch/CUDA は不要です)。 GPU を使用する場合:pipx inject cognirepo 'cognirepo[gpu]' を実行してから、torch を別途インストールしてください。

実行
# One-command onboarding (init + index + auto-configure MCP for Claude/Cursor/VS Code):
cognirepo setup

# Or step by step:
cognirepo init --no-index     # scaffold .cognirepo/
cognirepo index-repo .        # index your codebase (required before MCP tools work)
cognirepo index-repo . --daemon  # index and run watcher in background

# Keep the index fresh after every commit (indexes just the changed files, in the background):
cognirepo install-hooks

# Check everything is working:
cognirepo status                        # shows symbol count, graph nodes, signal warmth
cognirepo doctor                        # full health check (exit 0 healthy / 1 warnings / 2 errors)
cognirepo doctor --resources            # where memory and disk go: processes, store sizes, leftovers

# Query through multi-model orchestrator:
cognirepo ask "why is auth slow?"

# Manage background watchers (one per repo, however many sessions run):
cognirepo watch --ensure-running        # start it if it is not running
cognirepo list                          # show all running watcher daemons
cognirepo list -n <PID> --view          # tail the log of a specific watcher
cognirepo list -n <PID> --stop          # stop a watcher

初回セットアップ: MCP ツール(context_pack、lookup_symbol、who_calls など)からデータを取得するには、 cognirepo init と cognirepo index-repo . を完了しておく必要があります。


AI ツールを接続する

Claude Code / Claude Desktop(推奨 — プロジェクト単位)

プロジェクト内で cognirepo init を実行すると、Claude の設定を行うかどうかを尋ね、正しいプロジェクト固定コネクターを使って .claude/CLAUDE.md と .claude/settings.json を自動的に書き込みます。

各プロジェクトには、独立した専用コネクター cognirepo-<project> が作成されます。

{
  "mcpServers": {
    "cognirepo-myproject": {
      "command": "cognirepo",
      "args": ["serve", "--project-dir", "/abs/path/to/myproject"],
      "env": {}
    }
  }
}

--project-dir フラグを指定すると、MCP サーバーはそのプロジェクトの .cognirepo/ ディレクトリに固定されます。 Claude で複数のプロジェクトを同時に開いている場合でも、各コネクターはそれぞれのプロジェクトのメモリーのみを読み込みます。プロジェクトやチームをまたいでデータが混在することはありません。

Cursor / Copilot
cognirepo export-spec
cp adapters/cursor_mcp_config.json .cursor/mcp.json
# Restart Cursor — CogniRepo tools appear in the tool selector
Docker
cp .env.example .env          # add your API keys
docker compose up mcp         # MCP stdio server

MCP ツール — 完全なリファレンス

Claude、Cursor、および MCP 互換のあらゆるクライアントから、36個すべてのツールを利用できます。

コア検索
ツール説明使用するタイミング
context_pack(query, max_tokens=2000)トークン予算に基づくコードとメモリーのコンテキスト毎回のセッション — ファイルを読む前に最初に呼び出します
lookup_symbol(name)O(1) のシンボル検索 → ファイルと行関数を grep する前
who_calls(function_name)呼び出し元を追跡し、動的ディスパッチにもフォールバック影響分析、リファクタリング
search_token(word)名前、ドキュメント、コメントを対象とした単語レベルの逆引きインデックス概念がどこにあるかを探すとき
retrieve_memory(query, top_k=5)保存されたメモリーの意味的類似性検索回答する前 — 過去のコンテキストを取得
search_docs(query)すべての .md ファイルを対象とした全文検索ドキュメントの検索
semantic_search_code(query, language=None)コードシンボルのみを対象としたベクトル検索コードに関する意味検索
subgraph(entity, depth=2)ローカルなナレッジグラフの近傍シンボル間の関係を理解するとき
graph_stats()ノード/エッジの数とグラフの健全性グラフにデータがあるか確認
episodic_search(query, limit=10)イベント履歴を対象とした BM25 キーワード検索過去の決定やインシデントを探すとき
dependency_graph(module, direction="both")インポート/依存関係モジュール間の結合分析
explain_change(target, since="7d")ファイル/関数での変更内容と Git の相互参照最近の変更を理解するとき
architecture_overview(scope="root")事前計算された LLM によるアーキテクチャの要約全体像に関する質問
ユーザーとセッションの情報
ツール説明使用するタイミング
get_user_profile()ユーザーの対話スタイル:好みの詳細度、質問の種類、語彙セッション開始時に呼び出します — Claude の応答スタイルを調整します
get_session_history(limit=10)セッションをまたいだ最近の会話前のセッションのコンテキストを再開するとき
record_user_preference(key, value, context="")スタイルや形式の好みを保存ユーザーが解釈を訂正したとき、または好みを伝えたとき
エラーの追跡と防止
ツール説明使用するタイミング
get_error_patterns(min_count=1)再発するエラーと防止のヒント修正を提案する前 — 過去に失敗していないか確認
record_error(error_type, message, file_path, query_context)今後の回避に備えてエラーを記録Claude またはユーザーがエラーに遭遇した後
セッション開始
ツール説明使用するタイミング
get_agent_bootstrap()1 回の呼び出しで行うセッション開始:概要 + 前回のコンテキスト + プロフィール + エラー(約 900 トークンではなく約 300 トークン)最初の呼び出しとして推奨 — 4 回の呼び出し手順に代わります
get_session_brief()アーキテクチャ + 注目のシンボル + インデックスの健全性個別の情報が必要な場合の最初の呼び出し
get_last_context()前のセッションにおける最新の context_pack スナップショット前のエージェントが中断したところから再開
メモリーとストレージ
ツール説明使用するタイミング
store_memory(text, source="")FAISS インデックスにメモリーを保存バグの解決後、決定の記録
log_episode(event, metadata={})エピソードジャーナルにイベントを追記マイルストーン、インシデント、デプロイを記録
record_decision(summary, rationale="")アーキテクチャ上の決定をエピソードメモリーに記録自明でない設計上の選択を行うとき
supersede_learning(old_memory_id, new_text)古くなったメモリーを 1 回の呼び出しで廃止し、置き換え過去の決定や事実が変わったとき
レポート
ツール戻り値使用するタイミング
generate_insights(since="90d", repo_path=None)実際に保存された記録のみを基にした、自己完結型の HTML リポジトリー履歴レポート(タイムライン、決定、課題、アクティビティ、インデックスの健全性)「このリポジトリーで何が起きたか」などのリポジトリー履歴に関するリクエスト — 以下のリポジトリーの分析情報を参照
根拠に基づく異議申し立て
ツール返される内容使用するタイミング
check_precedent(instruction){conflicts: [...], advisory: true} — 記録された決定または CLAUDE.md の不変条件に矛盾する指示を、引用と具体的な代替案とともに提示します。処理をブロックすることはなく、常に助言として提示します。通常のリクエストでは conflicts は空になり、誤検出はありません実装前に、重要な指示が記録された前例と矛盾しないか確認するとき
リポジトリ横断(組織)
ツール説明使用するタイミング
org_search(query)組織内のすべてのリポジトリにわたってメモリを検索します複数リポジトリにまたがるコンテキストの問い合わせ
org_wide_search(query)組織内のすべてのプロジェクトを検索します最も広範なリポジトリ横断検索
org_dependencies(depth=2)リポジトリ間の双方向依存関係グラフ「このサービスは何に依存していますか?」
cross_repo_search(query, scope="project")プロジェクト単位または組織単位で検索します共通コンポーネントを見つけるとき
cross_repo_traverse(symbol, direction="both")リポジトリまたはシンボルを起点に、組織のグラフをたどりますサービス境界を越えてバグを追跡するとき
find_symbol_path(from_symbol, to_symbol)サービス間にまたがる、2 つのシンボル間の最短呼び出しグラフ経路リクエストの流れをエンドツーエンドで追跡するとき
get_service_endpoints(repo_path)サービスの HTTP エンドポイントレジストリマイクロサービスの API 一覧を確認するとき
list_org_context()組織のメタデータと関連リポジトリリポジトリ間の関係を把握するとき
link_repos(src_repo, dst_repo, relationship)リポジトリ間の依存関係を記録しますあるリポジトリが別のリポジトリをインポートしていることが分かったとき

ナレッジグラフ — インデックス対象

ナレッジグラフは、単純な呼び出しグラフよりも大幅に豊富な情報を含みます。

ノードの種類
種類説明
FILEインデックス化されたすべてのソースファイル
FUNCTIONdocstring を含む関数およびメソッドの定義
CLASS基底クラスを含むクラス定義
CONCEPTdocstring と識別子から抽出された意味概念
QUERY記録されたクエリノード(検索スコアリング用)
SESSION会話セッションノード
ERROR繰り返し発生するエラーパターンノード
MEMORYエージェント横断メモリノード(Claude/Gemini から同期)
エッジの種類
種類方向説明
DEFINED_INシンボル → ファイルシンボルが定義されているファイル
CALLS / CALLED_BY双方向目的ラベル付きの関数呼び出し関係
IMPORTSファイル → ファイルPython のインポート依存関係
INHERITSクラス → 親継承階層
CO_OCCURSファイル ↔ ファイル同時に編集されたファイル(行動に基づく共同編集のシグナル)
RELATES_TO概念 → シンボル意味概念の関連付け
QUERIED_WITHクエリ → シンボルスコアリング用の検索追跡

IMPORTS と INHERITS のエッジは、index-repo の実行時に Python AST から自動的に構築されます。 subgraph("MyClass", depth=2) または dependency_graph("mymodule") を使って、これらを検索できます。


ユーザー行動プロファイリング

CogniRepo はセッションをまたいだユーザーとのやり取りを追跡し、Claude が応答を調整するためのプロファイルを作成します。これにより、セッションごとに好みを繰り返し伝える必要がなくなります。

追跡される内容
  • 詳細度の好み — 平均クエリ長から推定されます:concise / medium / detailed
  • 質問の種類 — 次の種類の割合:why、what、how、fix、explain、where、refactor、add
  • ドメイン用語 — クエリに頻繁に登場する上位の用語
  • コードへの注目度 — コード識別子(シンボル、関数)に言及するクエリの割合
  • クエリのサンプル — Claude が質問の構成スタイルを推測するための、直近 3 件のクエリ
プロファイルへのアクセス
# MCP tool (Claude calls automatically at session start):
get_user_profile()

# CLI:
cognirepo user-prefs
プロファイル出力の例
{
  "depth_preference": "detailed",
  "top_question_type": "how",
  "question_type_distribution": {"how": 12, "why": 8, "fix": 5},
  "top_terminology": ["auth", "token", "session", "middleware", "validate"],
  "code_focus_percent": 73,
  "framing_hints": "prefers detailed responses; often asks 'how' questions; domain vocabulary: auth, token, session",
  "total_queries_tracked": 47
}

Claude はセッション開始時に framing_hints を受け取り、それに応じて応答の長さ、コードの密度、用語を調整します。プロファイルは時間とともに蓄積され、利用するほど精度が高まります。

エラーの追跡と防止

CogniRepo は、セッション中に発生したすべてのエラーを記録します。Python の例外、ビルド手順の失敗、問題のあったツール呼び出しなどが対象です。エラーは以下の情報とともに保存されます。

  • 重複排除用シグネチャ — 同じエラーによってカウントが増えるのを防ぎます
  • 防止のヒント — 同じ種類のエラーを回避するための的を絞った提案です
  • 発生時のコンテキスト — ファイルパスとエラーメッセージを含む直近 5 件の発生情報です
  • クエリのコンテキスト — エラーの原因となったクエリまたはアクションです
エラーの記録
# MCP tool (Claude calls after errors):
record_error("TypeError", "expected str got int", "config/parser.py", "fix config loading")
エラーパターンの確認
# MCP tool:
get_error_patterns()

以下が返されます。

[
  {
    "error_type": "TypeError",
    "count": 7,
    "files": ["config/parser.py", "api/handlers.py"],
    "last_seen": "2026-04-22T10:30:00Z",
    "prevention_hint": "Wrong type — validate inputs at function boundary.",
    "recent_context": "expected str got int in parse_config"
  }
]
組み込みの防止ヒント
エラークラス防止のヒント
NameError未定義の変数です。使用前にインポートとスコープを確認してください
ImportErrorインポートに失敗しました。パッケージがインストールされており、モジュールパスが正しいことを確認してください
AttributeErrorオブジェクトに属性がありません。型、None のガード、スペルを確認してください
TypeError型が正しくありません。関数の境界で入力を検証してください
KeyErrordict のキーがありません。デフォルト値を指定して .get() を使うか、先に存在を確認してください
IndexErrorリストの範囲外です。アクセス前に len() でチェックしてください
OSErrorファイル/IO エラーです。ファイル操作は必ず try/except OSError でガードしてください
SyntaxError構文エラーです。コミット前にリンターを実行してください
Timeoutタイムアウトです。明示的なタイムアウトパラメーターと再試行ロジックを追加してください
AssertionErrorアサーションに失敗しました。不変条件を見直してください。本番環境では assert を使用しないでください

セッション履歴

すべての cognirepo ask のやり取りは .cognirepo/sessions/ に保存されます。 セッションは UUID でインデックス化され、次の方法で取得できます。

# List recent sessions:
cognirepo sessions

# MCP tool — Claude calls at session start to resume context:
get_session_history(limit=5)

各エントリーには、セッション ID、作成日時、メッセージ数、使用モデル、および コンテキストをすばやく確認するための直近のユーザー/アシスタントのやり取りが含まれます。


アーキテクチャの要約

cognirepo init は、最初のインデックス作成後に cognirepo summarize の実行を自動的に提案します。 これにより、コードベース全体の 3 段階の LLM 要約が作成されます。

  • レベル 1 — リポジトリ全体の要約(プロジェクトの目的、主要なモジュール、エントリーポイント)
  • レベル 2 — ディレクトリごとの要約(各パッケージの役割)
  • レベル 3 — ファイルごとの要約(各ファイルの内容、主要な関数/クラス)

要約は .cognirepo/index/summaries.json に保存され、architecture_overview MCP ツールを通じて提供されます。Claude が全体像を理解するためのトークンコストはゼロです。

# Auto-prompted on first init. Run manually anytime:
cognirepo summarize

# Fully local — no API key required. Reads from ast_index.json, runs in < 1 second.
# File summaries are also embedded into FAISS for semantic architecture queries.

リポジトリの分析情報

CogniRepo はリポジトリについて何を把握できるのでしょうか。generate_insights()(または cognirepo insights)は、エピソードイベント、アーキテクチャ上の決定、未解決の課題、ブランチ/コミットのアクティビティ、インデックスの状態など、CogniRepo がプロジェクトについて記録したすべての情報を、単独で完結する HTML レポートにまとめます。実際に保存された記録のみを情報源としており、捏造はありません。以下のスクリーンショットは、このリポジトリで実際に生成されたレポート(cognirepo insights --since 365d)のもので、モックアップではありません。

CogniRepo の分析レポート、ライトモード CogniRepo の分析レポート、ダークモード

cognirepo insights --since 90d   # writes .claude/insights/<repoName>-insights.html

マルチモデルオーケストレーション

cognirepo ask は、各クエリに適したモデルを自動的に選択します。

ティアスコアデフォルトモデル用途
QUICK≤2ローカルリゾルバー単一トークン/単純なクエリ — API 不要で最速
STANDARD≤4Haiku素早い検索、事実確認、単一シンボル
COMPLEX≤9Sonnet中程度の推論
EXPERT>9Opusファイル横断、アーキテクチャ関連、曖昧なクエリ — 完全なコンテキストと最良のモデル
cognirepo ask "where is verify_token defined?"       # → QUICK, answered locally
cognirepo ask "why is auth slow?"                    # → EXPERT, Claude with full context
cognirepo ask --verbose "explain the circuit breaker"  # show tier/score/signals

プロバイダーのフォールバック順序:Grok → Gemini → Anthropic → OpenAI。 すべてのエラーは .cognirepo/errors/<date>.log に記録され、ユーザーに生のトレースバックが表示されることはありません。


言語サポート

言語拡張子インストール
Python.py標準搭載
Swift.swiftcognirepo[languages]
Kotlin.kt .ktscognirepo[languages]
JavaScript / TypeScript.js .ts .jsx .tsxcognirepo[languages]
Java.javacognirepo[languages]
C#.cscognirepo[languages]
Go.gocognirepo[languages]
Rust.rscognirepo[languages]
Ruby.rbcognirepo[languages]
C / C++.c .cpp .hcognirepo[languages]
PHP.phpcognirepo[languages]

詳細とロードマップ:docs/LANGUAGES.md


ストレージの構成

.cognirepo/
  config.json              ← project settings (project_id, models, retrieval weights, indexing, behaviour bounds)
  cognirepo.lock           ← cross-process store lock (OS advisory lock; never delete by hand)
  graph/
    graph.pkl              ← NetworkX DiGraph (optionally Fernet-encrypted)
    graph.journal          ← append-only journal, present only while `index-repo` runs or after a failed save
    behaviour.json         ← per-symbol hit counts, user profile, error patterns (bounded, see CONFIGURATION.md)
  index/
    ast_index.json         ← reverse symbol index + file records
    ast.index              ← FAISS IndexIDMap2 for code symbols
    ast_metadata.json      ← parallel metadata for ast.index rows
    manifest.json          ← git SHA, platform info and checksums for integrity checks (`verify-index`)
    summaries.json         ← LLM architectural summaries (Level 1–3)
    last_indexed.json, endpoints.json, http_calls.json, …   ← indexing bookkeeping
  vector_db/
    chroma/                ← default semantic-memory store (ChromaDB); `semantic.index` when `vector_backend: "faiss"`
  memory/
    episodic.json          ← append-only event journal
    semantic_metadata.json ← metadata for the local FAISS semantic store (`vector_backend: "faiss"`) and project memory
  learnings/
    learnings.json         ← structured learnings: decisions, bugs, prod issues
  watchers/                ← watcher registry (<pid>.json), heartbeat, lease (watcher.writer), logs
  sessions/                ← conversation session files
  errors/                  ← daily error logs (full tracebacks, never shown to users)
  hook.log, hook.last      ← output and last result of the git post-commit hook (`install-hooks`)

ローダーが退避させたファイルは保持され、通知なしに削除されることはありません。graph.pkl.corrupt-<ts>(完全なグラフが含まれている可能性があります。cognirepo graph restore を参照)、vector_db/chroma.corrupt-<ts>/、*.stale が該当します。cognirepo doctor --resources を実行すると、これらのファイルがサイズとともに一覧表示されます。想定されるサイズと調整項目については、docs/RESOURCES.md を参照してください。

.cognirepo/ 以下はすべてデフォルトで .gitignore の対象となり、コミットされることはありません。 Fernet 暗号化は config.json の storage.encrypt: true でオプトインできます。グラフ、動作モデル、組織グラフ、エピソードログ、ローカル FAISS ストアが対象ですが、AST インデックスとデフォルトの Chroma ストアは対象外です。対象範囲の詳細は SECURITY.md を参照してください。


CLI リファレンス

# Setup
cognirepo init                  # scaffold + configure; auto-indexes + auto-summarizes
cognirepo setup-env             # interactive API key wizard
cognirepo test-connection       # test API key connectivity
cognirepo migrate-config        # migrate deprecated config keys

# Indexing
cognirepo index-repo [path]     # AST-index a codebase
cognirepo summarize             # generate LLM architectural summaries (auto-prompted on init)
cognirepo seed --from-git       # seed behaviour weights from git history
cognirepo verify-index          # verify AST index integrity
cognirepo coverage              # per-directory symbol counts

# Querying
cognirepo ask <query>           # route through multi-model orchestrator
cognirepo retrieve-memory <q>   # similarity search
cognirepo search-docs <q>       # full-text search in .md files
cognirepo log-episode <event>   # append episodic event
cognirepo history               # print recent episodic events
cognirepo sessions              # list recent conversation sessions

# Memory management
cognirepo store-memory <text>   # save a semantic memory
cognirepo user-prefs            # view/set global user preferences
cognirepo prune [--dry-run]     # prune low-score memories

# Health & monitoring
cognirepo prime                 # generate session bootstrap brief
cognirepo status                # live retrieval signal weights + index health
cognirepo doctor [--fix]        # full health check; --fix auto-repairs common issues
cognirepo doctor --resources    # processes, store sizes and left-over files (read-only)
cognirepo benchmark             # run quantitative value benchmarks
cognirepo install-hooks         # git post-commit hook: reindex changed files after each commit
cognirepo graph restore         # list quarantined graphs and restore the best intact one (dry-run; --apply)

# Organization
cognirepo org create <name>     # create local organization
cognirepo org link <org> [path] # link repo to organization
cognirepo org list              # list organizations

# Daemon management
cognirepo list                  # list MCP servers, running daemons (`-n PID --stop` to stop one)
cognirepo watch --ensure-running  # start the background file-watcher (one per repo); `--status` to inspect

すべてのコマンド、フラグ、終了コードについては、docs/CLI_REFERENCE.md を参照してください。


今後の計画

v0.3.0 のベンチマーク結果とコミュニティからのフィードバックに基づく優先事項です。現在は v2.5.0 です。以下の項目の一部はすでに実装されており、該当する場合はその旨を記載しています。

近い将来
  • Go のコールグラフインデックス作成 — 完了(COGNIREPO-203): Go のレシーバー修飾メソッド呼び出し(recv.Method())が who_calls/CALLS エッジ経由で解決されるようになりました。tree-sitter の Go selector_expression では、メソッドフィールドの名前が property(抽出器が以前に想定していた JS の慣例)ではなく field であるため、メソッド呼び出しが暗黙のうちに除外されていました。これは _ts_collect_calls(intelligence/indexer/ast_indexer.py)で修正されました。同じ関数にあったもう一つのバグ、つまり呼び出し収集の再帰深度上限が 12 で、複合リテラルの呼び出し引数を伴う if 文をラップする Go メソッドを処理するには浅すぎるという問題も修正され、上限が 60 に引き上げられました。go.mod で解決されるローカルパッケージのインポートから Go の IMPORTS エッジを生成する機能(_extract_imports_go/_resolve_go_import_to_file)も実装されました。cognirepo_test_repo/advanced/moby で実環境検証を行い、両方の修正後、手作業で確認した呼び出し元 4 件すべてを解決できました(100%。目標の 90%を上回っています)。
  • cognirepo ask — 完了: マルチモデルオーケストレーター(QUICK/STANDARD/COMPLEX/EXPERT の各ティア)が実装され、実際の CLI コマンド(_cmd_ask_local、interface/cli/main.py)として接続されました。ストリーミング REPL モード(「より長期的な計画」を参照)はまだ実装されていません。
  • 保存時の増分再インデックス作成 — 完了: ファイル監視デーモン(cognirepo watch)は書き込みをデバウンスし(config.json の indexing.debounce_ms、デフォルトは 500ms)、インデクサーとグラフの保存をバッチ処理します。tests/test_watcher_debounce.py では、シャットダウン時のフラッシュも含めてテストしています。
  • CLAUDE.md の必須呼び出し制限の緩和 — ベンチマークのフィードバック(Moby テスト)では、すべてのファイル読み取りの前に context_pack を強制すると、メモリ負荷が高いときに遅延が増えることが指摘されました。50 行未満のファイルについて、ツールを先に使う制約をスキップする --fast モードはまだ実装されていません。
中期
  • プラットフォーム(3.0 で予定) — ユーザーごとに単一のデーモン、cognirepo ui コマンドを備えたローカル制御 API(/api/v1)、常駐するインメモリグラフを置き換える SQLite(WAL)グラフストアを導入します。API を利用する Engram コンソールは、独立したリポジトリで管理されています。設計上ローカル専用で、ホスト型リレーやリモートアクセスはありません。「Platform」エピックで追跡しています。
  • Kubernetes/200 万 LOC 規模の検証 — K8-1 から K8-5 までのテストスイートは未完了です。目標は、CogniRepo を使用した場合に 8,000 トークン未満で、使用しない場合の 50,000 トークン超と比べ、スケジューリングの判断を完全に追跡できることです。
  • プラグインレジストリパターンの検出 — 完了(COGNIREPO-203): 静的なアノテーション専用のヒューリスティック処理で、動的ディスパッチ経由で到達可能なシンボルにタグを付けます。対象は、Celery 形式の @task/@shared_task デコレーター、register(...) 形式のプラグイン登録呼び出し、Python の __init_subclass__ フック、パッケージングのエントリーポイント(pyproject.toml の [project.entry-points.*]/setup.cfg の [options.entry_points])です。dispatch:"dynamic" と、dynamic_dispatch CONCEPT ノードへの RELATES_TO エッジを付与します(intelligence/indexer/ast_indexer.py の _detect_dynamic_dispatch、_apply_entry_points_dispatch)。設計上アノテーション専用であり、CALLS エッジを捏造することはありません。cognirepo_test_repo/medium/celery の実際の @shared_task 関数で実環境検証済みです。
  • シンボル名に対する BM25 — 一部完了: 埋め込みが利用できない場合、core/_bm25.py はサーキットブレーカーのフォールバックランカーとして intelligence/retrieval/hybrid.py(およびエピソード検索)で使用されます。ただし、通常の取得パス(埋め込みが利用可能な場合)におけるシンボル名の部分一致再現率(例:HttpClient と http_client の一致)の主要なランキングシグナルには、まだなっていません。
  • セッションをまたいだメモリのウォームアップ — Ansible ベンチマークでは、新しいセッションでのエピソード/メモリ取得の価値が低いことが確認されました。cognirepo prime は実装済みですが、init 時には自動実行されません。デフォルトでオプトインにする予定です。
長期
  • cognirepo ask のストリーミング REPL — 階層ルーティング、セッションの永続化、サブエージェントへの委譲を備えた、完全な対話型セッションです。
  • ナレッジグラフの類似エッジ — 完了(COGNIREPO-202): インデックス作成後の FAISS k-NN 処理で、埋め込み済みの FUNCTION/CLASS シンボルベクトルを対象に、類似したシンボル間(ファイルをまたぐ場合のみ、ノードあたり最大 5 件、コサイン類似度 0.80 以上)に双方向の SIMILAR_TO エッジを追加します。config.json → indexing.similarity_edges で制御します(候補シンボルが 20k 未満の場合、デフォルトで有効)。intelligence/retrieval/hybrid.py::_graph_score では、重みを割り引いてスコアに反映します。
  • VS Code/JetBrains 拡張機能 — MCP 対応ホストを必要とせず、エディターのサイドバーから lookup_symbol、context_pack、who_calls を直接利用できるようにします。

ドキュメント

ドキュメント説明
docs/ARCHITECTURE.mdシステム設計、コンポーネントの責務、データフロー
docs/architecture/SPECIFICATION.md技術仕様、複雑さのシグナル、ストレージのレイアウト
docs/USAGE.mdCLI、MCP、Docker の完全なリファレンス
docs/CLI_REFERENCE.mdすべてのコマンドとフラグ(テストで実際の CLI と照合済み)
docs/CONFIGURATION.mdconfig.json のフィールド、環境変数、ストレージのレイアウト
docs/RESOURCES.mdメモリとディスクの使用量、doctor --resources、調整用パラメーター
docs/TROUBLESHOOTING.mdよくある問題:古いインデックス、ストアのビジー状態、フック、残存プロセス
CHANGELOG.md各リリースでの変更点とアップグレードに関する注意事項
docs/METRICS.md定量的ベンチマーク:トークン削減、検索速度の向上、再現率
CONTRIBUTING.mdアダプター、ツール、言語サポートの追加方法
SECURITY.md脆弱性の報告、データの取り扱い、信頼モデル
docs/LANGUAGES.md言語サポートの詳細とロードマップ

コミュニティ

質問やフィードバックがある方、ほかの人が何を作っているか見てみたい方は、 CogniRepo Discordに参加してください。

コントリビュートをご希望ですか?CONTRIBUTING.mdをご覧ください。 good first issueのラベルが付いたイシューは、初めてのPRに適した範囲に設定されています。


ライセンス

CogniRepoはMITライセンスで公開されています。

  • 無料で使用、調査、変更、配布できます
  • プロプライエタリ製品や商用サービスで使用できます。制限はありません
  • アプリケーションをオープンソースにする必要はありません

詳細はLICENSEをご覧ください。

コメント

MCP は初めてですか?

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

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