关于 Myco Brain
Myco Brain 是基于自有 Postgres 的可自托管记忆层与 MCP 服务,面向需要跨会话共享上下文的 AI Agent 和团队。它以确定性规则处理事实,保留来源与变更历史,并支持按客户隔离。
主要功能
- 01跨会话记忆与上下文检索
- 02事实保留来源及变更历史
- 03Postgres 行级隔离
- 04本地全文与语义搜索
- 05可审核的事实提议与晋级
适用场景
- 01让多个 Agent 共享项目决策
- 02为机构客户隔离各自记忆
- 03追溯某条事实的来源与变化
MCP 相关
通过 MCP 提供记忆工具,并在 instructions 通道传递使用约定。文档引擎另提供用于搜索、取回和知识图谱操作的 MCP 工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
11收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | number | 否 | 返回的最大文本块数(默认值 10,最大值 50) |
| query | string | 是 | 自然语言查询 |
| embedding | array | 否 | 预先计算的查询嵌入(可选;OpenAI 为 1536 维,Ollama 为 768 维)。通常省略此项,服务端会对查询进行嵌入。 |
| hyobject_types | array | 否 | 按 type_ids 筛选 |
| include_people | boolean | 否 | |
| include_entities | boolean | 否 | |
| relational_limit | number | 否 | 返回的最大关系边数(默认值 25,最大值 100) |
| context_token_budget | number | 否 | 返回文本块的可选令牌预算;启用确定性压缩 |
| include_session_notes | boolean | 否 | |
| include_relational_context | boolean | 否 |
详细介绍
为你的 AI Agent 提供共享记忆,存储在你自己的 Postgres 上。每条事实都会保留其来源;发生变更时,新事实会取代旧事实,而不是覆盖它;每个客户端的事实都严格限定在各自的边界内。
两条命令,为你的 Agent 配备记忆
npm install -g @mycobrain/mcp-server
mycobrain-setup memory
你需要 Node.js 20 或更高版本。设置过程会询问几个问题,显示每个即将修改的文件,并等待你确认。它会备份所有修改过的文件,不会将任何密钥写入这些文件,最后写入一条事实并读取验证。mycobrain-setup memory --uninstall 会移除它添加的内容。
- 记忆存储位置。 使用带有 pgvector 的本地 Postgres:设置程序会在你的机器上查找一个,或在 Docker 中启动一个。你也可以通过引用提供任意 Postgres 连接字符串(Supabase、Neon、RDS、可自托管),这样连接字符串就不会出现在你的 shell 历史记录中。
- 入门模板。 可选择代理机构、设计工作室、建筑或景观公司、独立顾问,或选择
custom,通过简短访谈生成适用于你自己业务的模板。模板会设定如何将客户划分到不同空间、实体的类型,以及哪些信息值得记住。 - 在 Claude Code 和 Codex 中自动运行。 钩子会在会话开始时以及每条提示词发送前,召回相关事实。后台工作进程会读取每个已结束的会话,并归档从中找到的持久事实。
- 通过 MCP 在 Cursor、Windsurf 和 Claude Desktop 中使用。 这些应用没有钩子,因此会使用一个包含两个工具
brain_memory_context和brain_memory_write的 MCP 服务,以及指导 Agent 在采取行动前先召回信息、并记录所学内容的说明。 - 事实均注明来源,绝不覆盖。 每条事实都会记录其来源。事实发生变化时,旧事实会被新事实取代;
mycobrain-memory history会显示两者及变更原因。 - 在数据库中强制执行客户边界。 不同空间会隔离客户,且只有你能创建空间。
mycobrain-memory binding add <name> --house <slug>会让承包商的 Agent 只能访问一个客户的信息。每个工具都有自己的凭据,因此你可以查看哪个工具写入了某条事实,也可以撤销某个工具的权限,而不影响其他工具。 - 无需 API 密钥。 工作进程通过你已登录的
claude或codexCLI,使用你自己的 Claude 或 Codex 订阅读取会话。如果安装了 Ollama,嵌入计算会在本地运行。若没有 Ollama,召回功能会匹配提示词中的词语,对名称、地点和数字效果很好。 - Dream 默认关闭。 启用后,它会提出合并重复事实、生成每位客户的档案以及发现跨客户模式的建议。在你通过
mycobrain-memory review approve批准建议之前,不会有任何更改。
你可以随时使用 mycobrain-doctor --memory 检查。操作指南:docs/memory-quickstart.md。所有命令:docs/memory-cli.md。
发布前,我们在一个新建的主目录中,从打包好的 npm tarball 运行了文档中记录的命令,并将环境设置为一家虚构的景观公司。第一场会话中做出的决定,在第三场会话中未经提示便被召回。一条变更取代了旧事实,并保留了历史记录。一个仅限访问某位客户信息的 Agent,没有找到另一位客户的任何信息。数据库停止运行时,会话仍能启动;写入操作会排队等待,并在之后送达。卸载后,配置文件逐字节恢复原样。
文档引擎(可选)
引擎是 Myco Brain 最早推出的部分:摄取文档、代码仓库和聊天导出记录,搜索这些内容,构建知识图谱,并追溯每个答案所依据的文档。它以 Docker 堆栈的形式运行,可与记忆层并行运行,也可独立运行。如果你希望答案来自文档,而不只是 Agent 记录的事实,就可以添加它。下面的大部分内容都在介绍引擎。

- 来源可追溯。 每条事实都能追溯到其来源文档(
brain_why)——没有让人只能盲信的摘要。 - 信任会不断累积。 独立佐证会_提高_事实的可信度;出现矛盾时会_取代_该事实——旧事实会保留并接受审计,绝不会被悄悄覆盖。
- 无需密钥,本地优先。 全文搜索、语义搜索和知识图谱都无需依赖托管服务即可运行——只有在追求最准确的图谱时才需要添加 Anthropic 密钥。
- 由你掌控。 Apache-2.0、原生 Postgres 表、13 个引擎 MCP 工具。兼容 Claude、Cursor、Windsurf、Continue、Zed。
适用人群: 运行 Agent 的开发团队,需要共享记忆 · 需要严格隔离各客户数据的代理机构 · 任何希望助手能跨会话记住信息的人——导入你的 ChatGPT / Claude 历史记录(来自你的数据导出),让 AI 从第一天起就了解你。
解决 Agent 健忘问题的常见方法——让大模型自行维护记忆——会让记忆充斥重复内容、幻觉摘要,以及无法追溯来源却语气笃定的答案。Myco Brain 遵循截然相反的原则:
大模型提出建议。由确定性规则决定哪些内容成为事实。由你设定 标准——既可以采用基于交叉佐证的自动晋升机制(默认),也可以 要求每条事实都经过严格的人工审核(
BRAIN_REQUIRE_HUMAN_REVIEW=1)。
Claude、Cursor、Windsurf、Continue、Zed 和自定义 Agent 都可以共享由你自己的 Postgres 提供支持的同一份记忆。
⭐ 如果你认同这种信任机制,点个星标有助于更多人发现它。
# 1. Boot the stack (Postgres + MCP server + extraction worker)
git clone https://github.com/thegoodguysla/myco-brain.git && cd myco-brain
docker compose up -d
# 2. Give your agent a memory — point it at any repo or folder
# (no env needed: it finds the quickstart stack on localhost)
npx -y -p @mycobrain/mcp-server mycobrain-ingest github:your-org/your-repo
# 3. Connect your client (one-liner below), then ask across sessions:
# "what did we decide about auth, and where is that documented?"
# → answered from your docs, with the source cited.
提示
从头到尾都无需 API 密钥。 全文搜索、语义搜索(本地嵌入)和知识图谱(本地提取)均无需依赖托管服务即可运行。只有在追求最准确的图谱时才需要添加 Anthropic 密钥。
专为 MCP 打造——你的 Agent 知道何时使用记忆,而不只是如何使用。
大多数 MCP 服务只提供工具,寄希望于模型会调用它们。Myco 通过 MCP 的 instructions 通道提供使用约定:连接后,你的 Agent 就会知道在任务开始前获取上下文、保存重要决策,并使用 brain_why 引用来源——无需针对每个项目单独编写提示词。只需复制粘贴一个代码块即可调整策略:教会你的 Agent 有效使用它。
快速链接: 两条命令即可启用记忆 · 引擎快速入门 · 教会你的 Agent 有效使用它 · 信任引擎 · 基准测试——亲自运行 · 运行所有验证 · 适用人群 · 环境变量 · 架构 · 路线图 · 云服务候补名单
记忆愈发可信(信任度累积提升)
大多数 Agent 记忆会悄无声息地覆盖事实。Myco Brain 会让信任度累积提升:

- 独立来源对某项事实的认同会提升其信任度 (阻尼 noisy-OR——同一文档的十个片段不会形成任何交叉印证;只有 不同来源才计入)。
- 对单值关系(如你为谁工作、某物位于何处)的高可信度矛盾信息会 取代旧事实:旧事实会被关闭并降低信任度——保留,绝不删除—— 取代记录则会写入经过审计的声明账本。
- 询问
brain_why了解任何事实,即可查看其不同来源的数量(按 关系计数,而非按提及次数)、随时间变化的信任度趋势(“0.8 → 0.86”) 以及任何被取代的历史记录。 矛盾信息会保留下来。你的记忆不会对你进行煤气灯操纵。
works for → Halcyon Labs 0.55 [SUPERSEDED — kept, not deleted]
works for → Driftwood Analytics 0.90 [ACTIVE]
claims ledger: old fact superseded_by → new fact (audited)
证明:npm run test:compounding——几秒内即可针对实时数据库运行完整生命周期测试,无需 LLM。
架构随数据演进(动态架构)
- 提取工作进程会发现目录中尚不存在的实体类型和关系类型,并提出
建议(
brain_stats:“Brain 根据你的数据提出了 3 种新类型”)。 - 默认由你决定是否晋升——也可以选择开启自动晋升,让得到足够多不同源文档
交叉印证的类型自动晋升
(
BRAIN_SCHEMA_AUTO_PROMOTE=1)。每份文档只计一次,而非每次提及都计, 因此,两份文档即使来回传递也无法制造共识。一份内容冗长的文档永远无法促成晋升。 - 晋升后的类型仍会限定在让它获得晋升的工作区中——一个客户端的 词汇不会泄漏到另一个客户端的目录中(参见 按客户端隔离)。
证明:npm run test:dynamic-schema、npm run test:schema-promotion。
由你选择信任级别:
| 模式 | 行为 |
|---|---|
| 默认 | 高可信度事实自动晋升;新类型等待审核 |
BRAIN_REQUIRE_HUMAN_REVIEW=1 | 严格审核——未经人工决定,LLM 提出的任何内容都不会进入规范图谱 |
BRAIN_SCHEMA_AUTO_PROMOTE=1 | 经交叉印证的新类型会自动晋升,并接受审计 |
当有内容等待你处理时——默认模式下是新类型,严格模式下则是所有内容—— 你可以从命令行进行审核:
mycobrain review # list pending entities, relationships, types
mycobrain review approve <id> # promote it into the graph
mycobrain review reject <id> # reject it (kept and audited, never deleted)
证明:npm run test:review——批准后,实体/边/类型确实会进入规范图谱;拒绝则绝不会进入。
私有记忆,共享知识
多 Agent 团队可以实现真正的隔离:标记为 private 的文档只有创建它们的 Agent 才能读取——
每个读取工具都会强制执行此限制,且工作区行级安全也会提供额外保护。工作区记忆仍然共享。证明:
npm run test:sharing(双 Agent 可见性矩阵)。 与工作区隔离一样,
此机制仅在权限最小化的 brain_app 角色下生效
(安全说明)。
每个客户端拥有独立的工作区——专为代理机构打造
为每位客户设置独立工作区,共享一份代理机构统一的操作手册;你承诺提供的保障是 Postgres 行级安全——属于客户 A 的会话无法返回客户 B 的行。
代理机构入门套件 会通过一条命令完成配置,并提供可真正实现隔离的最小权限数据库角色。证明:
npm run test:agency——客户 A 看不到客户 B 的任何事实。
重要
只有使用最小权限角色时,隔离才有效。 RLS 无法约束 Postgres 超级用户;零配置快速入门默认使用的
brain角色 就是超级用户(适合单工作区的自托管场景——无需隔离)。在同一个数据库中放入多位客户之前,请使用代理机构套件提供的NOSUPERUSERbrain_app角色运行应用;mycobrain-doctor会标记超级用户连接。多租户隔离是brain_app的保障,而不是默认快速入门角色的保障。
进阶——多租户网关:调用者是谁?(BRAIN_TRUST_REQUEST_IDENTITY)
RLS 决定租户可以读取哪些行;此设置决定请求属于哪个租户——这是 RLS 之前的步骤。默认情况下,在 stdio 服务上,身份仅取自服务的环境变量:工具调用参数中提供的 workspace_id、agent_id
或 api_key 都会被忽略,因此,即使提示词注入了 Agent,它也无法传入
workspace_id: "<someone-else>" 来访问其他工作区。(对于 brain_ 密钥,身份仅由密钥字符串确定。)
只有在服务前端部署了真正的多租户网关,且该网关会对每个请求进行身份验证并自行映射到租户时,才设置 BRAIN_TRUST_REQUEST_IDENTITY=1——此时会采用每个请求的身份(且服务角色 JWT 必须与 BRAIN_SERVICE_ROLE_KEY 完全相同,不能只是看起来像)。单租户自托管无需进行这些设置——其身份已经由环境变量确定。
通过 HTTP 查询(只读)
并非所有应用都支持 MCP。对于 Web 应用、自动化流程或合作伙伴后端,
mycobrain-rest 会在 brain 前端提供一个小型只读 API——仅包含两个
工具:search 和 why,以及健康检查:
mycobrain-rest # → http://127.0.0.1:8787
curl -s localhost:8787/search \
-H "Authorization: Bearer brain_<ws>_<agent>_<secret>" \
-d '{"query":"what did we decide about pricing?","limit":5}'
- **作用域:**密钥会将每次查询限定在其所属工作区(与 MCP 使用相同的 RLS),并且
没有写入路由。与 MCP 一样,只有使用最小权限的
brain_app角色时,此限制才有效(参见安全说明)——切勿将 REST 暴露为默认的brain超级用户(mycobrain-doctor会标记此情况)。 - **密钥验证:**迁移至
…_agent_api_key_verification.sql的安装会在注册密钥后,通过agent_api_keys验证每个密钥的<secret>(通过brain_set_agent_api_key_secret(...)注册或轮换)。在此之前,密钥会作为持有者令牌使用;设置BRAIN_REQUIRE_API_KEY_SECRET=1,即可要求先注册密钥后再暴露 REST。 - **绑定:**默认绑定到回环地址——只有确实要对外暴露时,才在自有
TLS/代理之后设置
BRAIN_REST_HOST=0.0.0.0,并像保护密码一样保护密钥。
证明:npm run test:rest。
五个经过验证的演示
1. 跨会话回忆
在一段对话中保存一条事实:
Save a memory: the board meeting is every Wednesday at 9 AM Pacific.
开始一段新对话并提问:
What time is the board meeting?
预期结果:新会话会检索已存储的事实,而不是依赖聊天记录。
2. 跨 Agent 共享记忆
通过一个客户端写入:
Save a memory: Acme's renewal call is on October 15 with Jordan.
通过另一个客户端读取:
What is Acme's renewal date?
预期结果:两个客户端都能读取相同的共享记忆,因为事实来源是 Postgres,而不是单个聊天对话。
3. 答案溯源
针对任意事实询问 brain_why,即可获得来源链——而非要求你盲目信任的摘要。
以下是基于演示语料构建的实体的实际输出:
{
"subject": { "kind": "entity", "name": "Mara Quinn" },
"evidence": {
"mention_count": 4,
"source_document_count": 4,
"summary": "Supported by 4 mentions across 4 source documents."
},
"source_proposals": [
{ "extracted_by": "ollama:llama3.2:3b", "confidence": 1, "state": "auto_promoted",
"source_hyobject_id": "8e31414c-…" }
]
}
每条已接受的事实都能追溯到其来源文档,以及事实的提取方式。
4. 使用来源摄取文档
摄取文件或 URL:
Ingest ./docs/customer-handbook.pdf and summarize the onboarding checklist with sources.
预期结果:文档会被分块、编入索引,并通过检索返回引用。
5. 图关系
提问:
Show related entities for Acme and explain how they connect.
预期结果:关系查询会找出彼此关联的人物、文档和实体,以及提取工作器构建的实体间边(例如,Mara Quinn —manages→ Northwind Coffee),而非只返回平铺的向量匹配。使用 Ollama 在本地构建知识图谱,无需 API 密钥。
所有演示都是代码,而非屏幕录制——
demos/会针对全新堆栈确定性地重新渲染这些演示(npm run demo:render -- all)。
Myco 对比
不同工具做出了不同的取舍;此处对比的是架构 方案,而非直接基准测试结果——当检索召回率较高时,答案模型就会成为瓶颈,因此跨系统的分数对比会产生误导(参见基准测试部分)。
| 典型的由 LLM 维护的记忆 | 框架记忆(例如 LangChain) | Myco Brain | |
|---|---|---|---|
| 可复现的基准测试 | 自行报告 | — | 仓库内附带测试框架——自行复现数据 |
| 事实提取 | 基于 LLM | 基于 LLM | 确定性写入路径;LLM 输出仅通过受控的提议队列进入 |
| 相互矛盾的事实 | 作为独立记录共存 | 可能出现 | 被取代,而非覆盖——经审计的声明账本 |
| 事实置信度 | 静态 | — | 随独立证据累积提升,遇到矛盾时下降 |
| 幻觉事实 | 可能出现 | 可能出现 | 从写入路径中排除 |
| 来源溯源 | 部分支持 | 部分支持 | 通过 brain_why 原生支持(来源 + 审计轨迹 + 置信度趋势) |
| 共享记忆 | 取决于应用配置 | 取决于应用配置 | 原生 Postgres 数据源,支持带对象级隐私的多 Agent |
| 数据可移植性 | 由供应商/框架决定 | 由框架决定 | 普通 Postgres 表 |
10 分钟内快速开始
文档引擎。已验证的本地运行方式:从全新克隆的仓库使用 Docker Compose。(如果只需要记忆,则无需这些;请参阅 只需两条命令,为你的 Agent 配置记忆。)
git clone https://github.com/thegoodguysla/myco-brain.git
cd myco-brain
docker compose up -d
启动的组件:
- Postgres 16 + pgvector
- MCP 服务
- 提取工作器
启动时无需 API 密钥——以下是启用各项能力的要求:
| 能力 | 开箱即用? | 启用方式 |
|---|---|---|
| 全文(BM25)搜索 | ✅ 立即可用 | 无需配置 |
| 语义搜索 | 需要嵌入 | BRAIN_EMBED_PROVIDER=ollama(本地使用,无需密钥) |
| 知识图谱 | 需要提取器 | 在本地使用 Ollama(无需密钥),或设置 BRAIN_ANTHROPIC_API_KEY(准确度最高) |
运行一条命令,确认服务是否健康。mycobrain-doctor 不只是检查是否设置了环境变量——对于本地 Ollama 运行方式,它会实时验证配置(对 Ollama 发送 ping,确认嵌入和提取模型已拉取,并执行实际的嵌入和生成),然后检查提取积压和审核队列。只有发生实际故障(出现红色提示)时,它才会以非零状态码退出,因此显示绿色就表示运行正常:
npx -y -p @mycobrain/mcp-server mycobrain-doctor
添加 --fix,即可让它为你拉取缺失的 Ollama 模型:
npx -y -p @mycobrain/mcp-server mycobrain-doctor --fix
连接你的客户端
推荐 — 引导式设置。 只需一条命令,即可逐步完成 Agent 连接,每一步都会征求你的同意:
npx -y -p @mycobrain/mcp-server mycobrain-setup
该命令会运行预检(每项都会提供修复方案)、验证 pgvector 和数据库中的实际写入,并配置你的 MCP 客户端(Claude Code、Claude Desktop、Cursor、Codex、Windsurf)。如果 zip 文件已位于 ~/Downloads,还会提供一键导入 ChatGPT 或 Claude 数据导出的选项。每个已连接的客户端都会获得独立的 Agent 身份,这样之后回忆内容时,就能看到记忆来自哪个工具。想要自己动手?下面是手动配置方法。
Claude Code — 手动配置(使用快速入门堆栈预置的公开本地开发凭据):
claude mcp add myco-brain \
--env DATABASE_URL=postgresql://brain:brain@localhost:5432/brain \
--env BRAIN_API_KEY=brain_00000000-0000-0000-0000-000000000001_00000000-0000-0000-0000-0000000000a1_localdev \
-- npx -y @mycobrain/mcp-server
重启 Claude Code 后,brain_* 工具即可使用 — 服务会自动向每个已连接的 Agent 提供使用规范(何时回忆、保存和引用),因此开箱即用。
Claude Desktop — 将以下内容添加到
~/Library/Application Support/Claude/claude_desktop_config.json
(Cursor 和 Windsurf 也使用相同的 mcpServers 配置块,放在
.cursor/mcp.json / 各自的 MCP 设置中):
{
"mcpServers": {
"myco-brain": {
"command": "npx",
"args": ["-y", "@mycobrain/mcp-server"],
"env": {
"DATABASE_URL": "postgresql://brain:brain@localhost:5432/brain",
"BRAIN_WORKSPACE_ID": "00000000-0000-0000-0000-000000000001",
"BRAIN_API_KEY": "brain_00000000-0000-0000-0000-000000000001_00000000-0000-0000-0000-0000000000a1_localdev"
}
}
}
}
注意:
BRAIN_WORKSPACE_ID根据你的brain_API 密钥推导得出,因此是可选的 — 上面的 Claude Code 单行命令省略了它,效果相同。
接下来测试一下顺利流程:
Save a memory: the launch checklist lives in the ops folder.
开启新会话并询问:
Where does the launch checklist live?
完整设置指南:docs/quickstart.md
首次运行 — 快速体验属于你的神奇时刻
Myco 初始状态为空。用你自己的数据最能带来惊喜,因此建议第一步先导入你的历史记录:
# Guided getting-started — leads with importing your own history
npx -y -p @mycobrain/mcp-server mycobrain-onboard
# Import your ChatGPT or Claude export (~30s), then ask your agent about your past
mycobrain-ingest --from chatgpt-export ~/Downloads/<your-export>.zip
mycobrain-ingest --from claude-export ~/Downloads/<your-export>.zip
# → "what did I decide about <topic>?" answered from your own conversations.
想跳过这一步?直接开始使用即可 — Brain 会在你工作时记住内容。或者,你也可以通过 60 秒实时导览体验示例数据;导览结束后会自动清理(不会触碰你的工作区):
mycobrain-onboard --tour
通过演示语料查看运行效果(可选沙盒)
想看更丰富的引导示例?加载随附的演示语料 — 一组关于虚构代理机构及其客户、彼此关联的文档:
npx -y -p @mycobrain/mcp-server mycobrain-ingest ./examples/demo-corpus
然后向任意已连接的 Agent 提问:
- “Northwind 的品牌重塑什么时候发布?谁负责这个客户?”
- “我们为 Northwind 选择了哪种定价模式?为什么?”
- “给我看看这个说法的来源。” — 通过
brain_why查看出处 - “给我看看 Myco 的记忆统计。” — 通过
brain_stats查看健康状况概览
每个答案都能追溯到其来源文档。无需 API 密钥。
压轴体验: 语料中包含一处刻意设置的矛盾 — 一份文档称 Devin Osei 在 Lumen 工作,之后的一份文档则称他已离职并加入 Harbor & Co.。 启动无需 API 密钥的本地图谱后,提问:
- “Devin Osei 为谁工作?发生了什么变化?你怎么知道的?”
旧事实会以已被取代 — 保留而非删除的状态返回,并引用两份来源文档。这就是信任引擎在你的数据上发挥作用的效果,而不是预设的演示脚本。
探索完毕?使用以下命令,仅清除随附的示例数据(不会触碰你自己的导入内容和记忆):
mycobrain-onboard --reset-demo
批量导入文件夹或代码仓库
让 Brain 读取一个目录或 GitHub 代码仓库,它就会为其中的每个文本文件建立索引 — 可跨会话搜索,并且每个答案都能追溯到来源文件。
npx -y -p @mycobrain/mcp-server mycobrain-ingest ./docs # a local folder
npx -y -p @mycobrain/mcp-server mycobrain-ingest github:owner/repo # a GitHub repo
使用快速入门堆栈时无需设置环境变量 — CLI 默认使用该堆栈。如需连接自己的 Postgres 或工作区,请设置 MCP 服务所用的相同环境变量(DATABASE_URL、BRAIN_WORKSPACE_ID、BRAIN_API_KEY)。
然后向任意已连接的 Agent 提问:“在我导入的文件中搜索身份验证流程”,或*“给我看看 Myco 的记忆统计”*。私有代码仓库需设置 GITHUB_TOKEN。
构建知识图谱 — 本地运行,无需 API 密钥
Myco 与向量存储的区别在于图谱。提取工作进程会读取你摄取的文档,并:
- 提取实体——人物、公司、项目、地点;
- 合并重复项,让“Priya”和“Priya Raman”成为同一个节点;
- 将它们连接为有向关系——Mara Quinn —任职于→ Northwind Coffee,绝不会反过来(随附的提示词能识别方向,模型忘记列出的端点也会自动补回);
- 并提出它发现的新类型,让架构随着你的领域不断扩展。
你可以选择用于提取的模型。使用 Ollama 时,数据不会离开你的设备;Anthropic 生成的图谱最准确。
14 条边的黄金测试数据集上,有两个不同且常被混为一谈的质量指标
(验证方式:npm run test:direction):
| 指标 | 衡量内容 | 分数 |
|---|---|---|
| 有向准确率 | 边的方向是否正确 | 86%(12/14,llama3.2:3b) |
| 边保留率 | 是否找回端点,而非将其丢弃 | ~80%(11–12/14,门槛 ≥75%) |
选项 A — 本地运行且免费(Ollama,无需 API 密钥)
# Install Ollama (https://ollama.com/download), then pull a model:
ollama pull llama3.2:3b
# Point the worker at it and restart:
echo "BRAIN_OLLAMA_BASE_URL=http://host.docker.internal:11434" >> .env
docker compose up -d
选项 B — 最准确(Anthropic,使用你自己的密钥)
echo "BRAIN_ANTHROPIC_API_KEY=sk-ant-..." >> .env
docker compose up -d
如果两者都已配置,则会自动使用 Anthropic(准确度更高);设置 BRAIN_EXTRACTION_PROVIDER=ollama|anthropic 可强制选择。
试试看
摄取几份文档,稍等片刻让工作进程处理,然后向已连接的 Agent 提问:
- “我的 Northwind 文档中有哪些实体?” —
brain_neighbors - “Mara Quinn 与 Northwind 有什么关系?” — 实体之间的关系
- “显示我的 Myco 记忆统计信息。” — 查看图谱增长情况(
brain_stats)
无论选择哪种方式,权威图谱都存储在你的 Postgres 中——模型只负责提出建议;数据库决定哪些内容会成为持久事实。
基准测试 — 自行运行
这里的重点是可复现性,而非单一分数——本仓库包含 LongMemEval 测试框架,因此你可以自行运行测试;我们不宣称任何测试结果。
| 指标 | 子集(500 个问题) | 配置 | 分数 |
|---|---|---|---|
| 端到端问答 | oracle | 阅读器 gpt-4o-mini · 评审器 gpt-4o | 73.6% |
| 端到端问答 | oracle | 高性能阅读器(gpt-4o) | 71.8% |
证据召回率@5(Ev@5) | longmemeval_s | 混合检索(向量 + BM25) | 89.2% |
证据召回率@5(Ev@5) | longmemeval_s | 无需密钥的时效性重排器 | 91.6% |
| 证据召回率@10 | longmemeval_s | 混合检索 → 时效性 | 90.2% → 93.2% |
端到端问答使用 oracle 子集,该子集仅向阅读器提供黄金证据会话,因此衡量的是推理能力,而非检索能力(检索由下文的 Ev@5 衡量)。高性能阅读器配置的分数更低(gpt-4o,71.8%):证据已经位于上下文中时,记忆层已达到饱和,因此阅读器不是瓶颈——这正是跨系统比较单一头条指标会产生误导的原因。其他人公布的约 90% 分数,通常使用了不同的子集、阅读器和评审器;我们并未宣称在正面对比中胜出,而是提供测试框架,让你在相同条件下对任何系统进行评分。
cd evals/longmemeval && python3 -m venv .venv && .venv/bin/pip install -r requirements.txt && cd ../..
OPENAI_API_KEY=sk-... DATABASE_URL=postgresql://brain:brain@localhost:5432/brain \
evals/longmemeval/.venv/bin/python3 -m evals.longmemeval.run \
--examples 500 --subset longmemeval_oracle --judge-model gpt-4o
检索质量(表中的 Ev@5)才是真正的检索指标——上文的 oracle 子集并未测试检索能力——它是在包含干扰项的完整 longmemeval_s 子集上测得的。时效性重排器(brain_search(reranker: 'recency'))具有确定性:无需 API 密钥,也不会发起网络请求。混合检索需要嵌入提供方(可通过本地 Ollama 无需密钥,或使用 OpenAI);默认的纯 BM25 搜索得分较低。复现方式(仅嵌入,不使用评审器):
python -m evals.longmemeval.run --subset longmemeval_s -n 500 --no-qa。
方法说明、两种配置、各类别的细分结果(包括对我们来说较难的类别——如实报告,不予隐藏),以及成本更低的样本命令: evals/longmemeval/README.md。
每项声明都有验证方式
本页面上的内容都不需要你盲目信任——每项能力都列出了在开发过程中用于验证它的可运行检查。(在 npm install 后,从 mcp-server/ 运行 npm run 和 node test/ 检查;node examples/ 和 evals/ 路径相对于仓库根目录。)
| 声明 | 检查 |
|---|---|
| 快速入门可端到端运行 | node test/quickstart-e2e.mjs(也会在 CI 中针对真实 Docker 技术栈运行) |
| 不会发生重复;溯源信息完整 | node examples/benchmark/run.mjs |
| 无需密钥的语义搜索能找到含义,而非只匹配词语 | npm run test:local-embeddings |
| 关系能识别方向;边不会丢失 | npm run test:direction |
| 证据越多,置信度越高;矛盾信息会被取代 | npm run test:compounding |
| 会提出新类型(且仅在有佐证并选择启用时才会自动提升) | npm run test:dynamic-schema · npm run test:schema-promotion |
| 严格策展模式会阻止所有自动提升 | npm run test:strict-mode |
| 私有文档保持私有 | npm run test:sharing |
| 全部 15 个工具都能放入上下文(约 4.0K 个 token;仅 2 个记忆工具时约 1.5K 个 token) | npm run audit:tokens |
| 代理机构:客户 A 无法读取客户 B 的数据(工作区 RLS) | npm run test:agency |
| 审核提案确实会将其提升或拒绝 | npm run test:review |
| 只读 REST API:具备身份验证、只读限制和 DoS 防护上限 | npm run test:rest |
| 基准测试结果 | evals/longmemeval/(完整测试框架位于仓库中) |
适用对象
Myco 是记忆层,适用于任何需要 AI Agent 带有凭据地记住信息的团队。以下每个页面都会针对你的受众重新介绍 Myco,并展示它在各行业中的相同用例(金融科技、医疗保健、法律、会计、保险、SaaS、客户支持、电子商务)。
- 开发者:为生产环境构建 Agent,使用一个 MCP 服务、确定性的写入路径,以及由你掌控的溯源信息。
- Vibecoders:快速交付,只需一行代码即可实现持久记忆;无需密钥、免费,也不必搭建基础设施。
- 团队:将 AI 集成到产品中,使用按租户隔离的客户记忆,并存储在由你掌控的 Postgres 上。
- 代理机构:每位客户都拥有独立且可审计的工作区。
架构
设计刻意保持简单:数据库是权威数据源,写入路径由程序控制,LLM 提供辅助,但不会成为记忆存储。
工具接口
配置好引擎后,MCP 服务会列出 15 个工具;仅以记忆模式运行时则列出 2 个工具(mycobrain-setup memory 为 Cursor、Windsurf 和 Claude Desktop 写入的配置)。
记忆工具:
brain_memory_contextbrain_memory_write
引擎工具:
brain_context_packbrain_searchbrain_whybrain_neighborsbrain_ingestbrain_propose_factbrain_annotatebrain_save_memorybrain_recall_memorybrain_get_relatedbrain_statsbrain_set_modebrain_self_check
每个工具的完整输入、输出和示例:docs/api-reference.md。
环境变量
Docker 快速入门无需任何这些变量——它自带预置的本地凭据,BM25 搜索开箱即用。以下配置可供你自行部署时参考。带注释的完整列表及调优阈值见
.env.example。不确定当前启用了哪些配置?运行 mycobrain-doctor。
必需
| 变量 | 默认值 | 作用 |
|---|---|---|
DATABASE_URL | — | Postgres 连接字符串。唯一的硬性要求。 |
BRAIN_API_KEY | 已预置 | brain_<workspace>_<agent>_<secret> 密钥;快速入门自带一个 localdev 密钥。 |
BRAIN_WORKSPACE_ID | 从密钥获取 | 从 BRAIN_API_KEY 派生;仅在使用服务角色身份验证时显式设置。 |
语义搜索 (可选——不设置时,BM25 全文搜索仍可用)
| 变量 | 默认值 | 作用 |
|---|---|---|
BRAIN_EMBED_PROVIDER | auto | ollama 或 openai;根据已设置的凭据自动选择。 |
BRAIN_OLLAMA_EMBED_MODEL | nomic-embed-text | 本地嵌入模型(无需密钥,数据不会离开你的设备)。 |
BRAIN_OPENAI_API_KEY | — | 使用 OpenAI 嵌入,而非本地嵌入。 |
知识图谱 (可选)
| 变量 | 默认值 | 作用 |
|---|---|---|
BRAIN_OLLAMA_BASE_URL | — | 本地提取/嵌入端点(例如 http://localhost:11434)。 |
BRAIN_OLLAMA_MODEL | llama3.2:3b | 本地提取模型。 |
BRAIN_ANTHROPIC_API_KEY | — | 最准确的图谱;设置后会自动使用。 |
BRAIN_EXTRACTION_PROVIDER | auto | 强制使用 ollama 或 anthropic。 |
信任调节 (治理)
| 变量 | 默认值 | 作用 |
|---|---|---|
BRAIN_REQUIRE_HUMAN_REVIEW | 0 | 严格审核——未经人工决策,LLM 提出的内容不会进入图谱。 |
BRAIN_SCHEMA_AUTO_PROMOTE | 0 | 允许经佐证的新类型自动晋升,并进行审计且限定在工作区范围内。 |
服务
| 变量 | 默认值 | 作用 |
|---|---|---|
BRAIN_REST_HOST | 127.0.0.1 | mycobrain-rest 的绑定主机。仅在你自己的 TLS/代理后使用 0.0.0.0。 |
BRAIN_REST_PORT | 8787 | 只读 REST 端口。 |
BRAIN_HEALTH_PORT | 8080 | 健康检查端口。 |
身份与安全
| 变量 | 默认值 | 作用 |
|---|---|---|
BRAIN_REQUIRE_API_KEY_SECRET | 0 | 要求每个 Agent 密钥都具有已注册的 <secret>,身份验证才会成功。 |
BRAIN_TRUST_REQUEST_IDENTITY | 0 | 仅用于 Stdio、多租户网关。 关闭时:身份仅来自环境变量,因此会忽略调用方提供的 workspace_id/api_key(可抵御提示词注入)。仅当请求由能对每个请求进行身份验证的网关处理时,才设置为 1。详情 ↑ |
BRAIN_AGENT_ID | 从密钥获取 | 服务角色身份验证使用的 Agent 身份;否则从 BRAIN_API_KEY 派生。 |
BRAIN_SERVICE_ROLE_KEY | — | 供可信服务调用方使用的 Supabase 服务角色 JWT(brain_ 密钥的替代方案)。 |
调优阈值(
BRAIN_SCHEMA_PROMOTE_MIN_SEEN、BRAIN_EXTRACTION_LEASE_MS、BRAIN_FUNCTIONAL_PREDICATES,……)见.env.example。
仓库布局
myco-brain/
├── mcp-server/ # TypeScript MCP server + bulk-ingest CLI
├── supabase/migrations/ # versioned SQL migrations
├── demos/ # demos-as-code (VHS + ffmpeg + narration pipeline)
├── docs/quickstart.md # setup guide
├── evals/
│ └── longmemeval/ # LongMemEval benchmark harness (run it yourself)
├── examples/
│ ├── demo-corpus/ # sample interconnected docs to ingest
│ └── benchmark/ # reproducible dedup + provenance benchmark
├── docker-compose.yml # local quickstart
├── ROADMAP.md # where this is headed
└── LICENSE # Apache-2.0
导入你的 ChatGPT / Claude 历史记录
数月的助手对话将成为可追溯来源、去重且可搜索的记忆——每段对话对应一份文档:
# Official OpenAI data export (zip, extracted folder, or conversations.json)
mycobrain-ingest --from chatgpt-export ./chatgpt-export.zip
# claude.ai data export
mycobrain-ingest --from claude-export ./claude-export.zip
- 重新导入不会产生重复项——每段对话都是一份以内容哈希为键的 文档,因此重新运行不会产生任何变化。继续对话并重新导出后,较长的 转录内容会作为新版本与旧版本一并导入。
- 导入 ChatGPT 分支会话中的活动分支——导入你 实际保留的转录内容,而不是被拒绝的重新生成内容。
- 完整的来源追踪——
brain_why会追溯每条导入事实对应的导出文件。
验证:npm run test:export-import。
免动手操作——监视你的 Downloads 文件夹。 请求导出后,Myco 会在导出文件 到达时立即导入,无需复制路径,且数据不会离开你的设备:
# Poll ~/Downloads and auto-import a ChatGPT/Claude export the second it arrives (Ctrl-C to stop)
mycobrain-ingest --watch-downloads
# Already downloaded it? Import whatever export is there, then exit
mycobrain-ingest --watch-downloads --once
此功能需主动启用,并像其他导入一样进行去重;使用 BRAIN_WATCH_DIR 指定
其他文件夹(需要在 PATH 中安装 unzip)。
云端候补名单
默认采用自托管。如果你想使用托管服务,请加入候补名单:
该页面是候补名单的官方入口。本 README 特意不嵌入表单。
开源文件
资源
谁构建了这个项目
Myco Brain 由 Nick Taylor 构建——他是一位增长营销人员,而非职业工程师,并带领一支 AI 编码 Agent 团队。项目耗时约三个月,模型支出约 6,000 美元,采用 AI 辅助工程方式构建。重点不在于价格,而在于清晰的产品愿景加上现代 Agent 工具,如今就能交付生产级基础设施——这个仓库就是成果:本页的每项声明都对应一项可运行的检查(参见每项声明都有检查),你可以自行判断,而不必只凭项目起源故事来相信我们。
喜欢这个项目? 点个 ⭐ 有助于让更多人发现它;点击页面顶部的 Watch → Releases,新功能发布时就会收到通知——接下来要做什么,请参阅路线图。
想为你的团队打造这样的系统? 如果你的公司想找一位能构建 Agent 系统、自动化和增长工程的人,这正是 The Good Guys 的业务——请发送邮件至 [email protected],或预约通话。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。