mcpField
B
brainbox

brainbox

本地服务
github.com/thebasedcapital记忆与知识143 周前更新

关于 brainbox

brainbox 是面向编码 Agent 的本地行为记忆工具,通过 SQLite 图学习文件、工具和错误修复之间的关联。它根据历史操作预测后续工具并召回相关文件,也可将记忆通过 MCP 提供给 Agent。

主要功能

  1. 01从工具调用学习行为关联
  2. 02基于历史操作召回文件
  3. 03预测后续工具调用
  4. 04记录错误与修复流程
  5. 05本地 SQLite 图存储

适用场景

  1. 01减少编码任务中的文件搜索
  2. 02根据当前任务预先呈现相关文件
  3. 03复用过去的错误修复经验

MCP 相关

brainbox 可作为 MCP 服务,为 Agent 提供 record、recall、explain、error、resolve、predict_next、stats 和 decay 等工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"thebasedcapital-brainbox": {
"command": "npx",
"args": [
"-y",
"brainbox-hebbian"
]
}
}
}
启动命令npx -y brainbox-hebbian

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmbrainbox-hebbian0.1.6

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

BrainBox — 编码 Agent 的肌肉记忆

npm 版本 GitHub 星标数 Node 22+ MCP:8 个工具 零成本、本地运行、SQLite MIT 许可证

安装 · 工作原理 · 效果 · 研究 · 集成 · 白皮书

BrainBox 是面向 AI 编码 Agent 的程序性记忆。它会观察 Agent 的实际操作并将其记住:

  • 哪些文件会被一起读取和编辑
  • 哪些编辑修复了哪些错误
  • Agent 会重复使用哪些工具链

下次执行任务时,它会在 Agent 开始搜索之前,将合适的文件呈现在它面前。

不是向量数据库,也不是 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

论文

DOI

BrainBox:面向编码 Agent 的本地行为记忆(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

就这么简单。安装后脚本会:

  1. 在 ~/.claude/settings.json 中添加 PostToolUse 钩子。它会从每次文件读取、编辑、搜索和命令执行中学习。
  2. 添加 UserPromptSubmit 钩子。它会将精简的回忆注入提示词;一旦发现你会忽略这些内容,就保持静默。
  3. 添加 SessionEnd 钩子。它会评估你实际打开或编辑了哪些召回文件,并整理出操作流程。
  4. 通过 claude mcp add 注册 MCP 服务,并提供 8 个工具:record、recall、explain、error、resolve、predict_next、stats、decay。
  5. 创建 ~/.brainbox/,并在后台开始下载嵌入模型。

钩子不会下载模型。在模型缓存好之前(brainbox models pull),召回仅使用词法搜索。嵌入功能由可选依赖项 @huggingface/transformers 提供;如果其原生模块无法在你的设备上安装(例如,使用系统 libvips 的 sharp 且没有构建工具),BrainBox 仍会完成安装并使用关键词搜索运行。brainbox models status 会显示当前运行模式。

通过 Git 历史和代码图谱预先填充数据,告别冷启动:

brainbox bootstrap --repo /path/to/project --imports

卸载: brainbox uninstall 会移除钩子和 MCP 服务,并保留数据库。

工作原理

BrainBox 流程:工具调用 → 学习 → 回忆 → 策略 → 注入,并形成反馈循环

每次工具调用都是一个正在放电的神经元。文件、工具和错误都会成为神经元,而在相近时间访问的内容会形成突触。提示词会触发回忆,融合多个排序通道。学习得到的策略会判断注入是否值得消耗这些令牌。关于你实际打开或编辑内容的反馈会回流到图中。

一起放电,一起连接

赫布学习:跨会话共同访问的文件会增强彼此间的突触

在不同会话中先访问 auth.ts,再访问 session.ts,它们之间的突触就会增强。SNAP 可塑性会让强突触增长得更慢,因此没有任何单一连接会占据主导。连接具有方向性(STDP):你接下来打开什么,比之前打开的内容更重要。

扩散激活

从种子文件开始,经三跳扩散激活,并通过扇出效应进行衰减

回忆一个文件会激活其邻居,最多扩散 3 跳。每一跳都会按 1/√degree 衰减,因此枢纽文件不会淹没结果。每个结果都会注明产生它的通道和边。brainbox_explain 会准确说明回忆某个文件的原因。

超级通道与衰减

常用路径会髓鞘化为超级通道,而未使用的边会逐渐衰减

常用路径会髓鞘化,成为可即时回忆的超级通道。近期性和频率遵循 ACT-R 基础水平公式 B = ln Σ tⱼ^-0.5,未使用的连接则会逐渐减弱。回忆后却被忽略的文件,只会削弱使其浮现的那条边。

错误 → 修复免疫系统

错误指纹会与修复错误的编辑关联,并在下次出现时被回忆

如果失败的命令之后进行了编辑,并且重新运行后通过,BrainBox 就会存储一条错误→修复流程。该流程以错误指纹为键,并跟踪有益或有害的结果。下次出现该错误时,修复文件会立即被回忆出来。流程会以引用观察结果的形式呈现给 Agent,绝不会作为指令。

结果

v0.2、v0.1 与最佳基线在真实 Agent 轨迹上的表现

brainbox eval 会按时间顺序重放真实的编码 Agent 轨迹。每项任务都在全新的内存数据库上进行评分,该数据库仅使用同一仓库中更早的任务进行训练,且所有系统的候选集都相同。

v0.1 在下一文件预测上不如简单的近期性基线。 在留出的 SWE 任务上,差距为 −.207,95% 置信区间为 −.312…−.118。v0.2 在这项指标上与近期性基线在统计上持平。下一工具预测现在显著优于所有基线,文件读取召回率在两种数据源上都领先。

已知差距: 在本地会话中,仅按编辑频率排序,在已编辑文件上的表现仍优于 BrainBox(Δ −.089,置信区间 −.185…0)。

将词法和 Hebbian 通道权重拟合为零后,开发集得分更高,但召回结果会忽略查询,因此发布的权重仍保留这些通道。

完整表格、评估协议和命令

探测项:

  • P1: 任务中编辑或读取的文件(查询 = 任务文本)
  • P2: 逐步预测下一个文件
  • P3: 下一个工具(前 3 名)

基线:近期性、频率、BM25、EdgeBank 和随机。置信区间为按轨迹重采样的配对 Bootstrap 95% 置信区间。

数据集:

  • 排序权重仅使用开发集仓库(sqlglot、dvc、streamlink)拟合。
  • SWE 测试集是来自 Pillow 和 conan 的 40 项留出任务。
  • 本地集包含 5 个项目中的 97 个 Agent 会话,从未用于拟合。

得分为 MRR(P3:MRR@3),关闭嵌入。

探测项SWE 测试集:v0.1v0.2最佳基线本地集:v0.1v0.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。

## 基于研究构建

近期论文及其对 BrainBox 子系统的影响

每项 v0.2 变更都对应一篇近期论文,并通过回放评估进行测量:

子系统变更内容来源
排序使用 ACT-R 基础水平激活取代固定衰减。加入重复出现和热门度候选项。使用在留出的开发仓库上拟合权重的加权倒数排名融合。方向性 STDP;n 元工具预测。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。奖励 = 打开或编辑的文件数,减去 token 成本。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 轨迹和本地会话进行离线回放,并提供基线和配对 CI。SWE-rebench 轨迹

0.2 还包括:

  • 基于 Node 22–26 构建(better-sqlite3 v13)。
  • 钩子采用 Claude Code 的嵌套设置格式编写。
  • 钩子数据库锁定等待时间上限为 100 ms。
  • 在大型历史记录上,操作流程编译速度提升 470 倍。

集成

MCP 服务(任意 Agent)
# 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 CodeOpenClaw
工具名称PascalCase(Read)小写(read)
上下文注入UserPromptSubmit 钩子before_agent_start 生命周期
学习触发PostToolUse 钩子after_tool_call 生命周期
嵌入jina-embeddings-v2-base-code(可配置)仅关键词(置信度门槛较低)
macOS 守护进程(可选启用)

一个系统级 FSEvents 文件监视器,可从 VS Code、Xcode、vim 和 shell 中学习,而不仅限于 Agent。它会安装 LaunchAgent,因此需要明确选择启用:

brainbox daemon install   # installs LaunchAgent, starts watching
brainbox daemon status
brainbox daemon uninstall

命令行

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_DBSQLite 路径~/.brainbox/brainbox.db
BRAINBOX_DB_TIMEOUT_MSSQLite 忙碌超时5000(钩子使用 100)
BRAINBOX_EMBED_MODELminilm | jina-code | gemma | gemma-q4jina-code
BRAINBOX_MODEL_CACHE模型缓存目录Transformers.js 默认值
BRAINBOX_EMBEDDINGSoff 可完全禁用嵌入on
BRAINBOX_POLICYoff 可禁用学习到的注入策略(始终为 TOP5)on
BRAINBOX_SESSION_ID覆盖 CLI/适配器的会话 ID派生值
BRAINBOX_HOOK由钩子入口点设置:仅本地模型,1.2 秒嵌入截止时间未设置

Gemma 配置文件受 Gemma 使用条款约束。

算法详情
组件机制(默认值位于 DEFAULT_ENGINE_OPTIONS)
突触形成顺序窗口(25 项),位置衰减;方向性 STDP(较晚→较早的边 × 0.5)
强化SNAP sigmoid 可塑性(中点 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 元语法(n ≤ 3,最小支持度 4)与频率(0.5)融合
代码搜索AST 分块;FTS5 BM25 + sqlite-vec KNN,RRF k=60
结构先验导入 0.2,调用 ≤ 0.35,继承 0.3;绝不覆盖已学习的共同访问关系
注入策略在 SILENT/TOP1/TOP3/TOP5 上使用 UCB1;奖励 = 按排名加权的打开/编辑次数 − 每 1k 个令牌扣 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

要求:Node.js 22+,macOS 或 Linux。FSEvents 守护进程仅支持 macOS;其他所有内容均可跨平台运行。


如果 BrainBox 帮你的 Agent 少费了些搜索功夫,请给它一个 ⭐,让更多人发现它。
由 @thebasedcapital 构建 · MIT 许可证

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。