关于 Robrain
RoBrain 是面向团队和 AI Agent 的共享决策记忆服务,将决策及被否决的选项存入 PostgreSQL。它会被动捕获会话,并扫描整体语料中的矛盾与立场漂移,支持自托管和 Rory Plans 云端方案。
主要功能
- 01被动捕获决策
- 02结构化记录被否决选项
- 03共享 PostgreSQL 记忆
- 04扫描整体语料中的矛盾与漂移
- 05警告曾被否决的方案
- 06支持自托管或托管云端
适用场景
- 01在编码 Agent 间共享决策
- 02提醒 Agent 避免已否决方案
- 03检查相互矛盾或漂移的决策
- 04将决策记忆保留在本地基础设施
MCP 相关
RoBrain 通过 Sensing MCP 集成向编辑器和 AI Agent 提供记忆能力。已连接的 Agent 可捕获和检索共享决策,并接收考虑否决记录的警告。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y robrainPERCEPTION_API_URLPerception API URL. Optional — read from ~/.robrain/config.json after `npx robrain up`.PERCEPTION_API_KEY密钥Perception API key. Optional — read from ~/.robrain/config.json after `npx robrain up`.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
4收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| project_id | string | 是 | 用于标识项目的仓库名称或路径哈希 |
| session_id | string|null | 否 | 此会话的唯一 ID。省略、使用 null 或 "" 可由服务器生成(推荐)。否则,请为每次聊天提供一个新的 ID(例如 ISO 时间戳 + 4 位十六进制字符)。 |
详细介绍
RoBrain
在你的团队和 AI Agent 之间共享记忆——并赋予判断力!
RoBrain 不只是又一个记忆层,它还是帮助你和 Agent 做出更好决策、避免代价高昂的错误的大脑。
在你自己的 Postgres 上自托管。被动捕获、结构化否决、全语料库矛盾扫描——所有数据都不会离开你的设备。支持 Claude Code、Cursor、GitHub Copilot(VS Code)、Codex CLI、Hermes 等。
实测结果:没有决策记忆时,编码 Agent 在多达 10 项任务中的 9 项里会重新提出团队已经否决的方案。使用 RoBrain 的完整流程后:五次归档运行中 50 项任务中为 0 项——VetoBench。
它是什么
RoBrain 会记录你的团队及其 Agent 做出的决定,以及他们否决的替代方案,无需任何人手动添加标签。感知模块会捕获会话轮次;认知模块会将每项决定提取到 Postgres 中,每条记录都可以包含结构化的 rejected[] 字段。
大多数 Agent 记忆工具止步于捕获:它们存储发生过的事情,并希望你之后能查询到。RoBrain 更进一步,赋予记忆判断力。批量综合分析会读取整个语料库,标记矛盾、立场漂移,以及单次会话无法发现的重复实体。
关键在于交接。有人在星期二于 Cursor 中做出明确决定——例如,让 Perception 继续使用 Hono,而不是迁移到 Express。一位新队友在星期三打开 Claude Code,对这个决定毫无记忆,却要求做出完全相同的改动。RoBrain 会在 Agent 沿着你已经否决的方向行动之前,呈现记录的理由——使用同一个 Postgres 存储、同一套否决,并以被动方式捕获。
忘记一次否决的代价并非效率低下,而是你已经修复的授权绕过漏洞、已经回滚的迁移、为了修复 CVE 而移除的依赖——这些都会被一个不记得你为何拒绝的 Agent 重新提议。
编码是第一个应用领域,因为它的反馈周期很短——回滚、事故和返工让忘记否决所造成的代价可以衡量。同样的架构也适用于 Agent 做出的决定会延续到会话结束之后的任何场景。
工作原理、两大支柱(捕获 + 判断)以及完整演示:docs/concepts.md。
安装
运行 RoBrain 有两种方式——任选其一:
- 选项 1 · 自托管(免费、开源):所有内容都在你的设备上运行——使用你自己的 Postgres 和 API 密钥,任何内容都不会离开你的笔记本电脑。
- 选项 2 · Rory Plans 云服务(托管):无需自行托管,也无需密钥——所有付费 Rory Plans 套餐均包含此服务。
选项 1 · 自托管(免费、开源)
无需克隆 — robrain up 会拉取已发布的 Perception 镜像,并将凭据写入 ~/.robrain/stack/.env。
默认路径使用 Anthropic(提取)+ OpenAI(嵌入)。其他配置(仅使用 OpenAI、Gemini、其他嵌入服务、完全本地运行)— 概念 — 想使用其他服务提供方配置?。
export ANTHROPIC_API_KEY=... OPENAI_API_KEY=... # or add them to ~/.robrain/stack/.env after the first run
npx robrain@latest up # start Postgres + Perception from ghcr.io
npx robrain install --self-hosted # wire Sensing MCP into your editors
从克隆的仓库开始(用于开发或自行构建镜像)
首次运行 pnpm docker:up 会自动创建 .env,并填入 PERCEPTION_API_KEY / POSTGRES_PASSWORD。Perception 仍需要你的大模型和嵌入密钥才能持续运行。
git clone https://github.com/adelinamart/robrain
cd robrain
pnpm install && pnpm build
pnpm docker:up # first run: creates .env; Perception won't start yet
# open .env, add LLM + embedding keys for the provider path you chose (default: ANTHROPIC_API_KEY + OPENAI_API_KEY)
pnpm docker:up # second run: Perception now boots
pnpm robrain install --self-hosted --repo-root "$(pwd)"
pnpm robrain 运行的是你刚刚构建的 CLI(node packages/cli/bin/robrain.js)。
在此克隆仓库中,请在所有地方使用它,而不要使用 npx robrain — npx 会解析到已发布的程序包或过时的全局安装,而不是你的工作树。
升级自托管安装
无需克隆的服务栈:重新运行 npx robrain@latest up(拉取新的 Perception 镜像并应用启动时的数据库迁移),然后运行 npx robrain@latest install --self-hosted。从克隆仓库开始:git pull → pnpm install && pnpm build → pnpm docker:up:build → pnpm robrain install --self-hosted --repo-root "$(pwd)" → 完全重启编辑器。完整检查清单:CLI 参考 — 升级。
Claude Code 插件(自托管)
使用自托管服务栈的 Claude Code 用户可以添加基于钩子的捕获功能,以及关于此前已拒绝方案的任务前警告 — 无需 CLAUDE.md 协议:
claude plugin marketplace add adelinamart/robrain
claude plugin install robrain@robrain
详情:plugins/claude-code。robrain init-project 还会通过项目的 .claude/settings.json 向协作者推荐该插件,这样队友就能直接从 Claude Code 收到安装提示(使用 --skip-claude-plugin 可选择退出)。
选项 2 · Rory Plans 云端(托管)
使用任何付费 Rory Plans 计划,RoBrain 都可以在无需托管任何内容的情况下运行:
npx robrain install # no flags — cloud mode
前往 roryplans.ai 登录,在个人资料页面创建 API 令牌,并在安装程序询问时粘贴即可。全部设置就这么简单:无需 Docker、数据库、大模型或嵌入密钥 — 提取和搜索都在我们的服务端运行。你的编辑器(Claude Code、Cursor、Copilot、Codex CLI)会自动完成配置,Rory Plans 团队中的队友共享同一份记忆。
所有付费计划均符合条件 — 个人标准计划或年度计划、Teams 和企业计划。个人订阅者拥有私有记忆空间;团队则共享一个空间。自托管仍然免费且得到全面支持(见上文“安装”);对比表展示了各个层级提供的功能。
快速开始
完成任一安装方式(自托管或云端)后:
# Wire capture into an application project (run inside the repo)
cd /path/to/your/project
npx robrain init-project # writes CLAUDE.md, AGENTS.md, .cursor/rules/robrain.mdc
# Capture and recall are automatic from here:
# - every session turn is classified, no tagging
# - prior decisions load at session start via the always-on summary
# Explain any file's decision history
npx robrain explain path/to/file
# Inspect / approve captured rows (both modes)
npx robrain review
# Run corpus judgment — self-hosted only; cloud runs judgment server-side
npx robrain synth # drift, contradictions, entity promotion
运行 init-project 后,每个仓库都会获得 CLAUDE.md 和 AGENTS.md(Codex CLI),Cursor 也会获得包含 alwaysApply: true 的 .cursor/rules/robrain.mdc。如果捕获内容未能写入,请运行 npx robrain doctor — 参见故障排除。
调整捕获内容
默认情况下,分类器只存储决策及你拒绝的备选方案,不存储其他内容。如果项目需要更多、更少或不同类型的内容,请用自然语言说明。设置按项目存储在 Perception 上,因此每位队友的会话都会以相同方式进行捕获:
npx robrain capture show
npx robrain capture set --instructions "Skip anything about the marketing site. Treat naming conventions as decisions."
npx robrain capture set --min-confidence 0.75 # less noise
npx robrain capture set --mode broad # every turn reaches the model, not only keyword hits
npx robrain capture set --add-kind "run: The outcome of an agent run: what ran, when, and whether it succeeded."
npx robrain capture test --file sample-turns.jsonl --compare # dry run before you commit to it
额外类型的记忆与决策并列:每条记录都会指定一个主题,同一主题的新记录会替换旧记录,因此某种类型既可以保存不断变化的状态(例如 Agent 最近一次运行),也可以保存规则。只有决策会附带否决项。标志和格式:CLI 参考。
综合分析
Synthesis 会对完整的 decisions 表进行三轮检查:漂移(立场在没有明确反转的情况下发生变化)、矛盾(不同会话中的决策彼此不兼容)和实体提升(将反复出现的工具/模式归纳到 planning_blocks 中)。它会将标记和关系边写入你的数据库;它不会捕获新决策,而是评判你已有的决策语料。
pnpm synthesis:build && pnpm synthesis:run
# or: npx robrain synth
使用 npx robrain review 查看分析结果。深入了解(三轮检查、cron、环境变量):概念 — 综合分析。
编辑器集成
一套跨工具配置即可让 Claude Code、Cursor、GitHub Copilot (VS Code) 和 Codex CLI 共用同一个 Postgres 存储。分类器大模型由你选择:Anthropic Haiku 或 OpenAI。决策具有生命周期(active / superseded / invalidated)和关系图(conflicts_with / extends / related_to)。
Codex CLI / IDE 也支持基于钩子的捕获和任务前否决警告——与 Claude Code 插件使用相同的生命周期钩子,由 robrain install 自动写入 ~/.codex/config.toml(Codex 首次运行时会要求你信任这些钩子)。文档:plugins/codex。
在运行 Hermes?执行 npx robrain install --hermes,即可将独立的记忆提供程序插件放入 ~/.hermes/plugins/——通过同一个 Perception API 实现被动捕获和了解否决信息的回忆。文档:integrations/hermes。
Git 决策账本(可选启用):
npx robrain export-memory --ledger
# custom path: npx robrain export-memory --ledger docs/decisions.md
常见问题
如何阻止 AI 编码 Agent 再次提出团队已经否决的方案?
只需记录一次否决——RoBrain 会从发生否决的会话中被动捕获该信息——之后,每个已连接的 Agent 在再次沿着该路径行动前,都会收到否决警告:包括该决策、被否决的选项和原始理由。参见编辑器集成和 Claude Code 插件。
如何在 Claude Code、Cursor、Copilot 和 Codex 之间共享记忆?
只需运行一次 npx robrain install --self-hosted,即可将检测到的所有编辑器连接到同一个 Postgres 存储;运行 npx robrain init-project 即可注册一次代码仓库。周二在 Cursor 中作出的决策,周三就能让队友的 Claude Code 获取。
数据存储在文件还是数据库中?数据会离开我的机器吗?
所有数据都存储在 PostgreSQL 中(使用 pgvector 存储嵌入向量)——以结构化行的形式保存,而非平面文件。使用可自托管版本时,数据库通过 Docker 在你的机器上运行;除调用你配置的大模型/嵌入提供程序外,数据不会离开你的机器(也可以使用本地模型)。使用 Rory Plans 云服务时,只存储提取出的决策对象;原始对话文本在提取后不会保留。
RoBrain 与向量数据库或 RAG 有何不同?
向量存储会检索相似内容;RoBrain 还知道哪些内容被否决。否决是一级结构化数据(rejected[]),会在 Agent 行动前作为警告呈现——同时还会主动评判决策语料:扫描矛盾、检测漂移,并根据 Git 结果反馈,将现实中已被推翻的决策降级。VetoBench 可衡量这种差异。
什么时候应该选择 Rory Plans 云服务,而不是自行托管?
如果你希望所有内容都运行在自己的基础设施上,并且免费使用,请选择自行托管。如果你不想托管任何内容,也不想管理 API 密钥,请选择 Rory Plans 云服务——所有付费 Rory Plans 套餐均包含此服务,并可在团队组织内共享记忆。
RoBrain 与 Rory Plans 有什么关系?
Rory Plans 是面向人类和 AI Agent 的云端办公室,可用于设计工作流并协调人类与 Agent 协同工作。RoBrain 是其开源记忆层:永远可独立运行并支持自行托管,也可作为 Rory Plans 的一部分由团队托管。
与其他工具相比
与 Mem0、Cloudflare Agent Memory 和 Claude Code Auto-Memory 相比:只有 RoBrain 会将被否决的备选方案存储为结构化字段,并扫描整个语料库以查找矛盾(手动扫描或通过 cron 扫描)。我们还测量了这一差异带来的影响:VetoBench 发现,在相同输入下,Mem0 的摄取流程只在 38% 的检索上下文中保留了已记录的否决信息。完整对比 →
可自托管版与 Rory Plans 云端版
| 功能 | 免费版 / 可自托管版 | Rory Plans 云端版 |
|---|---|---|
| 被动捕获会话 | ✓ | ✓ |
将 rejected[] 字段作为结构化数据 | ✓ | ✓ |
| 决策生命周期(有效 / 已取代 / 已失效) | ✓ | ✓ |
| 跨工具 MCP — Claude Code、Cursor、Copilot、Codex CLI、Hermes | ✓ | ✓ |
| 分类器大模型选择 — Anthropic Haiku 或 OpenAI | ✓ | ✓ |
| 会话开始时始终提供摘要 | ✓ | ✓ |
npx robrain review / inject / explain / export-memory | ✓ | ✓ |
| 综合分析 — 漂移、矛盾、实体提升 | ✓ | ✓ |
综合分析提示词评估标准 — 按项目覆盖(.robrain/rubrics/) | ✓ | ✓ |
决策图(conflicts_with / extends / related_to) | ✓ | ✓ |
| 每条记忆均包含溯源信息 — 源会话、轮次、摘录;编译后的内容块包含源决策 ID | ✓ | ✓ |
| 记忆质量反馈 — 使用 / 忽略计数器、自动降级 | ✓ | ✓ 更丰富:每次注入均记录有用 / 不赞同反馈 |
| 关联结果 — Git 回退会反馈到记忆排名 | ✓ | ✓ |
| 捕获和摄取时对机密信息进行脱敏 | ✓ | ✓ |
记忆交换导出(robrain-memory/v1 JSONL) | ✓ | ✓ |
| 开放式检索评估 + CI 中的 VetoBench 门禁 | ✓ | 相同评分器 |
| 在自己的基础设施上自托管 | ✓ | — |
| 数据保留在本地 | ✓ | 远程处理 |
| 完全本地模式 — 在 Ollama/LM Studio/vLLM 上运行大模型 + 嵌入模型 | ✓ | — |
| 经校准的提取提示词(减少误报) | — | ✓ |
| 经校准的四类矛盾分类法 | — | ✓ |
| 在任务边界自动注入 | — | ✓ |
确定性否决扫描(POST /veto-scan) | ✓ | — |
任务开始前警告 rejected[] | Claude Code(插件)+ Codex(钩子)+ Hermes(提供方) | ✓ 全平台 |
| 脱离协议(⚠ 确认) | — | ✓ |
提交前冲突判定(/dry-run 结构化检查) | — | ✓ |
| 五信号相关性评分器 | ✓ 检索时使用(GET /decisions?query=) | ✓ 针对每项任务自动应用 |
| 冲突自动解决(带防护措施)+ 仪表板可视化 | — | ✓ |
| 否决信息在决策被取代后仍会保留 — 否决历史会沿用到最新决策 | ✓ | ✓ 合并完整历史 |
| 写入时检测决策取代 — “我们从 X 切换到 Y”不会被去重丢弃 | — | ✓ |
| 决策沿袭时间线(API + 仪表板) | — | ✓ |
| 团队记忆 — 组织、API 密钥、角色、隔离范围 | — | ✓ |
| Web 仪表板 | — | ✓ |
可自托管版支持捕获、批量判断任务、结果反馈和会话开始时的记忆召回;需要时,可通过 inject 提取聚焦的上下文。云端版增加 Planning + Control,使否决和冲突能在任务边界自动显现 — 使用相同的 CLI 接口,并与 Sensing 捕获保持协议兼容。详情:概念 — 免费版 / 可自托管版与 Rory Plans 云端版。
VetoBench
记忆基准测试通常会问“正确的条目是否被找回了?”VetoBench 则会追问它们忽略了什么:当任务诱使 Agent 采用团队已否决的方案时,Agent 会不会再次提出该方案?
| 记忆条件 | 再次提出已否决方案 | 能否引用此前的否决 |
|---|---|---|
| 无记忆 | 10 个任务中有 8–9 个 | 0–10% |
| 约定文件(仅记录选择——如今大多数团队采用的方式) | 10 个任务中有 1–2 个 | 80–90%,但都是推断:文件里没有记录原因 |
| Mem0 — 完整管线,存档 5 次运行 | 每次运行 10 个任务中有 0–2 个 | 50–90% |
| RoBrain — 完整管线,存档 5 次运行 | 每次运行都是 10 个任务中 0 个 | 100% |
(claude-haiku-4-5,2026-07-07/08;每种条件均以存档的 5 次运行序列进行测量,因运行结果有所不同,故以范围表示。Mem0 和 RoBrain 接收了逐字节完全相同的转录记录,并分别通过各自真实的生产环境提取器进行处理。)
表格背后有两项发现。Mem0 的摄取流程丢弃了38% 的检索上下文中记录的否决信息,而违规恰恰集中在这些上下文中——否决信息缺失时为 26%,存在时为 3%:Agent 在全部 5 次运行中都避开了 Express,却始终说不出原因;在 axios 否决信息丢失的情况下,它有 3 次直接再次提出了 axios。RoBrain 的生产环境提取器处理相同输入时,保留了100/100 条否决信息——保留否决信息是提取提示词的职责,并非事实摘要的副作用。
Meta Muse Spark 1.1(2026-07-14,存档 5 次运行)。 Meta 新近推出的 Agentic 旗舰模型,通过 Vercel AI Gateway 接入。无记忆时,它每次运行都会在 9 个任务中有 4–6 个再次提出已否决的方案——Redux、Prisma、Jest 和 GraphQL 在全部 5 次运行中都出现了。有了 RoBrain 决策记忆后:45 个单元格中违规数均为 0,且每次都点明了此前的否决——在展开说明时,会逐字引用记录的原因和日期。最明显的一个单元格:面对减少移动端过度获取数据的任务,无记忆运行在 5 次中有 5 次都提议全面迁移到 GraphQL(团队已否决的方案);而在上下文中加入 RoBrain 后,它改为提出 REST 稀疏字段集,并引用了记录的否决内容。坦诚说明:这不是 Muse Spark 的问题——在相同的 9 个场景中,我们作为基线测试的每个前沿模型在没有记忆时都会违规(claude-opus-4.8:3–4 次,gpt-5.5:5 次,gemini-3-pro-preview:6–7 次,Haiku:7–8 次;Prisma 和 Jest 在每次运行中都会被所有模型提出;加入 RoBrain 上下文后,同样这 3 个模型在 54/54 个单元格中均无违规,四家厂商的模型合计为 99/99 — 测试记录);对于这一模型和当前语料规模,单纯的约定文件也能避免违规(RoBrain 的优势在于逐字引用而非推断、自动捕获,以及大规模检索);另有一个场景因 Meta 的内容过滤器会确定性地拦截无害的会话缓存提示词而被排除(n=9)。测试记录和注意事项:results/muse-spark-1.1-series/ · 说明文章:docs/blog/2026-07-14-muse-spark-forgets-your-vetoes.md。
每条检索上下文、Agent 回复和判定结果都已提交至 packages/vetobench/results/——引用前请先核查。检索层可离线运行,无需 API 密钥,并会作为 CI 门禁(pnpm --filter @robrain/vetobench bench);判定结果是确定性的——不使用大模型判定器。任何记忆系统都可以通过一个适配器接口接入;欢迎提交 PR,包括那些会让我们表现不佳的 PR。方法说明、诚实性注意事项和测试夹具:packages/vetobench/README.md。
安全性
记忆语料库受 PERCEPTION_API_KEY 保护——它是仓库根目录 .env 中的随机密钥,每个客户端(Sensing MCP、CLI、Synthesis)都会将其作为 Bearer 令牌发送,Perception 会在每次请求时验证该令牌,/health 除外。该密钥并非由任何服务签发:首次运行 pnpm docker:up 时会自动生成一个,也可以自行设置(例如 openssl rand -hex 32)。安装时(从克隆仓库运行 pnpm robrain install --self-hosted,否则运行 npx robrain install --self-hosted),同一密钥会被复制到编辑器配置中,以便客户端进行身份验证。
如果密钥为空,Perception 将拒绝启动——要在未进行身份验证的情况下运行,必须明确选择启用。**从无需密钥即可运行的版本升级:**在 .env 中添加密钥(或重新运行 pnpm docker:up 自动填充),然后重新运行安装命令(从克隆仓库运行 pnpm robrain install --self-hosted,否则运行 npx robrain install --self-hosted),以便编辑器读取该密钥。详情和启用选项见 .env.example。
默认还启用了密钥信息脱敏(API 密钥、令牌、私钥和连接字符串密码会在捕获时以及写入时再次清除,且均在嵌入或存储前进行),并提供完全本地模式:提取和嵌入在兼容 OpenAI 的本地服务(Ollama / LM Studio / vLLM)上运行——参见 CLI — 完全本地的大模型 和 .env.example。
接下来
robrain outcomes 会将 git 回滚反馈到两个层级的记忆质量中;下一步是将其扩展到事故和周期时间,让 RoBrain 能够指出团队何时在自己的代码库中优化了错误的目标。
要求
- Docker + Docker Compose(在本地运行 Postgres 和 Perception)
- Node.js 和 pnpm(用于构建和 CLI)
- 分类器所需的大模型密钥——Anthropic Haiku 或 OpenAI——或者兼容 OpenAI 的本地服务(参见完全本地的大模型)
- 嵌入密钥(例如 OpenAI)——也可以使用同一本地服务进行嵌入
- 在可自托管模式下,数据不会离开你的设备
文档
- 概念(工作原理、两大支柱、Synthesis、对比)→ docs/concepts.md
- CLI 参考(
explain、安装、升级、编辑器设置、完整命令表)→ docs/cli.md - 完全本地的大模型(Ollama / LM Studio / vLLM,无需云端密钥)→ docs/cli.md#fully-local-llm-ollama--lm-studio--vllm
- 维护者发布检查清单(tag → GHCR → npm → MCP registry)→ docs/release.md
- 故障排查(静默 401、Docker 重建、过时摘要、本地大模型)→ docs/troubleshooting.md
- 记忆互换格式(
robrain export、robrain-memory/v1JSONL)→ docs/memory-interchange.md - VetoBench(记忆能否阻止被否决方案再次提议?方法论 + 存档记录)→ packages/vetobench/README.md
- Claude Code 插件(基于 hook 的捕获 + 否决警告)→ plugins/claude-code/README.md
- Codex CLI hooks(相同的生命周期 hooks,由
robrain install配置)→ plugins/codex/README.md - eve 记忆提供程序(
@robrain/eve——通过 eve 的 memory-provider 契约为 Vercel 的 eve agents 提供团队决策记忆;已在 eve 0.82.0 上验证)→ packages/eve/README.md - eve 原始界面集成(动态指令、否决工具、捕获 hook;早于 eve 的记忆子系统)→ plugins/eve/README.md
- Hermes Agent 插件(memory-provider、捕获 + 否决警告)→ integrations/hermes/robrain/README.md
参与贡献
采用 Apache 2.0 许可证。欢迎提交有关提取准确性、新编辑器集成和嵌入提供程序的 PR。权衡和架构请参见概念 — 参考。
License
Apache 2.0 — see LICENSE
Built by Rory Plans
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。