第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 持续运行”的问题。