feat: add “Design document.docx”
AROS(AgentRuntime-OS)是面向 openEuler 的多 Agent 隔离执行与统一编排引擎。系统采用 C++ Daemon 控制平面 + 多 Agent 独立进程执行平面 的架构,将每个 Agent 映射为受管操作系统进程,并对任务状态、资源边界、上下文、通信端点和生命周期进行统一管理。
AROS主要面向自动化代码审查、智能运维巡检、复杂任务规划等多 Agent 流水线场景,重点解决共享运行时中的故障扩散、资源竞争、静态任务图适应性不足以及上下文持续膨胀等问题。
fork → prlimit → execve
RLIMIT_AS
memory.max
cpu.max
pids.max
TaskId + AgentId
/proc
trace_id
建议在以下环境中构建和运行:
pip3
curl
使用 cgroups v2 资源控制时,应确保当前用户或 Daemon 进程具有相应 cgroup 创建与配置权限。
AROS/ ├── daemon/ # C++控制平面、调度器、进程与生命周期管理 ├── agent/ # Python Agent业务程序及依赖 ├── config/ # Daemon配置和示例DAG文件 ├── experiments/ # 自动化实验脚本 └── README.md
以下命令均在项目根目录下执行。
cd daemon make -j"$(nproc)"
编译完成后,默认生成可执行文件:
daemon/build/agent_runtime_daemon
cd ../agent pip3 install -r requirements.txt
建议使用 Python 3.10 虚拟环境安装依赖,避免与系统 Python 包冲突。
返回项目根目录:
cd ..
启动前确认以下文件存在并已按运行环境配置:
config/daemon.conf config/example_dag.json
其中:
daemon.conf
example_dag.json
./daemon/build/agent_runtime_daemon --config config/daemon.conf
Daemon 启动后将初始化调度器、AgentPool、ZeroMQ 通信代理、上下文管理器和 REST 服务。默认 REST API 地址为:
http://localhost:8080
在另一个终端中进入项目根目录并执行:
curl -X POST http://localhost:8080/api/v1/dag \ -H "Content-Type: application/json" \ -d @config/example_dag.json
系统完成格式校验和拓扑解析后,将就绪节点分配至 AgentPool。节点状态包括:
DONE
FAILED
TIMEOUT
SKIPPED
curl http://localhost:8080/api/v1/pool
用于查看 AgentPool 规模、槽位状态以及空闲、占用或异常工作进程。
curl http://localhost:8080/api/v1/agents
用于查看 Agent 的 PID、运行状态、内存占用、CPU 使用情况及任务关联信息。
curl http://localhost:8080/api/v1/metrics
用于获取系统运行指标和 Prometheus 格式监控数据。
bash experiments/run_all.sh
实验脚本用于验证资源限制、AgentPool 加速、并发隔离、REST 响应、进程回收、动态 DAG、上下文管理和资源感知调度等功能。建议在负载相对稳定的独立环境中执行,以减少其他进程对实验结果的影响。
前台运行时,可使用 Ctrl+C 结束 Daemon。系统将进入正常退出流程,向受管 Agent 进程发送终止信号并回收子进程状态。
Ctrl+C
也可以向 Daemon 发送 SIGTERM:
SIGTERM
kill -TERM <daemon_pid>
检查 GCC、GNU Make、ZeroMQ 开发库及项目构建依赖是否已经安装,并确认当前位于 daemon 目录。
daemon
确认使用 Python 3.10,并已安装 agent/requirements.txt 中的依赖。若配置的 RLIMIT_AS 过低,Python 解释器可能在初始化阶段因内存不足而退出;当前实验环境中建议基础 Agent 的内存上限不低于 96 MB,具体数值应根据业务依赖调整。
agent/requirements.txt
检查:
检查系统是否启用 cgroups v2,并确认 Daemon 对目标 cgroup 路径具有写权限。若当前环境不允许配置cgroup,需要调整运行权限或资源控制配置。
检查 config/example_dag.json 是否符合系统要求,重点确认:
config/example_dag.json
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
AROS:多 Agent 操作系统级运行时
作品简介
AROS(AgentRuntime-OS)是面向 openEuler 的多 Agent 隔离执行与统一编排引擎。系统采用 C++ Daemon 控制平面 + 多 Agent 独立进程执行平面 的架构,将每个 Agent 映射为受管操作系统进程,并对任务状态、资源边界、上下文、通信端点和生命周期进行统一管理。
AROS主要面向自动化代码审查、智能运维巡检、复杂任务规划等多 Agent 流水线场景,重点解决共享运行时中的故障扩散、资源竞争、静态任务图适应性不足以及上下文持续膨胀等问题。
核心能力
fork → prlimit → execve启动时序设置RLIMIT_AS,并结合 cgroups v2 的memory.max、cpu.max和pids.max控制资源使用。TaskId + AgentId建立命名空间,结合 LRU 缓存、SQLite WAL 持久化和 FAISS 检索,实现上下文复用、压缩和隔离。/proc和 cgroups v2 采集系统负载,使用 EWMA 预测资源消耗,并通过 Best-Fit 和优先级老化机制选择 AgentPool 槽位。trace_id提供运行状态查询与链路追踪。运行环境
建议在以下环境中构建和运行:
pip3curl目录说明
编译与运行
以下命令均在项目根目录下执行。
1. 编译 Daemon
编译完成后,默认生成可执行文件:
2. 安装 Agent Python 依赖
建议使用 Python 3.10 虚拟环境安装依赖,避免与系统 Python 包冲突。
3. 检查配置文件
返回项目根目录:
启动前确认以下文件存在并已按运行环境配置:
其中:
daemon.conf:配置监听端口、AgentPool 规模、资源限制和超时参数;example_dag.json:定义示例 Agent 节点、依赖关系、资源需求和执行参数。4. 启动 Daemon
Daemon 启动后将初始化调度器、AgentPool、ZeroMQ 通信代理、上下文管理器和 REST 服务。默认 REST API 地址为:
5. 提交 DAG 任务
在另一个终端中进入项目根目录并执行:
系统完成格式校验和拓扑解析后,将就绪节点分配至 AgentPool。节点状态包括:
DONE:执行成功;FAILED:执行失败;TIMEOUT:执行超时;SKIPPED:因前置节点失败而跳过。运行状态查询
查询 AgentPool
用于查看 AgentPool 规模、槽位状态以及空闲、占用或异常工作进程。
查询 Agent 资源状态
用于查看 Agent 的 PID、运行状态、内存占用、CPU 使用情况及任务关联信息。
查询监控指标
用于获取系统运行指标和 Prometheus 格式监控数据。
运行全部实验
实验脚本用于验证资源限制、AgentPool 加速、并发隔离、REST 响应、进程回收、动态 DAG、上下文管理和资源感知调度等功能。建议在负载相对稳定的独立环境中执行,以减少其他进程对实验结果的影响。
停止系统
前台运行时,可使用
Ctrl+C结束 Daemon。系统将进入正常退出流程,向受管 Agent 进程发送终止信号并回收子进程状态。也可以向 Daemon 发送
SIGTERM:常见问题
1. Daemon 编译失败
检查 GCC、GNU Make、ZeroMQ 开发库及项目构建依赖是否已经安装,并确认当前位于
daemon目录。2. Python Agent 无法启动
确认使用 Python 3.10,并已安装
agent/requirements.txt中的依赖。若配置的RLIMIT_AS过低,Python 解释器可能在初始化阶段因内存不足而退出;当前实验环境中建议基础 Agent 的内存上限不低于 96 MB,具体数值应根据业务依赖调整。3. REST API 无法访问
检查:
daemon.conf中的 REST 端口是否为 8080;4. cgroups v2 配置失败
检查系统是否启用 cgroups v2,并确认 Daemon 对目标 cgroup 路径具有写权限。若当前环境不允许配置cgroup,需要调整运行权限或资源控制配置。
5. DAG 提交失败
检查
config/example_dag.json是否符合系统要求,重点确认: