kgoedecke/doop
效率与系统工具一个多人设计画布,人类与 AI 代理通过 MCP 实时共同编辑 HTML 画面。
项目介绍
Doop 是一个可自托管的多人在线设计画布,面向两类协作者:浏览器中的人和通过 MCP 接入的 AI 代理。画布(/c/<id>)由若干 Frame 组成,每个 Frame 在沙箱 iframe 中渲染真实 HTML。人在浏览器里绘制、通过检查器改 HTML、评论和做原型;代理通过内置 MCP 服务器创建 Frame、流式写入 HTML,并以自己的光标和状态出现在画布上。
任意 MCP 客户端都能接入——Claude Code、Codex、ChatGPT、Cursor 等——代理以批准它的账户身份行事,继承该账户的画布权限。Doop 还内置一个代理,会自动接走看板卡片和 @mention 评论,专业角色定义在 shared/agents.ts。
除代理编辑外,编辑器还覆盖评论与提及、PNG/JPG/PDF 导出、网站/运行中应用/GitHub 仓库导入、ready_for_dev 审批状态、可点击原型、Linear 与 Slack 集成、定时自动化以及 REST API。ios/ 下有一个 SwiftUI iPhone/iPad 客户端,用 Blitz 引擎渲染 Frame,仍处于开发中。
托管版本在 doop.design,自托管运行的是同一套代码。
快速使用
需要 bun 和 PATH 中的 Node(打包 Claude Desktop 扩展时会用到)。
git clone https://github.com/kgoedecke/doop && cd doop
bun install
bun run dev
执行后 Web 应用在 http://localhost:4300,API、WebSocket 和 MCP 服务器在其后的 4400 端口(Web 端口代理 /api、/ws、/mcp 等路径)。无需任何配置即可启动:数据写入 data/pg 下的嵌入式 PGlite,可选集成的环境变量未设置前保持不启用,完整清单见 .env.example。
把 Claude Code 这类 MCP 客户端接到本地实例:
claude mcp add --transport http doop http://localhost:4300/mcp
命令会打开 MCP OAuth 流程,在浏览器中批准后,让代理处理应用顶栏显示的画布 ID。通用 MCP 客户端使用同一个地址:{ "mcpServers": { "doop": { "type": "http", "url": "http://localhost:4300/mcp" } } }。
生产环境可直接构建单服务器镜像,或使用仓库自带的 Docker Compose:
BETTER_AUTH_SECRET=$(openssl rand -hex 32) docker compose up -d
两种方式都监听 4400 端口。正式部署应设置真实的 DATABASE_URL、BETTER_AUTH_SECRET 和 BETTER_AUTH_URL,并可用 GET /healthz 做健康检查。
使用约束
- 数据库:嵌入式 PGlite 是单进程方案,只适合挂载
/app/data持久卷的单实例;正式部署应把DATABASE_URL指向 Postgres。 - 代理接入:
/mcp端点要求 OAuth(无头客户端可在 Settings → Agent keys 生成 agent key)。代理继承批准账户的画布权限,吊销 key 即断开。 - 内置 Doop Agent:首次画布的欢迎演示是脚本化的(
server/demo.ts),无需配置;真正的常驻代理需要用户连接模型账户,或服务端设置ANTHROPIC_API_KEY且RESIDENT_TASK_LIMIT大于 0。免费任务次数有限,连接账户后从下一个任务起立即接管。 - 公网可达性:ChatGPT 和在线 Claude 连接器需要公网 HTTPS 服务器,
localhost要用桌面应用或隧道。 - 账户与管理员:Web 应用需要 better-auth 账户。生产环境通过
ADMIN_EMAILS提升管理员需要配置 SMTP;管理员身份本身不扩大画布访问范围。 - iOS 应用:开发中,验证状态和发布要求写在 iOS README 中,不作保证。
- 许可证:AGPL-3.0,可自托管和修改,但把修改版作为服务提供时须以同许可证公开改动;Doop 名称和标志是商标,衍生服务需改名。
HotRepo 点评
2026-11-02,该仓库在 TypeScript 日榜记录到 1509 星、当日新增 162 星,排名第 14。这只是一天的记录,说明一个 2026 年 8 月下旬创建的项目迎来了一波关注,不足以判断持续走势。
从设计上看它自洽:代理读写的是与人相同的 HTML Frame、审批状态和评论线程,权限控制在 server/access.ts 一处实现,API 与 MCP 共用。多个代理同时在线时实时协作是否稳定,现有资料没有给出依据,README 中的演示是唯一的佐证。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。