目录

AgentOS Runtime

基于 Go 构建的 AI 原生多智能体运行时系统,将操作系统进程调度概念映射到 AI Agent 领域。采用两级调度模型(Agent 进程 + Task 线程)、Linux cgroup v2 资源隔离和双层 DAG 编排,面向代码安全审计场景提供自动化多智能体协作流水线。演示视频下载地址:https://pan.baidu.com/s/1MAfq0PMsLWHXpmjpO9imEA?pwd=i4i8

架构概览

┌──────────────────────────────────────────────────────────┐
│                    CLI (Cobra) / HTTP API                 │
├──────────────────────────────────────────────────────────┤
│                     Runtime (顶层协调)                     │
├──────┬──────┬──────┬──────┬──────┬──────┬──────┬────────┤
│Agent │ Task │ DAG  │Sched-│Execu-│Resou-│AI    │Context │
│Mgr   │ Mgr  │ Mgr  │uler  │tion  │rce   │Broker│Mgr     │
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼────────┤
│Comm  │Fault │LLM   │Tool  │Mis-  │Stor- │Redis │Observ- │
│Mgr   │Mgr   │Mgr   │Mgr   │sion  │age   │Store │ability │
├──────┴──────┴──────┴──────┴──────┴──────┴──────┴────────┤
│       cgroup v2 资源隔离 / Redis 持久化 / OpenTelemetry    │
└──────────────────────────────────────────────────────────┘

核心概念:

概念 类比 说明
Mission 作业 一次完整的审计任务,包含目标仓库、审计配置和全局策略
Agent 进程 独立 OS 子进程,cgroup v2 隔离 CPU/内存/PID,承担特定审计职责
Task 线程 Agent 内部的细粒度执行单元,通过 DAG 依赖图编排顺序
双层 DAG 调度图 Agent 间依赖图 + Agent 内 Task 依赖图,支持跨层联动调度

特性

  • 两级优先级调度 — 大顶堆优先级队列、资源感知打分(EMA 预测)、优先级老化防饥饿、公平信用补偿、高优先级抢占
  • cgroup v2 资源隔离 — Agent 级真实 cgroup 域(CPU/内存/PID 硬限制),Task 级虚拟资源域(按权重分摊),运行时动态调整
  • 四阶段 Task 流水线 — Prompt 构建 → LLM 调用 → 工具执行 → 结果输出
  • 三层上下文管理 — Global(只读系统信息)/ Shared(Mission 级共享知识库)/ Private(Agent 私有状态),支持自动压缩与去重
  • Mission 生命周期 — 三阶段启动(CREATED → PLANNING → READY → RUNNING),支持暂停/恢复/重试/取消
  • 故障容错体系 — 故障检测器 + 重试控制器 + 检查点管理 + 熔断器 + 故障传播控制 + 补偿管理
  • AI 资源经纪 — 多模型实例注册、健康检查、负载均衡路由、Token 预算管理、限流与熔断
  • Agent 间通信 — Mailbox(点对点)+ EventBus(广播)+ ArtifactRef(大对象引用),支持 ACK/重试/TTL/死信队列
  • 可观测性 — 结构化日志(slog)、OpenTelemetry 链路追踪、Prometheus 指标暴露
  • 11 个预定义 Agent — 覆盖代码审计全流程:任务规划、代码质量、安全审计、依赖分析、测试执行、文档检查、补丁生成、补丁审查、回归测试、集成汇总、安全扫描

快速开始

环境要求

  • Go 1.25+
  • Linux(cgroup v2 支持)
  • Redis

构建

go build -o agentos ./cmd/runtime

配置

设置 LLM API 密钥(默认连接阿里云 DashScope,模型 qwen-plus):

export LLM_API_KEY=your_api_key

# 可选:自定义端点和模型
export LLM_ENDPOINT=https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
export LLM_MODEL=qwen-plus

运行时配置位于 configs/runtime.yaml,可调整调度策略、资源总量、LLM 参数、安全策略等。

启动服务

./agentos serve                    # 默认监听 :8080
./agentos serve --addr :9090       # 自定义端口

提交审计任务

# 提交完整的代码安全审计 Mission
./agentos submit \
  --repo https://github.com/org/repo \
  --commit 8ac91ef \
  --profile full \
  --auto-patch \
  --test \
  --priority 8

# 审计配置模式:full / web-security / minimal / dependency
./agentos submit --repo <url> --commit <hash> --profile web-security

管理命令

./agentos list                                # 列出所有 Agent
./agentos get <agent_id>                      # 查询 Agent 详情(含资源用量)
./agentos cancel <agent_id>                   # 取消 Agent
./agentos resource <agent_id> --cpu 400       # 动态调整 CPU 限制
./agentos resource <agent_id> --memory 2048   # 动态调整内存限制(MB)
./agentos mission-status <mission_id>         # 查询 Mission 进度
./agentos --server http://remote:8080 list    # 指定远程服务端

调试模式

./agentos --debug    # 绕过 CLI,直接启动 Runtime + HTTP Server,方便 IDE 断点调试

HTTP API

方法 路径 说明
POST /api/v1/missions 提交结构化审计 Mission
GET /api/v1/missions/{id}/status 查询 Mission 进度与状态
POST /api/v1/missions/{id}/pause 暂停 Mission
POST /api/v1/missions/{id}/resume 恢复 Mission
POST /api/v1/missions/{id}/retry 重试 Mission 中失败的 Agent
POST /api/v1/tasks 提交任务到任务规划 Agent
POST /api/v1/tasks/{id}/state 手动设置 Task 状态
POST /api/v1/agents 向指定 Agent 提交任务
GET /api/v1/agents 列出所有运行中的 Agent
GET /api/v1/agents/{id} 获取 Agent 详情(含资源用量)
DELETE /api/v1/agents/{id} 取消指定 Agent
POST /api/v1/agents/{id}/pause 暂停 Agent
POST /api/v1/agents/{id}/resume 恢复 Agent
POST /api/v1/agents/{id}/resource 动态调整 Agent 资源限制
GET /api/v1/stats 运行时全局统计
GET /metrics Prometheus 指标端点

项目结构

AgentRuntime/
├── cmd/runtime/              # 程序入口(CLI 路由 + Debug 模式)
├── configs/
│   ├── agents.json           # Agent 注册表 + 工具定义 + 全局配置
│   └── runtime.yaml          # 运行时统一配置(调度/资源/LLM/安全/上下文)
├── agents/                   # 业务 Agent 实现
│   ├── sdk/                  # Agent 开发工具包(接口/工厂/上下文/请求响应类型)
│   ├── task_planner/         # 任务规划 Agent
│   ├── code_quality/         # 代码质量 Agent
│   ├── security_audit/       # 安全审计 Agent
│   ├── dependency_audit/     # 依赖分析 Agent
│   ├── test_exec/            # 测试执行 Agent
│   ├── doc_check/            # 文档检查 Agent
│   ├── patch_generator/      # 补丁生成 Agent
│   ├── patch_review_code/    # 补丁审查 Agent
│   ├── regression_test/      # 回归测试 Agent
│   ├── integrate/            # 集成汇总 Agent
│   └── security/             # 安全扫描 Agent
├── internal/
│   ├── agent/                # Agent/Task 核心逻辑、进程管理、能力注册
│   ├── ai_resource/          # AI 资源经纪(多模型路由/限流/熔断/预算管理)
│   ├── cli/                  # CLI 命令层(Cobra):serve/submit/list/get/cancel/resource
│   ├── communication/        # Agent 间通信(Mailbox/EventBus/ArtifactRef/死信队列)
│   ├── config/               # 运行时配置加载与分发
│   ├── contextManager/       # 三层上下文管理(Global/Shared/Private + 压缩/去重/缓存)
│   ├── dag/                  # 双层 DAG 依赖图(关键路径/动态事件/故障传播/快照)
│   ├── execution/            # Agent 执行管线(四阶段流水线 + AgentRunner)
│   ├── fault/                # 故障容错(检测/重试/检查点/熔断/补偿/恢复)
│   ├── ipc/                  # IPC 消息总线(预留模块)
│   ├── llm/                  # LLM 客户端(OpenAI 兼容/Prompt 构建/重试/管理器)
│   ├── mission/              # Mission 生命周期管理(Spec/DAG/Budget/Policy/Result)
│   ├── observability/        # 可观测性(结构化日志/OpenTelemetry 链路/Prometheus 指标)
│   ├── redis_store/          # Redis 持久化存储
│   ├── register/             # Agent 注册表加载器
│   ├── resource/             # cgroup v2 资源管理(准入校验/租约/动态调整)
│   ├── runtime/              # 顶层运行时(12+ 管理器协调、Mission/Agent/Task 桥接)
│   ├── scheduler/            # 两级调度器(优先级队列 + 资源感知打分 + 事件驱动)
│   ├── server/               # HTTP REST API 服务
│   ├── storage/              # 制品存储管理
│   ├── task/                 # Task 状态机与生命周期管理
│   └── tool/                 # 工具管理器(注册/权限/沙箱/并发控/健康/审计/校验)
└── web-security/             # 安全审计报告样例

Agent 流水线

预定义的 11 个 Agent 形成如下执行拓扑:

task_planner_agent (任务规划)
  ├── code_quality_agent (代码质量)
  ├── security_audit_agent (安全审计)
  ├── dependency_analyze_agent (依赖分析)
  ├── test_exec_agent (测试执行)
  ├── doc_check_agent (文档检查)
  └── security_agent (安全扫描)
        └── patch_generator_agent (补丁生成)  ← 依赖上述扫描 Agent
              └── patch_review_code_agent (补丁审查)
                    └── patch_regression_test_agent (回归测试)
                          └── integrate_agent (集成汇总)

Agent 配置文件位于 configs/agents.json,每个 Agent 支持自定义:

字段 说明
priority 优先级:critical / high / medium / low
resource_tag 资源标签:light / medium / heavy
depend_on DAG 依赖的 Agent 列表
tools 可用工具列表
capabilities 能力描述(用于任务匹配)
role_prompt LLM 系统提示词
timeout 执行超时时间
output_artifact 输出制品名称

Agent SDK

agents/sdk 包提供 Agent 开发工具包,定义统一的开发契约:

// Agent 接口 — 所有业务 Agent 必须实现
type Agent interface {
    Type() string
    Metadata() AgentMetadata
    Plan(ctx Context, req AgentRequest) (*AgentPlan, error)
    HandleResult(ctx Context, result TaskResult) (*AgentReaction, error)
}

// AgentFactory 接口 — 工厂模式创建 Agent 实例
type AgentFactory interface {
    Create(deps AgentDependencies) (Agent, error)
}

新增 Agent 只需实现上述接口并在 agents/<your_agent>/agent.go 中提供 Register 函数,然后在 configs/agents.json 中声明配置即可。

核心子系统

调度器

两级优先级调度,Agent 间和 Agent 内 Task 各自维护优先级队列。支持资源感知打分(EMA 指数移动平均预测)、优先级老化防饥饿、公平信用补偿和高优先级抢占。调度策略可通过 runtime.yaml 配置(resource_priority / fairness / fifo)。

资源管理

基于 Linux cgroup v2 实现 Agent 级真实资源隔离(CPU/内存/PID 硬限制),Task 级按权重虚拟分摊。支持运行时动态调整资源限额、准入校验(资源不足时拒绝新 Agent)和 OOM 事件检测。

AI 资源经纪

管理多个 LLM 模型实例的生命周期:健康检查、负载均衡路由、Token 预算管理、请求限流与熔断。支持云端模型和本地 GPU 模型。

故障容错

完整的故障处理链路:故障检测(Agent 崩溃/Task 超时/LLM 超时/工具失败/心跳丢失/cgroup OOM)→ 重试控制 → 检查点恢复 → 熔断器 → 故障传播控制 → 补偿管理。

通信管理

三种通信机制支持 Agent 间高效协作:Mailbox(点对点消息)、EventBus(事件广播)、ArtifactRef(大对象引用传递)。内置消息 ID、ACK 确认、重试、TTL、背压、幂等处理和死信队列。

可观测性

  • 日志:基于 log/slog 的结构化日志
  • 链路追踪:OpenTelemetry stdout exporter
  • 指标:Prometheus /metrics 端点,暴露 Agent 创建/完成/失败等计数

License

Internal use only.

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

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