OpenDuet:开源主动式 Agent,简报与自有电脑

多数助手等你开口;主动式 Agent 会先把今天该你拍板的事递过来,自己在旁路把能做的做掉。CopilotKit 开源的 OpenDuet(MIT)就是这类模板:早间简报、在自有容器里继续干活(浏览器 + /workspace + shell)、做完或卡住再回来找你,发信 / 付款 / 签名 / 删除前先问准。本文按官方站点与 GitHub README 整理它是什么、架构怎么分层、以及官方 Quick start 怎么试。
说明:功能与步骤以 copilotkit.ai/openduet 与 GitHub CopilotKit/OpenDuet README 为准(查阅日 2026-10-28 北京时间)。仓库标注 early development;星数同日 GitHub API 约 886★。
它是什么
README 定义:开源、可自托管的主动式 Agent 模板——不等人问,用短简报开场;你走开后它在自己的电脑上继续;需要你时才回来。构建在 CopilotKit 的 OpenBot 平台之上:OpenBot 提供服务端、应用、每 Bot 一台电脑、审批边界、审计、登录以及 Slack / Teams 频道;OpenDuet 在其上叠早间简报、Tasks、Make,以及自己的 Bot 与 Skills(都在 openbot/examples/openduet 一包里)。官方产品页强调:任意工具走 MCP,任意已有 Agent 只要讲 AG-UI,频道可用自有 App / Slack / Microsoft Teams。
和站内 Claude Duet 一类「会先开口的助手」同一品类;README 写明 OpenDuet 是独立开源项目,与 Anthropic 无隶属或背书关系。
发信、付款、签名、删除:默认先给你看清要做什么,再选拒绝、允许一次或始终允许。
架构:谁在干活
README「How it works」把链路画成:
| 层 | 职责 |
|---|---|
| 你所在的频道 | Web、Slack、Microsoft Teams:提问、答复、审批;收回早间简报与「这需要你」 |
| OpenDuet / OpenBot 服务 | 分流(要你处理 / 可等待)、审批、网关(策略 → 审计 → 执行);AG-UI 把回合交给 Agent |
| Agent | 任意讲 AG-UI 的端点(LangGraph、Mastra、CrewAI、Google ADK、手写等) |
| 自有电脑 | 每 Agent 一容器:Chromium、/workspace、浏览器配置、shell;你不在时继续跑 |
| CopilotKit Intelligence | 线程与记忆(免费 Developer 方案可读 README 要求;无密钥服务不起) |
| PostgreSQL + pgvector | 策略、审批、审计、加密凭证 |
网关把所有工具调用过一遍:写操作(或无法判定为读的)要过策略;设为「先问」的会停住,展示具体动作与触发规则。对人发消息永远先问一次,并显示收件人与正文。站点登录要密码时,你在遮罩框里输入,密码直达站点,对话里只记「请求过密钥」;已存凭证加密且只写不读回。
今天能用的能力(README 表)
- 早间简报:连接 Gmail / Google Calendar 后,每天首次打开 Chat 已有一份:哪些要你处理、哪些可等、今日日程、检查失败项;也可随时再要一份。
- Tasks:要你处理的、它建议接手的、正在做的分栏;建议可「开始 / 隐藏」;失败会说明原因并给「再试」。
- Make:要设计系统、页面、仪表盘、幻灯片、文档时生成,卡片进 Chat,Make 页留缩略图。
- Skills / 例行:写成可
/调用的说明;可按日程跑 routines。 - 频道:按项目建频道(名、色、用途),任务带上频道色;侧栏可归档旧会话。
首次见面它会先开口:读近期邮件与本周日程,用三两条短气泡自我介绍并请你纠正;未接 Gmail/Calendar 时会诚实说暂时没有邮件,并给出连接卡片。
官方怎么试
依赖:Docker、Bun 1.3+、Node(给 npx)、模型密钥、CopilotKit Intelligence 项目。在仓库根目录:
git clone https://github.com/CopilotKit/OpenDuet.git
cd OpenDuet
cp .env.example .env
bun install
npx --yes copilotkit@latest login
npx --yes copilotkit@latest project select
bun openbot/scripts/setup-learning.ts
project select 会写入 Intelligence 相关键;setup-learning.ts 把密钥对齐到服务读取的 INTELLIGENCE_API_KEY 并确保 Learning 容器存在。默认 Bot 模型在 openbot/examples/openduet/model.yaml(README 写 OpenAI gpt-5.6-terra),也可改成 Anthropic 等(设 BOT_PROVIDER / ANTHROPIC_API_KEY / BOT_MODEL)。然后:
bash scripts/start.sh
# 浏览器打开 http://localhost:3010
脚本拉起 Postgres、各 Bot 电脑、迁移、API、routine worker 与前端。停用 bash scripts/stop.sh。无 Google 账号时,README 提供 fake Google 演示路径(测试用发明收件箱);生产勿开。遥测可用 COPILOTKIT_TELEMETRY_DISABLED=true 或 DO_NOT_TRACK=1 关闭。定制产品名 / Bot / 频道 / 模型 / Skills:复制 openbot/examples/openduet,改 yaml,用 TENANT_PACKAGE_DIR 指过去。
和「只会聊天」差在哪
对话式助手的默认循环是:你说一句、它回一句。OpenDuet 多了三条腿。一是主动开口:早间简报和「建议接手」卡片在你没打字时就出现。二是空间分离:真正干活的电脑是独立容器,不占用你本机桌面;你去开会时它仍可在 Chromium 里点页面、在 /workspace 写文件。三是策略门:网关按规则拦住发送 / 付款 / 签名 / 删除,并留下审计,不把「记得要谨慎」交给模型临场发挥。
产品页演示叙事(厂商示例):早间简报标出周五发不出货的订单 → Agent 起草给客户的说明 → 你点一次 Allow 才真正发出。这和「模型直接 SMTP」不同:人始终握有外发开关。站点还强调:自托管时策略、审批、审计与保存的登录态落在你自己的 Postgres;线程与记忆在 Intelligence;模型你自选。
若你已有用 LangGraph / Mastra / CrewAI 等写好的 Agent,只要它讲 AG-UI,就可以接到同一套频道与审批壳上——OpenDuet 卖的是「主动 + 可控」的外壳,不是绑死某一个编排框架。
常见坑
- 没配 Intelligence 就启动。README 写明无密钥服务不起;先 login + project select + setup-learning。
- 把「配了 URL」当成 Ready。Setup 清单会真打模型与网络策略;休眠中的电脑显示 Not checked,要点「再检查」。
- 期望开箱即企业托管镜像。官方说 OpenDuet 专用镜像与托管指南尚未发布;今日支持路径是仓库 Quick start。Docker/Helm 文档部署的是纯 OpenBot 镜像。
- 跳过审批默认。对外消息与高风险动作设计为先问;在
/settings/approvals按团队策略收紧或放宽前,先跑通默认。
完成标准
- 能用自己的话讲清:简报、自有电脑、审批门、Intelligence / Postgres 分工。
- 对照 README 架构图,指出 AG-UI Agent 与网关的位置。
- 若本机具备 Docker / Bun,能按 Quick start 起服务并打开 localhost:3010 的 Setup 清单。
最后
OpenDuet 把「主动」落成可自托管的默认行为:先分流、再后台干、关键动作必问、密码不进模型上下文。要从模板改成自家助手,优先改 openbot/examples/openduet 那一包,而不是 fork 整棵 OpenBot 乱改。代码与说明见 CopilotKit/OpenDuet 与 产品页。