Update README installation, usage and verification documentation
面向多智能体协作的低开销通信、非文本状态与共享记忆运行时。
openEuler 24.03 LTS SP3 · Python/FastAPI · React/TypeScript · Apache-2.0
openEuler 24.03 LTS SP3
Python/FastAPI
React/TypeScript
Apache-2.0
阅读导航:项目简介 · 应用场景 · 主要功能 · 系统环境 · 依赖要求 · 安装方法 · 构建方法 · 运行方法 · 测试方法 · 已知限制。
Nexus-MAS 是运行在 openEuler/Linux 上、可复现验证的多智能体系统层机制原型。通用运行时支持 Agent 注册与依赖图扩展,统一 SACP 类型化通信、SSC 共享状态、签名共享记忆和跨任务复用;默认配置由 Planner、Retriever、Executor、Reporter四个持久独立 Worker 进程协作。
系统提供两个入口:开放任务工作台面向用户问题、文件和连续追问,默认使用B5 控制型记忆,并保留 B3 依赖校验基础;固定评测轨使用 typed-v4 记忆策略与sacp/model-view 结构化接口,执行 B0/B0C/B1/B2/B3/B4/B5 七模式配对消融。系统设计见项目说明书。
typed-v4
sacp/model-view
最新真实模型结果以 openEuler 八个连续任务场景消融实验为准:八场景 × 十轮 × 七模式,共 560/560 任务完成,零执行失败。成本、效率、质量与结论范围见下方真实模型消融实验结果及最终实验包。
核心目标:让 Agent 不再反复透传长文本,而是通过类型化协议、共享内存状态、类型化结果、可引用资料和可复用共享记忆完成协作,并用同任务、同输入、同评价器的消融实验证明各机制的实际贡献。
证据任务是用于冻结输入、核验质量与对比机制的工作负载。协作接口以动作、参数、结果、能力和状态为核心;共享记忆统一保存不同角色形成的摘要、证据、策略、经验与工具结果。知识工作区也是无文件任务的知识积累和隔离范围。
AgentSpec
按照项目创新说明书,项目的主要创新归纳为三项,分别解决连续协作中的长文本重复传递、机器状态文本化,以及跨任务的知识积累和协同增强。新增贡献集中在运行时契约、接收方消费验证、局部重算和当前输入上的方法执行;Protobuf、共享内存、向量编码和 SQLite 是实现这些机制的基础组件。
SACP(Structured Agent Collaboration Protocol)为同主机持久 Agent 进程建立明确的控制契约,把动作、身份、输入输出 Schema、期限、证据与状态引用绑定到当前任务。它将协议校验、角色所需信息和执行回执连接起来,减少连续协作中重复传递全文与控制信息的开销。
HELLO → CAPABILITY_ADVERTISE → CAPABILITY_ACK → ACK
该创新是 Protobuf 信封、类型化投影、带外 Artifact 与 Worker 校验执行的联合机制。 实现入口:协议定义、进程通信、类型化结果。
SSC(Semantic State Capsule,共享状态胶囊)通过操作系统共享内存传递向量、候选矩阵与机器可计算状态,SACP 传递其描述符。创新重点是将共享数据绑定到当前任务与来源,并由接收进程实际计算和回执,形成可核验的状态消费链。
float32 / float16 / int8
SSC 用于候选排序、路由、知识检索与状态核验;自然语言分析继续使用本轮可见文本。 实现入口:状态胶囊、证据覆盖策略、增量传输与消费。
系统将角色输出、纯计算节点和共享知识纳入依赖图,通过统一 UnitStore 与 Checkpoint记录可复用条件。依赖感知复用保留仍有效的工作,控制型共享记忆进一步将已验证方法绑定当前输入执行,使历史任务中的沉淀的知识经验可以参与运行时决策。
UnitStore
CONTROL_PLAN / CONTROL_STRATEGY / CONTROL_TOOL_RESULT
open-b5/v1-control-memory
B3 提供依赖感知复用基础;B4 为需要生成的角色提供有预算的历史经验指导;B5 通过控制路径消费方法。B4 与 B5 分别扩展 B3,B5 不叠加 B4 的文本经验提示。未知任务、合同不适用或用户拒绝记忆时重算或回到生成;语义相似度不能单独授权复用。 实现入口:依赖复用、字段读集、控制合同、控制消费、开放轨适配。
工程与验证支撑:通用 Agent 注册与依赖图提供扩展入口,开放工作台应用消融实验验证的完整机制使用多智能体协作支持用户多轮连续任务执行,rootless Podman CodeAct 提供受限执行与有界修复;它们共同承载上述三项创新。机制贡献以最新的openEuler 八场景真实模型消融和实际Worker 回执为依据,成本、质量与负收益同时报告。
flowchart TB UI["React Web 控制台"] --> OPEN["开放任务轨"] UI --> FIXED["固定评测轨"] API["通用依赖图 API"] --> GRAPH["MultiAgentRuntime / 注册 Agent"] OPEN --> ORUN["OpenRuntime"] FIXED --> BRUN["Benchmark Runtime"] GRAPH --> GFABRIC["按注册 Agent 创建的进程池"] ORUN --> FABRIC["持久多进程 Agent Fabric"] BRUN --> FABRIC FABRIC --> P["Planner"] FABRIC --> R["Retriever"] FABRIC --> E["Executor"] FABRIC --> REP["Reporter"] ORUN --> SACP["SACP 控制面"] ORUN --> SSC["SSC 共享状态面"] ORUN --> MEM["Shared Knowledge / 统一记忆单元"] BRUN --> SACP BRUN --> SSC BRUN --> MEM GRAPH --> SACP GRAPH --> SSC GRAPH --> MEM MEM --> CONTROL["B5 当前输入绑定与控制消费"] CONTROL --> FABRIC E --> SANDBOX["Rootless CodeAct 沙箱"] BRUN --> METRICS["消融、Trace、统计与报告"] ORUN --> DELIVERY["任务结果、执行产物、引用与审计"]
系统由 API 控制进程协调持久 Worker,使用 SQLite WAL、内容寻址 Artifact、共享内存 SSC 和完整 Trace。默认四角色 Fabric 各有四个 Worker:固定轨按Provider/通信协议维护进程池,开放工作台使用独立进程池,通用运行时按注册 Agent 数创建进程。Worker 异常时当前任务失败关闭,整代进程被废弃,后续任务重新握手。
通用扩展通过 AgentSpec 注册带版本的可导入 handler 和输入/输出契约;GET /api/runtime 查看注册目录,POST /api/runtime/tasks 提交依赖图任务。调度器校验无环图与显式状态依赖,就绪分支可以并行执行;四角色是默认配置,本节实验数据仅覆盖该配置。
GET /api/runtime
POST /api/runtime/tasks
B4 与 B5 分别扩展 B3;B5 不叠加 B4 的文本经验指导路径。页面和报告使用表中的模式名称,请求值仍为 full、full_experience、full_control。经验读取、节点复用与控制避免生成分别计量,工具执行和验证费用保留。机制定义见项目说明书。
full
full_experience
full_control
deepseek-flash
none
/responses
deepseek-v4
usage
7999e1d3359715c523056ef9478215996d62a620
fixed-ablation/v5-seven-modes
fixed-full/v4-typed
fixed-b4/v2.3-budgeted-experience
fixed-b5/v1-verified-control
20261006
实测加载源码指纹为b0e3c3f012da42f7db9064aebc343ad46fed8b0111f7fdd6349f52e8b6bd5c69。该指纹和源码清单标识实测版本;本次核对时,清单中的 70 个后端 Python/Protobuf 文件与当前工作区哈希一致。后续源码调整需要另行验证,实验统计继续绑定本批指纹。
b0e3c3f012da42f7db9064aebc343ad46fed8b0111f7fdd6349f52e8b6bd5c69
incident_latency
code_nplus1
cache_stampede
queue_backlog
code_resource_leak
code_exception_swallow
config_drift
certificate_expiry
每个场景的十轮依次覆盖:首次调查、相似任务、部分相关、强制工具重验、新证据、无关硬负例、回到原主题、过期记忆、新旧证据冲突、最终审计。每轮使用预先冻结的输入与评价合同,证据按序列变化;历史记忆必须经过本轮依赖核验。
560/560 个任务完成,零执行失败。下表的通信、模型用量、IPC 和耗时均为每任务均值;模型总 Token 是输入与输出之和,与通信 Token 分开统计。
全部任务共 2,086 次模型调用、1,934,162 输入 Token、1,157,048 输出 Token,合计 3,091,210 Token,均有 Provider usage。另有一次连接预检,原接口未保存其 Token 数;上述总量是任务用量,不据此推算完整账单或金额。
pip
venv
setup.sh
npm ci
npm run build
pdftoppm
chi_sim
eng
后端依赖版本以 requirements 文件为准,前端以锁文件为准。SACP 的 Python 生成代码已包含在 sacp_pb2.py,常规安装和构建无需重新生成协议代码;修改协议时需同步 sacp.proto 与生成代码。
本节为安装方法。以下命令均在实际项目根目录(包含本 README、src/ 和 tests/ 的目录)执行。安装脚本创建 .venv,默认安装完整嵌入依赖,并安装、构建前端;脚本不自动下载 BGE 权重,也不提交模型任务。先用 python --version(Linux 为 python3 --version)、node --version、npm --version 核对工具版本。
src/
tests/
.venv
python --version
python3 --version
node --version
npm --version
powershell -ExecutionPolicy Bypass -File src/scripts/setup.ps1 .venv\Scripts\python.exe -m pip check
sudo dnf install -y git python3 python3-pip nodejs npm protobuf-compiler \ poppler-utils podman gcc gcc-c++ make sudo dnf install -y \ --repofrompath=nexus-epol,https://repo.openeuler.org/openEuler-24.03-LTS/EPOL/main/x86_64/ \ --enablerepo=nexus-epol \ tesseract tesseract-langpack-chi_sim tesseract-langpack-eng bash src/scripts/setup.sh
其他 Linux 环境先用对应包管理器安装 Python、Node.js 及所需系统工具,再执行 bash src/scripts/setup.sh。仅做核心机制开发时,可在运行安装脚本前设置 NEXUS_SKIP_EMBEDDINGS=1,只安装核心 Python 依赖;该配置不能提供真实 BGE 资料索引。
bash src/scripts/setup.sh
NEXUS_SKIP_EMBEDDINGS=1
需要上传资料并使用真实 BGE 检索时,在联网准备阶段下载冻结权重。Windows:
$env:HF_HUB_OFFLINE = "0" $env:TRANSFORMERS_OFFLINE = "0" .venv\Scripts\python.exe src/scripts/prefetch_embedding_models.py --cache-dir .cache/models --models bge-m3 $env:HF_HOME = (Resolve-Path .cache/models).Path $env:SENTENCE_TRANSFORMERS_HOME = $env:HF_HOME $env:HF_HUB_OFFLINE = "1" $env:TRANSFORMERS_OFFLINE = "1"
Linux:
export HF_HUB_OFFLINE=0 TRANSFORMERS_OFFLINE=0 .venv/bin/python src/scripts/prefetch_embedding_models.py \ --cache-dir .cache/models --models bge-m3 export HF_HOME="$PWD/.cache/models" export SENTENCE_TRANSFORMERS_HOME="$HF_HOME" export HF_HUB_OFFLINE=1 TRANSFORMERS_OFFLINE=1
需要使用小模型时将下载参数改为 --models bge-m3 bge-small-zh。启动服务时应继续使用相同缓存路径和离线设置;上述环境变量只对当前终端及其子进程生效。已有 Windows 运行记录时,更新入口会优先沿用 output/local-server/runtime.json 中的 embedding_cache;应将模型下载到该记录指定的缓存路径,终端的 HF_HOME 不会覆盖已有记录。
--models bge-m3 bge-small-zh
output/local-server/runtime.json
embedding_cache
HF_HOME
.env.example 列出配置示例。**应用和启动脚本不会自动加载根目录 .env**,请在启动前通过 PowerShell 的 $env:变量名 = "值"、Bash 的 export 变量名=值,或 systemd/container 配置注入环境变量。
.env
$env:变量名 = "值"
export 变量名=值
NEXUS_PROVIDER
local
provider
--provider
NEXUS_OPEN_PROVIDER
responses
deterministic
NEXUS_DATA_ROOT
src/backend/data
NEXUS_PROCESS_MODE
multiprocess
SENTENCE_TRANSFORMERS_HOME
HF_HUB_OFFLINE
TRANSFORMERS_OFFLINE
1
NEXUS_SANDBOX_RUNTIME
NEXUS_SANDBOX_IMAGE
auto
localhost/nexus-mas-codeact:openeuler-sp3
/api/open/health
NEXUS_NPM_REGISTRY
真实模型 API Key 在本机或 SSH 隧道访问的“模型接入设置”页面保存,加密配置和加密密钥保存在数据目录中。保留该目录以延续模型设置、工作区和历史记忆;不将数据、密钥、依赖及模型缓存提交到 Git。Windows 更新入口使用项目内已记录的数据目录,首次默认 src/backend/data,不会仅因设置 NEXUS_DATA_ROOT 就迁移数据。
安装脚本已完成首次前端构建。前端依赖变化或需要重新构建时执行(Windows/Linux 通用):
npm --prefix src/frontend ci npm --prefix src/frontend run build
产物位于 src/frontend/dist/。后端直接运行 Python 源码,无需单独编译;构建后重启后端,FastAPI 会提供静态控制台和 API。构建前端不会验证真实模型接入或 CodeAct 沙箱。
src/frontend/dist/
完成安装后,在配置好环境变量的终端执行:
powershell -ExecutionPolicy Bypass -File demo/start.ps1 Invoke-RestMethod http://127.0.0.1:18080/api/health Invoke-RestMethod http://127.0.0.1:18080/api/open/health
浏览器访问 http://127.0.0.1:18080/。demo/start.ps1 调用 update_local.ps1,重新构建当前源码并在后台运行单个 API 进程;更新前须等待排队或运行中的任务结束。需要指定端口时直接执行 powershell -ExecutionPolicy Bypass -File src/scripts/update_local.ps1 -Port 18081。
http://127.0.0.1:18080/
demo/start.ps1
powershell -ExecutionPolicy Bypass -File src/scripts/update_local.ps1 -Port 18081
运行状态记录在 output/local-server/runtime.json,日志为同目录的 server.stdout.log 和 server.stderr.log。健康接口应返回 status=healthy、source_mode=workspace,source_root 应为当前项目根目录,loaded_source_revision 应对应实际加载源码。
server.stdout.log
server.stderr.log
status=healthy
source_mode=workspace
source_root
loaded_source_revision
/api/health 核对服务与源码身份;真实模型和沙箱是否就绪应另外查看 /api/open/health 的 provider_configured 和 sandbox.available。
/api/health
provider_configured
sandbox.available
Windows:
powershell -ExecutionPolicy Bypass -File src/scripts/dev.ps1
bash src/scripts/dev.sh
控制台为 http://127.0.0.1:5173/,后端为 http://127.0.0.1:8000/,API 文档为 http://127.0.0.1:8000/docs。Vite 将 /api 请求代理到后端。按 Ctrl+C 结束开发入口;开发热重载可能中断任务,执行期间避免修改后端源码。
http://127.0.0.1:5173/
http://127.0.0.1:8000/
http://127.0.0.1:8000/docs
/api
Ctrl+C
在设置好模型缓存及数据目录的终端执行:
.venv/bin/python -m uvicorn app.main:app \ --app-dir src/backend --host 127.0.0.1 --port 8000 --workers 1
浏览器访问 http://127.0.0.1:8000/。必须保持单个 API worker;长期运行的 systemd 配置、独立 CodeAct 镜像构建和动态验收见项目说明书及 systemd 配置。
需要启用 CodeAct 时,先为普通服务账号准备 rootless Podman 与 /etc/subuid、/etc/subgid 映射,再以该账号构建独立镜像,并在启动上述后端命令前配置:
/etc/subuid
/etc/subgid
podman build -t localhost/nexus-mas-codeact:openeuler-sp3 \ -f src/CodeAct.Containerfile . export NEXUS_SANDBOX_RUNTIME=podman export NEXUS_SANDBOX_IMAGE=localhost/nexus-mas-codeact:openeuler-sp3 export NEXUS_SANDBOX_IMAGE_ID="$(podman image inspect \ "$NEXUS_SANDBOX_IMAGE" --format '{{.Id}}')" export NEXUS_SANDBOX_REQUIRE_IMAGE_ID=1
启动后检查 /api/open/health 的 sandbox.available,按部署说明完成真实容器动态验收;镜像构建成功本身不能代替沙箱验收。
podman build -t nexus-mas:openeuler-sp3 -f src/Containerfile . bash src/scripts/prefetch_openeuler_models.sh bge-m3 bash src/scripts/deploy_openeuler_container.sh curl -fsS http://127.0.0.1:8000/api/open/health
容器只把端口发布到宿主 127.0.0.1。远程访问使用 SSH 隧道:
127.0.0.1
ssh -N -L 18000:127.0.0.1:8000 <user>@<server>
随后打开 http://127.0.0.1:18000/。主应用容器不会挂载宿主容器 socket,因此CodeAct 在该拓扑中安全关闭;完整 CodeAct 使用原生 systemd + 本地 rootless Podman。
http://127.0.0.1:18000/
https://api.deepseek.com
[EV:…]
所有测试命令在项目根目录执行,使用已安装依赖的 Python 环境。以下回归和本地机制复现使用本地或 Mock Provider,不产生真实模型 API 费用;首次准备分词器缓存或浏览器仍可能需要联网。正式历史验证记录来自 openEuler 24.03 LTS-SP3 虚拟机,不能代替当前检出版本的测试。
.venv\Scripts\python.exe -m pytest -q --basetemp=.pytest-local
.venv/bin/python -m pytest -q --basetemp=.pytest-local
pytest.ini 配置 tests/backend、tests/scripts 的发现与源码导入路径,覆盖 API、通信、共享状态、依赖失效、控制记忆、文件和安全逻辑。容器环境相关测试可能按环境条件跳过;跳过不能视为生产沙箱验收通过。
tests/backend
tests/scripts
npm --prefix src/frontend run build cd src/frontend npx playwright install chromium cd ../..
Linux 若缺少浏览器系统库,在 src/frontend 中使用 npx playwright install --with-deps chromium 安装所需依赖。之后回到项目根目录,Windows 执行:
src/frontend
npx playwright install --with-deps chromium
.venv\Scripts\python.exe src/scripts/run_browser_e2e.py
或 Linux:
.venv/bin/python src/scripts/run_browser_e2e.py
run_browser_e2e.py 自动构建前端,在临时数据目录和随机端口启动确定性测试服务,执行 Playwright 用例,结束后关闭服务。浏览器报告与失败截图/Trace 位于 tests/frontend/playwright-report/、tests/frontend/test-results/。只需查看测试列表时执行 npm --prefix src/frontend run e2e -- --list。
tests/frontend/playwright-report/
tests/frontend/test-results/
npm --prefix src/frontend run e2e -- --list
前端生产构建包含类型检查;根目录 pytest 和上述浏览器验收均不执行 tests/frontend/unit/ 中的组件测试,当前 package.json 未提供独立组件测试命令。CodeAct 的真实容器隔离还需在支持的 Linux/openEuler 环境中按项目说明书执行动态验收,验收入口位于 tests/validation。
tests/frontend/unit/
package.json
以下命令在隔离目录运行八场景七模式的本地确定性矩阵,仅验证机制,不产生新的真实模型结果:
.venv/bin/python src/scripts/run_benchmark.py \ --repeats 1 \ --provider local \ --seed 20261006 \ --scenarios incident_latency code_nplus1 cache_stampede queue_backlog \ code_resource_leak code_exception_swallow config_drift certificate_expiry \ --modes text text_compact structured capsule full full_experience full_control \ --output tests/results/reproduction
Windows 使用 .venv\Scripts\python.exe,并将 Bash 的反斜杠续行命令合并为一行,或改为 PowerShell 续行。运行结果及隔离数据保存在指定输出目录中。
.venv\Scripts\python.exe
审计与汇总脚本仅需 Python 标准库,不调用模型,检查原始任务格、配对输入、记忆隔离、结果哈希、Provider usage 和汇总统计。以下 python 可替换为对应平台的虚拟环境解释器:
python
python src/scripts/audit_final_ablation.py tests/results/final-openeuler-seven-mode python src/scripts/summarize_final_ablation.py \ tests/results/final-openeuler-seven-mode/report.json \ --output tests/results/final-openeuler-seven-mode
上述命令会更新实验包内的审计或汇总文件。需要重新绘图时,另行安装未列入核心依赖的 Matplotlib,再执行:
python -m pip install matplotlib python src/scripts/plot_final_ablation.py tests/results/final-openeuler-seven-mode
在原生 openEuler 服务配置模型、完成回归和前端构建后,将验证日志保存为output/final-ablation/validation.log,确认含 VALIDATION_OK,并确保开放任务与固定轨均无排队或运行中的任务。以下入口会提交新的 560 个真实模型任务并产生 API 费用;使用新的输出目录,服务端模型和用量按实际返回记录:
output/final-ablation/validation.log
VALIDATION_OK
.venv/bin/python src/scripts/run_final_ablation.py \ --base-url http://127.0.0.1:8000 \ --output output/final-ablation-reproduction
脚本冻结源码与模型配置,跟踪同一批次,不进行任务级重跑;若提交状态不明确,应先核对服务端记录再恢复跟踪。实验中的内部修复和质量不足样本均保留。
最终实验包保存了 openEuler 24.03 LTS-SP3 虚拟机的 960 项回归、前端生产构建和 3 项固定轨浏览器验收材料,以及八场景、十轮、七模式的 560 份完整任务记录。实验环境、源码指纹、统计方法、质量边界及负收益见最终实验包。 这些记录对应包内保存的实测源码指纹;当前版本的检查和新的真实批次应各自保存实际条件。
--workers 1
nexus-mas/ ├─ README.md ├─ src/ 项目源代码与构建部署配置 │ ├─ backend/ Runtime、SACP/SSC、记忆、评测、API 和协议定义 │ ├─ frontend/ React/TypeScript 控制台 │ ├─ scripts/ 安装、启动、实验及 systemd 配置 │ ├─ Containerfile openEuler SP3 主应用镜像 │ ├─ Containerfile.prebuilt 预构建前端的镜像入口 │ └─ CodeAct.Containerfile 独立 CodeAct 沙箱镜像 ├─ docs/ 赛事要求的四份 PDF │ ├─ 项目说明书.pdf │ ├─ 项目创新说明.pdf │ ├─ 成员分工及主要贡献说明.pdf │ └─ 人工智能及第三方工具使用说明.pdf ├─ tests/ 测试及验证材料 │ ├─ backend/ 后端与安全回归 │ ├─ frontend/ 组件回归与 Playwright 验收 │ ├─ scripts/ 实验汇总脚本回归 │ ├─ validation/ CodeAct 动态验收与独立复核 │ └─ results/ 已保存的实验结果与环境记录 ├─ demo/ 可验证 Web 原型的启动入口与说明 ├─ presentation/ 决赛现场演示 PPT 和决赛演示视频 │ ├─ 决赛现场演示PPT.pptx │ └─ 决赛演示视频.mp4 └─ 作品原创承诺书.pdf
源码、测试及交付材料按上述目录归类。根目录另保留许可证、Git/容器忽略配置、环境变量示例和 pytest.ini 等构建与测试必要文件。历史实验结果保留原有内容、源码指纹及输入条件。
pytest.ini
本项目采用 Apache License 2.0。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
Nexus-MAS
面向多智能体协作的低开销通信、非文本状态与共享记忆运行时。
openEuler 24.03 LTS SP3·Python/FastAPI·React/TypeScript·Apache-2.0阅读导航:项目简介 · 应用场景 · 主要功能 · 系统环境 · 依赖要求 · 安装方法 · 构建方法 · 运行方法 · 测试方法 · 已知限制。
项目简介
Nexus-MAS 是运行在 openEuler/Linux 上、可复现验证的多智能体系统层机制原型。通用运行时支持 Agent 注册与依赖图扩展,统一 SACP 类型化通信、SSC 共享状态、签名共享记忆和跨任务复用;默认配置由 Planner、Retriever、Executor、Reporter四个持久独立 Worker 进程协作。
系统提供两个入口:开放任务工作台面向用户问题、文件和连续追问,默认使用B5 控制型记忆,并保留 B3 依赖校验基础;固定评测轨使用
typed-v4记忆策略与sacp/model-view结构化接口,执行 B0/B0C/B1/B2/B3/B4/B5 七模式配对消融。系统设计见项目说明书。证据任务是用于冻结输入、核验质量与对比机制的工作负载。协作接口以动作、参数、结果、能力和状态为核心;共享记忆统一保存不同角色形成的摘要、证据、策略、经验与工具结果。知识工作区也是无文件任务的知识积累和隔离范围。
应用场景
AgentSpec与依赖图 API 注册处理器,构建有明确输入、输出和状态依赖的多 Agent 任务主要功能
核心创新
按照项目创新说明书,项目的主要创新归纳为三项,分别解决连续协作中的长文本重复传递、机器状态文本化,以及跨任务的知识积累和协同增强。新增贡献集中在运行时契约、接收方消费验证、局部重算和当前输入上的方法执行;Protobuf、共享内存、向量编码和 SQLite 是实现这些机制的基础组件。
1. SACP:类型化协作控制与最小信息投影
SACP(Structured Agent Collaboration Protocol)为同主机持久 Agent 进程建立明确的控制契约,把动作、身份、输入输出 Schema、期限、证据与状态引用绑定到当前任务。它将协议校验、角色所需信息和执行回执连接起来,减少连续协作中重复传递全文与控制信息的开销。
HELLO → CAPABILITY_ADVERTISE → CAPABILITY_ACK → ACK,核对身份、能力、Schema 和协议版本,拒绝错配请求;四角色是默认配置,新增 Agent 使用相同契约。该创新是 Protobuf 信封、类型化投影、带外 Artifact 与 Worker 校验执行的联合机制。 实现入口:协议定义、进程通信、类型化结果。
2. SSC:可验证的非文本共享状态交换
SSC(Semantic State Capsule,共享状态胶囊)通过操作系统共享内存传递向量、候选矩阵与机器可计算状态,SACP 传递其描述符。创新重点是将共享数据绑定到当前任务与来源,并由接收进程实际计算和回执,形成可核验的状态消费链。
float32 / float16 / int8,终态与异常路径释放共享段。SSC 用于候选排序、路由、知识检索与状态核验;自然语言分析继续使用本轮可见文本。 实现入口:状态胶囊、证据覆盖策略、增量传输与消费。
3. 依赖感知复用与控制型共享记忆
系统将角色输出、纯计算节点和共享知识纳入依赖图,通过统一
UnitStore与 Checkpoint记录可复用条件。依赖感知复用保留仍有效的工作,控制型共享记忆进一步将已验证方法绑定当前输入执行,使历史任务中的沉淀的知识经验可以参与运行时决策。CONTROL_PLAN / CONTROL_STRATEGY / CONTROL_TOOL_RESULT,适用时避免 Planner/Executor 重复模型生成,Reporter 继续形成当前因果解释、行动和限制。固定轨使用已注册分析器;开放轨使用open-b5/v1-control-memory,将成功 Python 方法参数化,绑定本轮文件后仍在本轮沙箱执行。B3 提供依赖感知复用基础;B4 为需要生成的角色提供有预算的历史经验指导;B5 通过控制路径消费方法。B4 与 B5 分别扩展 B3,B5 不叠加 B4 的文本经验提示。未知任务、合同不适用或用户拒绝记忆时重算或回到生成;语义相似度不能单独授权复用。 实现入口:依赖复用、字段读集、控制合同、控制消费、开放轨适配。
工程与验证支撑:通用 Agent 注册与依赖图提供扩展入口,开放工作台应用消融实验验证的完整机制使用多智能体协作支持用户多轮连续任务执行,rootless Podman CodeAct 提供受限执行与有界修复;它们共同承载上述三项创新。机制贡献以最新的openEuler 八场景真实模型消融和实际Worker 回执为依据,成本、质量与负收益同时报告。
系统架构
flowchart TB UI["React Web 控制台"] --> OPEN["开放任务轨"] UI --> FIXED["固定评测轨"] API["通用依赖图 API"] --> GRAPH["MultiAgentRuntime / 注册 Agent"] OPEN --> ORUN["OpenRuntime"] FIXED --> BRUN["Benchmark Runtime"] GRAPH --> GFABRIC["按注册 Agent 创建的进程池"] ORUN --> FABRIC["持久多进程 Agent Fabric"] BRUN --> FABRIC FABRIC --> P["Planner"] FABRIC --> R["Retriever"] FABRIC --> E["Executor"] FABRIC --> REP["Reporter"] ORUN --> SACP["SACP 控制面"] ORUN --> SSC["SSC 共享状态面"] ORUN --> MEM["Shared Knowledge / 统一记忆单元"] BRUN --> SACP BRUN --> SSC BRUN --> MEM GRAPH --> SACP GRAPH --> SSC GRAPH --> MEM MEM --> CONTROL["B5 当前输入绑定与控制消费"] CONTROL --> FABRIC E --> SANDBOX["Rootless CodeAct 沙箱"] BRUN --> METRICS["消融、Trace、统计与报告"] ORUN --> DELIVERY["任务结果、执行产物、引用与审计"]系统由 API 控制进程协调持久 Worker,使用 SQLite WAL、内容寻址 Artifact、共享内存 SSC 和完整 Trace。默认四角色 Fabric 各有四个 Worker:固定轨按Provider/通信协议维护进程池,开放工作台使用独立进程池,通用运行时按注册 Agent 数创建进程。Worker 异常时当前任务失败关闭,整代进程被废弃,后续任务重新握手。
通用扩展通过
AgentSpec注册带版本的可导入 handler 和输入/输出契约;GET /api/runtime查看注册目录,POST /api/runtime/tasks提交依赖图任务。调度器校验无环图与显式状态依赖,就绪分支可以并行执行;四角色是默认配置,本节实验数据仅覆盖该配置。固定轨七模式消融矩阵
B4 与 B5 分别扩展 B3;B5 不叠加 B4 的文本经验指导路径。页面和报告使用表中的模式名称,请求值仍为
full、full_experience、full_control。经验读取、节点复用与控制避免生成分别计量,工具执行和验证费用保留。机制定义见项目说明书。真实模型消融实验结果
实验条件与连续任务
deepseek-flash,推理强度none,官方/responses接口deepseek-v4tokenizer;模型输入/输出使用服务端usage,零估算7999e1d3359715c523056ef9478215996d62a620,192 维特征哈希投影fixed-ablation/v5-seven-modes;B3fixed-full/v4-typed、B4fixed-b4/v2.3-budgeted-experience、B5fixed-b5/v1-verified-control20261006;56 个模式×场景记忆命名空间隔离实测加载源码指纹为
b0e3c3f012da42f7db9064aebc343ad46fed8b0111f7fdd6349f52e8b6bd5c69。该指纹和源码清单标识实测版本;本次核对时,清单中的 70 个后端 Python/Protobuf 文件与当前工作区哈希一致。后续源码调整需要另行验证,实验统计继续绑定本批指纹。incident_latencycode_nplus1cache_stampedequeue_backlogcode_resource_leakcode_exception_swallowconfig_driftcertificate_expiry每个场景的十轮依次覆盖:首次调查、相似任务、部分相关、强制工具重验、新证据、无关硬负例、回到原主题、过期记忆、新旧证据冲突、最终审计。每轮使用预先冻结的输入与评价合同,证据按序列变化;历史记忆必须经过本轮依赖核验。
实验结果
560/560 个任务完成,零执行失败。下表的通信、模型用量、IPC 和耗时均为每任务均值;模型总 Token 是输入与输出之和,与通信 Token 分开统计。
全部任务共 2,086 次模型调用、1,934,162 输入 Token、1,157,048 输出 Token,合计 3,091,210 Token,均有 Provider usage。另有一次连接预检,原接口未保存其 Token 数;上述总量是任务用量,不据此推算完整账单或金额。
系统环境
pip和venv;完整嵌入环境建议使用已验证的 Python 3.11,并确认固定依赖支持所选版本依赖要求
setup.sh在 openEuler 上先安装 CPU wheel;本地嵌入计算无需 GPUnpm ci按锁文件安装;npm run build完成类型检查和生产构建pdftoppm)、Tesseract 及chi_sim、eng语言包后端依赖版本以 requirements 文件为准,前端以锁文件为准。SACP 的 Python 生成代码已包含在 sacp_pb2.py,常规安装和构建无需重新生成协议代码;修改协议时需同步 sacp.proto 与生成代码。
快速部署
本节为安装方法。以下命令均在实际项目根目录(包含本 README、
src/和tests/的目录)执行。安装脚本创建.venv,默认安装完整嵌入依赖,并安装、构建前端;脚本不自动下载 BGE 权重,也不提交模型任务。先用python --version(Linux 为python3 --version)、node --version、npm --version核对工具版本。Windows 安装
openEuler 24.03 LTS SP3 安装
其他 Linux 环境先用对应包管理器安装 Python、Node.js 及所需系统工具,再执行
bash src/scripts/setup.sh。仅做核心机制开发时,可在运行安装脚本前设置NEXUS_SKIP_EMBEDDINGS=1,只安装核心 Python 依赖;该配置不能提供真实 BGE 资料索引。准备本地模型缓存
需要上传资料并使用真实 BGE 检索时,在联网准备阶段下载冻结权重。Windows:
Linux:
需要使用小模型时将下载参数改为
--models bge-m3 bge-small-zh。启动服务时应继续使用相同缓存路径和离线设置;上述环境变量只对当前终端及其子进程生效。已有 Windows 运行记录时,更新入口会优先沿用output/local-server/runtime.json中的embedding_cache;应将模型下载到该记录指定的缓存路径,终端的HF_HOME不会覆盖已有记录。配置与数据目录
.env.example 列出配置示例。**应用和启动脚本不会自动加载根目录
.env**,请在启动前通过 PowerShell 的$env:变量名 = "值"、Bash 的export 变量名=值,或 systemd/container 配置注入环境变量。NEXUS_PROVIDERlocal:分词器选择的环境参考;固定轨运行后端由请求provider或 CLI--provider决定,默认local,该环境变量不能切换运行后端NEXUS_OPEN_PROVIDERresponses:开放工作台使用真实 Responses API;deterministic供隔离测试使用NEXUS_DATA_ROOTsrc/backend/data:默认业务数据目录,保存数据库、上传资料及加密模型配置;自定义路径建议使用绝对路径NEXUS_PROCESS_MODEmultiprocess:持久 Worker 多进程协作HF_HOME/SENTENCE_TRANSFORMERS_HOMEHF_HUB_OFFLINE/TRANSFORMERS_OFFLINE1:运行时仅使用已准备的本地模型缓存NEXUS_SANDBOX_RUNTIME/NEXUS_SANDBOX_IMAGEauto/localhost/nexus-mas-codeact:openeuler-sp3:沙箱运行时与独立镜像;实际可用性见/api/open/healthNEXUS_NPM_REGISTRYnpm ci真实模型 API Key 在本机或 SSH 隧道访问的“模型接入设置”页面保存,加密配置和加密密钥保存在数据目录中。保留该目录以延续模型设置、工作区和历史记忆;不将数据、密钥、依赖及模型缓存提交到 Git。Windows 更新入口使用项目内已记录的数据目录,首次默认
src/backend/data,不会仅因设置NEXUS_DATA_ROOT就迁移数据。构建方法
安装脚本已完成首次前端构建。前端依赖变化或需要重新构建时执行(Windows/Linux 通用):
产物位于
src/frontend/dist/。后端直接运行 Python 源码,无需单独编译;构建后重启后端,FastAPI 会提供静态控制台和 API。构建前端不会验证真实模型接入或 CodeAct 沙箱。运行方法
Windows 本地启动与更新
完成安装后,在配置好环境变量的终端执行:
浏览器访问
http://127.0.0.1:18080/。demo/start.ps1调用 update_local.ps1,重新构建当前源码并在后台运行单个 API 进程;更新前须等待排队或运行中的任务结束。需要指定端口时直接执行powershell -ExecutionPolicy Bypass -File src/scripts/update_local.ps1 -Port 18081。运行状态记录在
output/local-server/runtime.json,日志为同目录的server.stdout.log和server.stderr.log。健康接口应返回status=healthy、source_mode=workspace,source_root应为当前项目根目录,loaded_source_revision应对应实际加载源码。/api/health核对服务与源码身份;真实模型和沙箱是否就绪应另外查看/api/open/health的provider_configured和sandbox.available。前后端开发模式
Windows:
Linux:
控制台为
http://127.0.0.1:5173/,后端为http://127.0.0.1:8000/,API 文档为http://127.0.0.1:8000/docs。Vite 将/api请求代理到后端。按Ctrl+C结束开发入口;开发热重载可能中断任务,执行期间避免修改后端源码。Linux 原生运行已构建控制台
在设置好模型缓存及数据目录的终端执行:
浏览器访问
http://127.0.0.1:8000/。必须保持单个 API worker;长期运行的 systemd 配置、独立 CodeAct 镜像构建和动态验收见项目说明书及 systemd 配置。需要启用 CodeAct 时,先为普通服务账号准备 rootless Podman 与
/etc/subuid、/etc/subgid映射,再以该账号构建独立镜像,并在启动上述后端命令前配置:启动后检查
/api/open/health的sandbox.available,按部署说明完成真实容器动态验收;镜像构建成功本身不能代替沙箱验收。rootless Podman:日常 Web 容器
容器只把端口发布到宿主
127.0.0.1。远程访问使用 SSH 隧道:随后打开
http://127.0.0.1:18000/。主应用容器不会挂载宿主容器 socket,因此CodeAct 在该拓扑中安全关闭;完整 CodeAct 使用原生 systemd + 本地 rootless Podman。开放任务使用流程
https://api.deepseek.com、模型deepseek-flash、推理强度none;[EV:…]引用、四 Agent PID、SACP/SSC、控制消费、模型计量和 Trace;测试方法
所有测试命令在项目根目录执行,使用已安装依赖的 Python 环境。以下回归和本地机制复现使用本地或 Mock Provider,不产生真实模型 API 费用;首次准备分词器缓存或浏览器仍可能需要联网。正式历史验证记录来自 openEuler 24.03 LTS-SP3 虚拟机,不能代替当前检出版本的测试。
后端与脚本回归
Windows:
Linux:
pytest.ini 配置
tests/backend、tests/scripts的发现与源码导入路径,覆盖 API、通信、共享状态、依赖失效、控制记忆、文件和安全逻辑。容器环境相关测试可能按环境条件跳过;跳过不能视为生产沙箱验收通过。前端构建与浏览器验收
Linux 若缺少浏览器系统库,在
src/frontend中使用npx playwright install --with-deps chromium安装所需依赖。之后回到项目根目录,Windows 执行:或 Linux:
run_browser_e2e.py 自动构建前端,在临时数据目录和随机端口启动确定性测试服务,执行 Playwright 用例,结束后关闭服务。浏览器报告与失败截图/Trace 位于
tests/frontend/playwright-report/、tests/frontend/test-results/。只需查看测试列表时执行npm --prefix src/frontend run e2e -- --list。前端生产构建包含类型检查;根目录 pytest 和上述浏览器验收均不执行
tests/frontend/unit/中的组件测试,当前package.json未提供独立组件测试命令。CodeAct 的真实容器隔离还需在支持的 Linux/openEuler 环境中按项目说明书执行动态验收,验收入口位于 tests/validation。本地机制复现
以下命令在隔离目录运行八场景七模式的本地确定性矩阵,仅验证机制,不产生新的真实模型结果:
Windows 使用
.venv\Scripts\python.exe,并将 Bash 的反斜杠续行命令合并为一行,或改为 PowerShell 续行。运行结果及隔离数据保存在指定输出目录中。离线复核已保存的真实结果
审计与汇总脚本仅需 Python 标准库,不调用模型,检查原始任务格、配对输入、记忆隔离、结果哈希、Provider usage 和汇总统计。以下
python可替换为对应平台的虚拟环境解释器:上述命令会更新实验包内的审计或汇总文件。需要重新绘图时,另行安装未列入核心依赖的 Matplotlib,再执行:
重新运行真实模型批次(产生 API 费用)
在原生 openEuler 服务配置模型、完成回归和前端构建后,将验证日志保存为
output/final-ablation/validation.log,确认含VALIDATION_OK,并确保开放任务与固定轨均无排队或运行中的任务。以下入口会提交新的 560 个真实模型任务并产生 API 费用;使用新的输出目录,服务端模型和用量按实际返回记录:脚本冻结源码与模型配置,跟踪同一批次,不进行任务级重跑;若提交状态不明确,应先核对服务端记录再恢复跟踪。实验中的内部修复和质量不足样本均保留。
最终实验包保存了 openEuler 24.03 LTS-SP3 虚拟机的 960 项回归、前端生产构建和 3 项固定轨浏览器验收材料,以及八场景、十轮、七模式的 560 份完整任务记录。实验环境、源码指纹、统计方法、质量边界及负收益见最终实验包。 这些记录对应包内保存的实测源码指纹;当前版本的检查和新的真实批次应各自保存实际条件。
已知限制
--workers 1;多 API worker 或横向扩容需要外部队列和共享任务协调/api/open/health为准;扫描件 OCR 质量受原文影响目录结构
源码、测试及交付材料按上述目录归类。根目录另保留许可证、Git/容器忽略配置、环境变量示例和
pytest.ini等构建与测试必要文件。历史实验结果保留原有内容、源码指纹及输入条件。验证材料导航
License
本项目采用 Apache License 2.0。