首页 理论 架构 工程 文档 白皮书 著作 研究 案例 下载 博客 关于 开始使用 →

第93章 Framework Kernel

第93章 Framework Kernel

Framework Kernel 是 SAI Framework 的核心运行内核。

前面的章节已经分别建立了 Individual、Perception、Cognition、Memory、Reasoning、Decision、Behavior、Action、Expression、SATE、Renderer、Adapter、Learning、Detection、Diagnosis、Repair、Verification、Extension、Engine 等机制。

这些机制如果只是分别存在,还不能形成一个完整的 Framework。Kernel 的作用,就是把这些组件组织起来,建立统一的启动、运行、管理、关闭生命周期

因此:

Kernel 不是 Cognition,不是 Reasoning,也不是某一个 Engine。Kernel 是整个 Framework 的运行组织核心。


1. Kernel 定义

1.1 Kernel 是什么

Kernel 可以定义为:

Kernel 是 Framework 的核心运行内核,负责组织 Application、Container、Engine、Manager、Registry 以及各类生命周期,使整个 SAI Framework 能够按照统一顺序启动、运行和关闭。

核心关系:

Framework
    ↓
Kernel
    ├── Application
    ├── Container
    ├── Engine
    ├── Manager
    ├── Registry
    └── Lifecycle

Kernel 本身并不承担所有具体功能。

例如:

PerceptionEngine
CognitionEngine
ReasoningEngine
DecisionEngine
LearningEngine
DetectionEngine
RepairEngine

这些属于具体功能执行组件。

Kernel 负责的是:

发现组件
注册组件
创建组件
初始化组件
启动组件
协调运行
停止组件
释放资源

所以:

Engine = 执行具体功能

Manager = 管理某类组件

Registry = 保存组件登记信息

Container = 管理运行对象

Application = 应用程序运行入口

Kernel = 组织整个 Framework 的运行

2. Application

Application 是 Framework 的应用层入口。

可以理解为:

Application 表示一个具体的 SAI 应用程序,是 Kernel 所服务的上层运行对象。

例如:

SAI Application
    ↓
Individual_A
    ↓
Perception
Cognition
Reasoning
Decision
Behavior
Action

Application 可以负责:

Application
 ├── Application ID
 ├── Name
 ├── Version
 ├── Configuration
 ├── Kernel
 ├── Individual
 └── State

例如:

Application_A
    id      = app_a
    name    = SAI Application
    version = 1.0.0
    state   = READY

Application 不应该承担所有 Engine 的具体实现。

它主要负责:

Application
      ↓
启动 Kernel
      ↓
Kernel 组织 Framework
      ↓
Individual 开始运行

因此:

Application ≠ Kernel

Application = 应用运行主体
Kernel      = Framework运行核心

3. Container

Container 是运行对象容器。

它负责保存和提供 Framework 当前运行中的对象。

例如:

Container
 ├── Individual
 ├── PerceptionEngine
 ├── CognitionEngine
 ├── ReasoningEngine
 ├── DecisionEngine
 ├── MemoryManager
 ├── LearningEngine
 ├── Renderer
 └── Adapter

Container 的核心作用不是执行具体业务,而是:

创建对象
保存对象
获取对象
检查对象
释放对象

例如:

$container->set('individual', $individual);
$container->set('reasoning', $reasoningEngine);
$container->set('memory', $memoryManager);

然后其他组件可以通过:

$container->get('reasoning');

获取已经创建的对象。

因此:

Container 解决的是“运行时对象在哪里、如何获取”的问题。


4. Engine

Engine 是具体功能执行组件。

前面已经建立了大量 Engine。

例如:

PerceptionEngine
CognitionEngine
MatchingEngine
UnderstandingEngine
ReasoningEngine
DecisionEngine
LearningEngine
DetectionEngine
DiagnosisEngine
RepairEngine
VerificationEngine

Engine 的基本结构:

Engine
 ├── ID
 ├── Name
 ├── Version
 ├── State
 ├── initialize()
 ├── execute()
 └── shutdown()

例如:

interface EngineInterface
{
    public function getId();

    public function getName();

    public function getVersion();

    public function initialize();

    public function execute($input);

    public function getState();

    public function shutdown();
}

Kernel 不直接替代 Engine。

而是:

Kernel
   ↓
EngineManager
   ↓
EngineRegistry
   ↓
Engine
   ↓
execute()

所以:

Kernel 管理 Engine 的生命周期,Engine 执行具体功能。


5. Manager

Manager 是组件管理器。

不同类型的组件可以由不同 Manager 管理。

例如:

EngineManager
MemoryManager
ExtensionManager
RendererManager
AdapterManager
TemplateManager

Manager 的职责通常包括:

Register
Get
Load
Initialize
Start
Stop
Remove

例如:

EngineManager
    ↓
EngineRegistry
    ↓
Engine

EngineManager 可以:

$engineManager->register($engine);

$engineManager->get('reasoning');

$engineManager->start('reasoning');

$engineManager->stop('reasoning');

Manager 与 Registry 的关系:

Manager
   ↕
Registry
   ↓
Component

其中:

Manager = 管理行为

Registry = 登记信息

例如 Registry 记录:

reasoning_engine
class = ReasoningEngine
version = 1.0.0
state = ACTIVE
enabled = true

Manager 根据这些信息管理实际对象。


6. Registry

Registry 是 Framework 的组件登记中心。

它主要保存:

组件是谁
组件是什么
组件在哪里
组件属于什么类型
组件依赖什么
组件当前是什么状态
组件是否启用

例如:

EngineRegistry

id:
reasoning

name:
Reasoning Engine

class:
ReasoningEngine

version:
1.0.0

type:
reasoning

state:
ACTIVE

enabled:
true

Registry 可以登记:

Engine
Extension
Renderer
Adapter
Template
Manager

例如:

Registry
 ├── EngineRegistry
 ├── ExtensionRegistry
 ├── RendererRegistry
 ├── AdapterRegistry
 └── TemplateRegistry

也可以统一形成:

FrameworkRegistry

Registry 与 Container 的区别

这是 Kernel 结构中非常重要的一组区别。

Registry

回答:

系统中有哪些组件?

例如:

reasoning → ReasoningEngine
decision  → DecisionEngine
learning  → LearningEngine

Container

回答:

当前运行时有哪些对象?

例如:

reasoning → object #123
decision  → object #124
learning  → object #125

所以:

Registry = 组件登记

Container = 运行对象

二者不能混淆。


7. Lifecycle

Lifecycle 是 Kernel 最重要的运行机制之一。

Framework 不能只有:

启动
运行

还必须明确:

创建
初始化
启动
运行
停止
关闭

可以建立统一生命周期:

CREATED
   ↓
INITIALIZING
   ↓
READY
   ↓
STARTING
   ↓
RUNNING
   ↓
STOPPING
   ↓
STOPPED
   ↓
SHUTDOWN

异常情况下:

ERROR
UNKNOWN
CONFLICT

7.1 CREATED

Kernel 对象已经创建。

Kernel.state = CREATED

此时:

对象存在
但 Framework 尚未初始化

7.2 INITIALIZING

Kernel 开始初始化。

检查:

Configuration
Registry
Container
Managers
Engines
Extensions
Dependencies

7.3 READY

初始化成功:

Kernel.state = READY

表示:

Framework 已经具备启动条件。


7.4 STARTING

开始启动:

Manager
Engine
Extension
Individual

按照依赖顺序启动。


7.5 RUNNING

Framework 正常运行:

Kernel.state = RUNNING

此时可以接受 Information。

例如:

Information
    ↓
Individual
    ↓
Perception
    ↓
Cognition
    ↓
Reasoning
    ↓
Decision
    ↓
Behavior
    ↓
Action

7.6 STOPPING

收到关闭请求后:

RUNNING
   ↓
STOPPING

停止新任务,同时处理正在结束的运行任务。


7.7 STOPPED

组件停止:

STOPPED

此时 Framework 不再执行新的运行任务。


7.8 SHUTDOWN

释放资源:

Object
Connection
File
Device
Memory
Runtime Resource

最后:

Kernel.state = SHUTDOWN

8. Kernel 启动

Kernel 启动必须有明确顺序。

不能简单地:

new Kernel();
Kernel->run();

因为 Framework 中存在组件依赖。

完整启动过程:

Application
    ↓
Create Kernel
    ↓
Load Configuration
    ↓
Initialize Registry
    ↓
Initialize Container
    ↓
Initialize Managers
    ↓
Load Components
    ↓
Check Dependencies
    ↓
Initialize Engines
    ↓
Initialize Extensions
    ↓
Create Individual
    ↓
Start Components
    ↓
Kernel READY
    ↓
Kernel RUNNING

8.1 启动核心结构

Application
     ↓
Kernel
     ↓
Configuration
     ↓
Registry
     ↓
Container
     ↓
Manager
     ↓
Engine
     ↓
Individual
     ↓
RUNNING

8.2 Kernel 启动伪代码

class Kernel
{
    protected $state = 'CREATED';

    public function boot()
    {
        $this->state = 'INITIALIZING';

        $this->loadConfiguration();

        $this->initializeRegistry();

        $this->initializeContainer();

        $this->initializeManagers();

        $this->loadComponents();

        $this->checkDependencies();

        $this->initializeEngines();

        $this->initializeExtensions();

        $this->state = 'READY';

        return true;
    }

    public function start()
    {
        if ($this->state !== 'READY') {
            return false;
        }

        $this->state = 'STARTING';

        $this->startManagers();

        $this->startEngines();

        $this->startExtensions();

        $this->state = 'RUNNING';

        return true;
    }
}

这里的核心不是代码本身,而是启动顺序必须受到 Kernel 管理


9. Kernel 运行

Kernel 进入 RUNNING 后,开始承担 Framework 的运行协调。

基本流程:

External Information
        ↓
Application
        ↓
Kernel
        ↓
InformationReceiver
        ↓
Individual
        ↓
Perception
        ↓
Cognition
        ↓
Understanding
        ↓
Memory
        ↓
Reasoning
        ↓
Decision
        ↓
Behavior
        ↓
Action
        ↓
Expression
        ↓
SATE
        ↓
Renderer
        ↓
Adapter
        ↓
External Environment
        ↓
Feedback
        ↓
Individual
        ↓
Kernel

Kernel 并不代替这些模块执行认知。

它负责:

接收运行请求
检查 Framework 状态
找到对应组件
组织组件执行
保存运行状态
处理运行结果
处理异常
继续下一次运行

9.1 Kernel Runtime

可以建立:

public function run($information)
{
    if ($this->state !== 'RUNNING') {
        return false;
    }

    $individual = $this->container->get('individual');

    return $individual->receive($information);
}

于是:

Kernel
   ↓
Individual
   ↓
完整 SAI 生命周期

Kernel 不直接写:

Perception
Cognition
Reasoning
Decision

这些仍然属于 Individual 内部的能力体系。


9.2 Kernel 的异常处理

运行过程中可能出现:

Engine ERROR
Adapter ERROR
Device ERROR
Memory ERROR
Dependency ERROR
Conflict
Timeout
Unknown

Kernel 可以统一接收运行异常:

Engine
   ↓
Result/Error
   ↓
Kernel
   ↓
Detection
   ↓
Risk
   ↓
Diagnosis
   ↓
Decision
   ↓
Repair
   ↓
Verification

因此 Kernel 也是 Framework 自我维护体系的重要入口。


10. Kernel 关闭

Kernel 关闭必须与启动相反。

启动:

Registry
 ↓
Container
 ↓
Manager
 ↓
Engine
 ↓
Extension
 ↓
Individual

关闭:

Individual
 ↓
Extension
 ↓
Engine
 ↓
Manager
 ↓
Container
 ↓
Registry
 ↓
Kernel

也就是:

先停止依赖组件,再释放底层资源。


10.1 Kernel Shutdown

public function shutdown()
{
    if ($this->state === 'SHUTDOWN') {
        return true;
    }

    $this->state = 'STOPPING';

    $this->stopExtensions();

    $this->stopEngines();

    $this->stopManagers();

    $this->releaseContainer();

    $this->closeRegistry();

    $this->state = 'SHUTDOWN';

    return true;
}

Kernel 完整结构

到本章为止,可以形成:

SAI Framework
│
└── Kernel
    │
    ├── Application
    │
    ├── Registry
    │
    ├── Container
    │
    ├── Manager
    │   ├── EngineManager
    │   ├── ExtensionManager
    │   ├── RendererManager
    │   └── AdapterManager
    │
    ├── Engine
    │   ├── PerceptionEngine
    │   ├── CognitionEngine
    │   ├── ReasoningEngine
    │   ├── DecisionEngine
    │   ├── LearningEngine
    │   ├── DetectionEngine
    │   ├── DiagnosisEngine
    │   ├── RepairEngine
    │   └── VerificationEngine
    │
    └── Individual
        │
        ├── Perception
        ├── Cognition
        ├── Understanding
        ├── Memory
        ├── Reasoning
        ├── Decision
        ├── Behavior
        ├── Action
        ├── Expression
        ├── Learning
        └── Self-Maintenance

Kernel 生命周期总图

                 Application
                     │
                     ▼
                 Kernel
                     │
              ┌──────┴──────┐
              ▼             ▼
          Registry      Container
              │             │
              └──────┬──────┘
                     ▼
                  Manager
                     │
                     ▼
                   Engine
                     │
                     ▼
                Individual
                     │
                     ▼
                  RUNNING
                     │
                     ▼
              SAI Runtime Loop
                     │
                     ▼
                  Feedback
                     │
                     └──────→ 下一次运行
                     
停止:
                     
RUNNING
   ↓
STOPPING
   ↓
Stop Individual
   ↓
Stop Extensions
   ↓
Stop Engines
   ↓
Stop Managers
   ↓
Release Container
   ↓
Close Registry
   ↓
SHUTDOWN

本章核心定义

Kernel:

Framework Kernel 是 SAI Framework 的核心运行内核,负责组织 Application、Container、Registry、Manager、Engine、Individual 及其生命周期,使整个 SAI Framework 能够完成统一的初始化、启动、运行、停止和关闭。

最重要的职责关系是:

Application = 应用入口
Kernel      = Framework运行核心
Registry    = 组件登记
Container   = 运行对象管理
Manager     = 组件管理
Engine      = 功能执行
Individual  = SAI个体运行主体
Lifecycle   = 统一生命周期

因此,第93章完成后,前面建立的各个 SAI 能力第一次被放进一个统一 Framework Runtime 中:

Application
      ↓
    Kernel
      ↓
Registry + Container + Manager
      ↓
     Engine
      ↓
   Individual
      ↓
Perception → Cognition → Understanding
      ↓
Memory → Reasoning → Decision
      ↓
Behavior → Action → Expression
      ↓
SATE → Renderer → Adapter
      ↓
External World
      ↓
Feedback → Experience → Learning → Update
      ↺

这意味着前面的 SAI Individual 解决了“一个人工个体如何运行”的问题,而 Framework Kernel 解决的是“多个系统组件如何被统一组织并让这个 Individual 持续运行”的问题。

Leave a Reply

Your email address will not be published. Required fields are marked *