rowboat

2026-02-18

ai

节约时间,也就是使一个人的有限的生命,更加有效,而也就等于延长了人的寿命。——鲁迅

Rowboat:把你的工作变成可行动的知识图谱的开源 AI 同事

当我们谈论“AI 办公”,大多数产品停留在“问答”和“摘要”层面,很难真正融入你的日常工作流。Rowboat 的思路更激进也更务实:它直接接入你的邮件与会议记录,把每天发生的沟通与决策沉淀成一个长期、可维护的知识图谱;然后用这套“活”的上下文去帮你完成任务,像一个真正的“同事”一样配合你推进工作,而且所有数据都在你的本机,私密可控。

项目地址:rowboatlabs/rowboat
官网与下载页:Rowboat Labs | Download | Latest Release
项目简介:Open-source AI coworker, with memory
开源许可:Apache License 2.0


为什么是 Rowboat?

Rowboat 的直接目标是让 AI 真正成为你的“同事”:

  • 它连接你的邮件与会议笔记,持续构建并维护一套长期记忆的知识图谱
  • 它用这些真实上下文去完成任务,而不仅是“聊聊天”
  • 它在你的本机上运行,数据隐私优先

你可以让 Rowboat做这些事:

  • 生成业务材料:比如“帮我做一个下季度路线图的演示文稿”,Rowboat 会结合知识图谱中的历史讨论与结论,自动把内容整理成 PDF
  • 会议准备:比如“为我和 Alex 的会议做准备”,它会把相关的过往决策、未解决的问题、邮件线程整理成简明的 Brief,甚至输出成语音备忘
  • 可视化编辑你的知识图谱:它就是 Markdown,你可以随时浏览、调整
  • 语音备忘:把你的语音记录自动提炼要点并更新到图谱

你可以从 Mac/Windows/Linux 下载最新版,也可以直接访问 Latest Release


实际上,Rowboat做了什么?

从仓库结构与文档可以看出,Rowboat既是一套应用,也是一套可扩展能力的组合:

  • 桌面与 Web 应用(Next.js):提供 UI、对话入口、以及“Copilot”式的工作流配置
  • 知识图谱构建系统:从 Gmail、会议转录等源同步数据,增量处理,写入本地 Markdown 知识库
  • Python SDK:用简单代码调用 Rowboat 的对话与工具能力
  • CLI:在命令行运行与编排 Agent
  • 预置模板(Prebuilt Cards):把一些“可复用的特定场景助理”做成卡片,一键启用

换句话说,它不是只给你一个“聊天框”,而是提供“连接数据—构建���下文—组织多代理—触发自动化”的完整链条。


特性一览(来自项目 README 的核心信息)

  • 连接邮件与会议记录,构建长期知识图谱
  • 用真实上下文帮助你完成任务,且数据在你的机器上
  • 示例能力:
    • 生成业务演示稿(结合你的知识图谱)
    • 会前准备(总结过往决定与线程)
    • 知识图谱可视化、可编辑(Markdown 即图谱)
    • 语音备忘自动提炼并更新

演示视频:观看 Demo


安装与上手

如果你是开发者,还可以从以下入口快速理解并集成:

Copilot 的模型配置(TypeScript)

下面的片段展示了 UI 内“Copilot”使用的模型配置与环境变量读取方式,直观体现了可替换模型与私有部署的灵活性:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import { UsageTracker } from "@/app/lib/billing";
import { CopilotStreamEvent } from "@/src/entities/models/copilot";

const PROVIDER_API_KEY = process.env.PROVIDER_API_KEY || process.env.OPENAI_API_KEY || '';
const PROVIDER_BASE_URL = process.env.PROVIDER_BASE_URL || undefined;
const COPILOT_MODEL = process.env.PROVIDER_COPILOT_MODEL || 'gpt-4.1';
const AGENT_MODEL = process.env.PROVIDER_DEFAULT_MODEL || 'gpt-4.1';

const WORKFLOW_SCHEMA = JSON.stringify(zodToJsonSchema(Workflow));

const SYSTEM_PROMPT = [
COPILOT_INSTRUCTIONS_MULTI_AGENT,
COPILOT_MULTI_AGENT_EXAMPLE_1,
CURRENT_WORKFLOW_PROMPT,
]
.join('\n\n')
.replace('{agent_model}', AGENT_MODEL)
.replace('{workflow_schema}', WORKFLOW_SCHEMA);

const openai = createOpenAI({
apiKey: PROVIDER_API_KEY,
baseURL: PROVIDER_BASE_URL,
compatibility: "strict",
});

这个设计的要点是:

  • 模型与 API Key 从环境变量读取,可切换到兼容的供应商或自托管
  • 系统提示由多段模板拼装,包含当前工作流、示例与说明
  • 工作流 Schema 通过 Zod 转为 JSON Schema,确保配置的结构化与校验

CLI 的入口(TypeScript)

如果你倾向于在终端中运行或编排 Agent,CLI 入口清晰地组合了渲染器、配置与模型仓库:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import { AgentState, streamAgent } from "./agents/runtime.js";
import { StreamRenderer } from "./application/lib/stream-renderer.js";
import { stdin as input, stdout as output } from "node:process";
import fs from "fs";
import { promises as fsp } from "fs";
import path from "path";
import { WorkDir } from "./config/config.js";
import { RunEvent } from "./entities/run-events.js";
import { createInterface, Interface } from "node:readline/promises";
import { ToolCallPart } from "./entities/message.js";
import { Agent } from "./agents/agents.js";
import { McpServerConfig, McpServerDefinition } from "./mcp/schema.js";
import { Example } from "./entities/example.js";
import { z } from "zod";
import { Flavor } from "./models/models.js";
import { examples } from "./examples/index.js";
import container from "./di/container.js";
import { IModelConfigRepo } from "./models/repo.js";

function renderGreeting() {
/*...*/
}

你可以基于这个 CLI 做自动化执行、日志收集与流式渲染,也可结合 MCP(Model Context Protocol)扩展外部工具。

载入 Agent(TypeScript)

运行时如何按名称载入特定 Agent?下面的片段展示了一个简单的分支与仓库拉取:

1
2
3
4
5
6
7
export async function loadAgent(id: string): Promise<z.infer<typeof Agent>> {
if (id === "copilot" || id === "rowboatx") {
return CopilotAgent;
}
const repo = container.resolve<IAgentsRepo>('agentsRepo');
return await repo.fetch(id);
}

这说明:

  • 一些内置 Agent(如 Copilot、rowboatx)直接返回
  • 其他 Agent 从仓库接口拉取,便于你存储和管理自定义 Agent

用 Python SDK 快速试跑

如果你喜欢用 Python 做原型或脚本式集成,可以用 SDK 在几行代码里跑通对话与工具调用。下面是一个最小示例,与你在仓库中的 README 用法一致:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
from rowboat.client import Client
from rowboat.schema import UserMessage

# 初始化客户端
client = Client(
host="http://localhost:3000", # 或你的部署地址
projectId="YOUR_PROJECT_ID",
apiKey="YOUR_API_KEY"
)

# 开启一轮对话
result = client.run_turn(
messages=[
UserMessage(role='user', content="列出我的 GitHub 仓库")
]
)
print(result.turn.output[-1].content)
print("Conversation ID:", result.conversationId)

# 继续该对话
result = client.run_turn(
messages=[
UserMessage(role='user', content="刚才找到了多少个?")
],
conversationId=result.conversationId
)
print(result.turn.output[-1].content)

备注:SDK 的 README 中还展示了“mockTools”这样的工具覆盖能力,你可以在本地快速模拟外部工具行为以测试工作流。


知识图谱如何构建与维护

Rowboat 的知识构建系统重点在“增量处理与状态管理”。从仓库的文档可以看到它的策略很清晰:

  • 数据来源:同步 Gmail、会议转录(如 Fireflies 等),落地为 Markdown 文件
  • 变更检测:采用“mtime + 内容哈希”的混合方式
    • 先比对文件修改时间,未变更则跳过
    • 如果修改时间变更,再计算哈希确认是否是真正内容变化
  • 批处理与断点续跑:扫描源目录,按批次处理新/变更文件,每批处理后更新状态文件,避免大规模重跑
  • 输出:实体抽取(人物、组织、项目、主题等),写入到用户主目录下的知识库路径(Markdown)

这套机制的好处是:

  • 高效:只在必要时计算哈希,避免无谓的全量重算
  • 可靠:通过哈希确认真正内容变化,减少“时间戳误报”
  • 可维护:状态文件记录每次处理结果,既能审计也便于恢复

Prebuilt Cards:一键启用的“场景助理”

如果你想快速试用或复用某个场景(比如“GitHub 数据到表格”、“会议准备助手”、“面试安排”等),可以直接在 UI 的“Pre-built Assistants”区域选择卡片。这些卡片本质上是一个 JSON 模板,定义了:

  • 名称、描述
  • Agents 数组与起始 Agent
  • 工具、提示词、管线
  • 分类(例如“Work Productivity”、“Developer Productivity”),便于 UI 分组

把符合模板结构的 JSON 文件放到 app/lib/prebuilt-cards/,重启应用即可看到它出现在预置助理列表里。


用户界面里的体验片段

Rowboat 的应用里“Copilot”会用自然语言引导你搭建与连接 Agent,并提示你能做的事情,比如:

1
2
3
4
5
6
7
8
<span className="text-lg">⚡</span>
<span className="text-sm text-zinc-600 dark:text-zinc-400">Build AI agents instantly with natural language.</span>
<span className="text-lg">🔌</span>
<span className="text-sm text-zinc-600 dark:text-zinc-400">Connect tools with one-click integrations.</span>
<span className="text-lg">📂</span>
<span className="text-sm text-zinc-600 dark:text-zinc-400">Power with knowledge by adding documents for RAG.</span>
<span className="text-lg">🔄</span>
<span className="text-sm text-zinc-600 dark:text-zinc-400">Automate workflows by setting up triggers and actions.</span>

直观地体现了:

  • 用自然语言瞬间构建 Agent
  • 一键连接外部工具
  • 通过文档增强检索问答(RAG)
  • 通过触发器与动作实现自动化

适用场景与团队价值

  • 创始人与产品经理:把散落在邮件与会议中的决策与洞察“结构化”,快速拉起汇报材料与路线图
  • 销售与客户成功:自动整理客户关键事件与沟通要点,形成会前 Brief
  • 个人效率:用语音备忘代替“随手记”,自动写入图谱,持续积累

最大的现实价值在于“上下文与行动力的闭环”:
你的数据在你的机器上被结构化、被记忆,然后立刻用于可执行的任务,减少“拿不到上下文”的低效问答。


开源与生态

  • 开源协议:Apache 2.0,便于商业与二次开发
  • 技术栈:TypeScript(前后端)、Next.js(应用)、CLI 与 Python SDK
  • 模型与工具:环境变量可切换主流模型与私有部署,并支持把工具与管线纳入 Agent 的工作流
  • 社区入口:官网、Discord、X(Twitter)等社交链接均在仓库 README 顶部徽章区

结语

Rowboat 把“AI 同事”的关键问题——长期记忆与真实上下文——做成了产品底座,同时给开发者开放了从 UI 到 CLI、从 TypeScript 到 Python 的完整集成路径。如果你希望从“好用的聊天”跨越到“可执行的工作流”,它值得一试。


参考与说明

  • 本文内容基于仓库的 description 与多个 README 文件整理撰写,未添加与仓库无关的推断
  • 代码搜索结果可能不完整,更多文件可在 GitHub Code Search 查看:搜索 rowboatlabs/rowboat 的代码