多 AI 协作需求推演与开发文档生成系统 — 让多个 AI 帮你想清楚再动手
獬豸是一个让多个 AI 进行辩论博弈的系统。当你有一个技术方案设想时,可以让多个 AI(如 DeepSeek、Kimi、Qwen、Claude 等)互相辩论、质疑、完善,最终形成可靠的开发文档。
核心价值: 单一 AI 容易进入思维死胡同,多个 AI 互相辩论可以发现方案漏洞、从不同角度完善设计、在分歧时由人类裁决、自动生成完整开发文档。
用户输入需求
↓
阶段1: 需求扩展(Q&A 式多轮对话,最多5轮,可一键跳过)
↓
阶段2: 群聊讨论(Leader 主持式对话)
├─ 整体架构讨论(Leader 提出方案,全员回应)
├─ 提取关键问题 → 创建子单元
├─ 子单元讨论(每个最多5轮,跨轮次累积上下文)
│ └─ 每轮:Leader综合 → 讨论者回应 → Leader再综合
├─ 每个子单元结束后 Leader 输出结论总结
└─ 全部完成后 Leader 输出技术决策总结
↓
阶段3: 文档生成
├─ AI 动态规划需要哪些文档(按项目类型裁剪)
├─ 逐个生成(支持断点续传)
└─ 进度显示 (1/N)
↓
阶段4: 全局文档审查(结果可见于讨论区)
├─ 一次性审查所有文档(质量 + 跨文档一致性 + 需求覆盖度)
└─ 发现问题自动修正
↓
阶段5: 用户确认 / 优化迭代
├─ 局部优化:选中文档 + 反馈 → 优化 → 级联更新相关文档
├─ 全局一致性检查:检测跨文档矛盾 → 自动修正
└─ 用户满意后点击「完成项目」
每个子单元的讨论采用 Leader 主持式对话:
- Leader 提出方案:从架构角度给出初步框架
- 讨论者回应:针对 Leader 和彼此的观点提出看法(同意/反对/补充)
- Leader 综合:提炼共识点和分歧点,推进讨论
- 讨论者再回应:针对 Leader 综合后的方案继续讨论
- Leader 总结:输出该单元的最终技术决策
所有发言者都能看到之前所有轮次的完整发言内容,形成真正的多轮对话。
| 层级 | 技术 |
|---|---|
| 后端 | Python 3.11+ / FastAPI / SQLAlchemy / SQLite (WAL) |
| 前端 | Vue 3 / TailwindCSS / Vite |
| 通信 | WebSocket(全双工实时)/ REST API |
| AI 集成 | DeepSeek / Kimi / Qwen / GLM / Gemini / Claude / GPT / Claude Code / Codex |
- Python 3.11+
- Node.js 18+
- npm 8+
cd backend
pip install -r requirements.txt
python init_db.py # 首次运行:初始化空数据库
python main.py
# 服务启动在 http://localhost:8777
# API 文档: http://localhost:8777/docscd frontend
npm install
npm run dev
# 访问 http://localhost:3000| 提供商 | 默认模型 | 获取 API Key |
|---|---|---|
| DeepSeek | deepseek-chat | platform.deepseek.com |
| Kimi | kimi-k2.5 | platform.moonshot.cn |
| Qwen | qwen-turbo | dashscope.console.aliyun.com |
| GLM | glm-4-flash | open.bigmodel.cn |
| Gemini | gemini-pro | makersuite.google.com |
| Claude | claude-3-sonnet | console.anthropic.com |
| GPT | gpt-4o-mini | platform.openai.com |
| 自定义 | 用户指定 | 任何 OpenAI 兼容 API |
| 提供商 | 安装命令 |
|---|---|
| Claude Code | npm install -g @anthropic-ai/claude-code |
| Codex | npm install -g @openai/codex |
同一项目中不能使用两个相同的 AI 提供商,防止幻觉知识局限。
- Leader AI 通过选项式问答明确需求(最多 5 轮)
- 自动生成结构化需求描述
- 用户可审阅修改或一键跳过
- Leader 主持式多轮对话(跨轮次累积上下文)
- 自动提取关键问题并创建子讨论单元
- 每个子单元独立讨论(最多 5 轮),Leader 可提前结束
- 讨论结束后 Leader 输出技术决策总结
- 支持单元级重新开始/继续(中途退出可恢复)
- 基于需求文档 + Leader 技术决策总结生成 6 种文档
- AI 审查每份文档的功能覆盖度、技术一致性、可行性
- 发现问题自动修正
- 局部优化:选中文档 + 用户反馈 → 优化 → 自动级联更新相关文档
- 全局一致性检查:检测跨文档矛盾(接口/数据模型/技术选型)→ 自动修正
- 瞬态网络错误自动重试 3 次(指数退避 1s/2s/4s)
- 重试用尽后前端显示「重新分析/跳过」按钮
- 失败不消耗讨论轮次
- 文档审查失败不阻塞主流程
- 每个讨论单元支持独立「重新开始」或「继续」
- 中途退出后可从断点恢复讨论
- 文档生成支持断点续传(已生成的不重复)
| 方法 | 路径 | 说明 |
|---|---|---|
POST |
/api/projects |
创建项目 |
GET |
/api/projects |
获取项目列表 |
GET |
/api/projects/{id} |
获取项目详情 |
DELETE |
/api/projects/{id} |
删除项目 |
POST |
/api/projects/{id}/start |
开始项目流程 |
POST |
/api/projects/{id}/restart |
重置项目 |
POST |
/api/projects/{id}/restart-phase |
重启当前阶段 |
POST |
/api/projects/{id}/resume |
继续下一阶段 |
POST |
/api/projects/{id}/pause |
暂停项目 |
POST |
/api/projects/{id}/providers |
添加 AI 提供商 |
GET |
/api/projects/{id}/providers |
获取 AI 提供商列表 |
GET |
/api/projects/{id}/units |
获取讨论单元 |
GET |
/api/projects/{id}/documents |
获取生成的文档 |
POST |
/api/projects/{id}/units/{uid}/resolve |
人类介入裁决 |
POST |
/api/projects/{id}/units/{uid}/restart-discussion |
重新开始单元讨论 |
POST |
/api/projects/{id}/units/{uid}/continue-discussion |
继续单元讨论 |
POST |
/api/projects/{id}/optimize-doc |
局部优化文档 |
POST |
/api/projects/{id}/global-optimize |
全局一致性检查 |
POST |
/api/projects/{id}/retry-ai |
重试失败的 AI 调用 |
POST |
/api/projects/{id}/skip-ai |
跳过失败的 AI 调用 |
GET |
/api/projects/{id}/tokens |
获取 Token 统计 |
GET |
/api/tokens/global |
获取全局 Token 统计 |
POST |
/api/providers/test |
测试 AI 提供商连通性 |
| 路径 | 说明 |
|---|---|
WS /ws/projects/{id} |
全双工实时通信(流式输出、状态变更、用户干预) |
SQLite + WAL 模式,6 张表:
| 表名 | 说明 |
|---|---|
projects |
项目总览(名称、需求、状态) |
ai_providers |
AI 提供商配置(类型、Key、模型、角色) |
discussion_units |
讨论单元(树形结构,parent_id 自引用) |
discussion_logs |
讨论记录(每条发言、Token 统计) |
generated_documents |
生成的文档(6 种类型、版本管理) |
token_usage |
Token 消耗统计 |
2026Xiezhi/
├── backend/
│ ├── ai_providers/ # AI 适配器层
│ │ ├── base.py # 抽象基类 + 工厂
│ │ ├── api_providers.py # API 模式(7 家 + 自定义)
│ │ ├── cli_providers.py # CLI 模式(Claude Code / Codex)
│ │ └── env_detector.py # CLI 环境检测
│ ├── api/
│ │ ├── projects.py # REST API 路由
│ │ └── websocket.py # WebSocket 处理 + 广播函数
│ ├── prompts/
│ │ ├── requirement_prompts.py # 需求扩展 prompt
│ │ ├── document_prompts.py # 文档生成/审查/优化 prompt
│ │ └── discussion_prompts.py # 讨论/共识/总结 prompt
│ ├── database.py # SQLAlchemy 连接 + WAL
│ ├── models.py # ORM 模型
│ ├── graph.py # 工作流引擎(核心)
│ ├── main.py # FastAPI 入口
│ └── requirements.txt
├── frontend/
│ ├── src/
│ │ ├── components/
│ │ │ ├── AppHeader.vue
│ │ │ ├── CreateProjectModal.vue
│ │ │ ├── DiscussionPanel.vue
│ │ │ ├── ProjectSidebar.vue
│ │ │ └── ProviderConfigModal.vue
│ │ ├── composables/
│ │ │ ├── useHelpers.js
│ │ │ ├── useProject.js
│ │ │ └── useWebSocket.js
│ │ ├── views/
│ │ │ ├── HomeView.vue
│ │ │ └── ProjectView.vue
│ │ ├── App.vue
│ │ └── main.js
│ ├── package.json
│ └── vite.config.js
└── README.md
┌─────────────────────────────────────────────────────────────┐
│ 前端 (Vue 3 + TailwindCSS) │
├──────────────────────┬──────────────────────────────────────┤
│ 讨论单元树 │ 讨论区 / 文档预览 │
│ - 状态可视化 │ - Leader 主持式对话流 │
│ - 单元级操作 │ - 流式打字机效果 │
│ - 文档列表 │ - 局部优化输入 │
├──────────────────────┴──────────────────────────────────────┤
│ 控制台 │
│ - 进度指示 - 阶段按钮 - AI 失败重试 │
└─────────────────────────────────────────────────────────────┘
│ WebSocket
▼
┌─────────────────────────────────────────────────────────────┐
│ 后端 (FastAPI :8777) │
├─────────────────────────────────────────────────────────────┤
│ REST API │ WebSocket │
├─────────────────────────────────────────────────────────────┤
│ 工作流引擎 (graph.py) │
│ 需求扩展 → Leader主持讨论 → 技术决策总结 │
│ → 文档生成 → AI审查 → 局部/全局优化 │
├─────────────────────────────────────────────────────────────┤
│ AI 适配器层 │
│ API: DeepSeek, Kimi, Qwen, GLM, Gemini, Claude, GPT │
│ CLI: Claude Code, Codex │
│ 容错: 自动重试 + 用户决策 │
├─────────────────────────────────────────────────────────────┤
│ 数据库 (SQLite WAL) │
└─────────────────────────────────────────────────────────────┘
| 变量名 | 说明 | 默认值 |
|---|---|---|
CORS_ORIGINS |
允许的 CORS 来源(逗号分隔) | http://localhost:3000,http://127.0.0.1:3000 |
CLAUDE_CODE_GIT_BASH_PATH |
Claude Code 需要的 git-bash 路径 | 自动检测 |
- CORS 限制允许的来源域名
- CLI 命令使用参数化执行,避免注入
- API Key 不暴露在日志或响应中
- 路径自动检测,不硬编码用户路径
生产环境建议:配置 HTTPS、限制 CORS、使用防火墙或认证机制。
MIT License