一个支持"模型自动处理 + 人工干预确认"的多模型协作系统,通过规划模型、人工反馈环节、执行模型、输出模型的协同,将用户输入的问题/需求转化为结构化处理流程,经人工确认后执行,最终生成符合预期的结果。
-
规划模型 (Planner Model)
- 智能分析用户需求,自动分解为可执行任务
- 生成有向无环图 (DAG) 形式的任务结构
- 支持任务依赖关系定义和优先级分配
-
人工反馈环节 (Human Feedback Interface)
- 可视化展示任务图,支持确认和修改
- 提供任务的增删改查操作
- 自动校验DAG无环性,防止循环依赖
-
执行模型 (Executor Model)
- 基于DAG的智能任务调度
- 支持串行和并行执行模式
- 集成MCP服务调用和本地计算
- 任务失败自动重试机制
-
输出模型 (Output Model)
- 智能整合多任务执行结果
- 自动检测和解决结果冲突
- 支持多种输出格式(文本、表格、报告等)
- 🤖 AI驱动: 使用大语言模型进行智能任务分解和结果整合
- 🔄 异步执行: 支持多任务并行处理,提高执行效率
- 💾 数据持久化: 使用SQLite存储会话历史和执行结果
- 🎛️ 可配置: 支持灵活的系统配置和MCP服务注册
- 📊 可视化: 基于Rich库的美观命令行界面
- 🔍 日志追踪: 完整的操作日志记录和错误追踪
- 🔌 MCP集成: 完整支持Model Context Protocol标准
- Python 3.11+
- ModelScope API 密钥(推荐)或 OpenAI 兼容 API 密钥
- 支持 uv(可选,用于更快的依赖安装)
- 克隆项目
git clone <repository-url>
cd MPEO- 安装依赖
pip install -e .
# 或者使用 uv (如果可用)
uv pip install -e .- 配置环境变量
cp .env.example .env
# 编辑 .env 文件,添加你的 API 密钥
# 对于 ModelScope API(推荐):
OPENAI_API_KEY=your-modelscope-api-key
OPENAI_API_BASE=https://api-inference.modelscope.cn/v1
# 对于 OpenAI API:
OPENAI_API_KEY=sk-your-openai-api-key
OPENAI_API_BASE=https://api.openai.com/v1- 配置智能体模型(可选)
# 编辑 config/agent_models.json 文件来配置不同智能体的模型
# 系统会自动使用环境变量中的配置,无需额外设置- 验证安装
# 运行测试脚本验证配置
python test_fix.py
# 或直接查看帮助信息
python main.py --help方式一:使用启动脚本(推荐)
# 使用预配置的启动脚本
./start.sh方式二:直接运行
# 确保环境变量正确设置后启动
python main.py方式三:自定义参数
python main.py [选项]
选项:
--config CONFIG 配置文件路径
--max-parallel MAX 最大并行任务数 (默认: 4)
--timeout TIMEOUT MCP服务超时时间(秒) (默认: 30)
--retries RETRIES 任务重试次数 (默认: 3)
--model MODEL 大模型名称 (默认: Qwen/Qwen3-30B-A3B-Instruct-2507)
--db-path DB_PATH 数据库路径 (默认: data/databases/mpeo.db)在系统运行时,可以使用以下命令:
help/帮助- 显示帮助信息quit/exit/退出- 退出系统status/状态- 显示系统状态history/历史- 显示会话历史logs/日志- 显示系统日志config set <key> <value>- 设置配置config get <key>- 获取配置mcp register <service_name> <url>- 注册MCP服务
- 时间查询
当前时间
- 网页抓取
请抓取 https://example.com 的内容
- 复杂数据处理
请帮我分析最近一个月的销售数据,生成包括趋势分析、异常检测和预测报告的完整分析结果
- 趋势分析
请分析当前最热门的编程语言和框架趋势
用户输入
↓
规划模型 (Planner Model)
↓
生成任务图 (DAG)
↓
人工反馈环节 (Human Feedback)
↓
确认/修改任务图
↓
执行模型 (Executor Model)
↓
任务调度执行
↓
输出模型 (Output Model)
↓
最终结果
系统已预配置了多个MCP服务,支持以下功能:
-
fetch - 网页抓取工具
- 获取URL内容并转换为markdown格式
- 支持多种内容格式
-
context7-mcp - 文档查询工具
- 获取编程库的最新文档
- 支持代码示例和API参考
-
time - 时间处理工具
- 当前时间查询
- 时区转换
- 时间戳处理
- 日期计算
-
weather - 天气查询工具(自定义)
- 实时天气数据获取
- 天气预报查询
- 支持多种数据源整合
MCP服务配置位于 config/mcp_services.json:
{
"mcpServices": {
"time": {
"type": "streamable_http",
"url": "https://mcp.api-inference.modelscope.net/0edb46e720b744/mcp",
"timeout": 30,
"description": "时间处理工具 - 当前时间、时区转换、时间戳等功能"
},
"fetch": {
"type": "streamable_http",
"url": "https://mcp.api-inference.modelscope.net/9ccb10acb11f4d/mcp",
"timeout": 30,
"description": "网页抓取工具 - 获取URL内容并转换为markdown格式"
},
"context7-mcp": {
"type": "streamable_http",
"url": "https://mcp.api-inference.modelscope.net/d49e76846b6647/mcp",
"timeout": 30,
"description": "Context7文档查询工具 - 获取编程库的最新文档"
},
"weather": {
"type": "streamable_http",
"url": "http://192.168.3.86:20080/e/az10dnd0els2jb54/mcp",
"timeout": 60,
"enabled": true,
"headers": {
"Content-Type": "application/json",
"User-Agent": "MPEO-MCP-Client/2.0"
},
"description": "天气查询工具 - 实时天气数据和天气预报"
}
}
}# 在交互界面中执行
mcp register custom_service http://localhost:8080/mcp系统使用DAG结构表示任务依赖关系:
- 任务节点: 包含任务描述、类型、优先级等信息
- 依赖边: 定义任务间的数据依赖关系
- 执行调度: 根据依赖关系自动调度任务执行
{
"execution_results": [
{
"task_id": "T1",
"status": "success",
"output": "处理结果",
"execution_time": 2.5,
"error_msg": null
}
],
"total_execution_time": 5.2,
"success_count": 3,
"failed_count": 0
}| 变量名 | 说明 | 默认值 | 推荐值 |
|---|---|---|---|
| OPENAI_API_KEY | 大模型API密钥 | 必填 | ModelScope API Key |
| OPENAI_BASE_URL | 大模型API端点 | https://api.openai.com/v1 | https://api-inference.modelscope.cn/v1 |
| OPENAI_MODEL | 大模型名称 | gpt-3.5-turbo | Qwen/Qwen3-30B-A3B-Instruct-2507 |
| MAX_PARALLEL_TASKS | 最大并行任务数 | 4 | 4-8 |
| MCP_SERVICE_TIMEOUT | MCP服务超时时间(秒) | 30 | 30-60 |
| TASK_RETRY_COUNT | 任务重试次数 | 3 | 2-3 |
| DATABASE_PATH | 数据库路径 | data/databases/mpeo.db | data/databases/mpeo.db |
支持为不同的智能体配置不同的模型和参数:
{
"planner": {
"model_name": "Qwen/Qwen3-30B-A3B-Instruct-2507",
"temperature": 0.3,
"openai_config": {
"api_key": "your-planner-api-key",
"base_url": "https://api-inference.modelscope.cn/v1"
}
},
"executor": {
"model_name": "Qwen/Qwen3-30B-A3B-Instruct-2507",
"temperature": 0.2,
"openai_config": {
"api_key": "your-executor-api-key",
"base_url": "https://api-inference.modelscope.cn/v1"
}
}
}系统支持运行时配置修改:
# 设置最大并行任务数
config set max_parallel_tasks 8
# 查看当前配置
config get openai_model系统使用SQLite数据库存储以下数据:
- 会话记录: 用户查询和系统响应
- 任务图: 各版本的任务图数据
- 执行结果: 详细的任务执行记录
- 系统日志: 完整的操作和错误日志
- 配置信息: 系统和MCP服务配置
-- 会话表
CREATE TABLE sessions (
session_id TEXT PRIMARY KEY,
user_query TEXT NOT NULL,
task_graph TEXT,
execution_results TEXT,
final_output TEXT,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL,
status TEXT DEFAULT 'created'
);
-- 任务图表
CREATE TABLE task_graphs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
session_id TEXT NOT NULL,
graph_version INTEGER DEFAULT 1,
graph_data TEXT NOT NULL,
is_final BOOLEAN DEFAULT FALSE,
created_at TEXT NOT NULL
);
-- 日志表
CREATE TABLE logs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
session_id TEXT,
component TEXT NOT NULL,
operation TEXT NOT NULL,
details TEXT,
timestamp TEXT NOT NULL
);确保你的环境变量中有正确的API配置:
# 方式一:使用启动脚本(推荐)
./start.sh
# 方式二:手动设置
export OPENAI_API_KEY="your-modelscope-api-key-here"
export OPENAI_BASE_URL="https://api-inference.modelscope.cn/v1"
python main.py运行系统自带的测试脚本来验证配置:
python test_fix.py预期输出:
🧪 MPEO 系统配置测试
==================================================
🔗 测试 ModelScope API 连接...
✅ API 连接成功: 连接成功
🧠 测试任务规划功能...
✅ 任务规划成功,生成了 X 个任务:
🎉 所有测试通过!系统配置正确。
# 使用启动脚本
./start.sh
# 或者直接运行
python main.py在交互界面中输入:
当前时间是什么?
系统将:
- 分析你的需求
- 生成任务图(时间查询任务)
- 等待你确认
- 执行时间查询
- 返回结果
请帮我分析当前最热门的三个AI编程工具,并获取每个工具的官方文档信息
这将演示系统的多任务协作能力。
杭州天气
系统将生成多个任务:
- 调用天气API获取实时数据
- 整合多个数据源
- 验证结果完整性
- 生成最终天气报告
-
API认证错误 (401)
- 检查环境变量中的API密钥是否正确
- 确认API密钥是否有效且未过期
- 验证API端点URL是否正确
- 解决方案: 使用
./start.sh脚本确保环境变量正确设置
-
ModelScope API 认证失败
- 确认使用的是有效的 ModelScope API Token
- 检查
config/agent_models.json中的 API 密钥配置 - 验证 API 密钥格式:
ms-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx - 解决方案: 运行
python test_fix.py验证配置
-
MCP服务连接失败
- 检查网络连接和服务可用性
- 验证服务URL配置是否正确
- 查看系统日志了解详细错误信息
- 解决方案: 检查
config/mcp_services.json配置文件
-
任务执行失败
- 查看系统日志了解详细错误信息
- 检查MCP服务是否正常运行
- 调整任务重试次数和超时时间
- 解决方案: 使用交互式命令
logs查看详细错误信息
-
数据库错误
- 确认数据库文件权限
- 检查磁盘空间是否充足
- 重新初始化数据库
- 解决方案: 删除
data/databases/mpeo.db让系统重新创建
-
环境变量冲突
- 系统环境变量可能覆盖
.env文件配置 - 不同 shell 会话可能使用不同的环境变量
- 解决方案: 使用
./start.sh脚本或手动设置export命令
- 系统环境变量可能覆盖
# 在交互界面中查看系统日志
logs
# 查看特定会话日志
logs <session_id>日志文件位置:data/logs/YYYY-MM-DD.log
检查系统状态:
# 在交互界面中执行
status为了解决配置问题和简化使用流程,新增了以下文件:
#!/bin/bash
# MPEO 启动脚本 - 确保使用正确的环境配置
export OPENAI_API_KEY="your-modelscope-api-key-here"
export OPENAI_API_BASE="https://api-inference.modelscope.cn/v1"
python main.py "$@"- 验证 ModelScope API 连接
- 测试任务规划功能
- 检查配置加载和数据库连接
- 提供详细的错误诊断信息
- 配置规划、执行、输出三个智能体的模型参数
- 支持不同的 OpenAI 兼容 API
- 支持自定义模型名称和参数
- 配置预置的 MCP 服务
- 支持动态添加新的服务
- 包含时间、网页抓取、文档查询、天气等服务
- SQLite 数据库存储会话和任务数据
- 自动创建和初始化
- 支持数据持久化和查询
- 按日期组织的系统日志
- 详细的操作记录和错误追踪
- 支持日志查看和故障诊断
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
- CLAUDE.md - Claude Code 开发指导文档
- QUICKSTART.md - 快速开始指南
如果您遇到问题或有建议,请:
- 查看本文档的故障排除部分
- 检查项目的 Issues 页面
- 创建新的 Issue 描述您的问题
- 作者联系方式