Infimium について
Infimium は、コードベース向けのローカルなコンテキストレイヤーで、AI エージェントに永続メモリ、依存関係グラフ、セマンティックなコード検索を提供します。データとベクトルはすべてローカルに保存され、コンテキストの量を抑える必要がある大規模リポジトリに適しています。
主な機能
- 01シグネチャを先に返すセマンティックコード検索
- 02完全な実装を必要時のみ読み込む機能
- 03インポート、呼び出し元、ルートの依存関係グラフ
- 04エージェント間で共有されるプロジェクトメモリ
- 05ローカル Ollama による埋め込みと SQLite ストレージ
活用シーン
- 01大規模リポジトリで機能に関連するシンボルを特定
- 02コード編集前にエージェントへ簡潔なコンテキストを渡す
- 03関連プロジェクト間でメモリと依存関係を共有
MCP 対応
MCP サーバーとして動作し、Cursor、Windsurf、Claude Desktop などのクライアントに get_context、semantic_code_search、dep_graph、plan などのツールを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y infimiumSEARCH_API_KEYシークレットOptional Tinyfish API key for web_search.SEARCH_PROVIDERSearch provider. Use tinyfish for the current web_search implementation.CODEBASE_PATHAbsolute path to the codebase Infimium should index.LOCAL_DOCS_PATHAbsolute path to local docs Infimium should index.CHROMADB_HOSTChromaDB HTTP endpoint.OLLAMA_HOSTOllama HTTP endpoint.SHELL_ALLOWLISTComma-separated commands allowed by the shell tool.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
11掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
Infimium
コードベースのプライベートなコンテキストレイヤー兼スーパーブレインです。 AI エージェントに永続的なメモリ、詳細な依存関係グラフ、即座に使えるコードコンテキストを提供します。すべてローカルで動作し、トークンの肥大化は一切ありません。
デモ
特長
大規模なリポジトリでは、エージェントがコードを読みすぎたり、必要なシンボルを見落としたりすることがあります。Infimium は、エージェントが編集を始める前に、簡潔で関連性の高いコンテキストを取得します。
200,000 lines of code
Agent reads everything -> context blown + expensive
grep "price calculation" -> misses calcPropertyValue()
tool: semantic_code_search
query: "price calculation logic"
-> services/property/calc.ts:142 · calcPropertyValue()
-> callers: getListingPrice(), estimatePropertyTax()
クイックスタート
Node.js 22.5 以降が必要です。プロジェクトフォルダーから実行してください。
cd /path/to/your/project
npx infimium@latest setup
インデックスを作成するリポジトリからセットアップを実行してください。ホームディレクトリ(~)から実行しないでください。
Infimium は範囲が広すぎるルートを自動的に除外するため、無関係なファイルがスキャンされることはありません。
これにより、グローバル設定が作成され、インストール済みの場合は Ollama が起動し、nomic-embed-text がダウンロードされます。現在のプロジェクトまたはワークスペースのインデックスが作成され、doctor が実行された後、Playground が開きます。
公開されている CLI には実行可能なエントリーポイントが含まれているため、MCP クライアントは以下の設定から直接起動できます。
Ollama がまだインストールされていない場合:
npx infimium@latest setup --install-deps
infimium setup は、~/.infimium/.env にグローバル設定を 1 つ作成します。プロジェクトごとに .env を用意する必要はありません。コード、ドキュメント、メモリ、グラフ、ベクトルは ~/.infimium/ の下にローカル保存されます。
Web 検索は任意です。必要な場合にのみ Tinyfish キーを追加してください。
SEARCH_PROVIDER=tinyfish
SEARCH_API_KEY=your_key
infimium plan の完全な生成には、ローカルのテキストモデルも必要です。
ollama pull llama3.1
infimium plan --dry-run "your task" はこのモデルなしで動作し、最初に取得したコードコンテキストを表示します。
エージェントに接続する
Cursor、Windsurf、Claude Desktop などの MCP クライアント:
{
"mcpServers": {
"infimium": {
"command": "npx",
"args": ["-y", "infimium", "serve"]
}
}
}
クライアントを再起動し、次を使用してください。
Use Infimium hello_infimium.
Use Infimium get_context before starting.
Use Infimium semantic_code_search to explain this repository.
Infimium は通常、MCP プロセスの作業ディレクトリを使用します。クライアントが別の場所から起動する場合は、project_path を一度指定してください。Infimium はアクティブなプロジェクトを記憶し、自動的にインデックスを作成します。
ツール
| ツール | 内容 |
|---|---|
hello_infimium | MCP サーバーが正常に動作していることを確認します。 |
get_context | 保存済みの YAML リポジトリコンテキスト、現在のメモリ、引き継ぎ情報を読み込みます。明示的に更新すると Git/インデックスの状態も更新されます。 |
infimium_update | エピソードメモリと引き継ぎグラフを更新し、自動メモリチェックポイントを制御します。 |
semantic_code_search | 意味に基づいてコードを検索し、最初にシンボルのシグネチャを返します。 |
expand_symbol | 必要な場合に限り、1 つの実装全体を読み込みます。 |
query_local_docs | ローカルの Markdown、テキスト、HTML、PDF ファイルを検索します。 |
dep_graph | シンボルのインポート元、呼び出し元、呼び出し先、HTTP ルートを表示します。 |
project_memory | エージェント間で、アクティブなスクラッチパッドイベント、簡潔なマイルストーン、永続的なプロジェクトルールを保持します。 |
plan | コードとグラフのコンテキストに基づいた、根拠のある実装計画を作成します。 |
web_search | 任意の Tinyfish 設定を通じて Web を検索します。 |
fetch_url | URL から読みやすい Markdown またはテキストを抽出します。 |
shell | 許可リストに登録されたコマンドを、タイムアウトと出力上限を設けて実行します。 |
CLI
| コマンド | 説明 |
|---|---|
infimium doctor | 依存関係とセットアップのヘルスチェックを実行します。 |
infimium status | インデックスとメモリの現在の状態を表示します。 |
infimium --help | 関連するすべての CLI コマンドを表示します。 |
infimium playground | インデックス、グラフ、メモリを確認するためのローカル Web UI を起動します。 |
infimium index | 現在のプロジェクトディレクトリ(コード、ドキュメント、依存関係)をスキャンしてインデックスを作成します。 |
infimium watch | 変更を継続的にインデックス化するため、インデクサーを監視モードで実行します。 |
infimium get-context | フラット化したコンテキスト全体を YAML(layer.md)として出力します。 |
infimium code-search <query> | コードを意味的に検索し、シンボルのシグネチャを返します。 |
infimium expand-symbol <symbol> | 指定したシンボルの実装コード全体を取得します。 |
infimium docs-search <query> | ローカルの Markdown/テキストドキュメントを意味的に検索します。 |
infimium dep-graph <symbol> | 依存関係、呼び出し元、呼び出し先、ルートグラフを表示します。 |
infimium plan --dry-run "<task>" | 指定したプロンプトに基づいて実装計画を下書きします。 |
infimium remember "<note>" | マイルストーン、進捗、または決定事項をプロジェクトメモリに追加します。 |
infimium resume | アクティブなタスクと最近のスクラッチパッドメモリイベントを表示します。 |
infimium memory complete | アクティブなスクラッチパッドをまとめ、アーカイブ済みマイルストーンにします。 |
infimium memory search "<query>" | 過去のプロジェクトルールとメモリ台帳を意味的に検索します。 |
パッケージをグローバルにインストールしていない場合は、npx infimium ... を使用してください。
Project Memory
メモリを自分で更新するか、現在のプロジェクトで定期的なチェックポイントを有効にします。
infimium update --note "Implemented login validation" --task "Finish login" --handoff "Run the auth tests next"
infimium update start --interval 300
infimium update status
infimium update stop
サンプルのメモを独自の内容に置き換えてください。プロジェクトを選択するには --project /path/to/repo を、関連ファイルを添付するには --file src/auth.ts を追加します。infimium_update と infimium-update は CLI のエイリアスです。MCP エージェントは、action: refresh|start|stop|status、project_path、および任意の note、task、handoff、files、または interval_seconds を指定して、infimium_update ツールを使用します。
自動更新はオプトイン方式で、フォアグラウンドの CLI ウォッチャーまたは MCP サーバーが開いている間に実行されます。プロジェクトごとの設定は再起動後も保持されます。stop は今後のチェックポイントを無効にします(実行中の更新は完了する場合があります)。チェックポイントは、エピソード、タスク、ファイル参照、引き継ぎメモをローカルの SQLite で関連付けます。変更のない観測結果は重複排除されます。自動チェックポイントに記録されるのは観測可能な状態であり、推測した意図ではありません。また、タスクを完了としてマークすることはありません。
get-context/get_context は、リポジトリを再スキャンせずに、保存済みのコンテキストと現在のメモリを読み取るようになりました。上限付きのメモリグラフと、質問された場合にのみ Infimium のメモリを最初に使用してリポジトリの概要に関する質問に答えるためのガイダンスが含まれます。コンテキストがない場合は、その旨が明示的に報告されます。ファイルシステムのコンテキストを更新するには、infimium update または get-context --refresh を実行してください。これらはエージェント向けのガイドラインであり、他のクライアントに対する強制機構ではありません。
Infimium は、長時間のセッションでもメモリを上限内に保ちます。
- スクラッチパッド: アクティブなタスクの最近のイベント。
- アーカイブ: 完了したタスクの簡潔な要約。
- 台帳: 永続的な決定事項、ルール、特記事項、未解決のブロッカー。
作業中は、意味のある進捗を記録してください。
infimium remember "Added rate-limit middleware" --type progress --task "Rate limiting"
infimium remember "Use Redis-backed counters in production" --type decision
タスクが完了したら:
infimium memory complete
Infimium は、利用可能な場合はローカルの llama3.1 モデルを使用し、利用できない場合は決定論的な圧縮にフォールバックします。圧縮された未加工のイベントは、削除されるまで 7 日間ローカルに保存されます。get_context が LLM やネットワークサービスを呼び出すことはありません。
ソースをチェックアウトした状態から、一度ビルドしてローカルのプレイグラウンドを実行するには、次のようにします。
npm run build
npm run playground
ローカルアーキテクチャ
- Ollama がマシン上で埋め込みを生成します。
- 組み込みの SQLite がベクトル、インデックスのメタデータ、プロジェクトメモリ、グラフのエッジを保存します。ChromaDB や Docker サービスは不要です。
- ドキュメントは、単純な固定長分割ではなく、境界を考慮した再帰的チャンク分割を使用します。
- JavaScript、TypeScript、Python、Dart のパーサーがバンドルされています。
- Go、Rust、Java の Tree-sitter WASM 文法は初回使用時にダウンロードされ、
~/.infimium/grammars/にキャッシュされます。 - インデックス作成の前に、
.gitignore、.infimiumignore、フレームワークの既定設定に基づき、依存関係、ビルド出力、Flutter の生成物、キャッシュ、バイナリが除外されます。 semantic_code_searchはシグネチャを返し、expand_symbolは必要に応じてコード全体を提供します。- プロジェクトメモリは、セッション単位のスクラッチパッド、簡潔なマイルストーンアーカイブ、バージョン管理されたセマンティック台帳を使用します。
get_contextは、静的なアンカー、動的なリポジトリの状態、進行中の実行を、別々の YAML ゾーンとして出力します。
複数のプロジェクト
関連するプロジェクトが含まれるフォルダーから、通常のインデックス作成コマンドを実行します。
infimium index
Infimium は、pubspec.yaml、package.json、Cargo.toml、go.mod などのファイルから、直下のプロジェクトルートを検出します。検出した役割と依存関係を表示して一度だけ確認を求めた後、infimium.workspace.json を作成し、すべてのプロジェクトをインデックス化して Playground を開きます。
無人セットアップの場合:
infimium index --yes --no-playground
--no-workspace を使用すると、現在のプロジェクトのみをインデックス化します。ワークスペース内の各プロジェクトはメモリと Git の状態を個別に保持し、get_context は関連プロジェクトの概要とグラフ上の関係をバランスよく含めます。
Infimium - Playground
Infimium は、初期ペイロードのコストをシンボルあたり約 1,460 トークンから 8 トークンに削減します。セマンティック検索では最初に AST シグネチャが返され、エージェントは必要な場合にのみ expand_symbol で実装全体を取得します。
Full implementation ~1,460 tokens
AST skeleton ~8 tokens
Initial payload reduction ~99.5%
これらは Playground の参考値であり、すべての関数が同じサイズであることを示すものではありません。インデックス化したリポジトリを実際に調べて、AST を優先する取得方法と全文取得をローカルで比較してください。
infimium playground
Token Economics を開くと、実際にインデックス化したシンボル全体で推定されるトークン数の差を確認できます。
プライバシー
コード、ドキュメント、埋め込み、メモリ、グラフデータ、プロンプト、クエリ、ファイルパス、リポジトリ名はローカルに保持されます。
セットアップの成功状況を把握するため、Infimium はプライバシーに配慮した匿名のライフサイクルテレメトリーを送信します。
init_started、init_completeddoctor_run、doctor_passedindex_started、index_completed、setup_completedserve_started、first_tool_call、playground_opened
テレメトリーには、匿名のインストール ID、Infimium のバージョン、OS、Node のメジャーバージョン、タイムスタンプ、イベント名が含まれます。コード、ファイルパス、リポジトリ名、プロンプト、検索クエリ、メモリのメモ、API キー、ユーザーの身元情報は含まれません。
いつでも無効にできます。
infimium telemetry off
または、次のように設定します。
INFIMIUM_TELEMETRY=false
トラブルシューティング
FAQ とよくある誤解
layer.md はどこにありますか?
infimium get-context を実行すると、保存されたコンテキストがターミナル(stdout)に直接出力されます。更新時には、プロジェクト単位の YAML が Infimium のローカルデータディレクトリに保存されます。保存されたコンテキストをファイルにエクスポートするには、ターミナルのリダイレクトを使用します。
infimium get-context > layer.md
Playground の UI に「最初のエージェントとの対話を待機中…」と表示されるのはなぜですか?
CURRENT TASK トラッカーには、保存されたプロジェクトコンテキストが反映されます。infimium update --task "Your task" を実行して更新してください。get-context は保存されたスナップショットを読み込みます。
infimium remember の書式を教えてください。
infimium remember コマンドにはメッセージと --type フラグが必要です(有効なタイプ:note、progress、decision、blocker、index、plan)。Playground のアクティブなタスクも更新する場合は、--task フラグを含めてください。
infimium remember "Added rate limiting" --type progress --task "Security Features"
データベースがロックされています
Failed to start Infimium: Database is locked と表示された場合、別の Infimium インスタンスが SQLite メモリデータベースのロックを保持していることを意味します。これは通常、別のターミナルで infimium playground または infimium watch が実行中のまま、あるターミナルで手動で infimium index を実行しようとしたときに発生します。手動でコマンドを実行する前に、実行中のプロセスを停止(Ctrl+C)してください。
一般的なセットアップの問題
次を実行してください。
infimium doctor
チェックに失敗するたびに、コピーして貼り付けられる修正方法が1つ表示されます。セットアップに引き続き失敗する場合は、このプロンプトをコーディングエージェントに渡してください。
Set up Infimium in this repository. Install/start Ollama, pull nomic-embed-text,
run npx infimium init, run npx infimium index, and make all six
npx infimium doctor checks pass. Do not commit secrets.
コントリビューション
CONTRIBUTING.md を参照してください。言語の追加は、パーサーのフィクスチャと抽出テストから始めます。
MIT ライセンスのもと、セルフホストは永久に無料です。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
