首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >OoderAgent SceneEngine 3.0.3 深度解析

OoderAgent SceneEngine 3.0.3 深度解析

原创
作者头像
OneCode
发布2026-04-14 12:42:51
发布2026-04-14 12:42:51
240
举报

场景驱动的智能协作引擎 — 从架构设计到核心实现的全景剖析

ooder SDK · 版本 3.0.3 · Java 21 · Spring Boot 3.2.5

概述架构全景核心层引擎子系统事件系统场景组A2A协议LLM集成能力路由发现服务容错机制资产治理桥接层设计模式总结

目录

  1. 概述:什么是 SceneEngine
  2. 架构全景:分层与模块化设计
  3. 核心层:SceneEngine 接口与客户端体系
  4. 引擎子系统:11 大引擎的编排与管理
  5. 事件系统:200+ 事件类型的全域驱动
  6. 场景组模型:业务协作的核心抽象
  7. A2A 协议:Agent 间智能通信
  8. LLM 集成:场景化大模型能力
  9. 能力路由:CAP 地址空间的精准分发
  10. 发现服务:多策略能力发现
  11. 容错机制:高可用的守护者
  12. 资产治理:数字资产全生命周期
  13. 桥接层:SDK-SE 双向同步
  14. 设计模式与架构哲学
  15. 总结与展望

一、概述:什么是 SceneEngine

SceneEngine 是 ooder SDK 生态中的场景驱动智能协作引擎,它以"场景"为核心抽象,将 Agent、Skill、Capability、知识库等异构资源统一编排到业务上下文中,为上层应用(ooder-Nexus、ooder-Nexus-Enterprise、agent-skillcenter)提供安全、可审计、高可用的协作基础设施。

核心理念:一切业务皆场景,一切协作皆能力调用。SceneEngine 通过场景组(SceneGroup)将分散的 Agent 和 Skill 组织成协作单元,通过能力路由(CapRouter)实现精准的能力分发,通过 A2A 协议实现 Agent 间的智能通信。

🔐 统一安全

Token 令牌控制、权限管理、安全审计日志,所有操作可追溯

📊 统一状态

Session 管理、连接状态追踪、场景生命周期状态机

🔗 统一连接

Agent 注册、心跳检测、A2A 通信、MCP 协议适配

📝 统一审计

全链路操作记录、事件溯源、审计日志导出

技术栈一览

维度

技术选型

说明

语言

Java 21

利用 Virtual Threads、Record、Sealed Classes 等现代特性

框架

Spring Boot 3.2.5

依赖注入、事件机制、自动配置、条件装配

构建

Maven

发布至 Maven Central,GPG 签名

序列化

FastJSON2 + Jackson

JSON 高速序列化 + YAML 配置解析

向量数据库

Milvus 2.4

知识库向量检索(可选)

文档解析

PDFBox + POI + jsoup

PDF/Word/Excel/HTML 文档解析(可选)

数据库

MySQL + SQLite + HSQLDB

生产 MySQL,嵌入式 SQLite/HSQLDB 测试

二、架构全景:分层与模块化设计

SceneEngine 3.0.3 采用分层架构 + 模块化设计,从上到下分为接入层、核心层、引擎层、基础设施层四个层次,各层职责清晰、耦合度低。

图 1:SceneEngine 3.0.3 四层架构全景图

三、核心层:SceneEngine 接口与客户端体系

3.1 SceneEngine — 一切功能的入口

SceneEngine 是整个场景引擎的顶层接口,定义了引擎的完整契约。它遵循接口隔离原则,将不同角色的操作分离到 SceneClient(用户端)和 AdminClient(管理端)。

代码语言:javascript
复制
public interface SceneEngine {
    // 身份认证
    SceneClient login(String username, String password);
    SceneClient login(String token);
    AdminClient adminLogin(String username, String password);
    void logout(String sessionId);

    // 会话管理
    SessionInfo getSession(String sessionId);
    boolean validateSession(String sessionId);
    SessionInfo refreshSession(String sessionId);

    // 引擎生命周期
    void start();
    void stop();
    EngineStatus getStatus();
    boolean isRunning();

    // 服务定位与能力注册
    <T> T getService(Class<T> serviceType);
    void registerCapability(String capId, Object capability);

    // Provider 获取
    SkillService getSkillService();
    SceneProvider getSceneProvider();
    HeartbeatProvider getHeartbeatProvider();
}

«interface»SceneEngine«interface»SceneClient«interface»AdminClientSceneClientImplSessionInfosessionId / userId / tokenlogin() 返回adminLogin() 返回持有

3.2 SceneClient — 用户视角的操作集

SceneClient 封装了用户登录后的所有操作能力,通过持有 SessionInfoSceneEngine 引用,将请求代理到底层服务:

功能域

方法

底层服务

技能管理

findSkill / installSkill / uninstallSkill

SkillService

场景组

joinSceneGroup / leaveSceneGroup / listMySceneGroups

SceneProvider

能力调用

invokeCapability / listCapabilities

SkillSDKAdapter / DiscoveryService

心跳管理

startHeartbeat / stopHeartbeat / getHeartbeatStatus

HeartbeatProvider

场景激活

activateScene / deactivateScene / getSceneState

SceneProvider

用户设置

getSettings / updateSettings / getIdentity

UserSettingsProvider

3.3 SceneAgentCore — 场景代理核心

SceneAgentCore 是场景引擎内部的 Agent 抽象,与 agent-sdk 的 SceneAgent 形成桥接关系。它专注于场景生命周期管理和 Skill 挂载:

代码语言:javascript
复制
public interface SceneAgentCore {
    String getAgentId();
    SceneAgentState getAgentCoreState();
    void initialize(SceneConfig config);
    void mountSkill(String skillId, SceneConfig config);
    void unmountSkill(String skillId);
    CapResponse invokeCap(String capId, CapRequest request);
    void shutdown();
    default MemberRole getMemberRole() { return MemberRole.MEMBER; }
    default boolean isPrimary() { return MemberRole.PRIMARY.equals(getMemberRole()); }
}

Agent 状态遵循有限状态机模型:

图 3:SceneAgentState 状态机转换图

3.4 CapRouter — 能力请求的精准分发

CapRouter 是能力调用的核心路由器,它维护了能力 ID 到处理器(CapHandler)的映射表,并集成 CapRegistry 进行能力存在性校验。每次路由都会发布 CapabilityEvent 用于审计追踪。

能力调用流程

1. CapRouter.routeRequest(capId, request) 接收请求 2. 查询 CapRegistry.hasCapability(capId) 校验能力存在性 3. 查找 handlers 映射表获取 CapHandler 4. 执行 handler.handle(request) 或走默认处理 5. 发布 CapabilityEvent.invoked/invocationFailed 事件 6. 返回 CapResponse(含 requestId、success、result、metadata)

四、引擎子系统:11 大引擎的编排与管理

SceneEngine 定义了 11 种引擎类型(EngineType),每种引擎负责一个独立的功能域。所有引擎实现统一的 Engine 接口,由 EngineManager 统一编排生命周期。

引擎类型

名称

职责

ORG

组织引擎

用户、部门、角色管理

SESSION

会话引擎

Session、Token、连接管理

SECURITY

安全引擎

认证、授权、加密管理

SKILL

技能引擎

技能搜索、安装、运行时监控

AGENT

代理引擎

Agent 注册、心跳、子网管理

CAPABILITY

能力引擎

能力注册、发现、调用

AUDIT

审计引擎

日志审计、操作记录

STATE

状态引擎

状态管理、事件驱动

MSG

消息引擎

消息推送、P2P、Topic 订阅

VFS

文件引擎

文件上传、下载、存储管理

WORKFLOW

工作流引擎

流程编排、任务调度

4.1 Engine 接口 — 统一的生命周期契约

代码语言:javascript
复制
public interface Engine {
    EngineType getType();
    EngineStatus getStatus();
    void initialize();       // 初始化
    void start();            // 启动
    void stop();             // 停止
    void destroy();          // 销毁
    boolean healthCheck();   // 健康检查
    EngineStats getStats();  // 运行统计
    List<String> getCapabilities();
}

4.2 EngineStatus — 9 态生命周期

图 4:EngineStatus 9 态生命周期

4.3 EngineManager — 引擎编排器

EngineManager 负责所有引擎的注册、发现和批量生命周期管理。它提供了 initializeAll()startAll()stopAll()destroyAll() 等批量操作,以及 healthCheckAll() 返回不健康引擎列表,实现统一的健康监控。

五、事件系统:200+ 事件类型的全域驱动

SceneEngine 构建了基于 Spring ApplicationEvent 的完整事件体系,定义了 200+ 种事件类型,覆盖安全、会话、技能、能力、配置、引擎、场景、用户、组织、工作流、节点、心跳、资产、知识库等 16 个领域。

5.1 SceneEvent — 事件基类

代码语言:javascript
复制
public abstract class SceneEvent extends ApplicationEvent {
    private final SceneEventType eventType;
    private final String traceId;          // 16位追踪ID,链路追踪
    private final Map<String, Object> metadata; // 可扩展元数据

    public SceneEvent addMetadata(String key, Object value) {
        metadata.put(key, value);
        return this;  // 链式调用
    }
}

5.2 事件类型分类

图 5:SceneEventType 事件类型分类体系

5.3 SceneEventPublisher — 事件发布器

SceneEventPublisher 封装了 Spring 的 ApplicationEventPublisher,提供同步和异步两种发布模式,以及类型安全的便捷方法:

代码语言:javascript
复制
@Component
public class SceneEventPublisher {
    public void publish(SceneEvent event);           // 同步发布
    public void publishAsync(SceneEvent event);      // 异步发布
    public void publishCapabilityEvent(...);           // 能力事件
    public void publishSessionEvent(...);              // 会话事件
    public void publishAgentEvent(...);                // Agent事件
}

六、场景组模型:业务协作的核心抽象

SceneGroup 是 SceneEngine 最核心的业务模型,它将一个完整的业务场景封装为包含参与者、能力绑定、知识库绑定、快照和事件日志的协作单元。

图 6:SceneGroup 核心模型与关联关系

6.1 场景组状态机

SceneGroup 的状态转换使用 AtomicReference<Status> + compareAndSet 实现无锁并发安全的状态转换:

图 7:SceneGroup 状态机转换图

6.2 SceneGroupManager — 场景组管理器

SceneGroupManager 是 Spring Bean(@Component),通过 @ConditionalOnProperty 条件装配,负责:

  • 场景组的 CRUD 与状态转换
  • 参与者心跳检测(60 秒间隔,300 秒超时)
  • 已销毁场景组的定期清理(1 小时后移除)
  • 审计事件发布(所有操作均发布 SceneGroupAuditEvent
  • 模板索引维护(templateId → List<SceneGroup>)

七、A2A 协议:Agent 间智能通信

A2A(Agent-to-Agent)协议是 SceneEngine 3.0.3 的核心创新之一,它定义了 Agent 间通信的统一标准,支持消息发送、请求-响应、多 Agent 对话、智能路由和协议转换。

图 8:A2A 协议架构与路由策略

7.1 五级路由策略

A2A 消息路由器采用五级优先级策略,从精确到模糊逐级降级:

优先级

策略

匹配方式

多 Agent 时选择

1(最高)

直接指定

toAgentId 精确匹配

唯一确定

2

能力匹配

targetCapability 查找在线 Agent

负载最低

3

角色匹配

targetRole 查找在线 Agent

负载最低

4

规则匹配

A2ARoutingRule 自定义规则

规则定义

5(最低)

广播

场景组内所有 Agent

全部接收

7.2 Agent 上下文 — 四级隔离

AgentContext 实现了四级上下文隔离,确保不同层级的上下文信息不会互相污染:

代码语言:javascript
复制
public class AgentContext {
    private Map<String, Object> systemContext;       // 系统级:全局配置
    private Map<String, Object> sceneContext;       // 场景级:场景共享
    private Map<String, Object> sessionContext;      // 会话级:用户会话
    private Map<String, Object> conversationContext; // 对话级:当前对话
    private List<Map> conversationHistory;      // 对话历史(最多20条)
}

八、LLM 集成:场景化大模型能力

SceneEngine 3.0.3 深度集成了 LLM 能力,通过 LlmService 接口提供统一的聊天、补全、流式输出能力,并通过 LlmSceneContext 实现场景化的上下文管理。

8.1 LlmService 接口

代码语言:javascript
复制
public interface LlmService {
    ChatResponse chat(SceneChatRequest request);     // 同步聊天
    void chatStream(SceneChatRequest, StreamHandler); // 流式聊天
    String complete(String prompt, int maxTokens);     // 文本补全

    // 多 Provider / 多 Model 管理
    List<ProviderInfo> getProviders();
    List<ModelInfo> getModels(String providerId);
    void setActiveProvider(String providerId);
    void setActiveModel(String providerId, String modelId);

    // Function Calling 注册
    void registerFunction(String functionId, FunctionConfig config);
}

8.2 LlmSceneContext — 场景化上下文

LlmSceneContext 是 LLM 在特定场景中的完整上下文封装,支持 A2A 传递(实现 Serializable),包含:

上下文组件

职责

UserContext

用户身份、偏好、权限

NlpContext

自然语言处理上下文

KnowledgeContext

知识库检索结果

SecurityContext

安全验证信息

extendedAttributes

可扩展属性

8.3 LLM 审计与监控

SceneEngine 为 LLM 调用提供了完整的审计体系:LlmAuditService 记录每次调用的上下文、参数和结果;LlmProxyMonitor 监控代理状态和配额;LlmLoadBalancer 实现多 Provider 间的负载均衡。

九、能力路由:CAP 地址空间的精准分发

SceneEngine 的能力系统采用地址空间(CapabilityAddress)设计,每个能力拥有唯一的整型地址。CapabilityRouter 维护三张核心注册表:

注册表

类型

用途

driverRegistry

Map<Integer, Object>

地址 → 驱动实例

bindingRegistry

Map<Integer, String>

地址 → Provider 绑定

fallbackRegistry

Map<Integer, String>

地址 → 降级 Provider

Provider 解析策略

resolveProvider(address) 方法优先查找 bindingRegistry,若未命中则降级到 fallbackRegistry,实现主备切换的优雅降级。

十、发现服务:多策略能力发现

DiscoveryProvider 接口定义了能力发现的标准契约,支持多种发现策略(UDP 广播、mDNS、SkillCenter 等),每种策略以插件形式注册:

代码语言:javascript
复制
public interface DiscoveryProvider {
    String getProviderName();
    void initialize(DiscoveryConfig config);
    void start();
    void stop();
    CompletableFuture<List<DiscoveredItem>> discover(DiscoveryQuery query);
    int getPriority();                      // 优先级排序
    boolean isApplicable(DiscoveryScope scope); // 范围适配
}

发现系统支持按优先级排序、按范围过滤,查询结果以 CompletableFuture 异步返回,适合大规模分布式环境下的能力发现。

十一、容错机制:高可用的守护者

FailoverManager 提供了 Agent 级别的容错能力,确保在 Agent 故障时业务不中断:

💓 心跳监控

持续监控 Agent 心跳,检测超时节点

🔄 自动切换

reassignTasksAuto() 自动选择替代 Agent

📋 任务迁移

reassignTasks() 将失败 Agent 的任务迁移到目标 Agent

📊 统计监控

FailoverStats 跟踪切换次数、恢复率等指标

十二、资产治理:数字资产全生命周期

AssetGovernance 接口定义了数字资产的完整治理体系,覆盖注册、更新、停用、所有权转移、健康检查等全生命周期操作:

代码语言:javascript
复制
public interface AssetGovernance {
    void registerAsset(DigitalAsset asset);
    void decommissionAsset(String assetId);
    CompletableFuture<Void> transferOwnership(String assetId, String newOwnerId);
    CompletableFuture<AssetHealth> checkHealth(String assetId);
    AssetStatistics getStatistics();
    void addAssetListener(AssetListener listener); // 观察者模式
}

资产查询支持多维度过滤(类型、类别、状态、所有者、位置、关键词、标签),并通过 AssetListener 观察者接口实现资产变更的实时通知。

十三、桥接层:SDK-SE 双向同步

SceneGroupBridge 是 SDK SceneGroup 与 SE SceneGroup 之间的双向映射和同步桥梁,解决了两个系统间的模型差异:

图 9:SDK-SE SceneGroupBridge 双向同步架构

十四、设计模式与架构哲学

SceneEngine 3.0.3 的源码中蕴含了丰富的设计模式运用,体现了高度的工程化思维:

设计模式

应用场景

核心类

接口隔离

SceneEngine / SceneClient / AdminClient 职责分离

core 包

观察者模式

事件发布/订阅、AssetListener、FailoverListener

event / asset / failover

策略模式

A2A 五级路由策略、DiscoveryProvider 多策略发现

a2a / discovery

桥接模式

SDK-SE SceneGroup 双向映射

bridge 包

状态机

SceneAgentState、EngineStatus、SceneGroup.Status

core / engine / group

建造者模式

LlmSceneContext.Builder、A2ACommand.Builder

llm.context / llm.command

服务定位

SceneEngine.getService()、ProviderRegistry

core 包

责任链

CapRouter → CapHandler → DefaultHandler

core.CapRouter

模板方法

Engine 接口统一生命周期,子类实现差异

engine 包

CAS 无锁并发

AtomicReference + compareAndSet 状态转换

SceneGroup / Participant

条件装配

@ConditionalOnProperty / @ConditionalOnBean

SceneGroupManager / CapRouter

架构哲学

🎯 场景驱动

一切业务皆场景,SceneGroup 是协作的基本单元,所有资源围绕场景组织

🔌 插件化

Engine、DiscoveryProvider、CapHandler 均可插拔,通过 Spring 条件装配实现零配置集成

🔒 安全优先

Token 认证、权限校验、审计日志贯穿全链路,200+ 事件类型确保操作可追溯

⚡ 无锁并发

AtomicReference + CAS 实现状态转换,ConcurrentHashMap + CopyOnWriteArrayList 保障线程安全

十五、总结与展望

SceneEngine 3.0.3 是一个设计精良、职责清晰的场景驱动协作引擎。它以 SceneGroup 为核心抽象,以 A2A 协议实现 Agent 间智能通信,以 CapRouter 实现能力精准分发,以 200+ 事件类型构建全域驱动体系,以 11 大引擎覆盖完整功能域。

核心价值:SceneEngine 不是简单的中间件,而是一套完整的协作基础设施。它将"场景"这一业务概念提升为一等公民,让 Agent、Skill、Capability 等技术资源自然地围绕业务场景组织,实现了技术与业务的优雅对齐。

技术亮点回顾

维度

亮点

架构

四层分层 + 11 引擎 + 模块化设计,职责清晰、耦合度低

并发

AtomicReference + CAS 无锁状态机,ConcurrentHashMap 全局线程安全

事件

200+ 事件类型覆盖 16 个领域,Spring ApplicationEvent 体系

通信

A2A 五级路由策略,从精确到模糊的优雅降级

LLM

场景化上下文(LlmSceneContext),支持 A2A 传递和 Function Calling

容错

FailoverManager 自动切换 + CapabilityRouter 主备降级

扩展

SPI + @ConditionalOnProperty 零配置集成,插件化架构

SceneEngine 3.0.3 代表了场景驱动架构的成熟实践,为构建企业级智能协作系统提供了坚实的基础。随着 A2A 协议的深化、LLM 能力的增强和多模态交互的引入,SceneEngine 将持续演进,为更复杂的业务场景提供更强大的协作能力。

SceneEngine 3.0.3 深度解析 · ooder SDK · GitHub

本文基于源码分析撰写,转载请注明出处

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 一、概述:什么是 SceneEngine
    • 🔐 统一安全
    • 📊 统一状态
    • 🔗 统一连接
    • 📝 统一审计
    • 技术栈一览
  • 二、架构全景:分层与模块化设计
  • 三、核心层:SceneEngine 接口与客户端体系
    • 3.1 SceneEngine — 一切功能的入口
    • 3.2 SceneClient — 用户视角的操作集
    • 3.3 SceneAgentCore — 场景代理核心
    • 3.4 CapRouter — 能力请求的精准分发
      • 能力调用流程
  • 四、引擎子系统:11 大引擎的编排与管理
    • 4.1 Engine 接口 — 统一的生命周期契约
    • 4.2 EngineStatus — 9 态生命周期
    • 4.3 EngineManager — 引擎编排器
  • 五、事件系统:200+ 事件类型的全域驱动
    • 5.1 SceneEvent — 事件基类
    • 5.2 事件类型分类
    • 5.3 SceneEventPublisher — 事件发布器
  • 六、场景组模型:业务协作的核心抽象
    • 6.1 场景组状态机
    • 6.2 SceneGroupManager — 场景组管理器
  • 七、A2A 协议:Agent 间智能通信
    • 7.1 五级路由策略
    • 7.2 Agent 上下文 — 四级隔离
  • 八、LLM 集成:场景化大模型能力
    • 8.1 LlmService 接口
    • 8.2 LlmSceneContext — 场景化上下文
    • 8.3 LLM 审计与监控
  • 九、能力路由:CAP 地址空间的精准分发
    • Provider 解析策略
  • 十、发现服务:多策略能力发现
  • 十一、容错机制:高可用的守护者
    • 💓 心跳监控
    • 🔄 自动切换
    • 📋 任务迁移
    • 📊 统计监控
  • 十二、资产治理:数字资产全生命周期
  • 十三、桥接层:SDK-SE 双向同步
  • 十四、设计模式与架构哲学
    • 架构哲学
      • 🎯 场景驱动
      • 🔌 插件化
      • 🔒 安全优先
      • ⚡ 无锁并发
  • 十五、总结与展望
    • 技术亮点回顾
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档