brainbox について
brainboxは、ファイル、ツール、エラー修正の関係をSQLiteグラフに学習する、コーディングエージェント向けのローカル行動メモリーです。過去の操作から関連ファイルを想起し、次のツールを予測します。MCP経由で記憶を提供することもできます。
主な機能
- 01ツール呼び出しから行動パターンを学習
- 02過去の操作をもとにファイルを想起
- 03次のツール呼び出しを予測
- 04エラーと修正手順を記録
- 05ローカルのSQLiteグラフに保存
活用シーン
- 01コーディング中のファイル検索を減らす
- 02検索前に関連ファイルを提示
- 03過去のエラー修正を再利用
MCP 対応
brainboxはMCP サーバーとして動作し、record、recall、explain、error、resolve、predict_next、stats、decayなどのツールをエージェントに公開できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
インストール · 仕組み · 成果 · 研究 · 連携 · ホワイトペーパー
BrainBox はAI コーディングエージェントのための手続き記憶です。エージェントが実際に行う操作を監視して記憶します。
- どのファイルが一緒に読み込まれ、編集されるか
- どの編集によってどのエラーが修正されたか
- エージェントが繰り返すツールの組み合わせ
次のタスクでは、エージェントが検索を始める前に、適切なファイルを提示します。
ベクトルデータベースではありません。RAG でもありません。 ローカル SQLite グラフ上のヘブ学習です。API コストはゼロで、GPU も不要です。データがマシンの外に出ることもありません。
Session 1 agent greps for auth.ts, reads it, edits it ~2,000 tokens of searching
Session 5 BrainBox recalls auth.ts + session.ts up front search skipped
Session 20 auth.ts → session.ts → token.ts is a superhighway instant recall
論文
BrainBox:コーディングエージェントのためのローカル行動記憶(Bhavesh B、2026)。上記の DOI はすべてのバージョンを対象とし、最新バージョンに解決されます。最新バージョン:v0.2、doi:10.5281/zenodo.23250505。
@misc{b2026brainbox,
author = {B, Bhavesh},
title = {BrainBox: Local Behavioral Memory for Coding Agents},
year = {2026},
publisher = {Zenodo},
version = {v0.2},
doi = {10.5281/zenodo.23250505},
url = {https://doi.org/10.5281/zenodo.23250505}
}
インストール
npm install brainbox-hebbian
これで完了です。postinstall スクリプトは次の処理を行います。
~/.claude/settings.jsonにPostToolUseフックを追加します。ファイルの読み込み、編集、検索、コマンドの実行から学習します。UserPromptSubmitフックを追加します。プロンプトに簡潔な想起情報を挿入します。または、無視されることを学習すると、何も表示しなくなります。SessionEndフックを追加します。想起されたファイルのうち、実際に開かれたものや編集されたものを評価し、手順をまとめます。claude mcp addを使って MCP サーバーを登録します。ツールは 8 個です:record、recall、explain、error、resolve、predict_next、stats、decay。~/.brainbox/を作成し、埋め込みモデルのバックグラウンドダウンロードを開始します。
フックがモデルをダウンロードすることはありません。モデルがキャッシュされるまでは(brainbox models pull)、想起は語彙検索のみで実行されます。埋め込みにはオプションの @huggingface/transformers 依存関係を使います。ネイティブモジュールをマシンにインストールできない場合(たとえば、システムの libvips が使われていてビルドツールがないため sharp をインストールできない場合)でも、BrainBox はインストールされ、キーワード検索で動作します。brainbox models status で現在のモードを確認できます。
Git の履歴とコードグラフから初期データを投入して、起動時の待ち時間をなくしましょう。
brainbox bootstrap --repo /path/to/project --imports
アンインストール: brainbox uninstall はフックと MCP サーバーを削除しますが、データベースは保持します。
仕組み
ツールを呼び出すたびに、ニューロンが発火します。ファイル、ツール、エラーがニューロンとなり、近いタイミングでアクセスされた項目どうしはシナプスになります。プロンプトが想起を引き起こし、複数のランキングチャネルを融合します。学習されたポリシーが、トークンを使って情報を注入する価値があるかどうかを判断します。実際に開いたり編集したりした内容へのフィードバックは、グラフに反映されます。
同時に発火し、共に結びつく
複数のセッションで auth.ts に続いて session.ts にアクセスすると、それらのシナプスが強化されます。SNAP 可塑性により、強いシナプスほど成長が遅くなるため、単一のつながりが支配的になることはありません。リンクには方向性があり(STDP)、それ以前に何を開いたかよりも、次に何を開くかが重要です。
活性の伝播
1つのファイルを想起すると、最大3ホップ先まで近隣のファイルが活性化されます。各ホップは 1/√degree で減衰するため、ハブとなるファイルが結果を埋め尽くすことはありません。各結果には、それを生成したチャネルとエッジが付随します。brainbox_explain を使うと、ファイルが想起された理由を正確に確認できます。
主要経路と減衰
よく使う経路は髄鞘化され、即座に想起できる超高速道路になります。新しさと頻度は ACT-R の基準レベル方程式 B = ln Σ tⱼ^-0.5 に従い、使われないつながりは弱まります。想起されたものの無視されたファイルは、そのファイルを表面化させたエッジのみが弱まります。
エラー → 修正の免疫システム
失敗したコマンドの後に編集が行われ、再実行が成功すると、BrainBox はエラーから修正に至る手順を保存します。この手順はエラーのフィンガープリントをキーとし、有益または有害だった結果を追跡します。同じエラーが次に発生すると、修正に使われたファイルがすぐに想起されます。手順は指示ではなく、引用された観察事項としてエージェントに提示されます。
結果
brainbox eval は、実際のコーディングエージェントの軌跡を時間順に再生します。各タスクは、同じリポジトリ内のそれより前のタスクのみで学習した新しいインメモリ DB で評価され、すべてのシステムが同じ候補セットを順位付けします。
v0.1 は次のファイルの予測で、単純な新しさベースの方式に負けました。 ホールドアウトされた SWE タスクでは差は −.207、95% 信頼区間は −.312…−.118 でした。v0.2 はこの指標で新しさベースの方式と統計的に同等です。次のツールの予測では、すべてのベースラインを有意に上回り、読み込んだファイルの再現率は両方のデータソースで最高です。
既知の課題: ローカルセッションでは、編集頻度のみで順位付けすると、編集されたファイルについては依然として BrainBox を上回ります(Δ −.089、信頼区間 −.185…0)。
語彙チャネルとヘブ則チャネルの重みをゼロに調整すると dev で高いスコアになりましたが、その場合、再現率はクエリを無視してしまうため、リリース版ではこれらの重みを維持しています。
全表、プロトコル、コマンド
プローブ:
- P1: タスクで編集または読み込まれたファイル(クエリ = タスクのテキスト)
- P2: 次のファイルをステップごとに予測
- P3: 次のツール(上位 3 件)
ベースライン:新しさ、頻度、BM25、EdgeBank、ランダム。信頼区間は、軌跡ごとに再サンプリングした対応ありブートストラップの 95% 信頼区間です。
データセット:
- 順位付けの重みは dev リポジトリ(sqlglot、dvc、streamlink)のみで調整しました。
- SWE test は Pillow と conan のホールドアウトされた 40 タスクです。
- Local は 5 プロジェクトにわたる 97 のエージェントセッションで、重みの調整には使用していません。
スコアは MRR(P3:MRR@3)で、埋め込みは無効です。
| プローブ | SWE test:v0.1 | v0.2 | 最良ベースライン | local:v0.1 | v0.2 | 最良ベースライン |
|---|---|---|---|---|---|---|
| P1 編集されたファイル | .307 | .307 | .216 BM25 | .737 | .703 | .791 頻度 |
| P1 読み込まれたファイル | .191 | .267 | .206 BM25 | .372 | .555 | .547 BM25 |
| P2 次のファイル | .223 | .409 | .430 新しさ(Δ 信頼区間 −.049…+.003) | .634 | .702 | .701 新しさ(同等) |
| P3 次のツール | .479 | .767 | .748 頻度(Δ +.019、信頼区間 +.012…+.027) | .257 | .686 | .662 新しさ(Δ 信頼区間 +.010…+.036) |
npm run eval -- --source nebius --repos 5 --max-tasks-per-repo 20 --split test --embeddings off --engine new
npm run eval -- --source omp --repos 5 --max-tasks-per-repo 20 --embeddings off --engine old # v0.1 engine (needs a worktree, see src/eval)
コード検索:30 件のクエリを用いたコード検索セットでは、デフォルトの jina-embeddings-v2-base-code が Recall@5 0.867 を達成し、以前の MiniLM の 0.667 を上回ります。
v0.2の各変更は最近の論文に対応しており、リプレイ評価で測定されています。
| サブシステム | 変更内容 | 出典 |
|---|---|---|
| ランキング | 固定減衰に代わり、ACT-Rのベースレベル活性化を採用。再発候補と人気候補を追加。保留中の開発リポジトリで重みを調整した、重み付き逆順位融合。方向性STDP、n-gramツール予測。 | ACT-R 2505.05083 · Base3 2506.12764 · 2502.04910 |
| コード検索 | cAST方式のASTチャンク。FTS5 BM25 + sqlite-vec KNNをRRF(k=60)で融合。コンテンツハッシュによる増分処理。 | cAST 2506.15655 |
| インジェクションポリシー | コンテキストに応じたUCB1バンディットがSILENT / TOP1 / TOP3 / TOP5を選択。報酬 = 開いた、または編集したファイル数からトークンコストを差し引いた値。 | MemCon 2607.13591 |
| 帰属 | すべての想起を、それを生成したシナプスとともに記録します。無視された想起は、そのエッジだけを弱めます。 | MemTrace 2605.28732 |
| コンパクトなインジェクション | コンパクトなpath:start-end — whyリストを挿入します。削除されたファイルは挿入されません。 | FastContext 2606.14066 |
| 手順 | 失敗したコマンド → 編集 → 成功した再実行、および複数セッションにわたるワークフローを決定論的に抽出し、有用・有害のカウンターを備えます。 | ACE 2510.04618 · Mem^p 2508.06433 |
| コードグラフ | Tree-sitterのインポート/呼び出し/継承エッジ(TS/JS、Python、Rust、Swift、Go)を弱い事前情報(≤ 0.35)として設定し、学習済みの共アクセスがそれを上回るようにします。 | — |
| 評価 | SWE-rebenchのOpenHands軌跡とローカルセッションをオフラインでリプレイし、ベースラインと対応あり信頼区間を用いて評価します。 | SWE-rebench trajectories |
0.2には、次の変更も含まれます。
- Node 22–26上でビルドします(better-sqlite3 v13)。
- フックはClaude Codeのネストされた設定形式で記述されています。
- フックのDBロック待機時間は最大100 msです。
- 手順のコンパイルは、大規模な履歴で470倍高速です。
インテグレーション
MCP サーバー(任意のエージェント)
# 8 tools: record, recall (detail: compact|full), explain, error, resolve, predict_next, stats, decay
npx tsx node_modules/brainbox-hebbian/src/mcp.ts
Kilo / OpenCode(ネイティブプラグイン)
~/.config/kilo/config.jsonに追加します。
{
"plugin": ["node_modules/brainbox-hebbian/src/kilo-plugin.ts"]
}
OpenClaw(NeuroVault)
BrainBoxはOpenClawのメモリスロットプラグインとして実行できます。リファレンス実装についてはNeuroVaultをご覧ください。
| 項目 | Claude Code | OpenClaw |
|---|---|---|
| ツール名 | PascalCase(Read) | 小文字(read) |
| コンテキストの挿入 | UserPromptSubmitフック | before_agent_startライフサイクル |
| 学習のトリガー | PostToolUseフック | after_tool_callライフサイクル |
| 埋め込み | jina-embeddings-v2-base-code(設定可能) | キーワードのみ(信頼度のしきい値を低く設定) |
macOSデーモン(オプトイン)
システム全体を対象とするFSEventsファイルウォッチャーです。エージェントだけでなく、VS Code、Xcode、vim、シェルからも学習します。LaunchAgentをインストールするため、明示的なオプトインが必要です。
brainbox daemon install # installs LaunchAgent, starts watching
brainbox daemon status
brainbox daemon uninstall
CLI
brainbox recall "authentication login"
brainbox record src/auth.ts --query "authentication"
brainbox stats # includes stale-embedding counts + re-index commands
brainbox error "TypeError: cannot read 'token'"
brainbox predict Read
brainbox bootstrap --repo . --imports [--since <git-rev>] # git history + tree-sitter code graph
brainbox extract-snippets [--force] [--no-embed] # AST chunks → FTS5 + sqlite-vec
brainbox embed [--force] # embed neurons with the active model
brainbox models pull|status # fetch / inspect the embedding model
brainbox procedures [list|compile|show <id>|deprecate <id>]
brainbox sleep # consolidation + procedure compilation
brainbox eval --source nebius|omp [...] # offline replay evaluation
brainbox hubs | stale | projects | sessions | streaks | graph | highways | decay
設定
| 変数 | 用途 | デフォルト |
|---|---|---|
BRAINBOX_DB | SQLite のパス | ~/.brainbox/brainbox.db |
BRAINBOX_DB_TIMEOUT_MS | SQLite のビジータイムアウト | 5000(フックでは 100) |
BRAINBOX_EMBED_MODEL | minilm | jina-code | gemma | gemma-q4 | jina-code |
BRAINBOX_MODEL_CACHE | モデルキャッシュディレクトリ | Transformers.js のデフォルト |
BRAINBOX_EMBEDDINGS | off にすると埋め込みを完全に無効化 | on |
BRAINBOX_POLICY | off にすると学習済みの注入ポリシーを無効化(常に TOP5) | on |
BRAINBOX_SESSION_ID | CLI/アダプターのセッション ID を上書き | 自動設定 |
BRAINBOX_HOOK | フックのエントリーポイントで設定:ローカル専用モデル、埋め込みの期限は 1.2 秒 | 未設定 |
Gemma プロファイルには、Gemma 利用規約が適用されます。
アルゴリズムの詳細
| コンポーネント | メカニズム(デフォルトは DEFAULT_ENGINE_OPTIONS) |
|---|---|
| シナプス形成 | 連続ウィンドウ(25 項目)、位置に応じた減衰、方向性 STDP(後から先へのエッジ × 0.5) |
| 強化 | SNAP シグモイド可塑性(中点 0.5、急峻度 8)、BCM ミエリン化、上限 0.95 |
| 最近性/頻度 | ACT-R ベースレベル B = ln Σ (Δt_h)^-0.5(直近 50 回のアクセスを対象) |
| ファイルランキング | 重み付き逆順位融合。チャネルの重み:語彙(FTS5、クエリ語句の逐語的な一致率でスケーリング)4、ヘブ学習の証拠 4、コードスニペット 4、頻度 2、最近性 1、ベースレベル 0.5、再発 0.2。クエリが現在のセッションに一致する場合、セッションの最近性の重みは 30 になります。 |
| 活性拡散 | 3 ホップ BFS、ファンアウト上限 10、ファン効果 1/sqrt(degree) |
| ツール予測 | 最長サフィックス n-gram(n ≤ 3、最小サポート 4)を頻度(0.5)と融合 |
| コード検索 | AST チャンク、FTS5 BM25 + sqlite-vec KNN、RRF k=60 |
| 構造的事前分布 | import 0.2、call ≤ 0.35、inherit 0.3。学習済みの共アクセスを上書きしません |
| 注入ポリシー | SILENT/TOP1/TOP3/TOP5 に対する UCB1。報酬 = 順位で重み付けしたオープン/編集数 − 1,000 トークンあたり 2 |
| 反想起 | 無視された想起は、生成元のエッジのみを弱めます。1 - (1 - 0.1)^streak、下限 0.1 |
| エラー学習 | 学習率を 2 倍に強化。失敗→編集→合格の再実行から、エラー→修正の手順を学習 |
論文のソース(v0.2、doi:10.5281/zenodo.23250505)では、実装と、カバレッジを条件とした再生結果(不確実性と来歴に関する制約を含む)について説明しています。参考文献、集計された証拠、LaTeX および PDF のビルドについては、論文のビルドと根拠に関する注記を参照してください。
アーキテクチャ
src/
hebbian.ts # Engine: record, recall (rank fusion), STDP, n-gram tool prediction, decay, anti-recall
db.ts # SQLite schema + migrations
policy.ts # Recall event log + contextual UCB1 injection policy
adapter.ts # Shared recall/injection orchestration for all hosts
snippets.ts # AST chunking, FTS5 + sqlite-vec hybrid search
embeddings.ts # Embedding model profiles, hook-safe loading
codegraph.ts # Tree-sitter import/call/inherit graph
procedures.ts # Procedural playbook mining + matching
bootstrap.ts # Git history / code graph / session seeding
installer.ts # Hooks + MCP registration, model prefetch
mcp.ts # MCP server (8 tools)
hook.ts # PostToolUse + SessionEnd hook
prompt-hook.ts # UserPromptSubmit hook
kilo-plugin.ts # Kilo/OpenCode native plugin
daemon.ts # FSEvents file watcher (macOS, opt-in)
cli.ts # CLI
eval/ # Offline trajectory replay evaluation
testkit.ts # Test harness; test.ts + tests/*.test.ts
scripts/visuals/ # JS generators for the README figures (tbcresearch.org ink style, light + dark)
開発
npm test # 147 tests
npx tsx src/test.ts "Ranking" # filter by suite/test name
npm run visuals # regenerate assets/*.svg (light + dark) from scripts/visuals/scenes/*.mjs
bash scripts/visuals/social.sh # render assets/social-preview.png for GitHub's social preview
要件:macOS または Linux 上の Node.js 22 以降。FSEvents デーモンは macOS 専用ですが、それ以外はすべてクロスプラットフォームです。
BrainBox がエージェントの検索の手間を省いたなら、他の人にも見つけてもらえるよう⭐ を付けてください。
@thebasedcapital が開発 · MIT License
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。