本项目基于 OpenBMB/IoA,在同一台机器的多个 Docker 容器中运行 ReAct、AutoGPT 和 Open Interpreter,研究协作过程中的任务质量、通信开销与执行可靠性。
保留 IoA 的注册发现、WebSocket 会话通信、协作决策、同步/异步任务派发和 pause/trigger 机制。模型接入与实验运行层经过适配,后续在此基础上实现 Workspace、DAG Guard 和通信 Pruning。
实验运行器 → IoA 客户端 CommunicationLayer ↔ IoA Server
↓ 注册、会话、消息路由
AgentAdapter
↓
ReAct / AutoGPT / Open Interpreter
固定三人协作:ReAct 协调,AutoGPT 提案或编写代码,Open Interpreter 检查与执行。实验运行器负责提交、隔离、记录和评分,Agent 内部的协作仍由 IoA 驱动。
| 配置 | 当前设置 |
|---|---|
| 部署 | 同机多容器,一次一道任务 |
| 生成服务 | DeepSeek 官方 API;deepseek-flash / deepseek-v4-pro |
| 思考模式 | 默认关闭,组间保持一致 |
| Embedding | 独立 OpenAI 兼容接口,text-embedding-3-small,1536 维 |
| 数据集 | HotpotQA distractor、MBPP sanitized |
| 执行控制 | 每题工具隔离、步骤/超时预算、HTTP usage 分层统计 |
将 dockerfiles/compose/.env_template 复制为同目录 .env,填写生成和 Embedding 的密钥。首次使用需要构建镜像,完整步骤见启动说明。
模型入口也在 .env:FAST_LLM=deepseek-flash、SMART_LLM=deepseek-v4-pro。AutoGPT 的 AUTOGPT_BIG_BRAIN=false(默认)选择 FAST,true 选择 SMART;新建和恢复任务均采用启动配置。已有 YAML 中的 ${FAST_LLM} / ${SMART_LLM} 决定其他 Agent 的模型。首次接入此开关需更新镜像;之后修改 .env 并重新创建客户端及工具容器即可,无需再改构建补丁。详见模型配置。
镜像已构建时:
docker compose -f dockerfiles/compose/milvus.yaml up -d
# 等待 Milvus 健康后启动实验服务
docker compose --env-file dockerfiles/compose/.env -f dockerfiles/compose/benchmarks.yaml up -d --no-build前端为 http://localhost;Server 为 http://localhost:7788/docs;三个客户端端口分别为 5050、5051、5052。
python -m pip install -r scripts/benchmarks/requirements.txt
python -m scripts.benchmarks.hotpotqa prepare --allow-hf-mirror
python -m scripts.benchmarks.mbpp prepare
python -m scripts.benchmarks.mbpp check-reference题目来源、ID、抽样和校验值保存在 datasets/benchmarks/manifests/。MBPP 统一公开第一条示例,其余断言隐藏,使用一份 mbpp.json。判题金标不发送给 Agent。
python -m scripts.benchmarks.hotpotqa run --split dev --limit 1
python -m scripts.benchmarks.mbpp run --split dev --limit 1以上只预览,不调用模型。确认配置和执行计划后,添加 --execute 并指定新的 --output 目录才实际运行。默认启用 fresh-tools;HotpotQA 默认采用三角色 evidence-review 协议。加 --collaborative-planning 可开启上游共享文字计划。
详细的探索分区、M0/M0-P 命令、失败处理和评分见实验运行说明。
- 当前支持两套数据的开发检查,以及规划关闭/开启的探索对照。
- Workspace、DAG Guard、Pruning 尚未实现;正式模块对照和消融尚未开始。
- 本轮新 M0 尚未运行;开发验证不作为正式结果。
- 确认候选题在协议发布前禁止实际执行,避免调试消耗确认集。
- 所有当前实验均采用同机部署,多机不是本阶段的前置条件。论文结论限定到实际验证的场景。
| 目录 | 内容 |
|---|---|
common/ |
公共类型、模型设置、预算和 usage 账本 |
im_client/ |
IoA 通信调度、Agent 适配和执行器 |
im_server/ |
注册、会话、消息路由和前端 |
configs/client_configs/benchmarks/ |
当前三个 Agent 的角色配置 |
dockerfiles/ |
镜像构建与 Compose 服务 |
scripts/benchmarks/ |
数据准备、运行、判题、统计与收尾 |
datasets/benchmarks/manifests/ |
固定数据清单与评分依据 |
tests/ |
离线、容器和模型适配器检查 |
docs/ |
启动、模型配置、实验协议 |
datasets/benchmarks/raw/、prepared/、results/、logs/ 和数据库挂载不随 Git 上传。复现实验需准备数据、填写自己的密钥并保存独立结果;具体回答可能因远端模型更新和随机性不同。
python -m unittest discover -s tests -p 'benchmark*checks.py'
python -m unittest discover -s tests -p mbpp_checks.py
python -m unittest discover -s tests -p execution_budget_checks.py
python -m unittest discover -s tests -p usage_checks.pyMBPP 检查依赖 Linux Docker;provider 检查需对应镜像环境。上述检查不需要真实模型调用。
基础框架:Internet of Agents 论文、OpenBMB/IoA。保留上游 LICENSE。本项目是 IoA 的研究适配与扩展,不宣称复现原论文全部实验;数据集来源和许可见各自清单。
M0 继续使用原有 Compose。W-on 使用可信宿主启动器 workspace_host.py;普通工具容器不持有 Docker socket 或管理密钥。
- 复制
configs/workspace/host.example.json到本地dockerfiles/compose/volumes/workspace_host/host.json,填写 Docker Engine ID、已缓存镜像 digest、身份和私有密钥文件路径。Control、Pepper、各角色 Management/Owner 密钥须各不相同,密钥文件不要放入源码目录。 - 首次全新部署可运行
python workspace_host.py --enable-workspace --role server --config <本地配置> --enroll-only,通过原 T03 登记角色并保存私有 credential;已有登记和凭证不会被覆盖。 - 启动服务端:
python workspace_host.py --enable-workspace --role server --config <本地配置> --open-fresh-deployment。在另外三个进程中分别以--role react、--role autogpt、--role open_interpreter启动原客户端应用。模型环境可用--env-file dockerfiles/compose/.env读取。首次开放仅接受全新或只有身份登记的库;已有执行库须按原恢复流程处理。 - 新群按固定配置完成带 MAC 的 Owner 授权。父子群交接由可信控制端调用
im_client.workspace.handoff.request_handoff;协调 Agent 用自己的HandoffReader读取精确版本,控制端用revoke_handoff撤销。引用本身不授予权限,接收者须已是父、子群共同成员。
宿主使用项目已有 Python 依赖和 Docker CLI,并能访问本机 Milvus。usage_dir 复用既有 usage 事件目录;task_deadline_seconds 应与实验任务截止一致(原运行器默认 600 秒),不修改模型、步数和重试规则。此入口不运行 Benchmark,也不实现 M1~M4 方法派发。