CogniRepo について
CogniRepoは、AIコーディングエージェント向けのオフラインコードコンテキスト・永続メモリーサーバーで、大規模なコードベースで特に役立ちます。シンボル索引、コードとメモリーの検索、プロジェクト履歴、アーキテクチャ情報を組み合わせ、APIキーなしで利用できます。
主な機能
- 01シンボルとコードの関係を索引化
- 02コードとメモリーのセマンティック検索
- 03トークン予算に応じたコンテキスト取得
- 04セッション、エラー、決定事項の記録
- 05プロジェクトのアーキテクチャ要約を生成
- 06APIキーなしでオフライン動作
活用シーン
- 01リファクタリング前にシンボルと呼び出し元を検索
- 02過去のセッション情報から作業を再開
- 03トークン予算内で関連コードのコンテキストを取得
- 04過去のエラーやアーキテクチャ上の決定を確認
MCP 対応
CogniRepoは、コード検索、グラフ照会、メモリー、セッション履歴、ユーザー設定、エラー追跡のための36個のMCPツールを提供します。Claude、Cursor、Gemini CLIなどのMCP対応クライアントが、索引化されたプロジェクト情報を利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
CogniRepo
mcp-name: io.github.ashlesh-t/cognirepo
あらゆる AI ツールのための永続的なメモリとコンテキスト。チャットボットではなく、インフラです。

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/類似ツールの比較:
| 機能 | CogniRepo | claude-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 |
|---|---|---|---|---|---|
| flask | 92 | 0.002 ms | 97.3% | 29.5% | 80.5% |
| fastapi | 1,178 | 0.003 ms | 97.6% | 63.5% | 97.1% |
| celery | 444 | 0.003 ms | 99.7% | 77.7% | 100.0% |
| ansible | 4,196 | 0.008 ms | 96.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 | インデックス化されたすべてのソースファイル |
FUNCTION | docstring を含む関数およびメソッドの定義 |
CLASS | 基底クラスを含むクラス定義 |
CONCEPT | docstring と識別子から抽出された意味概念 |
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 | 型が正しくありません。関数の境界で入力を検証してください |
KeyError | dict のキーがありません。デフォルト値を指定して .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 insights --since 90d # writes .claude/insights/<repoName>-insights.html
マルチモデルオーケストレーション
cognirepo ask は、各クエリに適したモデルを自動的に選択します。
| ティア | スコア | デフォルトモデル | 用途 |
|---|---|---|---|
| QUICK | ≤2 | ローカルリゾルバー | 単一トークン/単純なクエリ — API 不要で最速 |
| STANDARD | ≤4 | Haiku | 素早い検索、事実確認、単一シンボル |
| COMPLEX | ≤9 | Sonnet | 中程度の推論 |
| EXPERT | >9 | Opus | ファイル横断、アーキテクチャ関連、曖昧なクエリ — 完全なコンテキストと最良のモデル |
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 | .swift | cognirepo[languages] |
| Kotlin | .kt .kts | cognirepo[languages] |
| JavaScript / TypeScript | .js .ts .jsx .tsx | cognirepo[languages] |
| Java | .java | cognirepo[languages] |
| C# | .cs | cognirepo[languages] |
| Go | .go | cognirepo[languages] |
| Rust | .rs | cognirepo[languages] |
| Ruby | .rb | cognirepo[languages] |
| C / C++ | .c .cpp .h | cognirepo[languages] |
| PHP | .php | cognirepo[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 の Goselector_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_dispatchCONCEPT ノードへの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.md | CLI、MCP、Docker の完全なリファレンス |
| docs/CLI_REFERENCE.md | すべてのコマンドとフラグ(テストで実際の CLI と照合済み) |
| docs/CONFIGURATION.md | config.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をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。