Open Duet
Open Duet 是开源、可自托管的 AI 同事工作区,也是 Claude Duet 等付费 AI 代理产品的替代方案。它为具名代理提供指令、记忆、例行任务和独立隔离计算机,并在执行高风险操作前请求你批准,数据与凭据保留在自己的机器或服务器上。
访问 Anil-matcha/open-duet项目简介
Open Duet 是开源、可自托管的具名 AI 同事工作区。每个代理可以拥有岗位、指令、记忆、工作区和隔离计算机、日程安排,以及在高风险操作前等待人工批准的步骤。用户可通过浏览器、桌面应用或 Telegram 与代理交互,数据和凭据保留在自己的机器或服务器上。它被定位为 Claude Duet 及其他付费 AI 代理产品的替代方案,但尚不是这些产品的功能对等功能替代品。
核心功能
- 具名代理带有标题、指令、引擎和模型、工作区文件夹、审批模式和备注,并可导出和导入为可移植文件。
- 每个代理保存记忆备注,这些备注会载入对话,支持跨对话回忆和撤销。
- 例行任务支持 cron、工作日、间隔、一次性及 webhook 日程,并带时区、运行历史、错过运行跟踪、重启恢复和应用内通知;例行任务不会自行批准操作。
- 审批模式包括先询问、接受编辑和计划,并提供保存的规则、决策日志、安全底线,以及对高风险操作的允许或拒绝。
- 可选地为代理提供隔离的 Docker 容器作为其自己的计算机,使其命令和文件编辑在该容器中运行,而不是在主机上运行;该功能标记为实验性。
- 支持 Claude、Codex、Agent Client Protocol CLI 和 OpenAI 兼容端点等多种引擎,并具备限额感知回退;网页、桌面应用和 Telegram 机器人共用一个 API。
适用场景
- 希望自托管 AI 同事、同时将数据和凭据控制在自己手中的个人和小团队。
- 通过具名代理和计划例行任务处理重复性的研究、报告、支持分流或其他委托工作。
- 需要代理在隔离容器中读写文件或运行命令,并在高风险操作前获得人工批准的场景。
- 从浏览器、桌面应用或 Telegram 访问代理和例行任务,包括通过手机访问服务器上托管的代理。
快速开始
- 桌面应用:克隆仓库,进入 desktop 文件夹并运行 npm run app;它会完成首次设置、在需要时构建并打开 Open Duet,使用本地 SQLite 和操作系统密钥存储。
- 服务器:使用 python -m app.server、Docker 镜像和 compose 文件、doctor、backup 和 restore,并遵循自托管指南;引擎必须在服务器上登录。
- 开发环境:从仓库根目录运行 scripts/dev.sh,准备配置,在选择 PostgreSQL 时通过 Docker 启动它,安装依赖,运行迁移,并启动 FastAPI、可选的 Telegram 机器人和网页界面。
- 创建或与代理聊天前,请在设置中确认至少一个已登录引擎已就绪。
部署与要求
- 至少一个就绪引擎:已登录的 Claude Code 或 Codex CLI、Agent Client Protocol CLI,或 OpenAI 兼容端点。
- 桌面应用:Node.js 22 及以上、uv 和本地 SQLite;无需 .env 文件,加密密钥保存在操作系统的密钥存储中。
- 服务器:Linux、域名、Docker 或 Node.js 与 uv、服务器上已登录的引擎,以及通过 nginx 或 Caddy 提供的 HTTPS;认证为单所有者模式。
- 开发环境:uv、Node.js 20.9 及以上和 npm、用于 PostgreSQL 的 Docker,除非使用实验性 SQLite,以及运行 scripts/dev.sh 所需的 Bash;Boat 和 Telegram 为可选,并需要各自的凭据。
- 代理在服务器或开发环境中需要 LOCAL_EXECUTION_ENABLED=true;文件编辑和命令还需要 LOCAL_TOOLS_ENABLED=true,且仍会请求批准。
采用前须知
- 许可证:Apache-2.0。在使用、修改或分发项目前,请确认其具体条款。