后台驱动的多智能体讨论平台。讨论运行在后台,WebUI 仅作交互窗口;关闭浏览器讨论照常进行。
docker run -d --name roundtable -p 3001:3001 \
-v roundtable-data:/data \
-e DEEPSEEK_API_KEY=sk-... \
-e OIDC_ISSUER=https://your-sso.example.com \
-e OIDC_CLIENT_ID=... \
-e OIDC_CLIENT_SECRET=... \
-e PUBLIC_BASE_URL=http://localhost:3001 \
-e SESSION_SECRET="$(openssl rand -base64 48)" \
ghcr.io/greatbody/roundtable:latest镜像支持 linux/amd64 + linux/arm64,约 103 MB。
更推荐使用 docker-compose/ 目录里的 compose 模板,自带 named volume、healthcheck 和
.env模板。
- 讨论组(Group) = agent 身份模板集合(无数据)
- 会话(Conversation) = 实例化的话题,独立 event_log,多 conversation 互相隔离
- AgentInstance = agent 在某个 conversation 内的活体,独立 working_memory
- Pub-Sub 群聊语义 = 一个事件总线,agent 订阅,自决发言
- 自决发言 = agent 看自己上下文,输出
{speak: false}或{speak: true, content, address?} - 沉默不入 channel = 沉默响应不会触发其他 agent 的连锁反应
- 思考风暴抑制 = debounce + cooldown + 动态 cooldown + 并发上限
- 缓存友好 = 稳定前缀 + 不可变 event + digest 分段冻结
- Provider 抽象 = MVP 接入 DeepSeek,可扩展 OpenAI/Anthropic/Gemini
- 软删除 = 删除 agent 不影响历史 conversation
详细规则见 REQUIREMENTS.md。
# 安装依赖
bun install
# 配置环境变量
cp .env.example .env
# 编辑 .env,填写:
# - DEEPSEEK_API_KEY (LLM 全局共享)
# - OIDC_ISSUER (默认 https://sso.sunrui.ink)
# - OIDC_CLIENT_ID (在 Rauthy 后台创建 confidential client 后获取)
# - OIDC_CLIENT_SECRET
# - PUBLIC_BASE_URL (默认 http://localhost:3001)
# - SESSION_SECRET (openssl rand -base64 48)
# 启动
bun run dev浏览器访问 http://localhost:3001 — 未登录会被重定向到 SSO 登录页。
- 通过 Rauthy OIDC 完成 SSO
- 流程:OIDC Authorization Code + PKCE,server-side 兑换,HTTP-only Cookie 会话(默认 30 天滚动)
- 数据完全隔离:每个
group/agent/conversation都有owner_id,用户只能看到/操作自己的资源 DEEPSEEK_API_KEY全局共享(服务端持有)
- 登录 Rauthy 管理后台
- 创建 Confidential Client
- Redirect URI 填
{PUBLIC_BASE_URL}/auth/callback(默认http://localhost:3001/auth/callback) - 启用 PKCE (S256),Grant Type 选
authorization_code - 把 client_id / client_secret 填入
.env
src/
core/ # 业务核心:类型、存储、event bus、调度、压缩、渲染
providers/ # LLM provider 抽象与适配器
auth/ # OIDC 客户端、会话、登录路由
api/ # HTTP + SSE
web/ # 极简 WebUI(无框架)
index.ts # 入口
data/ # SQLite 数据库(自动创建)
首次创建讨论组时,对话框会预填一个示例 group("产品评审组"),含产品经理 / 工程师 / 设计师三位 agent,可直接基于它创建会话开聊。
MIT — 详见 LICENSE。