Skip to content

Lay-quq/councilforge

Repository files navigation

CouncilForge

把复杂问题交给一场可追溯、可投票、可复盘的 AI 审议。

CouncilForge 不是“让一个模型给答案”的聊天工具,而是一座为复杂问题搭建的 AI 审议厅。它可以让多个模型或多个差异化代理围绕同一个议案展开交叉对话、质询、反驳和复议:有人代表风险控制,有人代表增长机会,有人坚持证据标准,有人专门寻找反例。每一轮讨论都会推动观点碰撞和立场更新,最终通过密封投票确定集体判断,并生成一份能够追溯到代理发言、证据来源、投票理由和结论形成过程的决策报告。

CouncilForge 工作台

它解决了什么

  • 多代理不是角色扮演:系统按利益主体、风险偏好、证据标准、决策指标和反转条件生成差异化代理。
  • 审议有过程:默认 6 名议员、1 名议长、3 轮审议,每轮有明确目标和上下文边界。
  • 上下文隔离:每个代理拥有独立上下文快照,避免共享聊天记录导致观点快速同质化。
  • 密封投票:投票期间不可提前查看票向,完成后统一揭票并生成可审计记录。
  • 成本可见:按阶段展示模型调用次数、token 和预算消耗,超过预算前暂停。
  • 真实模型接入:支持 OpenAI-compatible、DeepSeek、通义千问 / DashScope、Moonshot / Kimi、智谱 GLM、Anthropic Claude 和自定义网关。
  • 可部署:Docker Compose 包含 PostgreSQL、Redis、MinIO、FastAPI、Celery Worker、Next.js 和 Nginx。

一次完整会议

提出问题
→ 生成标准议案
→ 用户确认议案
→ 上传文件或补充证据
→ 生成差异化代理
→ 多轮审议与交叉质询
→ 用户中途干预
→ 密封投票
→ 统一揭票
→ 生成最终报告
→ 查看完整回放

技术栈

技术
前端 Next.js 16、React 19、Tailwind CSS、lucide-react
后端 FastAPI、SQLAlchemy、Pydantic Settings、httpx
异步任务 Celery、Redis
数据与文件 PostgreSQL、SQLite 本地开发、MinIO、后端文件存储
部署 Docker Compose、Nginx、健康检查、备份与恢复脚本
测试 Pytest、Next production build、GitHub Actions CI

本地启动

Copy-Item -LiteralPath .env.example -Destination .env -Force
docker compose up --build

访问:

默认 USE_MOCK_MODEL=false,需要在“模型连接”页接入真实模型 API Key,或在服务器环境变量中配置模型供应商。浏览器不会直连模型供应商,API Key 只发送到后端,加密保存,并只向前端展示末四位。

开发调试如需离线跑通流程,可以临时设置:

USE_MOCK_MODEL=true

生产环境不要开启 mock 模型。

生产部署

生产部署前复制并修改 .env

Copy-Item -LiteralPath .env.example -Destination .env -Force

至少修改:

ENVIRONMENT=production
USE_MOCK_MODEL=false
JWT_SECRET=replace-with-at-least-32-random-characters
POSTGRES_PASSWORD=replace-with-strong-password
POSTGRES_APP_PASSWORD=replace-with-strong-password
MINIO_ROOT_PASSWORD=replace-with-strong-password
CORS_ORIGINS=["https://your-domain.example"]

生产启动时,如果 JWT_SECRET 仍是默认值、USE_MOCK_MODEL=trueDATABASE_URL 使用 SQLite,后端会拒绝启动。

docker compose up -d --build
docker compose ps
Invoke-WebRequest http://localhost/api/health

Compose 已包含:

  • PostgreSQL、Redis、MinIO、API、Worker、Web、Nginx;
  • 服务健康检查和异常重启;
  • 基础 CPU / 内存限制;
  • 日志大小和保留数量限制;
  • 固定主版本镜像,不依赖 latest
  • 数据库迁移、备份、恢复和健康探针脚本。

模型连接

内置供应商预设:

  • OpenAI:https://api.openai.com/v1
  • DeepSeek:https://api.deepseek.com
  • 通义千问 / DashScope:https://dashscope.aliyuncs.com/compatible-mode/v1
  • Moonshot / Kimi:https://api.moonshot.cn/v1
  • 智谱 GLM:https://open.bigmodel.cn/api/paas/v4
  • Anthropic Claude:https://api.anthropic.com/v1
  • 自定义 OpenAI-compatible 网关

如果供应商不稳定支持 /models,可以手动填写模型 ID。保存时后端会用该模型发起一次真实探测请求,探测失败不会保存连接。

验证

后端:

cd backend
pytest
pytest tests/test_standard_meeting_soak.py

前端:

cd frontend
npm install
npm run build

本仓库包含 GitHub Actions:每次 push 到 main 或提交 PR 时,会运行后端测试和前端生产构建。

关键端点

  • POST /api/model-connections/test
  • POST /api/model-connections
  • POST /api/model-connections/{id}/refresh-models
  • POST /api/model-connections/{id}/probe
  • POST /api/sessions
  • POST /api/sessions/{id}/frame-motion
  • POST /api/sessions/{id}/confirm-motion
  • POST /api/sessions/{id}/evidence
  • POST /api/sessions/{id}/generate-roster
  • POST /api/sessions/{id}/rounds/start
  • POST /api/sessions/{id}/interventions
  • POST /api/sessions/{id}/close-debate
  • POST /api/sessions/{id}/vote
  • GET /api/sessions/{id}/votes
  • GET /api/sessions/{id}/report
  • GET /api/sessions/{id}/replay

运维脚本

sh infra/migrate.sh
sh infra/healthcheck.sh
sh infra/backup.sh
sh infra/restore.sh backups/20260101T000000Z

项目状态

CouncilForge 目前适合作为可运行的产品原型和工程底座继续迭代。核心审议闭环、模型连接、密封投票、报告生成、回放、Docker Compose 部署和测试基线已经具备;更高强度的生产上线仍应继续补充长期压测、权限审计、监控告警和真实用户试运行。

路线图

  • 更细粒度的证据引用校验和报告事实追溯;
  • 更丰富的代理差异度评分和自动修复;
  • SSE 断线续传和后台任务进度事件;
  • 多组织管理、审计面板和分享权限;
  • 更多报告导出格式和会议模板;
  • 生产级监控、告警和备份恢复演练。

About

AI parliament workbench for traceable multi-agent deliberation, sealed voting, and auditable reports

Resources

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors