目录

多智能体协作系统

赛题

第三届中国研究生操作系统开源创新大赛 - 赛题9:一种面向多智能体协作的低开销通信、状态传递与共享记忆机制

运行环境

  • openEuler 24.03-LTS-SP3
  • Python 3.11

快速开始

# 1. 克隆项目
git clone <repo-url> && cd multi_agent_system

# 2. 安装依赖
bash setup.sh

# 3. 运行对比实验
python3 main.py --mode benchmark --rounds 10

# 4. 启动 Web 可视化
python3 main.py --mode web
# 浏览器访问 http://localhost:8080

系统架构

五层设计:

  1. 应用展示层: FastAPI + WebSocket 实时监控
  2. Agent 应用层: Planner/Retriever/Executor/Summarizer + CodeAct 沙箱
  3. 协作协议层: ProtocolMessage + Socket TCP + 共享内存 IPC
  4. 状态与记忆层: Embedding(384→64维) + ChromaDB + SQLite
  5. 系统观测层: eBPF / proc 降级

核心特性

特性 实现
结构化通信 ProtocolMessage (JSON/二进制混合)
非文本状态传递 Embedding 语义向量 + 共享内存零拷贝
共享记忆 ChromaDB 向量检索 + SQLite 元数据 + LRU 缓存
CodeAct 沙箱 三级安全隔离 (exec/WASM/Docker)
Web 可视化 实时 Agent 状态 + 消息流动画 + 性能图表
对比实验 纯文本 vs 结构化,10轮统计

实验结果

指标 纯文本模式 结构化模式 提升
Token 消耗 145.3 36.3 节省 75%
LLM 调用 4.0 3.5 减少 12.5%
记忆命中率 - 50% -
状态传递 0 2次/512B 新增

目录结构

multi_agent_system/
├── src/
│   ├── agents/          # 4 个 Agent + 编排器
│   ├── protocol/        # 结构化通信协议
│   ├── transport/       # Socket + 共享内存
│   ├── memory/          # 共享记忆 (ChromaDB + SQLite)
│   ├── exchange/        # Embedding 服务
│   ├── sandbox/         # CodeAct 沙箱
│   ├── observability/   # eBPF 观测
│   ├── evaluation/      # 对比评测
│   └── web/             # FastAPI + 前端
├── docs/                # 设计文档
├── data/                # 数据目录
├── main.py              # CLI 入口
├── Dockerfile           # 容器化
├── docker-compose.yml   # 编排
├── setup.sh             # 一键部署
└── requirements.txt     # 依赖

技术栈

  • Python 3.11, asyncio
  • FastAPI, WebSocket, uvicorn
  • sentence-transformers, ChromaDB, SQLite
  • Socket TCP, multiprocessing.SharedMemory
  • eBPF (BCC/bpftrace, 降级 /proc)

赛题要求对照

赛题要求 实现模块 状态
>=3个Agent协同 agents/ (4个)
>=3类角色 Planner/Retriever/Executor/Summarizer
结构化通信协议 protocol/
握手/能力发现 HANDSHAKE 消息
纯文本+结构化双模式 protocol_mode 字段
可复现实验对比 evaluation/benchmark.py
非文本状态传递 exchange/embedding_service.py
共享记忆模块 memory/
>=2组关联连续任务 main.py 任务组
>=10轮连续任务 rounds=10
CodeAct 模式 sandbox/
IPC/共享内存/Socket transport/
Web 可视化 web/

部署方式

方式一:直接运行(openEuler 24.03)

bash setup.sh
python3 main.py --mode benchmark --rounds 10

方式二:Docker 容器

docker build -t multi-agent-system:latest .
docker run --rm -p 8080:8080 multi-agent-system:latest python3 main.py --mode web

方式三:docker-compose

docker-compose up

核心设计决策

  1. 为什么用 Socket 而不是函数调用?

    • Agent 是独立进程/服务,体现”操作系统级”思维
    • 支持分布式扩展,便于 eBPF 系统级观测
  2. 为什么 Socket + 共享内存混合?

    • 小数据(<1KB): Socket 传输简单高效
    • 大数据(>1MB): 共享内存零拷贝,避免序列化开销
  3. 为什么 ChromaDB + SQLite 分层?

    • ChromaDB 专精向量检索,性能优化好
    • SQLite 零配置,关系查询灵活
    • 体现”分层存储”的系统设计思想
  4. CodeAct 为什么分三级沙箱?

    • 体现安全与性能的权衡
    • 不同场景选择不同隔离级别
关于

一种面向多智能体协作的低开销通信、状态传递与共享记忆机制

188.0 KB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号