目录

AgentOS Runtime

面向多智能体持续执行的操作系统级用户态运行时,统一管理任务、模型请求、上下文、工具、通信与系统资源。

项目简介

AgentOS Runtime 面向长期、并发和事件驱动的多智能体应用,在应用与模型、工具、消息中间件及操作系统资源之间建立统一执行控制层。系统以分层执行对象承载运行过程,通过事件驱动 Dynamic DAG、OS-PARS 调度、异构资源租约、版本化共享状态与局部故障恢复,支持复杂任务的持续协作。

项目基于 openEuler 开发与验证,以 Mini Smart City 城市应急处置作为综合应用场景,扩展医疗报告理解、分诊与车辆派遣,并完成 主机 Runtime + Ascend 310B4 推理侧车的真实 NPU 调用链路。模型负责受限观察下的语义决策,规则执行器与受保护工具负责确定性控制,决策经过解析、业务约束校验和授权后转化为动作。

OS-PARS 全称为 OS-aware Priority And Resource Scheduler,即操作系统感知的优先级与资源协同调度算法。Agent Kernel 是运行于现有操作系统之上的用户态执行控制层。

核心特点

  • 分层执行控制:AgentSpec/SkillSpec 描述角色与能力契约,Agent Instance、Task、Inference Request 分别承载主体、业务任务和模型请求,ACB 关联状态、资源与故障信息。
  • 动态任务与两级调度:Dynamic DAG 在事件和状态变化中展开依赖任务;OS-PARS 分配任务执行权,各 Kernel Service 进一步管理模型、工具、状态、消息和媒体请求。
  • 统一资源租约:ResourceClaim/Lease 管理进程、内存、模型并发槽、Token、工具预算及存储通信配额,连接 cgroup v2、真实子进程及各服务后端。
  • 状态与通信协同:Context 通过 ACL、版本和 CAS 保持一致,通过增量读取与任务投影减少输入;AgentBus 提供优先级投递与 Redis Streams 跨进程确认、重放和去重。
  • 故障隔离与续跑:安全点检查点、依赖阻断与事件重放支持局部恢复;执行代次和所有权检查隔离失效输出。
  • 云边推理接入:统一适配远端 Provider、本地兼容服务和 Ascend 310B4,以常驻模型、紧凑 Prompt 与序列预算支持资源受限设备。

主要验证结果

验证内容 实验结果 对应负载
紧急任务响应 P0 平均等待 0.801 s → 0;关键路径 6.896 s → 5.375 s 固定 OS-PARS、相同 4 个执行槽的安全点抢占对比
OS 生命周期 120 次子进程注册、1200 次采样、105 次选择性撤销;最终进程泄漏 0 openEuler 容器环境,15 个 trial;CPU/内存实际 cgroup 约束
故障恢复 50/50 次恢复;级联故障 0 6 类故障注入,Runtime Opt
板端真实推理 14 个标准 Profile 完成 NPU 推理;另完成 3 场景、42 次真实请求 Ascend 310B4、原始 SmolLM2-360M seq512
Prompt 优化 输入 13142 → 3364 tokens,减少 74.40% 14 个标准 Profile,固定 tokenizer 与 chat template
跨进程通信 30 个 trial、6840 个发布事件、8280 次订阅投递;确认后 pending 0 Redis Streams 联合负载,含消费者崩溃恢复
媒体引用通信 控制面载荷 3,932,874 → 836 bytes,减少 99.9787% 固定合成媒体负载,Evidence 对象治理
医疗模型协议 876 次请求,有效输出率 **99.89%**;400 次回放无车辆重叠占用或医院超容量 CUDA 医疗 LoRA 360M、100 个未见场景、四策略配对
开放报告理解 DeepSeek 19/20 次决策完全正确,增强规则 7/20 8 个独立故事,来源冲突、撤回与动态修订

各行对应独立实验负载。完整协议、对照与分析见 技术文档。

目录

快速开始

从项目根目录执行。首次使用建议先启动本地基础演示,再按需要接入 SUMO、Redis 或真实模型服务。

  1. 按 安装方法创建 Python 虚拟环境、安装后端依赖,并在 src/frontend/ 执行 npm ci。
  2. 在已激活虚拟环境的终端启动后端:
# Linux / openEuler
AGENTBUS_BACKEND=memory python -m uvicorn app:app --app-dir src/backend --host 127.0.0.1 --port 8008
# Windows PowerShell
$env:AGENTBUS_BACKEND = "memory"
python -m uvicorn app:app --app-dir src/backend --host 127.0.0.1 --port 8008
  1. 在另一个终端启动前端:
cd src/frontend
npm run dev
  1. 打开 应急指挥中心,在 Runtime 主控台查看任务、资源与事件;基础演示使用本地执行与回退路径。
  2. 完成 核心测试和 接口链路测试。真实板端推理按 Ascend 310B4 板端部署接入。

应用场景

场景 业务过程 验证目标
城市应急协作 暴雨、道路碰撞、火灾、危化品泄漏等事件触发警力、消防、救护车、信号和公共交通协作 动态任务图、紧急任务优先响应、跨角色状态协作
多事故医疗处置 报告核实、伤员分诊、专科需求判断、车辆派遣、床位分配与交接 模型决策校验、受控工具执行、资源冲突处理
云边模型接入 HTTP 接入远端 Provider、本地兼容服务或 Ascend 310B4 侧车 模型请求管理、Prompt 压缩、真实推理证据和安全回退
机制实验 固定或物化负载下比较调度、资源、通信、上下文及恢复策略 可重复测试、对照与消融、指标与执行记录对应

Runtime 主控台与三维数字孪生

运行界面示例:左侧为 Runtime 主控台,右侧为三维城市视图。

主要功能与系统架构

模块 主要能力 实现位置
执行模型 AgentSpec/SkillSpec 声明、Agent 与 Task 生命周期、模型 Harness 和规则执行器 src/backend/runtime_mock/agents/、src/backend/runtime_mock/core/agent_spec.py
Dynamic DAG 与 OS-PARS 事件派生任务、依赖与 join、P0-P3 优先级、deadline、老化、资源适配、任务安全点抢占 src/backend/runtime_mock/core/kernel/
资源管理 ResourceClaim/Lease 声明、准入、计量与回收;Token、工具、LLM 槽、Context、消息及证据配额;子进程观测与可选 cgroup v2 src/backend/runtime_mock/core/kernel/resource_manager.py
推理管理 Provider 适配、模型输出解析与校验、请求级取消、迟到结果隔离、Prompt Projection src/backend/runtime_mock/llm/、src/backend/runtime_mock/agents/prompt_optimization.py
Context 与权限 共享/私有上下文、版本与 CAS、增量读取、摘要压缩、访问控制 src/backend/runtime_mock/core/context/
AgentBus 优先级消息、订阅过滤、背压、重放;Redis Streams 跨进程传输 src/backend/runtime_mock/core/bus/
Evidence 数据面 证据引用、来源与校验摘要、共享内存热层、持久回退和配额清理 src/backend/runtime_mock/core/media/
故障与观测 下游隔离、checkpoint/restore、恢复与事件记录、指标查询和回放 src/backend/runtime_mock/core/kernel/fault_manager.py、src/backend/runtime_mock/core/kernel/observability.py
场景与展示 SUMO/TraCI、CityAPI 工具、FastAPI、WebSocket、Three.js 可视化 src/backend/city_bridge/、src/backend/app.py、src/frontend/

AgentOS Runtime 三层总体架构

应用层提出任务与能力请求,运行时负责调度和服务准入,底层提供实际模型、消息、存储与系统资源。

城市运行时包含 16 个执行角色:EmergencyDispatch、Ambulance、PublicAdvisory 和 OperatorBriefing 使用模型 Harness,其余 12 个执行确定性规则。医疗扩展另注册 MedicalTriage 与 MedicalVehicle;CameraCaptureService 是独立证据采集服务。PublicAdvisory 与 OperatorBriefing 生成待审核草稿。不同模式下的模型调用范围由配置决定,注册角色数不等于真实模型请求数。

典型流程:外部事件 → 动态任务图 → OS-PARS 调度与资源准入 → 受控模型/工具调用 → Context 提交与消息发布 → 结果观测或异常恢复。

Ascend 310B4 板端部署

主机与板端分工

采用 主机负责执行控制,板端负责常驻推理的部署方式。主机运行 Dynamic DAG、OS-PARS、Resource Manager、Context Store、AgentBus 和模型输出校验;Ascend 310B4 通过轻量 HTTP Sidecar 提供推理服务,复用常驻的 ACL 引擎与 .om 模型。

flowchart TD
    A[Agent Task 与受限观察] --> B[主机 Runtime]
    B --> C[Prompt Projection 与序列预算]
    C --> D[LLMCoreManager 请求准入]
    D --> E[板端 HTTP Sidecar]
    E --> F[AscendCL 与常驻 OM 模型]
    F --> G[输出 usage 与设备计时]
    G --> H[主机解析与业务约束校验]
    H --> I[授权动作与状态提交]
    H --> J[受控回退]

板端承担模型加载、ACL 执行和设备计时,返回模型输出及 Token 用量;主机管理请求优先级、执行租约和结果采纳。逻辑取消撤销旧输出的提交资格,在途租约保留至后端结束确认,使任务状态与设备执行状态保持清晰关联。

部署环境与模型

项目 配置
设备 Ascend 310B4
板端系统 openEuler 22.03 LTS
推理环境 CANN 8.5 独立 Python 动态库环境、AscendCL/ACL
实测模型 smollm2_360m_origin_seq512.om,原始 SmolLM2-360M-Instruct
模型构建 工作站导出并进行 ATC 编译,板端加载与执行
服务方式 HTTP Sidecar;主机通过 provider=ascend 接入
并发配置 单模型常驻,CITYAGENT_LLM_MAX_CONCURRENCY=1
线程配置 OMP_NUM_THREADS=1

常驻 seq512 模型实测 NPU 内存使用约 2185—2227 MB,设备总容量 3513 MB。模型加载耗时约 9.163 s;常驻服务可连续处理请求,减少重复加载。14 个标准 Profile 均完成真实 NPU 推理,其中 Police Profile 直接通过解析与校验,其余 13 个进入受控回退;另有 3 场景共 42 次真实请求,记录模型哈希、usage 与设备计时。

接入步骤

  1. 在工作站准备模型与 tokenizer,完成导出和 ATC 编译;将 .om、对应 tokenizer 与配置部署到板端。
  2. 按 板端侧车说明 配置 CANN/ACL 环境并启动 Sidecar,保持单份模型常驻。
  3. 在主机启动后端前配置 Provider、模型名与板卡地址:
export CITYAGENT_LLM_PROVIDER=ascend
export CITYAGENT_LLM_MODEL=SmolLM2-360M-Instruct-seq512
export CITYAGENT_LLM_BASE_URL=http://192.168.137.2:8000/v1
export CITYAGENT_LLM_MAX_CONCURRENCY=1

将地址替换为实际板卡地址。Windows PowerShell 使用下文对应的 $env: 配置。随后启动主机后端,在实时运行入口启用 LLM;指挥中心的角色模型配置位于 src/backend/configs/command_agents.yaml。

  1. 运行标准 Profile 与场景验证,查看真实请求、输出校验、usage、设备计时及授权动作结果。

板端资源优化

  • 输入侧:Prompt Projection 提取当前任务、关键事实、候选资源和动作约束,Compact 协议压缩候选编码与输出结构。输入 Token 与预留输出 Token 共同满足 OM 序列预算。
  • 部署侧:模型常驻、单并发与工作站离线编译控制设备资源占用,主机统一管理请求与业务状态。
  • 缓存侧:512-token KV 复用与 256-token KV 复用加裁剪方案已完成工作站编译、CPU 数值一致性及离线接口验证;FP16 K/V 输入缓冲区由 20 MiB 降至 10 MiB。CPU 技术验证中,长输入解码由 1.30 提升至 14.08 token/s,该速度对应 CPU 平台。

医疗 LoRA 360M 的配对实验使用 CUDA 后端;板端标准 Profile 使用原始 360M OM。两种部署分别验证领域决策与资源受限推理接入。

项目结构

项目根目录/
├── README.md
├── src/
│   ├── backend/                    FastAPI、Runtime、CityAPI 与 SUMO 适配
│   ├── frontend/                   Vite、Three.js 与同源网关
│   ├── experiment/                 机制实验实现与配置
│   ├── benchmark/                  最终状态及医疗决策评测实现
│   ├── board/                      Ascend 侧车与 KV 验证工具
│   ├── scripts/                    部署、构建、实验与验收工具
│   └── Dockerfile / Compose 配置   openEuler 构建与部署
├── docs/
│   ├── 项目说明书.pdf
│   ├── 项目创新说明.pdf
│   ├── 成员分工及主要贡献说明.pdf
│   ├── 人工智能及第三方工具使用说明.pdf
│   ├── guides/                     必要的部署与模型接入说明
│   └── images/                     README 配图
├── tests/
│   ├── backend/cases/              后端、Runtime 与 SUMO 测试
│   ├── experiment/cases/           机制实验与指标契约测试
│   ├── benchmark/                  决策与最终状态评分测试
│   ├── frontend/                   前端几何与模型测试
│   ├── baselines/                  已有基线与决策结果材料
│   └── results/                    本次验证结果与新增结果
├── demo/                           可运行入口与复现说明
├── presentation/
│   ├── 决赛现场演示PPT.pptx
│   └── 决赛演示视频.mp4
└── 作品原创承诺书.pdf

runtime_mock/ 是历史目录名,包含当前运行时实现,覆盖任务调度、资源管理、上下文、通信与故障恢复。结果通常写入 src/backend/results/ 或 src/experiment/results*/;模型权重、前端依赖及构建产物不作为源码提交。

系统环境

运行方式 环境要求 适用范围
本地开发与演示 Windows 或 Linux;Python 3.10+,建议 3.11;Node.js 20;现代浏览器 API、任务协作、可视化与核心逻辑测试
openEuler 容器部署 Linux、Docker Engine、Compose v2;openEuler 24.03 LTS 用户空间镜像 集成部署、Redis 通信与机制实验
OS 物理资源实验 启用 cgroup v2 的 Linux 宿主,具备控制组创建、写入与进程附加权限 CPU/内存约束、子进程生命周期与回收
Ascend 板端推理 Ascend 310B4、openEuler 22.03 LTS、CANN 8.5、匹配的 ACL 动态库 常驻 OM 模型与 HTTP Sidecar 真实推理
医疗模型实验 配置对应 CUDA 推理服务、模型权重与 tokenizer 医疗 LoRA 360M 决策评测

正式机制实验使用 Python 3.11.6。openEuler 容器提供运行用户空间,底层资源控制由宿主内核执行。浏览器需支持 WebSocket 与 WebGL,三维视图需要可用图形加速。

依赖要求

依赖 安装来源或配置位置 用途
后端 Python 库 src/backend/requirements.txt FastAPI、Uvicorn、PyYAML、websockets、psutil、NumPy、SciPy、Matplotlib、pytest、Redis 客户端及 SUMO/TraCI
测试补充库 python -m pip install httpx FastAPI TestClient 与 HTTP 测试
前端依赖 src/frontend/package.json、package-lock.json;使用 npm ci Vite、Three.js、页面构建与前端测试
SUMO sumo、netconvert 可从 PATH 调用;按系统安装方式配置 SUMO_HOME 与 TraCI 实时城市仿真、路网构建及集成测试
Redis Redis 7,配置 REDIS_URL Streams 跨进程消息;基础演示可使用 memory 后端
Docker Docker Engine 与 Compose v2 openEuler 容器构建与部署
模型服务 Provider、模型名、服务地址与环境变量凭据 远端 API、本地兼容服务与真实模型闭环
板端模型产物 .om、对应 tokenizer/config 与 CANN/ACL 环境 Ascend 310B4 推理;构建与部署见板端指南

首次安装与容器构建需访问相应镜像、Python 和 npm 软件源。基础演示可独立启动;SUMO、Redis、CUDA 与 Ascend 根据所选运行方式准备。

安装方法

以下命令从项目根目录执行,除非代码块明确切换目录。推荐使用虚拟环境。

1. 创建 Python 环境

Windows PowerShell:

python -m venv src/.venv
.\src\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -r src/backend/requirements.txt
python -m pip install httpx

Linux / openEuler:

python3 -m venv src/.venv
source src/.venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -r src/backend/requirements.txt
python -m pip install httpx

若系统未提供 Python、pip 或 venv,先通过系统包管理器安装;从源码构建 Python 扩展还需要编译工具和 Python 开发头文件。

2. 安装前端依赖

cd src/frontend
npm ci
cd ../..

npm ci 按锁文件安装。PowerShell 若阻止 npm.ps1,将命令中的 npm 换为 npm.cmd。

3. 检查可选服务与仿真工具

sumo --version
netconvert --version

命令中心基础演示不强制要求 SUMO,实时城市仿真与 SUMO 集成测试需要以上工具。跨进程通信可使用已有 Redis 服务,或安装 Docker 后执行:

docker run -d --name agentos-dev-redis -p 127.0.0.1:6379:6379 redis:7-alpine

src/.env.example 是配置参考。**本地 Python/Vite 启动不会自动加载src/.env**,请在启动后端的终端设置环境变量;Compose 可读取src/.env 并替换其已声明变量。

构建方法

后端准备

后端以 Python 源码运行,完成虚拟环境与 requirements.txt 安装即可启动;入口为 src/backend/app.py,启动命令见 运行方法。

前端构建

cd src/frontend
npm run build
cd ../..

产物位于 src/frontend/dist/,包含 command.html、twin.html、index.html、experiments.html、agentbus.html 和 evidence.html。后端为 Python 源码服务,无需单独编译。

SUMO 路网构建

项目已包含 src/backend/city_bridge/sumo_assets/maps/city.net.xml。修改节点、道路或连接定义后执行:

python src/backend/scripts/build_net.py

脚本调用 netconvert 更新路网与信号文件,一般首次演示无需重新生成。

openEuler 镜像构建

docker compose -f src/docker-compose.openeuler.yml -f src/docker-compose.ports-override.yml build

src/Dockerfile.openEuler 先在 Node.js 20 阶段构建前端,再安装 Python 依赖并生成 openEuler 运行镜像;Redis 镜像在启动时拉取。

板端模型构建

Ascend 模型采用工作站导出与 ATC 编译、板端加载执行的流程。准备与设备匹配的 CANN 工具链、模型和 tokenizer,按 Ascend 接入指南与 Sidecar 说明生成并部署 .om。标准 seq512 模型与 KV 复用/裁剪模型使用各自的输入输出接口和配置。

运行方法

方式一 本地开发

终端 A:激活 Python 虚拟环境,启动后端。 首次演示可显式使用 memory 后端,无需 Redis。

PowerShell:

$env:AGENTBUS_BACKEND = "memory"
python -m uvicorn app:app --app-dir src/backend --host 127.0.0.1 --port 8008

Linux:

AGENTBUS_BACKEND=memory python -m uvicorn app:app --app-dir src/backend --host 127.0.0.1 --port 8008

终端 B:启动前端。

cd src/frontend
npm run dev

打开 应急指挥中心。Vite 将 /api 与 /ws 代理到 127.0.0.1:8008。实时城市运行可在 Runtime 主控台选择 mock 模式启动;指挥中心无密钥时可用本地回退完成基础处置演示。

页面 默认地址 用途
应急指挥中心 http://127.0.0.1:5173/command.html 多事故处置、车辆时间线
三维数字孪生 http://127.0.0.1:5173/twin.html 城市、车辆与状态
Runtime 主控台 http://127.0.0.1:5173/index.html 实时运行、任务、资源、回放
实验展示 http://127.0.0.1:5173/experiments.html 已生成实验结果
AgentBus 观测 http://127.0.0.1:5173/agentbus.html 消息与后端状态
证据管理 http://127.0.0.1:5173/evidence.html 证据对象与元数据
API 文档 http://127.0.0.1:8008/docs FastAPI 接口定义

Ctrl+C 停止开发服务。不要用 python -m http.server 直接托管前端源码替代 Vite,Three.js 模块需要构建或开发服务器解析。

方式二 运行构建后的前端

保持后端运行,在已激活 Python 环境的另一个终端,从根目录执行:

python -m uvicorn proxy_server:app --app-dir src/frontend --host 127.0.0.1 --port 5173

同源网关读取 src/frontend/dist/,将 /api 和 /ws 转发到后端。先完成前端构建,并停止占用 5173 的 Vite 服务。后端地址变化时配置 BACKEND_ORIGIN 与 BACKEND_WS_ORIGIN。

方式三 openEuler 容器部署

docker compose -f src/docker-compose.openeuler.yml -f src/docker-compose.ports-override.yml up -d --build
docker compose -f src/docker-compose.openeuler.yml -f src/docker-compose.ports-override.yml ps
docker compose -f src/docker-compose.openeuler.yml -f src/docker-compose.ports-override.yml logs -f city-runtime

同时启动 Redis、后端和构建后的同源前端。启动脚本等待接口就绪并进行五事故链路自检,首次启动需等待。基础 Compose 文件没有宿主端口映射,必须同时加载端口映射文件。 默认前端 5173、后端 8008、Redis 6379;冲突时设置 FRONTEND_PORT、BACKEND_PORT、REDIS_PORT。

访问 http://服务器地址:5173/command.html。映射文件也发布 Redis 6379,远程部署需通过防火墙限制该端口;浏览器只需访问前端入口。停止服务并保留证据数据卷:

docker compose -f src/docker-compose.openeuler.yml -f src/docker-compose.ports-override.yml down

Redis 与真实模型配置

跨进程通信要求后端启动前设置以下变量,且 Redis 可连接。

PowerShell:

$env:AGENTBUS_BACKEND = "redis"
$env:AGENTBUS_REQUIRE_REDIS = "1"
$env:REDIS_URL = "redis://127.0.0.1:6379/0"

Linux:

export AGENTBUS_BACKEND=redis
export AGENTBUS_REQUIRE_REDIS=1
export REDIS_URL=redis://127.0.0.1:6379/0

通过 /api/agentbus/status 确认 connected=true、transport=redis_streams。允许降级时 Redis 不可用会显示 local_fallback,此时仅进程内通信。

真实模型需先准备服务与凭据。实时运行的模型切换和指挥中心 src/backend/configs/command_agents.yaml 是不同入口,应分别检查配置。Ascend 接入示例:

$env:CITYAGENT_LLM_PROVIDER = "ascend"
$env:CITYAGENT_LLM_MODEL = "SmolLM2-360M-Instruct-seq512"
$env:CITYAGENT_LLM_BASE_URL = "http://192.168.137.2:8000/v1"
$env:CITYAGENT_LLM_MAX_CONCURRENCY = "1"

替换为实际板卡地址,重启后端并在实时运行入口启用 LLM。Linux 使用同名变量配合 export。板端模型、ACL、侧车启动及验收见 Ascend 接入指南 和 侧车说明。远端 API 密钥通过环境变量传入,例如 DEEPSEEK_API_KEY。

命令行仿真与实验

完整 SUMO Runtime 演示:

python src/backend/scripts/run_demo.py --group runtime --seed 1 --out src/backend/results/demo/runtime

要求 SUMO 可用,输出任务、事件和指标记录。--gui 可启用图形界面;无图形环境时保持默认无界面模式。

无需真实模型的机制调试示例:

python src/experiment/run.py context --incidents 3 --repeats 1 --seeds 1 --no-experiment-llm-api --no-charts --results src/experiment/results_context_debug

正式 all 入口覆盖 os、sched、ablation、resource、fault、acl、llm_core、evidence、context、comm、ckpt,默认包含真实模型闭环。在专用 Linux/cgroup 环境准备好后运行:

cp src/.env.experiments.api.example src/.env.experiments.api
# 编辑 src/.env.experiments.api,填写实际 Provider、模型与密钥
sudo bash src/scripts/run_openeuler_cgroup_experiments.sh

默认结果目录为 src/experiment/results_all_api_openeuler_cgroup/,包括 all_summary.json、分实验 JSON/CSV、事件与请求记录。正式脚本使用 privileged、host PID/cgroup 和可写 cgroup 挂载,仅用于专用实验主机或 VM。输出包含分实验指标与真实请求记录。

测试方法

测试层级 准备条件 检查内容
Python 核心回归 Python 环境及测试依赖 调度、资源、上下文、请求治理与媒体对象
前端测试与构建 Node.js 与 npm ci 页面逻辑、几何、车辆模型与模块构建
接口和场景链路 后端、前端;对应场景所需服务 健康接口、五事故处置、时间线与恢复
Redis 跨进程测试 Redis 服务及强制 Redis 配置 连接、确认、重放与消费恢复
最终状态 Benchmark Benchmark 依赖与对应运行配置 改道、分诊、床位分配与交接状态
Ascend 真实请求 板端 Sidecar、OM、主机 Provider 配置 NPU 调用、usage、设备计时、输出校验与动作采纳

从根目录执行,先激活 Python 环境并安装测试补充依赖。以下测试无需真实模型密钥;部分使用本地模拟 HTTP 服务,SUMO 集成测试需要仿真工具。

Python 测试

核心快速验证:

python -m pytest tests/backend/cases/test_kernel.py tests/backend/cases/test_agent_os_runtime.py tests/backend/cases/test_multimodal_evidence.py tests/experiment/cases/test_unified_resource_claim.py -q

分模块完整测试:

python -m pytest tests/backend/cases -q
python -m pytest tests/experiment/cases -q
python -m pytest tests/benchmark -q

覆盖 API 合约、Harness 校验、抢占、子进程撤销、Context、证据、SUMO 对接和实验指标契约。真实跨进程链路使用下文 Redis 测试入口验证。

前端测试与构建检查

cd src/frontend
npm test
npm run build
cd ../..

覆盖几何、车辆模型与控制台编码等逻辑,构建验证页面入口和模块依赖。浏览器链路与板端请求通过各自运行入口验证。

启动后的接口与链路测试

curl http://127.0.0.1:8008/api/health
curl http://127.0.0.1:5173/api/command-center/options
python src/scripts/command_demo_smoke.py --base http://127.0.0.1:8008 --timeout 190

PowerShell 可用 curl.exe 避免旧版本命令别名差异。五事故脚本检查处置、抢占与恢复、事件及三维时间线。强制 Redis 验证:

python src/backend/scripts/run_redis_agentbus_smoke.py

运行前设置 AGENTBUS_BACKEND=redis、AGENTBUS_REQUIRE_REDIS=1 和实际 REDIS_URL。

最终状态 Benchmark

python src/benchmark/run_benchmark.py
python src/benchmark/run_benchmark.py --case hidden_congestion_reroute
python src/benchmark/run_benchmark.py --case mass_casualty_bed_allocation

输出 final_state、score、passed,按改道、交通控制、分诊、床位分配和交接等状态评分。上述两个样本用于快速验证流程状态;真实模型决策评测见 Benchmark 文档 的独立决策与医疗入口。

Ascend 真实推理测试

先完成 板端接入步骤,保持 Sidecar 与主机后端运行,再按板端指南执行标准 Profile 和多场景请求。检查服务返回、模型哈希、Token 用量、NPU 计时、parser/validator 结果,以及主机任务的授权动作和完成状态。板端 HTTP 协议测试与真实 NPU 请求分别记录。

已知限制

  • 操作系统资源控制:Agent 是 Runtime 的逻辑执行主体,可绑定真实进程或远端服务。cgroup v2 硬约束与内核计数适用于 Linux 环境;Windows 主要用于开发、演示与逻辑回归。
  • 并发部署:当前任务状态、Context 和部分资源账本由主 Runtime 进程维护。部署使用单个 Runtime 管理进程;增加 Uvicorn worker 数需要配套共享状态方案。Redis 承担跨进程事件传输。
  • 取消与恢复粒度:逻辑取消控制结果采纳,在途资源租约保留至后端结束确认。Task 检查点恢复业务阶段和控制状态,模型内部 Token/KV 生成状态由推理后端管理。
  • 板端模型与序列预算:当前 310B4 部署采用常驻 seq512 模型和单并发,输入与预留输出共同受序列长度约束。原始 360M 模型的标准 Profile 包含直接通过与受控回退,真实 NPU 执行和业务决策质量分别评价。
  • 缓存与媒体范围:KV 复用和裁剪的速度结果来自 CPU 技术验证,板端已完成相关模型编译与接口准备;共享内存热层用于同机媒体访问,合成媒体实验评价对象治理与引用通信。
  • 使用条件:模型权重、板端 OM 和服务凭据按部署方式单独准备。现有部署面向研究验证与演示;面向公网或多租户服务时需配置认证、TLS 和相应隔离策略。

技术资料

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

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