readme文件优化
一个高性能的多智能体协作系统,具有多进程IPC通信总线、零拷贝共享内存状态传输以及Linux命名空间(Namespace)/控制组(cgroup)容器沙箱隔离。
定位: 面向openEuler的新一代多智能体协作机制
microbiomeDataSets
gitlink-cli
main
ExperimentHub
scpdata
FetchContent
find_package()
HiContacts
HiCExperiment
description
sequences
tidySummarizedExperiment
SingleCellAlleleExperiment (SCAE)
整个代码实现了两种完全不同的IPC数据路径去定义两种模式,结构化模式通过ChromaDB共享记忆+SHM零拷贝+摘要传输实现了通信量降低,Token消耗节约;纯文本模式通过IPC传输完整的LLM输出作为对比基线。两种模式共享传输层(UDS+Protobuf)和记忆系统(ChromaDB),但数据路由方式和传递内容不同。系统实现了两种完全不同的 IPC 数据路径,用于通信效率对比实验:
┌─────────────────────────────────────────────────────────────────────┐ │ 结构化模式(优化路径) │ │ │ │ Agent → LLM → 全文存ChromaDB → IPC只传200B摘要 + memory_id │ │ Orchestrator → 只传 task_id/task_topic → 下游从 ChromaDB 检索 │ │ Embedding → SHM 零拷贝 (20B buffer_name) │ │ 序列化 → Protobuf 二进制帧 │ ├─────────────────────────────────────────────────────────────────────┤ │ 纯文本模式(对比基线) │ │ │ │ Agent → LLM → IPC 传完整输出文本 (几千字) │ │ Orchestrator → 传完整 agent_results JSON → 下游直接使用 │ │ Embedding → 不用 SHM │ │ 序列化 → Protobuf 帧包裹 JSON 字符串 │ │ 记忆系统 → ChromaDB 存储 + 搜索(与结构化模式相同) │ └─────────────────────────────────────────────────────────────────────┘
本版本更新对比与将4个智能体挤在单个Python进程中(v2.0)或使用HTTP/JSON(v1.0)的传统做法,使得每个智能体都作为一个独立的操作系统(OS)进程去进行运行,每个agent拥有自己独立的PID、内存空间和专用的Unix域套接字服务器:
┌─────────────────────────────────────────────────────────────────────┐ │ 编排器进程 (main) │ │ ┌──────────────────────────────────────────────────────────────┐ │ │ │ AgentIPCClient (UDS + Protobuf) │ │ │ └─────┬────────────┬──────────────┬──────────────┬──────────────┘ │ │ │ UDS │ UDS │ UDS │ UDS │ │ ▼ ▼ ▼ ▼ │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ Planner │ │Retriever│ │Executor │ │Summarizer│ │ │ │ 进程 │ │ 进程 │ │ 进程 │ │ 进程 │ │ │ │ (PID:A) │ │ (PID:B) │ │ (PID:C) │ │ (PID:D) │ │ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │ │ │ │ │ │ │ └────────────┴──────────────┴──────────────┘ │ │ 共享内存 (shm_open/mmap) │ │ 嵌入特征向量零拷贝高效流动 │ └─────────────────────────────────────────────────────────────────────┘
实现了非文本中间状态的零拷贝(Zero-Copy)传递。大模型高维特征向量无需经过序列化-网络传输-反序列化,而是直接通过 Linux 共享内存进行秒级的互通,完美规避了语义损耗与传输时延。
当Planner生成任务规划隐藏状态(384维向量)时,不再将整个数组序列化到消息中,而是:
发送方 (Planner): 接收方 (Retriever): ┌──────────────────────┐ ┌──────────────────────┐ │ embed(output) → vec │ │ │ │ │ │ │ │ shm = SharedMemory( │ 缓冲区名称 │ shm = SharedMemory( │ │ name="emb_planner │ ──"emb_planner_ │ name="emb_planner_ │ │ _a1b2c3d4", │ a1b2c3d4" ──▶ │ a1b2c3d4" │ │ create=True, │ (通过 UDS, │ create=False) │ │ size=4+dim*4) │ ~20 字节) │ │ │ │ │ vec = np.ndarray( │ │ buf[0:4] = dim │ │ buf[4:4+dim*4]) │ │ buf[4:] = vec_data │ │ ← 直接内存访问,无拷贝│ └──────────────────────┘ └──────────────────────┘
针对CodeAct模式,构建了基于Linux Namespace和Cgroups隔离的轻量级安全沙箱,严格限制了CPU/内存资源及网络访问,彻底杜绝了大模型恶意代码对openEuler系统的安全威胁。
Bubblewrap 沙箱 (主方案): ┌─────────────────────────────────────────────┐ │ bwrap │ │ ├── --unshare-pid (隔离的 PID 命名空间) │ │ ├── --unshare-ipc (隔离的 IPC 命名空间) │ │ ├── --unshare-uts (隔离的主机名) │ │ ├── --unshare-net (禁止网络访问) │ │ ├── --tmpfs / (临时根文件系统 rootfs)│ │ ├── --ro-bind /usr (只读 Python 路径) │ │ ├── --ro-bind /lib (只读依赖库) │ │ ├── --tmpfs /tmp (可写,禁止执行二进制) │ │ ├── --proc /proc (极简 proc 文件系统) │ │ └── python3 /sandbox_code.py │ │ │ │ 资源限制 (cgroups v2): │ │ ├── memory.max = 512MB │ │ ├── cpu.weight = 128 │ │ └── timeout = 900s (15min) │ └─────────────────────────────────────────────┘ Docker/Podman 沙箱 (备用方案): ┌─────────────────────────────────────────────┐ │ docker run --rm │ │ ├── --network=none (禁止网络) │ │ ├── --memory=256m (内存限制) │ │ ├── --cpu-shares=128 (CPU 限制) │ │ ├── --read-only (不可变根文件系统) │ │ ├── --pids-limit=50 (防范 Fork 炸弹) │ │ ├── --tmpfs /tmp:noexec (安全临时目录) │ │ └── python:3.11-slim │ └─────────────────────────────────────────────┘
沙箱调用链(自动降级机制):
d:\test\ ├── main.py # 主函数,启动整个程序 ├── orchestrator.py # IPC编排器:调度4Agent流程,汇总统计 ├── config.py # 配置:APIKey、模型名、ChromaDB路径等 ├── requirements.txt # 需要安装的依赖包:langchain, chromadb, sentence-transformers等 │ ├── ipc/ # === IPC通信部分 === │ ├── uds_server.py # Agent服务端:监听socket,线程池处理请求 │ ├── uds_client.py # 编排器客户端:持久连接池,线程安全 │ └── shm_manager.py # 共享内存管理器:shm_open/mmap零拷贝embedding传输 │ ├── agents/ # === Agent设计部分 === │ ├── agent_process.py # Agent进程:multiprocessing.Process生命周期 │ ├── agent_handlers.py # 4个Agent的业务逻辑 │ ├── base_agent.py # 历史基类 │ ├── planner_agent.py # Planner Agent实现 │ ├── retriever_agent.py # Retriever Agent实现 │ ├── executor_agent.py # Executor Agent实现 │ └── summarizer_agent.py # Summarizer Agent实现 │ ├── proto/ │ └── agent_protocol.proto # Protobuf消息定义 │ ├── protocol/ # === 协议/序列化 === │ ├── agent_protocol_pb2.py # 由.proto编译生成的Python Protobuf代码 │ ├── messages.py # Pydantic消息模型 │ ├── scheduler.py # 消息路由与Agent注册 │ └── binary_serializer.py # Pydantic <-> Protobuf桥接 │ ├── state_transfer/ # === 状态传输 === │ ├── embedding.py # Embedding引擎+状态传递 │ └── vector_pool.py # 共享向量池 │ ├── memory/ # === 记忆部分 === │ ├── shared_memory.py # ChromaDB管理:存储、语义搜索、关键词搜索、知识播种 │ └── reuse_controller.py # 记忆复用控制器:高置信度时跳过Agent调用 │ ├── sandbox/ # === 沙箱执行 === │ ├── bwrap_sandbox.py # Bubblewrap沙箱(首选) │ └── docker_sandbox.py # Docker沙箱(备用) │ ├── evaluation/ # === 可视化部分 === │ ├── metrics.py # 指标采集 │ ├── dashboard.py # 运行时显示 │ ├── reporter.py # 报告生成:文本格式性能对比报告 │ └── visualizer.py # 图表生成:matplotlib输出6张PNG图表 │ ├── tasks/ │ └── task_sets.py # 任务定义 │ └── shared_state/ # 向量池存储目录 │ ├── output/ │ └── realtime.txt # 运行过程全转存于此
Bash
# Python 包 pip install -r requirements.txt # Bubblewrap(用于沙箱隔离) # openEuler环境: sudo dnf install bubblewrap # 或者降级使用Docker: sudo dnf install docker
# 方式A:DeepSeek V4(默认,推荐) export DEEPSEEK_API_KEY="你的deepseek密钥" export OPENAI_BASE_URL="https://api.deepseek.com" export LLM_MODEL="deepseek-v4-flash" # 可换其他模型 # 方式B:其他兼容端点 export OPENAI_API_KEY="your-api-key" export OPENAI_BASE_URL="https://your-endpoint/v1" export LLM_MODEL="your-model-name" # 方式C:演示模式(无需API) export SIMULATE_LLM=1
python3 main.py
通过网盘分享的文件:系统开源创新大赛 链接: https://pan.baidu.com/s/1tG_DNT1r4wjfycLi3E4ghw?pwd=wsu4 提取码: wsu4
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
VECTOR-面向openEuler的新一代多智能体协作机制
一个高性能的多智能体协作系统,具有多进程IPC通信总线、零拷贝共享内存状态传输以及Linux命名空间(Namespace)/控制组(cgroup)容器沙箱隔离。
microbiomeDataSetsgitlink-clireports a missing binary?mainExperimentHubinterfacescpdatafunctionsscpdataFetchContentfind_package()HiContactsHiCExperimentHiCExperimentobjectsdescriptionsequencestidySummarizedExperiment, the best of both worlds!SingleCellAlleleExperiment (SCAE)classmicrobiomeDataSets一、核心架构内容
1. 多进程的IPC通信总线
整个代码实现了两种完全不同的IPC数据路径去定义两种模式,结构化模式通过ChromaDB共享记忆+SHM零拷贝+摘要传输实现了通信量降低,Token消耗节约;纯文本模式通过IPC传输完整的LLM输出作为对比基线。两种模式共享传输层(UDS+Protobuf)和记忆系统(ChromaDB),但数据路由方式和传递内容不同。系统实现了两种完全不同的 IPC 数据路径,用于通信效率对比实验:
本版本更新对比与将4个智能体挤在单个Python进程中(v2.0)或使用HTTP/JSON(v1.0)的传统做法,使得每个智能体都作为一个独立的操作系统(OS)进程去进行运行,每个agent拥有自己独立的PID、内存空间和专用的Unix域套接字服务器:
2. 零拷贝嵌入特征传输(Linux共享内存)
实现了非文本中间状态的零拷贝(Zero-Copy)传递。大模型高维特征向量无需经过序列化-网络传输-反序列化,而是直接通过 Linux 共享内存进行秒级的互通,完美规避了语义损耗与传输时延。
当Planner生成任务规划隐藏状态(384维向量)时,不再将整个数组序列化到消息中,而是:
3. 容器级沙箱
针对CodeAct模式,构建了基于Linux Namespace和Cgroups隔离的轻量级安全沙箱,严格限制了CPU/内存资源及网络访问,彻底杜绝了大模型恶意代码对openEuler系统的安全威胁。
沙箱调用链(自动降级机制):
二、程序发展对比:v1.0→v2.0→v3.0→v3.1
三、目录结构
四、运行说明
1. 安装依赖
Bash
2. 配置环境
Bash
3. 运行实验
Bash
五、项目说明性文件百度网盘链接
通过网盘分享的文件:系统开源创新大赛 链接: https://pan.baidu.com/s/1tG_DNT1r4wjfycLi3E4ghw?pwd=wsu4 提取码: wsu4