Rowboat 桌面 AI 同事实战指南:长期记忆知识图谱、后台代理与 MCP 工具扩展全解析

发布时间:2026/9/13 22:10:28
Rowboat 桌面 AI 同事实战指南:长期记忆知识图谱、后台代理与 MCP 工具扩展全解析 Rowboat 桌面 AI 同事实战指南长期记忆知识图谱、后台代理与 MCP 工具扩展全解析【免费下载链接】rowboatOpen-source AI coworker, with memory项目地址: https://gitcode.com/GitHub_Trending/rowb/rowboat本文基于 docs/readme/README.ko.md 的核心内容展开结合仓库源码voice.ts、models.ts、mcp.ts、config.ts 等验证底层实现。Rowboat 是一款开源桌面 AI 同事它把邮箱、会议、Slack 与助手对话索引为活的知识图谱并在其上提供邮件、笔记、浏览器、代码模式、会议记录与项目工作区等工作界面。读完本文你将掌握 Rowboat 的架构理念、完整安装与 API 配置流程、Google 服务接入步骤以及自带模型 MCP 外部工具的扩展方法。Rowboat 是什么把工作记忆变成可行动的桌面 AIRowboat 的核心定位是带记忆的 AI 同事a desktop AI coworker with memory。与大多数把对话历史或文档当作临时检索源的 AI 工具不同Rowboat 将你的工作内容索引成一张持续增长的知识图谱living knowledge graph并直接利用这份记忆在你的电脑上执行任务。从 apps/x/packages/core/src/knowledge/ 目录可以看到知识层由邮件分类、联系人、笔记构建如build_graph.ts、agent_notes.ts、classify_thread.ts等多个模块构成说明知识图谱不是营销概念而是有实际代码承载的索引与组织系统。与普通 AI 工具的本质区别Rowboat 明确对比了两种技术路线大多数 AI 工具需要时临时搜索对话记录或文档每次重新拼装上下文每次对话都从冷启动开始Rowboat维护长期存活的知识long-lived knowledge——上下文随时间持续累积实体间的关系显式可查笔记内容用户可以自由编辑而非藏在模型内部所有数据以普通 Markdown 存储在本地。其结果是复利式累积的记忆而非每次从零开始的检索。这一点体现在本地优先设计中数据不依赖专有格式或托管锁定用户可以随时查看、编辑、备份或删除。内置工作界面从邮箱到代码模式的八块拼图Rowboat 提供了多个与 AI 协作的工作界面work surfaces下面逐项展开。1. BrainObsidian 风格的知识图谱Rowboat 把电子邮件、会议、Slack 以及与助手的对话全部索引进一张带反链backlink的知识图谱样式类似 Obsidian。这意味着你可以沿着实体之间的显式关系跳转浏览而不是靠全文搜索碰运气。这张图来自仓库的assets/readme-dark/brain.png展示了图谱视图的形态节点代表邮件、会议、人物等实体连线代表它们之间的引用与关联。2. 内置邮件客户端自动区分重要邮件并起草回复内置邮件客户端将邮件自动分类为重要与其他。对重要邮件Rowboat 会利用全部工作上下文自动生成回复草稿。仓库中 knowledge/email/ 目录与email_importance_feedback.ts、email_labels.ts、classify_thread.ts等文件正是邮件重要性分类与标签体系的实现所在。3. 后台代理事件驱动与定时调度后台代理background agents既可以在事件触发时运行例如收到新邮件也可以按日程运行例如每天早上 8 点。它们能够连接工具、搜索网页、使用内置浏览器甚至通过 Claude Code 或 Codex 编写代码。这一功能在源码中的实现位于 apps/x/packages/core/src/agent-schedule/repo.ts负责代理配置的存储与读取runner.ts负责调度执行state-repo.ts维护运行状态——三个文件共同构成了事件/定时 → 调度 → 执行的完整链路。4. 内置浏览器与主浏览器隔离的安全协作Rowboat 内置了一个浏览器让你和助手可以一起完成网页任务。关键设计是它与日常主浏览器相互隔离——你只需登录愿意让助手访问的账号即可主浏览器的会话不受影响。5. 会议记录本地实时转写与总结会议记录工具接入麦克风与扬声器声音生成实时转写将会议内容总结为 Markdown 文件并同步更新知识图谱。这对应渲染层 hooks/useMeetingTranscription.ts 的实时转写流程以及语音层 voice.ts 的音频处理能力。6. 代码模式并行编码代理代码模式Code Mode可以同时启动多个并行编码代理基于 Claude Code 或 Codex当需要时Rowboat 会携带全部工作上下文统一指挥这些代理。仓库中 apps/x/packages/core/src/code-mode/ 目录存放着该功能的完整实现。7. Apps自建工作界面你可以在 Rowboat 内部构建自己的工作界面Apps它们可以访问所有工具与集成并且可以分享给其他人。配套的 docs/publishing-apps.md 与 docs/apps-registry/ 记录了应用的注册与发布机制。8. 集成主流产品的开箱即用Rowboat 提供对主流产品的集成支持其中 Google 服务Gmail、Calendar、Drive的接入配置最为关键详见下文安装章节。安装与初始配置获取安装包Rowboat 提供 Mac、Windows、Linux 三大平台的桌面安装包从官方下载页获取最新版本即可也可以获取全部发布文件。作为开源仓库你同样可以查看根目录 package.json 与 pnpm-workspace.yaml 了解工程结构。Google 服务接入Gmail / Calendar / Drive连接 Google 服务需要先在 Google Cloud Console 生成 OAuth 凭据Client ID 与 Client Secret完整步骤记录在仓库根目录的 google-setup.md 中要点如下创建项目在 Google Cloud Console 创建新项目例如命名为Rowboat Integration并确保顶部下拉框选中新项目。启用 API依次启用 Gmail API、Google Calendar API、Google Drive API 三个接口。配置 OAuth 同意屏幕填写应用名称与支持邮箱受众选择External无需发布应用保持在 Testing 模式即可。添加测试用户Testing 模式下必须手动添加测试用户——将你要连接 Rowboat 的邮箱加入 Test Users 列表。创建 OAuth Client ID应用类型选择Web application并添加授权回调 URIhttp://localhost:8080/oauth/callback——注意不带末尾斜杠、端口必须是 8080必须与 Rowboat 实际使用的回调一致。复制凭据创建完成后复制 Client ID 与 Client Secret在 Rowboat 提示时粘贴进去。常见排障如果浏览器显示 Authorization Successful 但应用报错如 invalid response encountered 或response parameter iss (issuer) missing应依次检查应用日志中的完整错误信息、Google Cloud Console 中授权回调 URI 是否精确为http://localhost:8080/oauth/callback、应用类型是否确认为 Web applicationDesktop 等类型可能不提供 Client Secret 或回调处理方式不同。API 密钥配置文件统一格式语音输入、语音输出、网页搜索、外部工具等可选能力都通过位于~/.rowboat/config/目录下的 JSON 文件配置且所有密钥文件格式完全一致{ apiKey: key }从源码 config.ts 可以看到工作目录由WorkDir常量定义默认值为用户主目录下的.rowboat同时会启动时自动创建agents、config、knowledge、skills等子目录若设置了环境变量ROWBOAT_WORKDIR则优先使用该路径支持~展开。也就是说~/.rowboat/config/是配置目录的默认位置其中deepgram.json、elevenlabs.json、exa-search.json、composio.json等文件对应不同的可选能力。语音输入Deepgram要启用语音输入与语音笔记可选在~/.rowboat/config/deepgram.json中加入 Deepgram API 密钥。源码 voice.ts 中的getVoiceConfig()会读取该文件并解析apiKey字段。批量转写时transcribeAudioRowboat 会优先走已登录账号的 WebSocket 代理通道未登录时则直接调用 Deepgram 的预录制 REST 接口模型为nova-3开启smart_format与punctuate。也就是说配置了本地 Deepgram 密钥后即使不登录 Rowboat 账号也能完成语音转写。语音输出ElevenLabs要启用语音输出可选在~/.rowboat/config/elevenlabs.json中加入 ElevenLabs API 密钥。该文件除apiKey外还支持可选的voiceId字段VoiceConfig 定义未指定时使用默认音色s3TPKV1kjDlVtZbl4Ksh。合成时resolveTtsEndpoint未登录状态直接请求 ElevenLabs 官方接口请求体默认使用eleven_flash_v2_5模型并附带stability: 0.5、similarity_boost: 0.75的音色参数流式合成synthesizeSpeechStream则支持边生成边播放的低延迟体验。网页搜索Exa要使用 Exa 研究搜索可选在~/.rowboat/config/exa-search.json中加入 Exa API 密钥格式同样为{ apiKey: key }。外部工具MCP 与 Composio要启用外部工具可选你可以添加任意 MCP 服务器或者在~/.rowboat/config/composio.json中加入 API 密钥以使用 Composio 工具。MCP 的完整机制见下文扩展章节。自带模型BYO Model本地优先的模型接入Rowboat 允许你按自己的偏好配置模型随时可以更换而数据始终保留在本地 Markdown 库中本地模型通过 Ollama 或 LM Studio 运行托管模型自带 API 密钥 / 使用自己的服务商随时切换更换模型不影响你的本地数据。源码 models.ts 的createProvider()给出了精确的提供商体系provider flavors共支持openai、aigateway、anthropic、google、ollama、openai-compatible、openrouter、rowboat、codex。其中Ollama走ollama分支会自动在 baseURL 末尾补齐/api并通过makeOllamaThinkFetch注入推理努力度reasoning effort参数LM Studio属于openai-compatible分支其本地服务提供 OpenAI 兼容的/v1端点OpenRouter走openrouter分支聚合多家托管模型。更关键的是能力探测机制probeModelCapabilitiesRowboat 会通过 Ollama 的/api/show接口读取模型的能力列表是否支持 tools与上下文窗口长度对 LM Studio 则通过/api/v0/models读取loaded_context_length等字段。随后capabilityWarnings会根据探测结果给出明确告警模型不支持工具调用时会提示选择具备工具能力的模型如 qwen3、gpt-oss、llama3.3因为 Rowboat 的助手与后台代理都依赖工具模型上下文窗口低于约 16k token 时会提示可能出现截断或答非所问若配置的上下文长度超过模型实际支持上限会建议下调models.json中该提供商的contextLength。连接测试testModelConnection会向模型发送一条ping探活消息并汇总上述告警本地模型超时阈值为 60 秒、远程模型为 8 秒。这套机制让你在接入任意本地模型时能提前发现工具调用不可用上下文过短等隐性坑点。用 MCP 扩展 Rowboat连接任意工具与服务Rowboat 通过Model Context ProtocolMCP连接外部工具与服务这意味着你可以接入搜索、数据库、CRM、客服工具、自动化甚至自己的内部工具。官方示例包括Exa网页搜索、Twitter/X、ElevenLabs语音、Slack、Linear/Jira、GitHub 等。从源码 mcp.ts 可以还原底层机制服务器列表来自mcp.json中的mcpServers配置并与 spaces 组织注册表合并注册表条目优先每个服务器按配置自动创建对应传输层含command/args/env的走标准输入输出Stdio子进程传输StdioClientTransport含url的走Streamable HTTP传输StreamableHTTPClientTransport并支持转发自定义请求头例如 Authorization以访问受保护的服务客户端实例按服务器名缓存配置变化如令牌轮换、编辑mcp.json会自动断开旧连接并重连避免使用过期凭据。实操示例接入 Parallel 网页搜索以 Parallel Search MCP 为例提供web_search与web_fetch两个工具无需 Parallel 账号与 API 密钥即可用于公开网页搜索免费访问有速率限制打开设置 → MCP Servers在现有mcpServers对象中新增parallel条目后保存保留其他已有服务器条目。若此前没有配置任何服务器则使用{ mcpServers: { parallel: { url: https://search.parallel.ai/mcp } } }保存后Rowboat 会通过其已有的 Streamable HTTP 客户端建立连接。你可以让 Rowboat 列出parallel服务器上的工具然后尝试用 Parallel 查找 MCP 官方文档无需使用时在设置 → MCP Servers中删除parallel条目并保存即可此操作不会影响 Exa 等其他已配置服务。注意一旦启用Rowboat 在工作过程中会在你的 MCP 工具权限约束下调用这些工具查询内容、请求的 URL 及附带的上下文会发送给 Parallel。本地优先设计你的数据完全属于你Rowboat 的本地优先设计原则是贯穿全文的底层承诺所有数据以普通 Markdown保存在本地无专有格式、无托管锁定任何时刻你都可以检查、编辑、备份或删除全部数据。这一原则在代码层面同样有据可查工作目录WorkDir默认即用户主目录下的.rowboat知识笔记落在knowledge子目录中config.ts密钥配置全部是本地 JSON 文件不存在必须依赖云端账号才能读取数据的场景。总结Rowboat 的设计思路可以概括为一条主线先构建长期记忆本地 Markdown 知识图谱再让 AI 在真实工作界面上基于记忆采取行动。本文覆盖了它的八类工作界面、从 Google OAuth 到 Deepgram/ElevenLabs/Exa/MCP 的完整可选能力配置流程以及自带模型 能力探测告警 MCP 工具扩展的定制化方案。需要继续深入时可以查阅google-setup.mdGoogle 接入全流程、apps/x/packages/core/src/voice/voice.ts语音输入输出实现、apps/x/packages/core/src/models/models.ts模型提供商体系、apps/x/packages/core/src/mcp/mcp.tsMCP 客户端机制与 apps/x/packages/core/src/agent-schedule/后台代理调度。【免费下载链接】rowboatOpen-source AI coworker, with memory项目地址: https://gitcode.com/GitHub_Trending/rowb/rowboat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考