mcpField
S
Second Brain

Second Brain

本地服务
github.com/rahilp云与基础设施8352 周前更新

关于 Second Brain

Second Brain 是可自托管的语义记忆层,为 Claude 及其他 MCP 兼容 AI 客户端提供共享的持久记忆。它运行在用户自己的 Cloudflare 账户中,按含义而非关键词检索笔记,并支持个人与团队共享两层记忆。

主要功能

  1. 01按语义检索记忆
  2. 02存储笔记、决策与偏好
  3. 03个人与团队共享两层记忆
  4. 04记忆的版本历史与撤销
  5. 05基于 Prompt Capsule 的稳定上下文输出

适用场景

  1. 01在 Claude、Cursor 等工具之间共享项目背景与决策
  2. 02团队共享项目决策与约定
  3. 03为网关或自定义 Agent 提供稳定的上下文前缀

MCP 相关

该项目作为 Cloudflare Worker 向 MCP 客户端暴露 remember、recall、brief、link、share 等记忆工具,以及 get_prompt_capsule 和 list_projects 等工具。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"second-brain-cloudflare": {
"command": "npx",
"args": [
"-y",
"mcp-remote"
]
}
}
}
启动命令npx -y mcp-remote

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

安装包
npmmcp-remote

工具

还没有获取到工具列表

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

详细介绍

Second Brain

为你提供私有记忆,为团队提供共享记忆。可供你使用的所有 MCP 兼容 AI 工具访问。

现已推出 Team Edition——在同一个 Worker 中提供个人私有层和团队共享层。

许可证:MIT 基于 Cloudflare Workers 构建 兼容 MCP MCP Toplist

Claude、ChatGPT、Cursor、Codex 和你使用的其他 AI 工具不会自动共享上下文。你不得不在每个应用中重复介绍相同的项目、决策和偏好。

Second Brain 为这些工具提供一个持久的记忆系统。它运行在你自己的 Cloudflare 账户中,由你掌控,并根据含义而非精确措辞检索相关上下文。


桌面应用是最简单的入门方式。它会在约两分钟内构建你的 Second Brain 并连接 AI 工具——无需使用终端或配置 Cloudflare。

下载 Mac 或 Windows 版

部署到 Cloudflare · 阅读文档

功能

  • 按含义检索。 用自然语言提问,即使保存记忆时用的是不同措辞,也能找到相关记忆。
  • 跨工具和设备使用。 所有客户端都与同一个 Worker 通信,因此无需在应用之间复制或同步内容。
  • 由你掌控。 可在控制面板中浏览、编辑、追加、关联、共享、导出或永久删除任何记忆。
  • 构建实用上下文。 自动分类、重复内容检测、关联关系、结合时间的排序以及可选的每周洞察,帮助知识库不断成长并持续发挥作用。
  • 从你已有的工作环境中捕获信息。 使用 MCP 客户端、CLI、浏览器扩展、Obsidian、Notion、日历、电子邮件、iOS 快捷指令或 Web 控制面板。
  • 处理接下来的重要事项。 为记忆添加日期,查看逾期和即将到期的承诺,并让已安装的 PWA 在事项到期时主动推送提醒。请参阅提醒与推送指南。
  • 数据保留在你的账户中。 记忆、向量、凭据和应用资源都存储在你自己的 Cloudflare 账户中。
查看实际效果

Second Brain 演示

团队版

Second Brain 现在可以成为团队的记忆库,同时仍然属于你个人。

  • 每个人都有一个其他人无法读取的 Personal 工作区,以及一个团队可见的 Shared 层。
  • 记忆默认是私密的,只有在有人主动分享时才会进入 Shared 层。
  • 分享会移动唯一的规范记忆,而不是创建副本。其作者仍会显示,且只有作者或管理员可以编辑、删除或取消分享。
  • 管理员可以管理成员、访问权限、捕获默认设置和集成,但不会因此获得访问任何人个人工作区的权限。
  • 升级时,现有的 v2 记忆会成为所有者的私密记忆。不会自动向团队公开任何内容。
层级谁可以读取谁可以编辑或删除
Personal只有你只有你
Shared团队中的所有人作者或管理员

同一个 Worker 支持个人和团队使用;无需单独部署团队版。在 API、CLI 和 MCP 工具中,Shared 层由稳定的工作区值 company 表示。有关成员管理、捕获策略、分享和升级,请参阅团队设置指南。

**v3.0.0 范围:**每个脑库只有 一个 共享团队。API 和 MCP 层包含可选的 team 参数和一个 list_teams 工具,以便日后推出多团队支持时无需进行破坏性变更;仪表板和管理员工作流目前尚不能创建或切换多个团队。请参阅 CHANGELOG.md。

工作原理

Second Brain 作为 Cloudflare Worker 运行,由 D1、Vectorize、Workers AI 和 KV 提供支持。每个应用和 AI 客户端都通过 REST 或模型上下文协议(MCP)连接到该 Worker。

  1. **捕获:**通过任何已连接的客户端保存决策、偏好、项目更新、笔记或来源。
  2. **整理:**Second Brain 对其进行分类、检查重复和矛盾内容、建立关联,并为语义搜索建立索引。
  3. **回忆:**用自然语言提问。Second Brain 会检索相关记忆、追踪有用的关联,并将有来源支持的上下文返回给你正在使用的工具。

如果 Vectorize 不可用,捕获和关键词回忆仍可继续。语义索引恢复期间,你的记忆仍然可用。随附的嵌入模型对英语的处理效果最佳;桌面应用的 Settings 可以将脑库切换为多语言读取模式。

现在,搜索可以找到那些难找的内容:准确名称、工单编号、版本和任何语言的短语,即使它们藏在旧记忆中也能找到;速度大幅提升,成本也大幅降低,并且随着脑库增长仍能保持这种状态,让免费方案也能轻松应对。它通过全文索引实现这一点,按相关性为匹配结果排序,而不是扫描每条记忆。升级会自动完成:新安装会立即使用该索引,现有脑库会在每晚运行时逐步建立索引,而且无需更新任何客户端。

记忆工具
工具功能
remember存储想法、决策、偏好和项目背景;可选记录某条事实从何时起生效或何时失效
append向现有记忆添加带时间戳的更新
update替换现有记忆;可选设置该记忆的失效时间
recall按含义而非确切措辞查找记忆;可选查询过去某个日期的事实
brief显示到期事项、未完成承诺、过时记忆和待处理见解
resolve处理一项跟踪中的任务、日期、见解或过时事实
digest阅读某个项目或标签最新的现有自动摘要
history查看某条记忆记录的变更,以及每次变更前的文本
list_recent浏览最近保存的记忆
list_teams列出你所属的共享团队(名称和 ID)。在 v3.0.0 中只有一个团队;供 MCP 客户端用于未来的多团队支持
list_projects列出范围内的项目,以及其显示名称、描述和记忆数量
get_prompt_capsule读取确定性的核心或项目背景投影,供网关控制的提示词前缀使用
get按 ID 读取一条记忆
forget将一条记忆移至回收站(撤销可将其恢复)
undo撤销对一条记忆的最近一次变更,或从回收站恢复该记忆
set_status将一条记忆标记为 canonical、draft 或 deprecated
link在两条记忆之间添加明确的关联
unlink移除两条记忆之间的关联
connections列出与一条记忆关联的记忆
share在 Personal 和 Shared 层之间移动一条记忆

记忆会保留其生效日期:使用 as_of 调用 recall 可查询过去某个日期实际成立的事实;被更新事实取代的事实会作为历史记录保留,而不会被标记为错误。

在团队知识库上,如果要明确选择层,记忆工具可接受值为 personal 或 company 的 workspace。company 是 Shared 团队层的传输值。不指定 workspace 时,记录操作会使用成员和团队默认值,而 recall 会搜索该用户有权查看的所有内容。

可选的 team(工作区 ID)以及 MCP list_teams / GET /team/workspaces 已接入,以供未来的多团队版本使用。在 v3.0.0 中可以省略它们——每个知识库只有一个共享团队,并会自动使用主团队。

项目

记忆分布在四个维度上:workspace = 谁可以查看(personal / company / team)——租户机制,不变。project = 记忆内容所属的主题——命名且可管理的容器。tags = 自由格式的分类维度,不变。source = 记忆来源,不变。调用 list_projects 可发现范围内的项目,并在 remember 上传入 project,将相关记忆分组。一条记忆可以属于一个或多个项目;请用项目按主题、计划或背景整理,而不是仅使用普通主题标签。

CLI 示例:

brain remember --workspace company "We ship on Thursdays"
brain recall --workspace company "when do we ship?"
brain recall --project website "what did we decide about hosting?"
提示词胶囊

提示词胶囊是确定性的只读投影,供网关和自定义 Agent 使用,以便在不断变化的用户请求前放置稳定的背景信息。它们是对特定查询的 recall 的补充;不会将每条记忆都注入每个提示词中。

胶囊条目是普通的规范记忆,带有一个目标标签和一个槽位标签。核心条目使用 capsule:core;项目条目使用 capsule:project:<project-slug>。槽位按以下固定顺序输出:

  • 核心:identity、preferences、constraints、principles
  • 项目:current-state、decisions、open-questions

将槽位标记为 capsule-slot:<slot>,并确保每个槽位最多只有一条规范条目。草稿和已弃用条目会被忽略。对于含义不明确的槽位,不会选择其中任何条目;格式错误的行会被跳过。响应会报告 duplicate_slots 和 invalid_entries,且 complete 为 false。其他有效槽位仍可用,共享层上的槽位也一样。 条目必须带有 status:canonical 才能纳入胶囊。最简单的方法是在记忆或捕获时将 status:canonical 加入标签(存储前会去除首尾空白,之后分类器会保留该标签);否则,定义会以草稿状态开始,需要执行 set_status canonical。分类(包括 /classify-pending)不会发布胶囊。即使调用方请求设为 canonical,与受保护记忆相矛盾的写入也会被降级为草稿。若要将条目移出胶囊,请将其状态设为 draft 或 deprecated。MCP update 接受可选的 tags 数组:请传入完整的替换定义,例如 ["capsule:core", "capsule-slot:preferences"],并同时提供条目 ID 和内容。指定任一胶囊命名空间的标签都会替换两个命名空间;单独的插槽标签不是完整定义。省略 tags 可保留现有标签。MCP 和 REST 的捕获/更新最多接受 64 个标签,每个标签最长 128 个字符。

**共享层恢复:**成员可以发布自己的共享定义,但不能编辑队友的条目。请检查报告的 ID,联系作者或管理员,通过 update 或 set_status 重新分配插槽或取消发布;不要将不完整的响应视为完整的团队策略。仪表板会隐藏记录管理标签;请使用 MCP 进行恢复。不会因此增加编辑队友内容的权限。

已通过身份验证的客户端可以使用 GET|HEAD /prompt-capsules/core、 GET|HEAD /prompt-capsules/projects/<project-slug>,或 get_prompt_capsule MCP 工具。响应包含强 ETag、精确的提示词就绪 text 的 SHA-256,以及针对 12,000 个字符预算的整槽省略元数据。验证在序列化之前进行:共享定义中无效、重复或单条过大的定义会被排除并报告,因此后续健康的插槽仍可能出现。结果是已定义插槽的有序子集,不一定是其前缀。对于剩余的有效插槽,一旦累计预算超限,该插槽及之后的所有插槽都会被省略。即使前面的插槽能够容纳,单个条目若超过整个序列化预算(包括 JSON 转义),个人胶囊会返回 409 invalid_prompt_capsule,原因是 content-too-large;不会返回部分文本。在共享胶囊中,该条目会被跳过并报告,因此不会导致无关插槽被隐藏。空响应的 populated: false 和 complete: false。200 个候选资源的限制仍会返回 409 too_many_candidates;作者或管理员必须减少定义。时间戳、条目 ID 和 ETag 不计入 text,因此无关变更不会改变可复用前缀。提供方缓存键、断点、令牌预算和缓存命中率测量仍由网关负责。

胶囊正文按工作区和不可变的 D1 修订版本缓存在 KV 中,最长一小时。条目触发器会在同一 D1 事务中,为每次带胶囊标签的插入、ID/内容/标签更新、工作区迁移或删除推进该修订版本。如果恢复或导入时没有派生修订行,首次读取会生成一个新的不透明修订版本,而不会使用可复用的哨兵值。 因此,每次缓存读取只需读取一条经过索引的 D1 记录,而无需扫描整个工作区;KV 的最终一致性可能导致额外重建,但不会恢复编辑或共享之前的正文。旧键会立即失效,并在一小时内过期;传播稳定后,较长的 TTL 通常会将持续读取且未变更的目标限制在每天 24 次刷新写入。冷启动填充竞争和修订版本变更可能增加尝试次数。对普通条目的写入不会推进修订版本。网关应每个会话使用一次 If-None-Match 重新验证,而不是每次请求都验证。 正常情况下会返回空项目 Capsule,但不会存储在 KV 中。项目 ID 现在对应已注册的项目 slug,并可通过项目注册表枚举;但 Capsule 读取仍向后兼容,可正常提供未注册的 ID;不存在或拼写错误的 ID 不会占用 KV 写入或键。通过候选查询显式选用的、针对带 Capsule 标签行的部分 (workspace_id, id) 索引,也将这些读取限制在 Capsule 定义内,而不是工作区中的所有普通记忆。其成本随带 Capsule 标签的行数增长,而不是随普通语料增长。空的核心 Capsule 仍会被缓存,因为每个工作区的核心都是一个固定目标。

在 D1 Time Travel 恢复后,恢复流量前请重新部署 Worker,以便在恢复点早于此迁移的部分内容时,由架构初始化重新创建 prompt_capsule_revisions 和四个 prompt_capsule_* 触发器。初始化会比较已安装的 Capsule 索引定义和触发器主体。索引定义发生变化,以及触发器发生变化或缺失时,都会通过版本轮换以原子方式修复,因此缓存结果不会在失效机制修复后继续保留。包含 NUL 的 ID、内容或标签文档会被拒绝(个人)或跳过并报告(共享),绝不会作为截断的 SQLite 字符串发布。REST capture/update/append 和 MCP remember/update/append 会拒绝新的 NUL 内容;传入的标签也必须不含 NUL。导入的行或旧行仍会接受上述读取时检查。

升级警告: capsule:* 和 capsule-slot:* 现已保留。使用这些名称的现有规范行可能会变成提示词定义,或出现在验证报告中。在启用网关之前,请检查这些标签,尤其是在共享工作区中。

开始使用

这三种设置方式都会将同一个 Second Brain 部署到你的 Cloudflare 账户中。

1. 桌面应用—推荐

下载最新版本,打开应用,设置密码,然后登录 Cloudflare。应用会配置 Worker 及其资源,然后帮助你连接 AI 客户端、CLI、浏览器扩展、Obsidian 和 Notion。

macOS 版本已由 Apple 签名并公证。Windows 发布版本已进行代码签名;请参阅代码签名政策。

2. 部署到 Cloudflare

使用部署到 Cloudflare,无需克隆仓库即可自行配置 Worker。

你的 AUTH_TOKEN 就是 Second Brain 的密码,也是每个客户端都会要求提供的同一个值。可以使用:

  • 易于记忆的短语,例如 coffee-lover-2026

  • 随机生成的令牌:

    openssl rand -base64 32
    

当 Cloudflare 显示配置表单时,请填写:

字段值
AUTH_TOKEN你创建的令牌
DIMENSION384
METRICcosine

部署后,将兼容的客户端连接到:

https://YOUR-WORKER-URL/mcp

客户端支持 OAuth 时,请使用 OAuth;对于静态客户端,请使用 Authorization: Bearer <token> 标头。v3 已移除查询字符串令牌身份验证,因为令牌可能通过浏览器历史记录和日志泄露。

在 MCP URL 中添加 ?client=<name>,这样控制面板就能标明进行每项更改的工具。

连接遇到问题?请参阅连接 AI 客户端 → 故障排除(Opera 警告、Cursor OAuth、Claude Code 工具可见性)。

3. 手动部署

适合希望完全通过命令行进行控制的开发者:

npm install
npm run vectors:create
npm run deploy

请参阅设置指南,了解前置条件、资源创建、部署验证和故障排查。然后参阅连接到 AI 客户端,查看针对特定客户端的说明。

在本地开发:

npm run dev      # start the Worker locally
npm test         # run the test suite (fast: the golden-set eval replays are opt-in)
npm run test:eval:full   # the full eval (golden-set replays, workerd lock); run by hand before merging a ranking change

请参阅本地开发,了解混合本地/远程 Wrangler 配置,以及如何通过隧道共享本地知识库。

验证部署(替换 YOUR-WORKER-URL 和 YOUR-TOKEN):

curl -X POST https://YOUR-WORKER-URL/capture \
  -H "Authorization: Bearer YOUR-TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"content":"second brain is working","source":"test"}'

成功响应的格式如下:{"ok":true,"id":"..."}。

随时随地捕获

暂不支持,稍后再考虑:Windsurf(没有文档说明的会话启动上下文注入事件,只有响应后的钩子);OpenCode 和 Oh My Pi(使用插件/事件回调 API,而非 stdin/stdout 脚本,因此需要自己的集成方案,不能使用上述适配器)。

请参阅随时随地捕获,了解设置和使用说明。

v3 新功能

v3.4 新增了项目:用于标记记忆所属内容的命名工作区容器。可按代码库、客户端或目标对记忆分组;通过别名追溯采用已有多年的标签,无需迁移;通过新增的仪表板标签页进行管理;并让 Agent 通过 list_projects 和 project 参数发现和使用项目。夜间摘要、提示词胶囊、导出和 Claude Code 钩子均支持项目。

团队版新增个人和共享记忆层、按人员进行身份验证、共享和归属标记、作者锁定、团队管理、捕获策略、支持团队的回忆和图谱,以及从 v2 升级时默认设为私有的选项。

同时,系统进一步加强了 REST、MCP、集成、导入、洞察、图谱遍历和向量搜索中的租户隔离,并扩展了单元、集成和 UI 测试覆盖。

请参阅 GitHub Releases 查看发行说明和以前的版本。

文档

本地 UX QA 测试框架

无需任何 Cloudflare 账号,即可离线运行真实的 Worker 和仪表板,用于 UI 更改或完整体验应用流程。单靠 wrangler dev 无法做到这一点:即使在本地开发中,真正的 Workers AI 绑定也需要登录 Cloudflare。此测试框架从不要求登录。

npm run dev:local                 # boots the Worker + dashboard at http://localhost:8788
npm run ux:seed -- solo           # seeds a 3.7.0-shaped brain and boots the real 4.0 upgrade against it
npm run ux:seed -- team           # the same, plus a teammate, for the shared-history rows
UX_BRAIN=3.7-solo npm run dev:local   # run against a seeded brain instead of an empty one
npm run ux:shot -- --name=home --caption="Dashboard home"   # one screenshot, on demand (see below)
npm run ux:walkthroughs           # the scripted dashboard journeys (map section 6.2), with screenshots
npm run ux:chat                   # scripted MCP calls per AI_Instructions file (map section 6.4)

它使用以下方式替代 Cloudflare 账号:真正的本地 D1 和 KV(通过 wrangler 的 getPlatformProxy)、真正确定性的本地嵌入(使用与 Workers AI 相同的 BGE 权重,通过 @huggingface/transformers 在进程内运行,即评估测试框架自带的本地模型运行时)、真正的余弦相似度 Vectorize 替代实现,以及针对少数 LLM 风格调用(分类、合并决策、摘要合成)的固定预置回复,因为实际的本地模型无法切实替代这些调用。除此之外,仪表板、REST 路由和 MCP 工具都是真正的 Worker 代码。

npm run ux:shot 可按需截取指定屏幕或状态的一张截图(任何工作流都可以用它生成前后对比图),例如:

npm run ux:shot -- --name=trash-view --caption="New Trash view" --path=/#trash --viewport=mobile --locale=it

截图不会存入此仓库:它们会写入 public/ 之外的 docs/superpowers/screenshots/v4/harness/<run-id>/,项目现有的 docs/* gitignore 规则已将其排除;每张截图旁边都会有一个为其添加说明的 index.md。

如果 npm run ux:walkthroughs 中的某个流程到达当前分支尚未实现的功能(例如仪表板时间线、回收站视图或设置面板),它会报告 PENDING 并准确指出缺少的 UX 项,而不是判定为失败;该功能一旦发布,同一脚本就会通过。这些测试都不会作为 npm test 或 CI 默认作业的一部分运行:它们需要本地 Chrome 或 Chromium(GitHub 的 ubuntu-latest 运行器和大多数 Linux 桌面系统上已预装),而启动浏览器和本地 D1 需要实际的运行时间,因此这些测试由各自独立的 npm 脚本运行。

技术与隐私

Second Brain 使用 Cloudflare Workers、D1 SQLite、Vectorize、Workers AI、KV、Model Context Protocol 和 TypeScript。在个人使用规模下,它可在 Cloudflare 免费套餐内运行。

你的应用资源和数据都保留在你的 Cloudflare 账户中。项目维护者无法查看你的记忆或凭据。集成只会联系你选择连接的服务。

代码签名政策

Second Brain 桌面应用的 Windows 发布版本均经过代码签名。

SignPath.io 免费提供代码签名,并使用来自 SignPath Foundation 的证书。

角色成员
作者Rahil P (@rahilp)
审核者Rahil P (@rahilp)
批准者Rahil P (@rahilp)

发布二进制文件由 GitHub Actions 从此代码库构建。每项签名请求都会经过审核,并在发布已签名版本前获得人工批准。

隐私声明: 除非用户或安装、运行该程序的人员明确提出请求,否则本程序不会向其他联网系统传输信息。设置期间,桌面应用会与 Cloudflare 通信,以便在用户的账户中创建资源。之后,它会与该部署以及用户明确连接的集成通信。记忆和凭据绝不会发送给项目维护者。

Star 历史

Star 历史图表

MIT 许可证 · 讨论区

评论

支持 Markdown

第一次接触 MCP?

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

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