Exocortex について
Exocortex は、開発者の知識を全プロジェクトで共有できるローカル動作の MCP サーバーです。開発上の知見、技術的な決定、トラブルシューティングの記録を永続的に保存し、Cursor などの AI アシスタントから参照できます。リポジトリごとに分離する方式と異なり、単一の集中型ナレッジストアを使用します。
主な機能
- 01プロジェクト横断の集中型ナレッジストア
- 02意味に基づく記憶の検索
- 03記憶間のリンクとナレッジグラフ
- 04最終利用日と利用頻度に基づく想起順位
- 05記憶の閲覧と可視化のための Web ダッシュボード
- 06データと AI 処理をローカルで実行
活用シーン
- 01あるプロジェクトで得た教訓を他のプロジェクトで再利用
- 02過去のトラブルシューティング記録や技術的決定の参照
- 03ナレッジベース内の矛盾や古い情報の確認
MCP 対応
Exocortex 自体が MCP サーバーであり、exo_store_memory、exo_recall_memories、exo_curiosity_scan などのツールを Cursor などの MCP クライアントに提供します。AI アシスタントはこれらを通じて記憶を読み書きします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Exocortex 🧠
「心を拡張しよう。」- あなたの外部脳
Exocortex は、開発者の「第二の脳」として機能するローカル MCP(Model Context Protocol)サーバーです。
開発で得た知見、技術的な決定、トラブルシューティングの記録を保存し、必要に応じて AI アシスタント(Cursor など)が関連性の高いコンテキストを含む記憶を取得できるようにします。
Exocortex を使う理由
🌐 プロジェクトを横断したナレッジ共有
プロジェクトごとにデータを保存するツール(各プロジェクトの .serena/ など)とは異なり、Exocortex は一元化された単一のナレッジストアを使用します。
Traditional approach (per-repository):
project-A/.serena/ ← isolated knowledge
project-B/.serena/ ← isolated knowledge
project-C/.serena/ ← isolated knowledge
Exocortex approach (centralized):
~/.exocortex/data/ ← shared knowledge across ALL projects
├── Insights from project-A
├── Insights from project-B
└── Insights from project-C
↓
Cross-project learning!
メリット:
- 🔄 ナレッジの引き継ぎ: あるプロジェクトで得た教訓を、他のプロジェクトですぐに活用できます
- 🏷️ タグによる発見: 共通タグを使って、プロジェクトを横断して関連する記憶を見つけられます
- 📈 累積的な学習: 外部脳はプロジェクトごとではなく、時間とともに賢くなります
- 🔍 パターン認識: 開発履歴全体から、共通する問題や解決策を発見できます
機能
- 🔒 完全ローカル: すべてのデータと AI 処理はお使いのマシン上にとどまります。プライバシーを保証します。
- 🔍 セマンティック検索: キーワードだけでなく、意味から記憶を検索できます。
- 🕸️ ナレッジグラフ: 明示的なリンクを使って、プロジェクト、タグ、記憶間の関係を保持します。
- 🔗 記憶のリンク: 関連する記憶をつなぎ、たどることのできるナレッジネットワークを構築します。
- ⚡ 軽量で高速: 組み込みの KùzuDB と軽量かつ高速な fastembed モデルを使用します。
- 🧠 記憶のダイナミクス: 新しさと頻度に基づいて賢く想起します。頻繁にアクセスされる記憶ほど上位に表示されます。
- 🔥 フラストレーションのインデックス化: 「つらい記憶」を優先し、デバッグの悪夢を検索結果で上位に表示します。
- 🖥️ ウェブダッシュボード: 記憶の閲覧、健全性の監視、ナレッジグラフの可視化ができる、美しいサイバーパンク風 UI です。
📚 使い方ガイド
- ユースケース付きのツールリファレンス
- 実践的なワークフロー
- プロンプトのコツ
- ヒントとコツ
インストール
# Clone the repository
git clone https://github.com/fuwasegu/exocortex.git
cd exocortex
# Install dependencies with uv
uv sync
使い方
サーバーの起動
uv run exocortex
Cursor の設定
次の内容を ~/.cursor/mcp.json に追加します。
オプション 1: GitHub から直接利用(推奨)
uvx のキャッシュが期限切れになると自動更新されます。手動で git pull する必要はありません。
{
"mcpServers": {
"exocortex": {
"command": "uvx",
"args": ["--from", "git+https://github.com/fuwasegu/exocortex", "exocortex"]
}
}
}
オプション 2: ローカルインストール
開発またはカスタマイズ向けです。
{
"mcpServers": {
"exocortex": {
"command": "uv",
"args": ["--directory", "/path/to/exocortex", "run", "exocortex"]
}
}
}
注: データは
~/.exocortex/に保存され、選択したオプションにかかわらず保持されます。
オプション 3: プロキシモード(複数の Cursor インスタンス向け - 推奨)
複数の Cursor ウィンドウから Exocortex を同時に使う場合は、この方法を使用してください。
KùzuDB は、複数のプロセスからの同時書き込みをサポートしていません。各 Cursor インスタンスが独自のサーバープロセスを起動する stdio 方式では、ロックの競合が発生します。プロキシモードでは、バックグラウンドで単一の SSE サーバーを自動的に起動し、各 Cursor インスタンスはプロキシ経由で接続します。
{
"mcpServers": {
"exocortex": {
"command": "uvx",
"args": [
"--from", "git+https://github.com/fuwasegu/exocortex",
"exocortex",
"--mode", "proxy",
"--ensure-server"
]
}
}
}
動作の仕組み:
- 最初の Cursor が Exocortex を起動 → SSE サーバーがバックグラウンドで自動的に起動します
- 後続の Cursor は既存の SSE サーバーに接続します
- すべての Cursor が同じサーバーを共有 → ロックの競合は発生しません!
注: サーバーを手動で起動する必要はありません。
--ensure-serverオプションにより、サーバーが起動していない場合は自動的に起動します。
オプション 4: サーバーの手動管理(上級者向け)
サーバーを手動で管理する場合:
ステップ 1: サーバーを起動する
# Start the server in a terminal (can also run in background)
uv run --directory /path/to/exocortex exocortex --transport sse --port 8765
ステップ 2: Cursor を設定する
{
"mcpServers": {
"exocortex": {
"url": "http://127.0.0.1:8765/mcp/sse"
}
}
}
補足: この設定では、
http://127.0.0.1:8765/でウェブダッシュボードにもアクセスできます。
ヒント: システム起動時にサーバーを自動起動するには、macOS では
launchd、Linux ではsystemdを使用します。
MCP ツール
基本ツール
| ツール | 説明 |
|---|---|
exo_ping | サーバーが稼働していることを確認するヘルスチェック |
exo_store_memory | 新しいメモリを保存します |
exo_recall_memories | セマンティック検索で関連するメモリを呼び出します |
exo_list_memories | ページネーションで保存済みメモリを一覧表示します |
exo_get_memory | IDを指定して特定のメモリを取得します |
exo_delete_memory | メモリを削除します |
exo_get_stats | 保存済みメモリに関する統計情報を取得します |
高度なツール
| ツール | 説明 |
|---|---|
exo_link_memories | 2つのメモリ間にリンクを作成します |
exo_unlink_memories | メモリ間のリンクを削除します |
exo_update_memory | メモリの内容、タグ、または種類を更新します |
exo_explore_related | グラフをたどって関連するメモリを見つけます |
exo_get_memory_links | メモリから出ているすべてのリンクを取得します |
exo_trace_lineage | 🕰️ メモリの変遷/系譜を追跡します(時間的推論) |
exo_curiosity_scan | 🤔 矛盾、古くなった情報、ナレッジの不足をスキャンします |
exo_analyze_knowledge | ナレッジベースの健全性を分析し、改善案を取得します |
exo_sleep | バックグラウンドでの統合を実行します(重複排除、孤立メモリの救出、自動リンク) |
exo_consolidate | メモリのクラスターから抽象的なパターンを抽出します |
exo_compact | 🧹 ディスク容量を回復するためにデータベースを再構築します(コンパクションを参照) |
🤖 ナレッジの自律性
Exocortexはナレッジグラフを自動的に改善します。メモリを保存すると、システムは次の処理を行います。
- リンクを提案:類似する既存のメモリを見つけ、つながりを提案します
- 重複を検出:新しいメモリが既存のメモリに類似しすぎている場合に警告します
- パターンを特定:成功が過去の失敗を解決する可能性がある場合に認識します
// Example exo_store_memory response with suggestions
{
"success": true,
"memory_id": "...",
"suggested_links": [
{
"target_id": "existing-memory-id",
"similarity": 0.78,
"suggested_relation": "extends",
"reason": "High semantic similarity; may be an application of this insight"
}
],
"insights": [
{
"type": "potential_duplicate",
"message": "This memory is very similar (94%) to an existing one.",
"suggested_action": "Use exo_update_memory instead"
}
]
}
🧠 メモリの自動統合
人間が睡眠中に記憶を整理するように、Exocortexは保存後にAIに整理を促します。
exo_store_memoryが成功すると、応答に含まれるnext_actionsがAIを次のように導きます。
- 類似度の高いメモリをリンクする(類似度 ≥ 0.7)
- 重複や矛盾に対処する
- 定期的な健全性チェックを実行する(メモリ10件ごと)
// Example response with next_actions
{
"success": true,
"memory_id": "abc123",
"summary": "...",
"consolidation_required": true,
"consolidation_message": "🧠 Memory stored. 2 consolidation action(s) required.",
"next_actions": [
{
"action": "link_memories",
"priority": "high",
"description": "Link to 2 related memories",
"details": [
{
"call": "exo_link_memories",
"args": {
"source_id": "abc123",
"target_id": "def456",
"relation_type": "extends",
"reason": "High semantic similarity"
}
}
]
},
{
"action": "analyze_health",
"priority": "low",
"description": "Run knowledge base health check",
"details": { "call": "exo_analyze_knowledge" }
}
]
}
想定されるフロー:
User: "Remember this insight"
↓
AI: exo_store_memory() → receives next_actions
↓
AI: exo_link_memories() for each high-priority action
↓
AI: "Stored and linked to 2 related memories."
⚠️ 重要な制限事項:
next_actionsを実行するかどうかは、AIエージェントの判断に委ねられます。サーバーはSERVER_INSTRUCTIONSとconsolidation_required: trueを通じて統合を強く指示しますが、実行は100%保証されません。これはMCPプロトコルに固有の制限です。サーバーにできるのはアクションの提案だけで、強制はできません。実際には、最新のAIアシスタントの多くはこれらの指示に従いますが、複雑な会話の最中や、ほかのタスクが優先される場合には省略されることがあります。
exo_link_memoriesの関連タイプ
| タイプ | 説明 |
|---|---|
related | 一般的に関連するメモリ |
supersedes | このメモリは対象を更新/置き換えます |
contradicts | このメモリは対象と矛盾します |
extends | このメモリは対象を拡張/詳述します |
depends_on | このメモリは対象に依存します |
evolved_from | このメモリは対象から発展しました(時間的推論) |
rejected_because | このメモリは対象を理由に却下されました |
caused_by | このメモリは対象によって引き起こされました |
exo_trace_lineage による時間的推論
時間の経過に伴う意思決定と知識の系譜をたどります。なぜ物事が現在のようになったのかを理解できます。
| パラメーター | 説明 | 例 |
|---|---|---|
memory_id | 開始メモリー ID | "abc123" |
direction | "backward"(祖先を検索)または "forward"(子孫を検索) | "backward" |
relation_types | たどる関係 | ["evolved_from", "caused_by"] |
max_depth | 最大探索深度 | 10(デフォルト) |
例:意思決定の理由を理解する
Current Architecture Decision
│
▼ trace_lineage(direction="backward")
│
├─ [depth 1] Previous Design (evolved_from)
│ "Switched from monolith to microservices"
│
└─ [depth 2] Original Problem (caused_by)
"Scaling issues with single database"
使用方法:
AI: exo_trace_lineage(memory_id="current-decision", direction="backward")
↓
Result: Shows the evolution chain of how the current decision came to be
活用例:
- 🔍 アーキテクチャの調査:「なぜこのアプローチを選んだのか?」
- 🐛 根本原因の分析:「何がこのバグにつながったのか?」
- 📚 知識の進化:「私たちの理解はどのように変化したのか?」
exo_curiosity_scan による好奇心エンジン
好奇心エンジンは、好奇心旺盛な人間のようにナレッジベースに積極的に問いかけます。矛盾をスキャンし、リンクされていないメモリーを見つけ、知識の質を高めるための質問を生成します。
検出項目:
| カテゴリー | 説明 | 例 |
|---|---|---|
| 🔴 矛盾 | 相互に食い違うメモリー | 同じトピックに関する成功と失敗 |
| 📅 古い情報 | 見直しが必要な可能性がある古い知識 | 後継のメモリーがあるがリンクされていない |
| 🔗 リンク候補 | 接続すべき、リンクされていないメモリー | タグ、コンテキスト、または高い類似度を共有するメモリー |
| ❓ 質問 | 知識についての人間のような質問 | 「これはまだ有効ですか?」 |
リンク候補の検出方法:
| 方法 | 信頼度 | 説明 |
|---|---|---|
| タグの共有 | 高(0.7 以上) | 2 つ以上のタグを共有するメモリーは、関連している可能性が高い |
| コンテキストの共有 | 中(0.6) | 同じプロジェクトかつ同じ種類(知見/意思決定) |
| 意味的類似度 | 高(0.7 以上) | ベクトル類似度が高い(70% 超)が、リンクされていない |
出力例:
{
"contradictions": [
{
"memory_a_summary": "Caching approach works perfectly",
"memory_b_summary": "Caching approach failed badly",
"reason": "success vs failure on same topic",
"confidence": 0.85
}
],
"suggested_links": [
{
"source_summary": "Database optimization technique",
"target_summary": "Query performance improvement",
"reason": "Share 3 tags: database, performance, optimization",
"link_type": "tag_shared",
"confidence": 0.8,
"suggested_relation": "related"
}
],
"outdated_knowledge": [],
"questions": [
"🤔 These memories seem to contradict. Are both still valid?",
"🔗 Found unlinked related memories. Link them to strengthen the graph?"
],
"next_actions": [
{
"action": "create_link",
"priority": "medium",
"details": {
"call": "exo_link_memories",
"args": {
"source_id": "...",
"target_id": "...",
"relation_type": "related"
}
}
}
]
}
使用方法:
AI: exo_curiosity_scan(context_filter="my-project")
↓
Result: Report of issues, suggested links, and questions
↓
AI: Executes next_actions to create links
↓
Result: Knowledge graph becomes richer and more connected!
活用例:
- 🔍 知識の監査:「知識に矛盾はありますか?」
- 🔗 グラフの拡充:「接続すべき、リンクされていないメモリーを見つける」
- 🧹 品質の維持:「整理が必要なものは何ですか?」
- 💡 発見:「知識について、どんな質問をすべきですか?」
オプション:強化された感情分析
exo_curiosity_scan で矛盾をより正確に検出するには、BERT ベースの感情分析を有効にできます。
# Local installation
pip install exocortex[sentiment]
# or
uv sync --extra sentiment
// mcp.json with sentiment support
{
"mcpServers": {
"exocortex": {
"command": "uvx",
"args": [
"--from", "exocortex[sentiment] @ git+https://github.com/fuwasegu/exocortex",
"exocortex", "--mode", "proxy", "--ensure-server"
]
}
}
}
注: 依存関係が約 2.5 GB(PyTorch + Transformers)追加されます。デフォルトのキーワードベースの検出はほとんどの場合に適しており、英語と日本語の両方に対応しています。
環境変数
| 変数 | デフォルト | 説明 |
|---|---|---|
EXOCORTEX_DATA_DIR | ~/.exocortex | データベースの保存ディレクトリ |
EXOCORTEX_LOG_LEVEL | INFO | ログレベル(DEBUG/INFO/WARNING/ERROR) |
EXOCORTEX_EMBEDDING_MODEL | sentence-transformers/all-MiniLM-L6-v2 | 使用する埋め込みモデル |
EXOCORTEX_TRANSPORT | stdio | トランスポートモード(stdio/sse/streamable-http) |
EXOCORTEX_HOST | 127.0.0.1 | サーバーのバインドアドレス(HTTP モード用) |
EXOCORTEX_PORT | 8765 | サーバーのポート番号(HTTP モード用) |
アーキテクチャ
Stdio モード(デフォルト)
┌─────────────────┐ stdio ┌─────────────────────────────┐
│ AI Assistant │ ◄──────────► │ Exocortex MCP │
│ (Cursor) │ MCP │ │
└─────────────────┘ │ ┌─────────┐ ┌──────────┐ │
│ │ Tools │ │ Embedding│ │
│ │ Handler │ │ Engine │ │
│ └────┬────┘ └────┬─────┘ │
│ │ │ │
│ ┌────▼────────────▼─────┐ │
│ │ KùzuDB │ │
│ │ (Graph + Vector) │ │
│ └────────────────────────┘ │
└─────────────────────────────┘
HTTP/SSE モード(複数インスタンス)
┌─────────────────┐
│ Cursor #1 │──────┐
└─────────────────┘ │
│ HTTP ┌─────────────────────────────┐
┌─────────────────┐ ├────────►│ Exocortex MCP │
│ Cursor #2 │──────┤ SSE │ (Standalone) │
└─────────────────┘ │ │ │
│ │ ┌─────────┐ ┌──────────┐ │
┌─────────────────┐ │ │ │ Tools │ │ Embedding│ │
│ Cursor #3 │──────┘ │ │ Handler │ │ Engine │ │
└─────────────────┘ │ └────┬────┘ └────┬─────┘ │
│ │ │ │
│ ┌────▼────────────▼─────┐ │
│ │ KùzuDB │ │
│ │ (Graph + Vector) │ │
│ └────────────────────────┘ │
└─────────────────────────────┘
ナレッジグラフの構造
Memory ─── ORIGINATED_IN ──► Context (project)
Memory ─── TAGGED_WITH ────► Tag
Memory ─── RELATED_TO ─────► Memory (with relation type)
メモリダイナミクス
Exocortex は、人間の認知に着想を得たメモリダイナミクスシステムを実装しています。記憶には「寿命」と「強度」があり、検索結果に影響します。
ハイブリッドスコアリング式:
Score = (S_vec × w_vec) + (S_recency × w_recency) + (S_freq × w_freq) + (S_frustration × w_frustration)
| コンポーネント | 説明 | デフォルトの重み |
|---|---|---|
S_vec | ベクトル類似度(意味的な関連性) | 0.50 |
S_recency | 新しさスコア(指数減衰:e^(-λ×Δt)) | 0.20 |
S_freq | 頻度スコア(対数スケール:log(1 + count)) | 0.15 |
S_frustration | フラストレーションスコア(つらい記憶のブースト) | 0.15 |
仕組み:
- 記憶が呼び出されるたびに、
last_accessed_atとaccess_countが更新されます - 頻繁にアクセスされた記憶は、より高い
S_freqスコアを獲得します - 最近アクセスされた記憶は、より高い
S_recencyスコアを獲得します - つらい記憶(悪夢のようなデバッグ体験)は、優先されるよう
S_frustrationスコアが高くなります - 古く、使われていない記憶は自然に薄れていきますが、検索は可能です
これにより、次のようなインテリジェントな想起システムが実現します:
- 📈 重要な記憶(頻繁に使われる記憶)は目立つ状態を保ちます
- ⏰ 最近のコンテキストが優先されます
- 🔥 つらい記憶は決して忘れられません—同じ失敗を繰り返さないためです
- 🗃️ 古い記憶は徐々に薄れていきますが、消えることはありません
フラストレーションのインデックス化(身体マーカー仮説)
**「つらい記憶は意思決定において優先される」**という神経科学の知見に基づき、Exocortex はデバッグの苦労や苦労して得た解決策の重要度を自動的に高めます。
使用方法:
# Explicitly mark as a painful memory
exo_store_memory(
content="Spent 3 hours debugging KùzuDB lock issues. Root cause was...",
context_name="exocortex",
tags=["bug", "kuzu"],
is_painful=True, # ← Important!
time_cost_hours=3.0, # ← Record time spent
)
自動検出:
is_painful が指定されていなくても、コンテンツからフラストレーションのレベルが自動的に検出されます。
- 😓 低(0.2-0.4):「tricky」、「weird」、「workaround」
- 🔥 中(0.4-0.6):「finally」、「bug」、「hours」
- 🔥🔥 高(0.6-0.8):「stuck」、「frustrated」
- 🔥🔥🔥 極度(0.8-1.0):「nightmare」、「impossible」、「hell」
検索結果:
{
"memories": [
{
"id": "...",
"summary": "KùzuDB lock issue resolution",
"frustration_score": 0.85,
"pain_indicator": "🔥🔥🔥", // ← Visual emphasis
"time_cost_hours": 3.0
}
]
}
睡眠/夢のメカニズム
人間の睡眠が記憶を定着させるように、Exocortex にはナレッジグラフを整理するバックグラウンドの統合プロセスがあります。
┌─────────────────────────────────────────────────────────────┐
│ exo_sleep() called │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Dream Worker (Detached Process) │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 1. Deduplication │ │
│ │ - Find memories with similarity >= 95% │ │
│ │ - Link newer → older with 'related' relation │ │
│ ├──────────────────────────────────────────────────────┤ │
│ │ 2. Orphan Rescue │ │
│ │ - Find memories with no tags and no links │ │
│ │ - Link to most similar memory with 'related' │ │
│ ├──────────────────────────────────────────────────────┤ │
│ │ 3. Auto-linking (High Confidence Only) │ │
│ │ - Tag sharing: 3+ shared tags → 'related' │ │
│ │ - Semantic: 80%+ similarity → 'related' │ │
│ ├──────────────────────────────────────────────────────┤ │
│ │ 4. Pattern Mining (Phase 2) │ │
│ │ - Extract common patterns from memory clusters │ │
│ └──────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
使用方法:
AI: "I've completed the task. Let me consolidate the knowledge base."
↓
AI: exo_sleep() → Worker spawns in background
↓
AI: "Consolidation process started. Your knowledge graph will be optimized."
主な機能:
- 🔄 ノンブロッキング:すぐに戻り、統合はバックグラウンドで実行されます
- 🔐 安全:ファイルロックを使用して、アクティブなセッションとの競合を回避します
- 📊 ログ:
enable_logging=Trueでログを有効にし、進行状況を追跡できます
ℹ️ プロキシモード:v1.1.0 以降、
exo_sleepはプロキシモードで動作します。サーバーはワーカーを起動する前にデータベースロックを引き渡し、数秒間アイドル状態が続くと自動的にロックを解放します。これはベストエフォートであり、保証されるものではありません。サーバーがリクエストの処理中の場合、(まず埋め込みモデルを読み込む)ワーカーがロックを取得する前に、サーバーがデータベースを再取得することがあります。ワーカーがロックタイムアウトを報告した場合は、処理が落ち着いてから再試行してください。
圧縮
データベースディレクトリが格納データに比べて大幅に大きい場合(数千件の記憶に対して数百メガバイトなど)、v1.1.0 より前に存在した書き込みパスのバグによって肥大化しています。書き込みクエリのたびにストレージの完全なチェックポイントが実行され、各チェックポイントでページを再利用せずにリレーションシップのカラムチャンクが書き換えられていました(リレーションシップごとにファイルが約 386 KiB 増加)。深刻な影響を受けたデータベースでは、最終的に肥大化したカラムを読み取れなくなります。
RuntimeError: Buffer manager exception: Unable to allocate memory!
v1.1.0 では原因が修正されていますが、すでに肥大化したデータベースは自動的には縮小されません。再構築してください。
# As a CLI (the server must not be running)
uvx --from git+https://github.com/fuwasegu/exocortex exocortex --mode compact
# Keep no backup (the pre-compaction copy is kept under ~/.exocortex/backups/ by default)
uvx --from git+https://github.com/fuwasegu/exocortex exocortex --mode compact --no-backup
または、AI アシスタントに exo_compact の呼び出しを依頼してください。
元のデータベースは ~/.exocortex/backups/ に移動され、再構築が完全に成功した場合にのみ置き換えられます。すでに読み取れなくなったリレーションシップのテキストは復元できません。そのようなカラムは報告されたうえで空の状態に再構築され、グラフの残りの部分は保持されます。
EXPORT DATABASEは代替手段にはなりません。圧縮が必要なデータベースでは、メモリ不足になります。
パターンの抽象化(概念の形成)
Exocortex は、具体的な記憶から抽象的なパターンを抽出し、階層型のナレッジ構造を作成できます。
┌─────────────────────────────────────────────────────────────────┐
│ Pattern Layer │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ "Always use connection pooling for database connections" │ │
│ │ Confidence: 0.85 | Instances: 5 │ │
│ └───────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
▲ INSTANCE_OF ▲ INSTANCE_OF
┌────────────┴────────────────┴────────────┐
┌──────┴──────┐ ┌───────────┐ ┌───────────┐ ┌──┴────────┐
│ Memory #1 │ │ Memory #2 │ │ Memory #3 │ │ Memory #4 │
│ PostgreSQL │ │ MySQL │ │ Redis │ │ MongoDB │
│ pooling fix │ │ pool size │ │ conn reuse│ │ pool leak │
└─────────────┘ └───────────┘ └───────────┘ └───────────┘
Memory Layer (Concrete)
使用方法:
AI: exo_consolidate(tag_filter="database") → Extracts patterns from database-related memories
↓
Result: "Created 2 patterns from 8 memories"
メリット:
- 🎯 一般化:個別の事例を超えて適用できるルールを発見します
- 🔍 メタ学習:プロジェクトを超えて、何がうまくいくか(またはうまくいかないか)を見つけます
- 📈 信頼度の向上:より多くの事例が関連付けられるほど、パターンが強化されます
Web ダッシュボード
Exocortex には、ナレッジベースを視覚化して管理するための、美しい Web ダッシュボードが含まれています。
ダッシュボードへのアクセス
🚀 プロキシモードを使用している場合(推奨)
ターミナルコマンドは不要です! Cursor でプロキシモード(--mode proxy --ensure-server)を使用すると、SSE サーバーがバックグラウンドで自動的に実行されます。
ブラウザーで次を開くだけです:
http://127.0.0.1:8765/
Cursor starts
↓
Proxy mode → SSE server auto-starts (port 8765)
↓
├─ MCP: http://127.0.0.1:8765/mcp/sse ← Used by Cursor
└─ Dashboard: http://127.0.0.1:8765/ ← Just open in browser!
サーバーを手動で起動する
Cursor を使用せずにダッシュボードを表示する場合:
# Start SSE server (includes dashboard)
uv run exocortex --transport sse --port 8765
URL:
- ダッシュボード:
http://127.0.0.1:8765/ - MCP SSE:
http://127.0.0.1:8765/mcp/sse
ダッシュボードの機能
| タブ | 説明 |
|---|---|
| 概要 | 統計、コンテキスト、タグ、ナレッジベースの健全性スコア |
| 記憶 | ページネーションを使って記憶を閲覧、絞り込み、検索します |
| ドリームログ | バックグラウンドでの統合プロセスをリアルタイムにストリーミング表示するログ |
| グラフ | 記憶間のつながりを示す視覚的なナレッジグラフ |
スクリーンショット
概要タブ
- 種類別(インサイト、成功、失敗、決定、メモ)の記憶の総数
- すばやく移動するためのコンテキストとタグのクラウド
- 改善案付きの健全性スコア
記憶タブ
- 種類で絞り込み(インサイト/成功/失敗/決定/メモ)
- コンテキスト(プロジェクト)で絞り込み
- 任意の記憶をクリックすると、詳細とリンクをすべて表示します
グラフタブ
- インタラクティブなノードの視覚化
- 記憶の種類ごとに色分け:
- 🔵 シアン:インサイト
- 🟠 オレンジ:決定
- 🟢 緑:成功
- 🔴 赤:失敗
- 記憶間の
RELATED_TOのつながりを線で表示します
単独ダッシュボードモード
別のポートでダッシュボードを単独で実行することもできます:
uv run exocortex --mode dashboard --dashboard-port 8766
注: 単独モードでは、ダッシュボードは同じデータベースに接続しますが、MCP サーバーは含まれません。
ドキュメント
- 設計ドキュメント - システム設計と仕様
- グラフアーキテクチャ - ナレッジグラフの仕組み
開発
# Install dependencies
uv sync
# Run tests
uv run pytest
# Run with debug logging
EXOCORTEX_LOG_LEVEL=DEBUG uv run exocortex
ライセンス
MIT ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。