ConsensusWeaverAgent
by yecllsl
README.md
# ConsensusWeaverAgent
ConsensusWeaverAgent 是一个基于 MCP 协议的多 AI 平台答案聚合服务。它通过 Playwright 浏览器自动化,并行向 5 个中文 AI WebApp 提问,收集所有可用答案后由 TRAE 进行汇总、分析与共识提炼。
支持的 AI 平台:豆包、智谱清言、DeepSeek、千问、元宝。
## 核心功能
- **并行提问**:使用 `asyncio.gather` 同时向多个平台提问。
- **答案收集**:每个平台返回原始答案、元数据、截图和 HTML 片段。
- **登录状态管理**:每个平台使用独立的持久化用户数据目录,保持登录状态。
- **MCP 工具暴露**:提供 `ask_ai`、`list_platforms`、`check_login`、`capture_screenshot` 四个工具。
- **共识合成**:TRAE 读取成功平台的答案,提炼共识、标注分歧、补充独立观点。
## 架构
```
mcp_server.py → PlatformManager → BrowserPool
→ DoubaoAdapter
→ ChatGLMAdapter
→ DeepSeekAdapter
→ QianwenAdapter
→ YuanbaoAdapter
```
- `adapters/`:各平台适配器,封装导航、登录检查、提问、等待、截图、开新对话逻辑。
- `core/`:配置加载、浏览器池、平台管理器。
- `mcp_server.py`:FastMCP 入口,暴露工具。
## 安装
```powershell
pip install -r requirements.txt
python -m playwright install chromium
```
运行时需要在项目根目录放置 `config.yaml`。
## 运行
```powershell
python mcp_server.py
```
## 测试
```powershell
# 全部测试
python -m pytest
# 仅单元测试(不启动浏览器)
python -m pytest -m "not slow and not integration and not e2e"
# 单个文件
python -m pytest tests/unit/test_config.py -v
```
## MCP 工具
| 工具 | 说明 |
| --- | --- |
| `ask_ai` | 并行提问,返回各平台结果与汇总 |
| `list_platforms` | 列出支持的 AI 平台及状态 |
| `check_login` | 检查/等待平台登录状态 |
| `capture_screenshot` | 对指定平台当前页面截图 |
## 配置
`config.yaml` 示例:
```yaml
browser:
headless: false
viewport_width: 1280
viewport_height: 800
platforms:
doubao: { enabled: true, name: "豆包", base_url: "https://www.doubao.com" }
chatglm: { enabled: true, name: "智谱清言", base_url: "https://chatglm.cn" }
deepseek: { enabled: true, name: "DeepSeek", base_url: "https://chat.deepseek.com" }
qianwen: { enabled: true, name: "千问", base_url: "https://qianwen.com/chat" }
yuanbao: { enabled: true, name: "元宝", base_url: "https://yuanbao.tencent.com/chat" }
defaults:
timeout: 120
min_success: 3
max_concurrent: 5
```
## 在 Trae 中使用
本项目既可以通过 **MCP Server** 被任意 Agent 调用,也提供了 **ConsensusWeaver Skill** 供 TRAE 直接触发,实现“用户提问 → 并行询问多个 AI → TRAE 合成共识答案”的完整工作流。
### 1. 启动 MCP Server
```powershell
python mcp_server.py
```
MCP Server 启动后会暴露 `ask_ai`、`list_platforms`、`check_login`、`capture_screenshot` 四个工具。
### 2. 在 Trae 中注册 MCP Server
在 Trae 的 MCP 配置中添加 ConsensusWeaver,例如:
```json
{
"mcpServers": {
"ConsensusWeaver": {
"command": "python",
"args": [
"%项目所在目录%/ConsensusWeaverAgent/mcp_server.py"
],
"env": {}
}
}
}
```
路径请替换为你本地克隆后的实际位置。
### 3. 安装 ConsensusWeaver Skill
将本仓库中的 Skill 文件:
```
.trae/skills/consensusweaver/SKILL.md
```
复制到 Trae 的 skills 目录下(如 `.trae/skills/consensusweaver/SKILL.md`),使 TRAE 能够识别并触发该 skill。
### 4. 使用工作流
当用户在 Trae 中提出需要多角度参考的问题时:
1. TRAE 自动触发 `ConsensusWeaver` skill。
2. Skill 调用 MCP 的 `ask_ai`,默认同时向 5 个平台提问,最少 3 个成功即进入汇总。
3. TRAE 读取 `results` 中 `status` 为 `success` 的答案。
4. TRAE 提炼共识、保留互补观点、标注分歧,并说明失败平台原因。
典型触发问题:
- “如何学习 Python?请给出不同角度的建议。”
- “比较 Vue 和 React 的适用场景。”
- “用 ConsensusWeaver 问一下:未来火星移民最先要解决哪些问题?”
## 目录结构
```
.
├── adapters/ # 平台适配器
├── core/ # 浏览器池、平台管理器、配置
├── tests/ # 单元/集成/E2E 测试
├── scripts/ # 调试与测试脚本
├── .trae/skills/ # Trae Skill 定义
├── data/ # 用户数据、截图、日志、测试报告
├── mcp_server.py # MCP 入口
├── config.yaml # 配置文件
└── requirements.txt # Python 依赖
```
## 许可
MIT
This server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessNo issues