一个基于 Flutter + Firebase 构建的多智能体讨论平台
创建群组,配置多个具有不同人格和专业背景的 AI Agent,让它们围绕同一个话题展开多轮辩论,最终由主持人 Agent 综合各方观点给出结论。
- 邀请码系统:每个群组拥有唯一的 6 位邀请码,一键分享即可邀请他人加入
- 权限管理:群主拥有完整管理权限,成员可参与讨论和配置 Agent
- 实时同步:基于 Firestore 实时流,群组成员、会话、消息状态毫秒级同步
- 多提供商支持:Kimi(Moonshot)、DeepSeek、豆包(火山引擎)、通义千问(阿里云)
- 独立配置:每个 Agent 独立配置人格、模型、API Key,互不干扰
- 预设模板:提供 5 种推荐人格模板(理性分析师、创意先锋、批判者、实用主义者、人文关怀者)
- 灵活选择:每位成员可独立勾选参与讨论的 Agent
- 顺序模式:Agent 依次发言,支持 1-5 轮可调辩论,每轮基于上下文生成针对性反驳或补充
- 并发模式:所有 Agent 同时独立回答,快速收集多元视角
- 结论阶段:顺序模式专属,每个 Agent 给出最终立场,由中立主持人综合生成全面结论
- @ 提及系统:
@AgentName定向触发特定 Agent 回复@用户名自动注入该用户最近 3 条发言作为上下文
- 回复归因:Agent 回复若主要针对某人,自动标注并展示引用关系
- 流式输出:所有 AI 回复实时流式渲染,逐字显示
- 随时停止:讨论进行中可随时中断
- 多会话支持:群主可创建多个讨论会话,独立保存消息记录
- 智能标题:会话标题自动取第一条消息前 20 字
- 自动摘要:10 条消息后自动生成摘要,用于长对话上下文压缩
- 导出功能:支持导出对话为 Markdown 文件
- Web、iOS、Android 三端一致体验
- 深色/浅色主题自由切换
- 中英文界面无缝切换
- Flutter SDK
^3.10 - Firebase 项目(已启用 Authentication 和 Firestore)
- 至少一个支持的 LLM 提供商 API Key
git clone https://github.com/yourusername/multi_agent_chat.git
cd multi_agent_chat
flutter pub get- 在 Firebase Console 创建项目
- 启用 Email/Password 登录方式
- 创建 Firestore Database
- 运行以下命令生成 Firebase 配置文件:
flutterfire configure在 Firebase Console 的 Firestore 规则页面添加以下规则:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /groups/{groupId} {
allow read: if request.auth != null
&& request.auth.uid in resource.data.memberUids;
allow create: if request.auth != null;
allow update: if request.auth != null
&& request.auth.uid in resource.data.memberUids;
allow delete: if request.auth != null
&& request.auth.uid == resource.data.leaderUid;
}
match /agents/{agentId} {
allow read, write: if request.auth != null;
}
match /sessions/{sessionId} {
allow read, write: if request.auth != null;
}
match /messages/{messageId} {
allow read, write: if request.auth != null;
}
match /users/{userId} {
allow read, write: if request.auth != null;
}
}
}规则说明:
groups集合:成员可读写,仅群主可删除agents、sessions、messages、users集合:所有认证用户可读写- 所有集合均为顶级集合,非子集合
# Web
flutter run -d chrome
# iOS
flutter run -d ios
# Android
flutter run -d android使用 Provider 模式,全局注册 5 个 ChangeNotifier:
| Provider | 职责 |
|---|---|
AuthService |
Firebase Auth 状态监听与用户认证 |
ChatService |
讨论引擎核心:消息、会话、Agent 管理、LLM 调用编排 |
GroupService |
群组 CRUD、邀请码生成、成员管理、设置同步 |
LocaleService |
国际化字符串管理(中英文切换) |
ThemeService |
深色/浅色主题切换 |
- Firebase Firestore:云端数据存储,支持实时同步
- 数据模型:
groups:群组元数据、成员列表、设置agents:Agent 配置(人格、提供商、API Key)sessions:讨论会话、摘要messages:消息记录、回复关系users:用户配置
支持 OpenAI 兼容格式的 SSE 流式请求:
| 提供商 | 端点 |
|---|---|
| Kimi (Moonshot) | api.moonshot.cn/v1 |
| DeepSeek | api.deepseek.com |
| 豆包 (火山引擎) | ark.cn-beijing.volces.com/api/v3 |
| 通义千问 (阿里云) | dashscope.aliyuncs.com/compatible-mode/v1 |
每个 Agent 携带独立 API Key,调用时直接使用,无共享密钥风险。
采用滑动窗口策略:
- 注入会话摘要(如有)作为 system 消息
- 注入最近 6 条消息作为对话历史
- 注入当前轮次完整讨论积累作为 user prompt
| 类别 | 技术 |
|---|---|
| 前端框架 | Flutter 3.10+ |
| 状态管理 | Provider |
| 后端服务 | Firebase (Auth + Firestore) |
| LLM 提供商 | Kimi / DeepSeek / 豆包 / 通义千问 |
| Markdown 渲染 | flutter_markdown |
| 本地存储 | shared_preferences, sqflite |
| 网络请求 | http (SSE 流式) |
| 国际化 | 自建 LocaleService |
| 动画 | flutter_animate |
flutter build web
# 将 build/web 目录部署到 Firebase Hosting 或其他静态托管服务flutter build ios --release
# 使用 Xcode 进行进一步配置和上传到 App Storeflutter build appbundle --release
# 上传 .aab 文件到 Google Play Console欢迎贡献代码、报告问题或提出新功能建议!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'feat: 添加某个功能') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
本项目采用 MIT 许可证 - 详见 LICENSE 文件
- 项目主页:GitHub Repository
- 问题反馈:Issues
用 Flutter 构建 ❤️