OpenBrain——面向MCP客户端的持久AI内存
在AWS上运行的自托管持久内存系统。PostgreSQL数据库 pgvector将内存存储为向量嵌入。Lambda函数公开了4个MCP工具 通过HTTPS。任何兼容MCP的AI(克劳德代码、克劳德桌面)都可以搜索和 通过它捕捉记忆。
你拥有数据。你拥有基础设施。零平台锁定。估计成本:个人使用每月不到1美元。
______________________________________________________________________
建筑
flowchart TD
A["🤖 MCP Clients\nClaude Code · Claude Desktop · etc."]
B["🌐 API Gateway HTTP API\nYOUR_ID.execute-api.YOUR_REGION.amazonaws.com"]
C["⚡ AWS Lambda · TypeScript · arm64\ncapture_thought · search_thoughts\nbrowse_recent · get_stats"]
D["🗄️ Aurora Serverless v2 PostgreSQL\npgvector · scale-to-zero · us-east-1"]
E["🧠 Amazon Bedrock\nTitan Embed Text v2 · 1024 dimensions"]
A -->|"HTTPS + x-brain-key header"| B
B -->|"Lambda proxy"| C
C -->|"Aurora Data API"| D
C -->|"embeddings"| E______________________________________________________________________
文件夹结构
openbrain/
├── README.md ← this file
├── SETUP.md ← step-by-step build guide
├── proxy.mjs ← stdio↔HTTP bridge (published as openbrain-proxy on npm)
├── infra/
│ ├── schema.sql ← Aurora PostgreSQL schema (vector(1024))
│ └── iam-policy.json ← Lambda IAM inline policy template
├── lambda/
│ ├── package.json
│ ├── tsconfig.json
│ └── src/
│ ├── index.ts ← Lambda handler + MCP server
│ ├── tools/
│ │ ├── capture.ts ← capture_thought tool
│ │ ├── search.ts ← search_thoughts tool
│ │ ├── browse.ts ← browse_recent tool
│ │ └── stats.ts ← get_stats tool
│ └── lib/
│ ├── aurora.ts ← Aurora Data API client
│ └── bedrock.ts ← Bedrock embeddings client
└── docs/
└── mcp-config.md ← Claude Code / Claude Desktop / VS Code MCP config______________________________________________________________________
快速开始
看 设置.md 获取完整的分步构建指南。
部署后,使用以下命令连接任何MCP客户端 npx openbrain-proxy --不需要文件复制或repo克隆:
{
"servers": {
"openbrain": {
"type": "stdio",
"command": "npx",
"args": ["openbrain-proxy"],
"env": {
"OPENBRAIN_KEY": "your-brain-key",
"OPENBRAIN_URL": "https://YOUR_ID.execute-api.YOUR_REGION.amazonaws.com/mcp"
}
}
}
}看 docs/mcp-config.md 适用于VS Code、Claude Desktop(Windows/Mac)和Claude Code配置。
______________________________________________________________________
MCP工具
| 工具 | 说明 |
|---|---|
capture_thought | 在Aurora中嵌入内容+INSERT |
search_thoughts | 基于pgvector的向量相似性搜索 |
browse_recent | 选择最新的N个想法 |
get_stats | COUNT和元数据 |
______________________________________________________________________
成本报告
| 服务 | 估计。每月费用 |
|---|---|
| Aurora无服务器v2(缩放到零) | ~0.01-0.05美元(仅在空闲时存储) |
| Lambda | 免费(每月需100万免费套餐) |
| 基岩泰坦嵌入v2 | ~0.00002/1K代币 |
| SSM参数存储 | 免费(标准层) |
| 总计 | 每月1美元以下,供个人轻度使用 |
⚠️ 在创建任何资源之前,设置AWS预算警报(每月5美元)。
______________________________________________________________________
关键概念
- “两扇门,一张桌子” --您和您的代理都读/写相同的Aurora表
- 架构是可移植的,工具不是 --学习模式,而不是特定的堆栈
- 通过/循环播放“心跳” --代理人按照时间表行事,而你不是触发器
- 语义搜索 --pgvector通过意义而不仅仅是关键字来查找想法
______________________________________________________________________
戈查斯(艰难地学习)
1.Titan Embed Text v2使用1024维,而不是1536维
基岩泰坦嵌入文本 第1版 产生1536个暗矢量。 第2版 支持256、512或1024,默认值/最大值为1024。使用 vector(1024) 在模式和传递中 { dimensions: 1024, normalize: true } 在基岩有效载荷中。
2.默认情况下,Lambda函数URL公共访问被阻止(2024年底+)
AWS为Lambda函数URL引入了帐户级别的“阻止公共访问”。默认情况下,新帐户处于启用状态。函数URL AuthType=NONE +仍然返回正确的资源策略 403 Forbidden。该设置可以在中禁用 Lambda控制台→ 账户设置→ 阻止公共访问,但目前还没有稳定的CLI/SDK API。 请改用API网关HTTP API --相同的成本(免费层),零摩擦。
3.RDS管理的秘密ARN格式破坏IAM通配符
当创建Aurora时 --manage-master-user-password,秘密管理器秘密被命名为 rds!cluster--,没有什么可预测的。类似通配符 openbrain-aurora-secret-* 将不匹配。请在IAM策略中使用确切的ARN(从以下位置获取 describe-db-clusters 集群创建后)。
4.The ! ARN破解bash双引号
这 ! 字符在双引号内触发bash历史扩展。始终在单引号内传递秘密ARN --cli-input-json 从CLI使用数据API或机密管理器时:
aws rds-data execute-statement --cli-input-json '{"secretArn":"arn:...rds!cluster-..."}'5.Windows Git Bash重写 /aws/... 路径
以开头的CLI参数 /aws/ 转换为Windows路径 C:/Program Files/Git/aws/....在命令前加上前缀 MSYS_NO_PATHCONV=1 跟踪CloudWatch日志组时:
MSYS_NO_PATHCONV=1 aws logs tail /aws/lambda/openbrain --region us-east-16.极光冷启动: DatabaseResumingException
随着 MinCapacity=0,极光在大约5分钟的不活动后会变为零。暂停后返回的第一个数据API调用 DatabaseResumingException。只需在约8秒后重试即可——Aurora恢复得很快。这是意料之中的,也是免费的;无需采取任何行动。
7.Mac Claude Desktop不继承shell PATH(nvm用户)
Mac上的Claude Desktop在没有shell的情况下启动进程 PATH这意味着 npx openbrain-proxy 默默地解决 node 到系统版本(可能是节点14/16),该版本失败 ReferenceError: fetch is not defined 自从 openbrain-proxy 需要节点18+。
修复: 不使用 npx.Point command 直接在您的nvm节点二进制文件上 args 在代理脚本中:
{
"command": "/Users/you/.nvm/versions/node/vX.X.X/bin/node",
"args": ["/Users/you/.nvm/versions/node/vX.X.X/lib/node_modules/openbrain-proxy/proxy.mjs"]
}看 docs/mcp-config.md 了解完整的设置步骤。
______________________________________________________________________
学分
OpenBrain背后的概念和架构直接受到以下工作的启发 内特·B·琼斯. 如果没有他的视频,我就无法构建这个——如果你愿意,强烈建议观看 为了理解 *为什么* 在建立自己的之前。
