孟博特
用于AI代理的Brain cartridge服务器。
Membot是一个MCP服务器,它为AI代理提供了存储在神经形态基质上的可交换、可搜索的内存。安装一个大脑墨盒,用多信号排名搜索它,存储新的记忆,交换到不同的域——所有这些都是通过标准 模型上下文协议 工具调用。
建立在 矢量+晶格引擎,Membot使用三信号搜索管道——嵌入余弦、二进制汉明相似度和关键字重新排序——来查找任何单一方法都会错过的结果。不需要GPU。 无需法学硕士学位。
整个内存底层——构建、存储、搜索、调用——在没有任何LLM调用的情况下运行。嵌入来自句子转换器(Nomic)。搜索是二进制数学。物理学是Hebbian动力学。唯一接触Membot的人工智能是另一端的代理决定搜索什么。
*人类的大脑不需要LLM来记忆事物。Membot也没有。*
搜索工作原理
Membot的搜索融合了三个独立的信号,每个信号都捕捉到了其他信号错过的内容:
Query -> Nomic embed (768-dim)
|-- Cosine similarity (70%) Final ranked results余弦 捕捉语义含义。 汉明 对从每个嵌入的符号结构导出的紧凑二进制码(每个模式768位=96字节)进行操作,这是一种神经形态群体编码。 关键词 捕捉嵌入几何体有时会错过的曲面级别匹配。
二进制代码在装载时计算: bit_i = 1 if embedding_i > 0这种符号模式保留了通过对比训练创建的语义指纹(Pearson r=0.891,全余弦),存储量减少了33倍。
| 信号 | 它捕获了什么 | 存储在1M |
|---|---|---|
| 余弦(float32嵌入) | 语义相似度 | 3GB |
| 汉明(符号零二进制) | 人口代码协议 | 96 MB |
| 关键字(原始文本) | 精确术语匹配 | (在文章文本中) |
仅汉明模式
墨盒可以随附 只有符号位和文本--不需要完全嵌入。Membot会自动检测可用内容并使用最佳搜索模式:
| 购物车内容 | 搜索模式 | 存储在2.4M |
|---|---|---|
| 嵌入+符号位 | 70%余弦+30%汉明+关键字 | ~7.2 GB |
| 仅符号位 | 汉明+关键字 | ~220 MB |
仅汉明的推车在25K图案上实现了R@1=1.000,并在240万尺度上返回了高质量的结果。这使得从小型服务器提供海量知识库变得切实可行——240万篇arXiv论文从一个3 GB的购物车中抽象出了零浮点运算的搜索结果。
要构建一个仅限汉明的购物车,请嵌入您的段落,用以下公式计算符号位 np.packbits((embeddings > 0).astype(np.uint8), axis=1),并将其存储在 sign_bits 推车的田地。看 strip_embeddings.py 例如转换现有购物车。
拆分购物车格式(索引+SQLite)
对于RAM有限的大规模部署,Membot支持 分体式推车--一种双文件格式,将搜索索引保存在RAM中,并将全文存储在磁盘上:
| 文件 | 格式 | 内容 | 驻留 |
|---|---|---|---|
name_index.npz | NumPy压缩 | 符号零位+200个字符片段+元数据 | RAM |
name_text.db | SQLite | 完整段落、标题、外部ID | 磁盘(按需分页) |
它是如何工作的: 汉明搜索和关键字重新排序完全在RAM中针对紧凑索引运行。只有前K个结果才会触发SQLite查找(每个约1ms),以获取完整的段落文本进行显示。
| 格式 | RAM(240万条) | 磁盘 | 用例 |
|---|---|---|---|
标准 .pkl | ~4 GB | ~3 GB | 本地使用,完全可移植 |
拆分 .npz + .db | ~400 MB | ~4 GB | 服务器部署,廉价托管 |
拆分购物车实现 RAM减少88% 与将所有内容加载到内存中相比。每月12美元的服务器可以搜索240万条条目。
SQLite不需要额外的服务器或守护进程——Python的内置 sqlite3 模块直接从 .db 文件。上传两个文件,就完成了。
构建分体式购物车:
# Convert any existing .pkl cart to split format
python build_sqlite_cart.py my_cart.pkl
# Custom output name and snippet length
python build_sqlite_cart.py my_cart.pkl -o my_split_cart --truncate 300构建器会自动检测压缩和未压缩的推车。输出: my_split_cart_index.npz + my_split_cart_text.db.
挂载时,Membot会自动检测SQLite sidecar并打开它进行按需文本检索。搜索结果显示 hamming-only+kw+sqlite 在模式标签中。
快速开始
先决条件
- Python 3.10+
可选(用于晶格回忆和训练):
- 配备CUDA 11.0的NVIDIA GPU+
- 预装CUDA发动机(
lattice_cuda_v7.dll/.so)
安装
git clone https://github.com/project-you-apps/membot.git
cd membot
pip install -r requirements.txt跑
# Local (stdio)--for OpenClaw, Claude Desktop, local agents
# Starts read-only by default. Add --writable to enable store and save.
python membot_server.py
# Remote (HTTP)--for any MCP client over the network (read-only by default)
python membot_server.py --transport http --port 8000
# Writable mode--for personal or team servers that need store and save
python membot_server.py --transport http --port 8000 --writable| 标志 | 默认值 | 描述 |
|---|---|---|
--transport | stdio | 运输方式: stdio, http,或 sse |
--host | 0.0.0.0 | 绑定地址(HTTP/SSE模式) |
--port | 8000 | 侦听端口(HTTP/SSE模式) |
--writable | 关闭 | 启用 memory_store 和 save_cartridge (默认情况下为只读) |
stdio模式:JSON-RPC over stdin/stdout,专为将Membot作为子进程启动的MCP代理框架而设计。
HTTP模式:可流式传输HTTP http://{host}:{port}/mcp任何MCP客户端都可以远程连接。包括速率限制(每个IP 60 req/min)和可选的API密钥验证,通过 MEMBOT_API_KEY 环境变量。
多会话支持
Membot支持多个并发会话。每个会话都有自己的挂载墨盒和独立状态,因此多个代理可以使用同一台服务器,而不会相互踩踏。
每个工具都接受一个可选 session_id 参数:
# Agent A mounts its own cartridge
mount_cartridge("medical-knowledge", session_id="agent-a")
# Agent B mounts a different one — no collision
mount_cartridge("legal-docs", session_id="agent-b")
# Each searches their own mounted cartridge
memory_search("symptoms of flu", session_id="agent-a")
memory_search("statute of limitations", session_id="agent-b")如果 session_id 如果省略,所有呼叫都将转到 "default" 会话(向后兼容单用户使用)。
会话限制:
- 会话过期时间 30分钟 不活动(可通过以下方式配置
SESSION_TIMEOUT_SEC) - 最大 50个并发会话 (最老的在达到限制时被驱逐)
- 嵌入模型和GPU在所有会话中共享——每个会话只有已安装的墨盒状态
代理配置
龙虾 (~/.openclaw/openclaw.json):
{
"plugins": {
"entries": {
"mcp-adapter": {
"enabled": true,
"config": {
"servers": [
{
"name": "membot",
"transport": "stdio",
"command": "python",
"args": ["/path/to/membot/membot_server.py"]
}
]
}
}
}
}
}克劳德代码 (本地,stdio):
{
"mcpServers": {
"membot": {
"command": "python",
"args": ["/path/to/membot/membot_server.py"]
}
}
}克劳德代码 (远程,HTTP):
{
"mcpServers": {
"membot": {
"type": "http",
"url": "http://your-server:8000/mcp"
}
}
}工具将以前缀显示 membot_ (例如。, membot_memory_search).
OpenClaw代理调度 (无头):
OpenClaw代理调度不加载MCP适配器工具。使用 麦波特 +一个SOUL.md,指示代理通过Bash调用Membot:
mcporter call membot.memory_search query="your query" top_k=5看 SOUL-research-bot-med.md 作为一个工作示例。
最新动态(2026年5月)
Mempack——每剂可写脑墨盒
A. Mempack 的 是一个代理拥有并写入的Membot墨盒。与知识车相同的格子基板,有三个保留的插槽,可以将静态文档变成活的记忆:清单位于 模式0行为指导 模式I (idx=1),以及在 图案N+ (idx≥2)。当代理挂载其Mempack时,简报和行为会自动加载。没有及时填充,没有每次会议的重新简报。购物车欺骗了那个特工。
| 插槽 | 用途 | 默认状态 |
|---|---|---|
| 模式0 | 购物车清单:所有权、perms、Cart_type、简报 | 固定+存档,只读 |
| 模式I(idx=1) | 代理的行为指令、声音、角色、操作规则 | 固定+存档,所有者可写 |
| 模式N+(idx≥2) | 累积的发现、决策、源链接、搜索结果 | 易变(符合衰变条件),所有者可写 |
双层持久性
Mempack在Supabase上拆分,而不是生活在Membot主机的文件系统上。每个用户都拥有自己的数据;Membot水滴不会将个人购物车保存在磁盘上。
- Postgres元数据 在
public.mempacks(每辆车一排)加public.mempack_patterns(每个模式一行,64字节的H块分解为本机列+9个生成的布尔/枚举列,用于SQL端查询,而无需打开购物车)。 - 二进制blob 在Supabase仓库
mempacks//.cart.npz.RLS将每个用户限定到他们自己的文件夹;Membot在挂载时使用服务角色密钥代表代理进行读/写。
跨Mempack搜索变成了在规范化的H块列上的SQL JOIN,而不是获取所有blob然后进行过滤。免费套餐:每位用户1个10MB的Mempack;Pro和Enterprise层通过插入触发策略进行调整。
MCP本地访问
Mempack旅行。今天从Claude Code安装,明天从Cursor安装,下周从自定义OpenClaw代理安装。购物车格式为一个文件;接入协议为MCP;起源贯穿每一个宿主。
# Auto-provision on first list (Path C): empty roster -> starter primary
GET /api/mempacks?owner_id=
# -> {"status": "ok", "count": 1, "auto_provisioned": true, "mempacks": [...]}
# Read Pattern I via the MCP tool
mempack_read_pattern_i(name="primary")
# -> the agent's own behavioral instructions, fresh from Supabase
# Mount and search like any cart
mount_cartridge("primary")
memory_search("attention mechanisms", top_k=5)看 docs/AGENT_INSTRUCTIONS.md 对于三种访问模式(MCP/mcporter/REST)和 docs/mcp.json.example 用于复制粘贴MCP主机配置。
路径C延迟自动配置
用户第一次呼叫 GET /api/mempacks?owner_id= 在没有现有行的情况下,Membot会创建一个启动器 primary Mempack:固定+存档头,固定+存档模式I,带有默认行为模板,审计日志条目,状态翻转为 ready blob上传完成后。后续调用是幂等的。无需注册端触发器或服务密钥管道;基板图元直接处理它。
集 auto_provision=false 在查询字符串上选择退出(返回空列表而不创建)。
标准12字段H块格式
此版本在规范12字段上统一了购物车格式的海马体 HIPPO_FORMAT (` mount_cartridge("attention-is-all-you-need")
memory_search("how does multi-head attention work")
要启用晶格召回(具有噪声容限的内容可寻址存储器),请使用以下命令进行重建 `--train` (需要GPU):
python cartridge_builder.py attention-paper.pdf --name attention-is-all-you-need --train
在几秒钟内从任何PDF、markdown或文本文件构建自己的 `cartridge_builder.py`.
## 部署
### 自托管设置
任何人都可以运行自己的Membot实例。选择您自己的API密钥(任何字符串),将其设置为环境变量,然后启动服务器:
1. Choose your API key (any string you want)
export MEMBOT_API_KEY="my-secret-key-here"
2. Start the server
python membot_server.py --transport http --port 8000
Or writable (enables store and save -- read-only by default)
python membot_server.py --transport http --port 8000 --writable
客户端通过传递连接 `Authorization: Bearer my-secret-key-here` 在它们的HTTP标头中。就是这样——没有账户系统,没有注册。每个服务器实例一个密钥。
### 将代理连接到服务器
**克劳德代码** (远程,带身份验证):
claude mcp add --transport http --scope user membot http://your-server:8000/mcp \ --header "Authorization: Bearer my-secret-key-here"
**OpenClaw/mcporter** (`~/.mcporter/mcporter.json`):
{ "servers": { "membot": { "url": "http://your-server:8000/mcp", "headers": { "Authorization": "Bearer my-secret-key-here" } } } }
### 部署架构
**公共药房** (只读,默认):多个代理搜索共享墨盒。没有人能写。在本地构建墨盒,上传到服务器。这是默认模式,不需要额外的标志。
MEMBOT_API_KEY="shared-read-key" python membot_server.py --transport http
**团队服务器** (读写):多个代理独立挂载、搜索和存储。每个代理使用 `session_id` 建立自己的孤立状态。
MEMBOT_API_KEY="team-key" python membot_server.py --transport http --writable
**个人服务器** (完全访问):一个用户,一个密钥,完全CRUD。添加到您的系统启动中以获得永久内存。
### systemd(Linux)
[Unit] Description=Membot Brain Cartridge Server After=network.target
[Service] Environment="MEMBOT_API_KEY=your-secret-key" ExecStart=/opt/membot/venv/bin/python /opt/membot/membot_server.py --transport http --port 8000 Restart=always WorkingDirectory=/opt/membot
[Install] WantedBy=multi-user.target
sudo systemctl enable membot sudo systemctl start membot
**需求**:Python 3.10+和~2GB RAM(句子转换器模型)。搜索不需要GPU。
### 实时部署
Membot目前提供 **480万个可搜索条目** 每月12美元的DigitalOcean液滴(2 GB RAM,50 GB磁盘):
|购物车|条目|索引(RAM)|文本(磁盘)|
|------|---------|-------------|-------------|
|arXiv摘要| 2400000 | 360 MB | 3.5 GB|
|维基百科文章| 2400000 | 380 MB | 1.3 GB|
两个购物车都使用拆分格式。总RAM使用量:索引约780 MB,嵌入模型约300 MB。两个推车可以同时安装,在2GB的服务器上有多余的空间。
### 可书写代理工作区
对于多代理部署,在单独的端口上以可写模式运行第二个Membot实例。代理可以搜索共享的只读购物车并创建自己的购物车:
Port 8000: read-only (public, shared carts)
MEMBOT_API_KEY="read-key" python membot_server.py --transport http --port 8000
Port 8040: writable (agent workspace, separate API key)
MEMBOT_API_KEY="agent-key" python membot_server.py --transport http --port 8040 --writable
可写实例共享相同的 `cartridges/` 目录,这样代理就可以搜索大购物车并将搜索结果存储到自己的购物车中。
## 故障排除
### “找不到会话”错误(-32600)
Streamable HTTP error: Error POSTing to endpoint: {"jsonrpc":"2.0","id":"server-error","error":{"code":-32600,"message":"Session not found"}}
**原因:** MCP客户端正在发送过时的会话ID。这发生在服务器重新启动、服务器崩溃(例如,装载超过可用RAM的购物车)或30分钟会话超时后。
**修复:** 重新启动MCP客户端,以便它建立新的会话:
- **OpenClaw TUI:** `openclaw gateway stop && openclaw gateway start`,然后重新启动TUI
- **克劳德代码:** 重新启动VS Code,或重新启动Claude Code扩展
- **克劳德桌面:** 退出并重新打开
服务器本身很好——它是持有过期会话ID的客户端。
### 安装大型墨盒时服务器崩溃
如果您装载的购物车超过了可用RAM(例如,2 GB服务器上的3 GB多功能购物车),Python进程将被操作系统终止。systemd服务将自动重新启动,但所有连接的客户端都将收到“找不到会话”错误(见上文)。
**预防:** 使用 [分体式推车](#split-cart-format-index--sqlite) 用于内存受限服务器上的大型数据集。拆分购物车仅将搜索索引保存在RAM中(240万条条目约400 MB),并通过SQLite从磁盘分页全文。
## TUI会话扫描仪
Membot包括一个扫描仪,可以捕获OpenClaw TUI代理会话并将其推送到会话内存服务器,为TUI代理提供跨会话的持久内存。
One-time scan (process all sessions, then exit)
python tui_scanner.py --sessions-dir ~/.openclaw/agents --api-key YOUR_KEY --once
Continuous mode (scan every 120 seconds)
python tui_scanner.py --sessions-dir ~/.openclaw/agents --api-key YOUR_KEY
Dry run (parse and format, don't push)
python tui_scanner.py --sessions-dir ~/.openclaw/agents --dry-run --once
扫描程序读取OpenClaw的JSONL会话记录,提取用户/助手交换对,并将它们推送到会话内存API。每个交易所都标有代理名称(`TUI-main`, `TUI-research-bot`等等)用于过滤。
配套的监视器脚本提供了一个干净、可滚动、颜色编码的TUI消息视图——没有破坏,没有覆盖:
Auto-find latest session and tail it
python tui_monitor.py
Show full session history, then tail
python tui_monitor.py --all
启动脚本在单独的窗口中启动扫描仪、OpenClaw网关、TUI和监视器:
bash start-tui.sh
## 是什么让Membot与众不同
|| Membot |典型的AI记忆|
|---|---|---|
| **LLM依赖性** |没有。搜索、存储和召回都是免费的。|每个操作都需要LLM调用(事实提取、关系构建、压缩)。 |
| **存储模型** |便携式脑盒式磁带——你拥有和携带的文件。|云API、供应商锁定、订阅定价。 |
| **搜索** |SimHash汉明+关键字。二元数学,没有神经推理。|通过API嵌入余弦。根据代币成本进行扩展。 |
| **协会** |Hebbian吸引子动力学发现了不明显的联系。|关键字/嵌入仅重叠。 |
| **规模** |每月12美元的服务器上有480万条条目。|按查询、按GB、按座位定价。 |
| **物理学** |训练Hebbian权重、内容可寻址回忆、噪声容忍度。|没有。 |
| **跨模式** |显示图片→ 听到声音。Hebbian协会,没有单独的模式。|不支持。 |
| **能量** |训练一次,查询永远。管道中没有LLM调用。|每个摄取和查询都需要LLM推理。 |
Membot使用的符号零二进制编码是 [SimHash(查里卡尔,2002)](https://dl.acm.org/doi/10.1145/509907.509965)--一种成熟的局部敏感散列技术。Membot的创新是将SimHash与Hebbian结算动力学相结合:在捕获二进制签名之前,模式通过神经形态物理管道进行训练。生成的签名编码了原始嵌入几何体中不存在的关联关系。
## 安全
- **NPZ优先**:新墨盒始终另存为 `.npz` (NumPy存档--不执行代码)
- **PKL沙盒**:遗产 `.pkl` 文件仅从受信任的目录加载(可配置)
- **完整性验证**:安装时检查SHA256清单;被篡改的墨盒被拒收
- **输入净化**:根据路径遍历验证墨盒名称;文本和查询长度上限
- **资源限制**:每个墨盒最多3000000个条目,每个存储10000个字符,每个查询2000个字符
- **默认情况下为只读**:服务器以只读模式启动。 `memory_store` 和 `save_cartridge` 除非您明确通过,否则将被禁用 `--writable`默认情况下,这使得面向公众的部署是安全的。
- **并发写入**:在可写模式下,多个会话可以同时挂载和搜索,但并发保存到同一盒式文件是最后一个写入者获胜。如果您需要文件锁定、每个用户API密钥或托管团队部署, [联系](mailto:andy@project-you.app).
## 嵌入模型
Membot使用 [nomic ai/nomic-embed-text-v1.5](https://huggingface.co/nomic-ai/nomic-embed-text-v1.5) 通过句子转换器。这与Vector+Studio用于构建墨盒的嵌入器相匹配。
该模型在首次运行时会自动下载(约270 MB)。随后开始从缓存加载。
**重要**:用于构建墨盒的嵌入模型必须与用于查询墨盒的模型匹配。Membot和Vector+Studio都使用相同的型号,因此墨盒可以互换。
## 系统要求
|组件|最小值|推荐|
|-----------|---------|-------------|
|Python | 3.10+| 3.12+|
|RAM | 2 GB(拆分购物车)/4 GB(标准购物车)|16+GB|
|GPU |无(搜索无需GPU)|NVIDIA RTX 3080+(用于晶格召回)|
|VRAM|--|8+GB|
|CUDA |--|12.0+|
## 项目结构
membot/ ├── membot_server.py # MCP server + depot dashboard + web app ├── membot_app.html # Standalone web app (connects to any server) ├── cartridge_builder.py # CLI tool to build cartridges from documents ├── build_gutenberg_cartridge.py # Download + embed 44 Project Gutenberg classics ├── build_sqlite_cart.py # Convert .pkl cart to split format (index + SQLite) ├── compress_cart.py # Zlib-compress passages in a .pkl cart ├── multi_lattice_wrapper_v7.py # Python wrapper for CUDA engine ├── requirements.txt ├── tools/ │ ├── tui_scanner.py # OpenClaw TUI session scanner │ ├── tui_monitor.py # Clean TUI message monitor (tail + pretty-print) │ └── start-tui.sh # Launch scanner + gateway + TUI + monitor ├── bin/ │ └── lattice_cuda_v7.dll # Pre-built CUDA physics engine (Windows) ├── cartridges/ # Your brain cartridges go here └── data/ # Alternative cartridge directory
## 许可证
**双重许可:**
|组件|许可证|商业用途|
|-----------|---------|----------------|
|Python代码(`.py` 文件)| MIT |是|
|CUDA发动机(`bin/*.dll`)|专有| [许可证联系人](mailto:andy@project-you.app) |
服务器代码和实用程序在MIT下是开源的。编译的CUDA物理引擎可供个人、教育和非商业用途免费使用。商业使用需要单独的许可证——请参阅 [bin/许可证](bin/LICENSE).
## 链接
- [矢量+工作室](https://github.com/project-you-apps/vector-plus-studio) --用于构建和搜索大脑墨盒的GUI
- [Project You](https://project-you.app) --父项目
- [许可](https://project-you.app/licensing) --商业许可选项
______________________________________________________________________
*图案以全息方式存储,而不是作为记录。内存充当墨盒,而不是数据库。*