目录

NeuroBus

面向多智能体协作的结构化通信、非文本状态接力与跨任务共享记忆系统。

NeuroBus 由 Planner、Retriever、Executor、Summarizer 四个 Agent 组成。它用 SACP 结构化交接单约束协作,用 WorkingMemoryRef 在 Agent 之间接力模型服务端 KV 状态,用 MemoryUnit 将前序任务结论保存、检索并实际用于后续任务。

正式运行环境为 openEuler 24.03-LTS-SP3 Docker。GPU 发布验证使用 NVIDIA A40 GPU 0、本地 Qwen3-8B,以及同一个已加载模型实例完成 E0/E2 公平对照。

作品简介

主展示是一条包含两组、六个连续任务的 service-x 生命周期:

组一 service_fault
健康基线:连接池 32
  → 故障定位:发布把连接池从 32 降至 8
  → 实际恢复:生成 8→32 补丁并验证

组二 release_prevention
采用组一恢复结论,生成最低连接池 32 的发布门禁
  → 阻止连接池为 12 的风险候选
  → 修正为 32,回归通过并批准发布

每项任务都从声明的真实输入开始,在隔离工作区执行 service_lab 受控工具,生成可检查的 JSON、Markdown、配置或补丁成果。第二组首任务必须采用第一组末任务产生的 MemoryUnit。

网页先展示任务输入、完成状态、工具结果和最终成果,再展开 Agent 过程、三种机制产物和 E0/E2 对比数据。网页不提供任意任务输入、Agent 拖拽、登录、多用户并发或 KV 张量展示。

正式实跑结果

同模型 GPU 公平实验

项目 E0 纯文本 E2 SACP + KV + Memory
运行顺序 第 1 轮 A→B,第 2 轮 B→A 第 1 轮 A→B,第 2 轮 B→A
任务运行数 12 12
完成任务 12/12 12/12
service_lab.operation 正确率 100% 100%
通信字符 基准 相对 E0 减少 37.32%
模型实际输入 token 基准 相对 E0 减少 53.47%
平均端到端时延 基准 相对 E0 减少 63.01%
必需记忆检索并采用 不适用 10/10
状态 publish / consume 0 / 0 24 / 24

实验环境:openEuler 24.03-LTS-SP3 Docker、NVIDIA A40 GPU 0、Qwen3-8B、transformersbfloat16

公平性结论门 valid_for_same_model_claim=true。实验同时满足:

  • E0 与 E2 共用一个已加载的 Qwen3-8B 模型实例;
  • 相同任务输入、输入文件、验收定义、提示契约和 ActionSpec Schema;
  • 每项任务两侧各进行一次模型动作决策;
  • E0 从空缓存重新编码当前任务和完整文本历史;
  • E2 摄入当前任务语义和实际采用的 MemoryUnit,并接力服务端 KV 状态;
  • 两侧 Schema 都只给出六个合法操作的 enum,不使用任务答案 const 绑定;
  • 两轮按 AB/BA 交替运行,动作正确率均为 100%。

在本任务集和本实验条件下,E2 的通信字符、模型输入 token 和平均端到端时延均更低。两侧正确率同为 100%,因此本项目不声称 E2 的任务质量或正确率高于 E0。

openEuler CPU 稳定性

CPU/MockModelServer 在同一 openEuler 24.03-LTS-SP3 镜像中完成 10 轮稳定性实验:E0 60/60、E2 60/60。该结果用于证明六任务链和三种机制可重复运行,不用于同模型性能结论。

正式实验摘要、任务级数据和必要日志归档在 experiments/final/。临时服务输出仍写入 runs/,但 runs/ 不是唯一交付证据。

三个核心机制

机制 做了什么 可检查产物
SACP 结构化通信 用统一信封表达发送者、接收者、能力、动作、参数、结果和引用 SACPEnvelope、能力发现、消息轨迹、真实序列化字节与字符
WorkingMemoryRef 状态接力 KV 留在 ModelServer,Agent 在线路上传递带 session/version 的引用 W1/W2、生产者、消费者、版本、缓存长度、resume_success
MemoryUnit 共享记忆 将任务结论持久化,记录检索、采用、拒绝及后续使用 记忆 ID、来源、时间、主题、摘要、证据、adopted_memory_refs

三种机制位于同一任务链:Retriever 采用 MemoryUnit 后生成 W1,Executor 消费 W1、执行 ActionSpec 和工具并生成 W2,Summarizer 消费 W2、输出答案并写入新的 MemoryUnit。

最短 GPU 复现

环境要求

  • Docker 20.10 或更高版本;
  • NVIDIA GPU 与 NVIDIA Container Toolkit;
  • 建议至少 24 GB 显存;
  • 本地完整 Qwen3-8B 模型目录;
  • 可用宿主机端口,默认 8765。

模型不进入仓库或镜像,启动时只读挂载。NEUROBUS_MODEL_PATH 必须是绝对路径,且直接指向包含 config.json、tokenizer 和权重分片的目录。

export NEUROBUS_DEMO_MODE=gpu
export NEUROBUS_DEMO_IMAGE=neurobus-demo:openeuler-gpu
export NEUROBUS_DEMO_CONTAINER=neurobus-demo-gpu
export NEUROBUS_DEMO_PORT=8765
export NEUROBUS_GPU_DEVICE=0
export NEUROBUS_MODEL_PATH=/absolute/path/to/Qwen3-8B
export NEUROBUS_DEMO_OUTPUT_DIR="$PWD/runs/demo-gpu"

test "${NEUROBUS_MODEL_PATH#/}" != "$NEUROBUS_MODEL_PATH"
test -f "$NEUROBUS_MODEL_PATH/config.json"

1. 构建并验证 openEuler 镜像

bash deploy/openeuler/demo.sh build
bash deploy/openeuler/demo.sh verify

verify 在镜像内打印 /etc/openEuler-release,验证两组任务配置并运行受影响测试。真实 GPU 推理由后续 startrun-all 和公平实验验证。

2. 启动服务和网页

bash deploy/openeuler/demo.sh start

成功后终端打印网页、服务日志和结果目录。浏览器打开:

http://127.0.0.1:8765/

共享服务器建议使用 SSH 隧道:

ssh -N -L 8765:127.0.0.1:8765 <服务器账号与地址>

3. 运行一组任务

bash deploy/openeuler/demo.sh run service_fault

也可请求第二组;脚本会自动带上其前置组:

bash deploy/openeuler/demo.sh run release_prevention

4. 连续运行两组任务

bash deploy/openeuler/demo.sh run-all

5. 运行 GPU 同模型公平实验

公平实验与网页服务使用同一张 GPU 时,先停止网页容器:

bash deploy/openeuler/demo.sh stop
mkdir -p "$PWD/runs/fair-qwen"
test ! -e "$PWD/runs/fair-qwen/experiment-2round"

docker run --rm \
  --gpus "device=$NEUROBUS_GPU_DEVICE" \
  -e TRANSFORMERS_OFFLINE=1 \
  -e HF_HUB_OFFLINE=1 \
  -v "$NEUROBUS_MODEL_PATH:/models/Qwen3-8B:ro" \
  -v "$PWD/runs/fair-qwen:/output" \
  "$NEUROBUS_DEMO_IMAGE" \
  sh -lc 'cat /etc/openEuler-release && \
    python3 -m scripts.eval.service_release_experiment \
      --backend qwen \
      --model-path /models/Qwen3-8B \
      --device cuda:0 \
      --dtype bfloat16 \
      --warmup-rounds 1 \
      --rounds 2 \
      --seed 20260729 \
      --output-dir /output/experiment-2round'

实验目录不可复用;重跑时更换最后一级目录名。成功退出同时要求两侧任务全部完成且 fairness_gate.valid_for_same_model_claim=true

输出与证据

网页运行输出:

runs/demo-gpu/
├── openeuler-verify.log
├── service.log
└── runs/<DEMO-RUN-ID>/
    ├── result.json
    ├── service_release_lifecycle-E2_SACP_KV.sqlite
    └── workspaces/<mode>/tasks/<TASK-ID>/{input,artifacts}

公平实验归档:

experiments/final/
├── fair-qwen-gpu/          # E0/E2 汇总、逐任务记录、执行日志、对比图
├── stability-mock-10round/ # openEuler CPU 10 轮稳定性证据
├── demo-run/               # 输入、最终成果与三种机制的可检查产物
└── checksums.sha256

result.json 包含任务输入、最终答案、独立验收、ActionSpec、工具回执、真实成果、SACP 轨迹、状态接力、MemoryUnit 和 E0/E2 指标。summary.json 包含同模型公平性门、聚合指标与 E2 相对 E0 的变化。

常用检查:

bash deploy/openeuler/demo.sh status
bash deploy/openeuler/demo.sh logs
bash deploy/openeuler/demo.sh stop

openEuler 兼容性

CPU 与 GPU Dockerfile 都直接基于:

openeuler/openeuler:24.03-lts-sp3

源码、依赖安装、Python 编译、pytest、服务、六任务链和公平实验均在该 openEuler 容器用户态内运行。Docker 是共享服务器上的正式隔离部署方式;宿主机只提供 Docker、NVIDIA 驱动、端口、模型目录和输出目录,不需要修改共享服务器的 Python 或系统配置。

系统结构

Task / Web
    ↓
Runtime ── AgentRegistry / Router / TaskContext
    ├── PlannerAgent
    ├── RetrieverAgent ── SMS / MemoryUnit
    ├── ExecutorAgent ── ActionSpec / ToolRegistry / service_lab
    └── SummarizerAgent ── SMS / MemoryUnit
                │
                └── BaseModelServer
                    ├── MockModelServer
                    └── CRuntimeModelServerAdapter
                        └── QwenModelServer / Qwen3-8B / KV cache

仓库导航

路径 内容
src/neurobus/runtime/ 四 Agent 调度、状态与运行事实
src/neurobus/protocol/ SACP、能力注册、路由和线协议计量
src/neurobus/model/ Qwen 模型服务、fresh-text 与 KV session
src/neurobus/memory/ MemoryUnit、SQLite、检索与采用
src/neurobus/actions/ ActionSpec、Schema、白名单与校验
src/neurobus/tools/service_lab.py 六种受控业务操作和隔离成果生成
tasks/continuous/ 两组正式连续任务、输入、真值与验收
demo/dashboard/ 结果优先的演示网页
scripts/run/demo_service.py 网页服务与后台任务入口
scripts/eval/continuous_tasks.py 单次 E0/E2 六任务运行器
scripts/eval/service_release_experiment.py AB/BA 同模型公平实验与汇总
deploy/openeuler/demo.sh openEuler Docker 最短部署入口
experiments/final/ 正式实验摘要、任务级数据与图表
docs/final/ 项目说明书、系统设计与技术报告

开发检查

宿主机原生开发不是正式部署要求。需要本地开发时可执行:

python3 -m pip install -e .
python3 -m pip install -r requirements/cpu.txt -r requirements/dev.txt
python3 -m pytest
ruff check --select E9,F63,F7,F82 src scripts tests

完整 Ruff 与 mypy 可用于持续治理历史质量债务,但不属于本次正式版发布门;本次发布门以全量 pytest、致命 Ruff 规则、源码编译、Dashboard/部署脚本语法和 openEuler 容器实跑为准。

赛题要求对齐

赛题要求 NeuroBus 实现与证据
不少于 3 个 Agent 4 个 Agent:规划、检索、执行、总结
结构化通信与能力发现 SACPEnvelope、AgentRegistry、Router
纯文本与结构化模式 同一 Qwen 的 E0 fresh full-text 与 E2 SACP + KV
非文本状态传递 两跳 WorkingMemoryRef,KV 留在 ModelServer
共享记忆 SQLite SMS、MemoryUnit、检索/采用/拒绝记录
两组关联任务 service_fault、release_prevention,共 6 个任务
不少于 10 轮稳定执行 openEuler CPU mock:E0 60/60、E2 60/60
性能对比 A40/Qwen 同模型 AB/BA,公平性门为 true
openEuler 交付 24.03-LTS-SP3 CPU/GPU Docker 构建、测试与实跑
完整材料 源码、README、设计、部署、实验、说明书和演示材料

文档

结论边界

  • 本次正式公平实验支持“在该六任务、两轮 AB/BA、A40/Qwen3-8B 条件下,E2 的通信字符、模型输入 token 和平均端到端时延低于 E0”。
  • E0 与 E2 的任务完成率和动作正确率均为 100%,不能声称 E2 正确率或任务质量更高。
  • 结果不自动外推到任意模型、任意任务长度或任意硬件。
  • E3/E4 latent 模式、CodeAct 沙箱、任意任务输入和多用户并发不属于正式展示范围。
关于
154.8 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

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