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

第4章 SAI Framework 与 Web Framework

第4章 SAI Framework 与 Web Framework

本章大纲

  1. Web Framework 是什么
  2. ThinkPHP 的工程思想
  3. MVC
  4. Request
  5. Response
  6. Controller
  7. Model
  8. View
  9. Route
  10. Container
  11. Middleware
  12. Plugin
  13. SAI 对这些思想的重新定义
  14. Web 是 SAI 的应用方式之一
  15. SAI 为什么不属于 Web
  16. Web 与 SAI 的关系
  17. 本章完整运行流程

4.1 Web Framework 是什么

Web Framework(Web 框架)是一套用于组织 Web 应用程序的软件工程基础。

一个典型 Web 请求可以表示为:

Browser
   ↓
HTTP Request
   ↓
Web Server
   ↓
Framework
   ↓
Application
   ↓
Response
   ↓
Browser

例如用户访问:

/hello

Web 框架接收到 HTTP Request 后,需要完成:

Request
 ↓
Route
 ↓
Controller
 ↓
Model
 ↓
View
 ↓
Response

最终返回:

<h1>Hello</h1>

所以 Web Framework 主要解决的是:

如何高效、规范、可维护地开发和运行 Web 应用。


4.2 ThinkPHP 的工程思想

ThinkPHP 是 PHP 生态中具有代表性的 Web Framework。

这里学习 ThinkPHP,并不是要把 SAI Framework 做成 ThinkPHP,而是学习其中成熟的软件工程组织思想

例如:

Application
Controller
Model
View
Route
Container
Middleware
Extension

这些概念解决了不同层面的工程问题。

其中非常重要的一点是:

框架不是业务本身,而是组织业务程序运行的基础结构。

例如 Controller 不等于业务。

Controller 是:

请求进入
 ↓
调用业务
 ↓
返回结果

Model 负责数据和数据相关操作。

View 负责表现。

Route 负责入口映射。

Container 负责对象组织和依赖管理。

这些思想对于 SAI Framework 同样具有参考价值。

但是进入 SAI 后,这些概念的职责必须重新定义。


4.3 MVC

MVC 是 Web Framework 中非常经典的工程思想:

Model
View
Controller

基本关系:

Request
   ↓
Controller
   ↓
Model
   ↓
Data
   ↓
Controller
   ↓
View
   ↓
Response

Model

负责:

数据
对象
数据操作

View

负责:

表现
模板
页面
输出

Controller

负责:

接收请求
调用系统
组织结果

MVC 的价值并不是三个字母本身,而是:

通过职责分离降低系统复杂度。

SAI 可以借鉴这个思想,但不会简单照搬 MVC。

因为 SAI 的核心不是:

Request → Controller → Model → View

而是:

Information
 ↓
Perception
 ↓
Cognition
 ↓
Reasoning
 ↓
Decision
 ↓
Behavior

因此,SAI 中的 MVC 只能成为一种应用工程组织方式,而不是 SAI 智能机制本身。


4.4 Request

Web 中的 Request 是外部请求。

例如:

GET /user?id=10

Request 可以包含:

Method
URL
Parameter
Header
Cookie
Body

在 Web 应用中:

Request
 ↓
Route
 ↓
Controller

但是 SAI 面对的输入远远不止 HTTP Request。

例如:

文字
语言
传感器
摄像设备
温度
位置
速度
设备状态
API
数据库
文件
环境
场景

所以 SAI 中不能把所有信息都理解为 Request。

SAI 更适合:

Information

作为统一的信息入口。

例如:

Web Request
       ↓
Information

Sensor Data
       ↓
Information

Device State
       ↓
Information

Scene Data
       ↓
Information

因此:

Request 是 Web 的输入概念,Information 是 SAI 更广泛的输入概念。


4.5 Response

Web 中 Request 通常对应 Response:

Request
 ↓
Processing
 ↓
Response

Response 可以是:

HTML
JSON
XML
File
HTTP Status

例如:

{
    "status": "success"
}

但 SAI 的最终输出不一定是 Web Response。

可能是:

HTML
JSON
UI
Terminal Output
Robot Command
Motor Action
Light Action
Vehicle Control
Machine Command

因此 SAI 更适合使用:

Expression
Action
Output

来表达内部结果。

然后根据应用环境进行转换:

SAI Action
     ↓
Expression
     ↓
Renderer / Adapter
     ↓
External World

所以:

Web Response

只是 SAI 外部表现的一种形式。


4.6 Controller

Controller 是 Web Framework 中非常重要的入口控制组件。

例如:

class UserController
{
    public function index()
    {
        // ...
    }
}

请求:

/user/index

映射:

Route
 ↓
UserController
 ↓
index()

但是不能因此把 Controller 当成 SAI 的 Central。

二者职责完全不同。

Controller

主要负责:

外部请求
 ↓
调用系统
 ↓
返回结果

Central

主要负责:

Individual 内部协调
 ↓
调度信息
 ↓
调度感知
 ↓
调度认知
 ↓
调度推理
 ↓
调度决策
 ↓
调度行为

因此:

Controller ≠ Central

这是 SAI Framework 与 Web Framework 关系中的一个重要边界。


4.7 Model

Web MVC 中的 Model 主要用于组织:

数据
数据库
业务对象
数据操作

例如:

class User
{
    public function find($id)
    {
        // 查询用户
    }
}

SAI 中同样需要对象模型,但 SAI 的 Object 范围更加广泛。

例如:

Person
Car
Robot
Room
Door
Temperature
Task
Device

SAI 的 Object 不只是数据库记录。

一个 SAI Object 可以具有:

Identity
Property
State
Relation
Method

例如:

Robot
├── Property
│   ├── position
│   └── speed
│
├── State
│   └── moving
│
├── Relation
│   └── located_in
│
└── Method
    ├── move()
    └── stop()

所以:

SAI 的 Object 是认知和行为世界中的对象,而不仅仅是数据库 Model。


4.8 View

Web Framework 中 View 负责表现。

例如:

Controller
 ↓
View
 ↓
HTML

SAI 中也需要表现层,但表现形式更加广泛。

可以是:

Web
UI
API
Terminal
Display
Robot
Vehicle
Machine

因此 SAI 可以形成:

Behavior
 ↓
Action
 ↓
Expression
 ↓
Template
 ↓
Renderer / Adapter
 ↓
External World

例如:

Behavior:
TurnOnLight

可以表现为:

Web:
显示“灯已打开”

API:
{"light":"on"}

Device:
发送开灯命令

相同的内部行为,可以产生不同的外部表现。

这也是 SAI 中 Template、Renderer、Adapter 的意义。


4.9 Route

Route 在 Web Framework 中负责:

把外部请求映射到程序入口。

例如:

GET /user

映射:

UserController@index

可以理解为:

URL
 ↓
Route
 ↓
Controller

SAI 当然也可以使用 Route。

例如 Web Individual:

/user/message

进入:

InformationReceiver

但是一个机器人可能根本没有 URL。

它可能是:

Sensor
 ↓
InformationReceiver

或者:

Device
 ↓
DeviceAdapter
 ↓
InformationReceiver

所以 Route 不是 SAI 的核心。

它只是:

当 SAI 运行在 Web 环境中时,用于组织 Web 入口的一种机制。


4.10 Container

Container 通常用于管理对象和依赖关系。

例如:

Container
├── InformationReceiver
├── PerceptionEngine
├── CognitionEngine
├── MemoryEngine
├── ReasoningEngine
└── DecisionEngine

当某个模块需要:

ReasoningEngine

时,可以由 Container 提供。

这样就不需要每个类自己创建大量依赖对象。

例如:

$reasoning = $container->get('reasoning');

SAI 可以利用这种思想组织:

Object
Engine
Manager
Renderer
Adapter
Device

因此 Container 的意义在 SAI 中仍然成立。

但是它的作用属于:

工程基础设施

而不是:

认知机制

4.11 Middleware

Middleware 是 Web Framework 中用于处理请求过程的一种机制。

例如:

Request
 ↓
Middleware
 ↓
Controller

可以处理:

身份验证
权限
日志
异常
请求过滤
数据检查

SAI 也可以借鉴 Middleware 思想。

例如:

Information
 ↓
Filter
 ↓
Validation
 ↓
Security
 ↓
Perception

或者:

Action
 ↓
Safety Check
 ↓
Device Adapter
 ↓
Device

但是 SAI 中 Middleware 的作用需要重新定义。

它不能成为:

Cognition
Reasoning
Decision

的替代品。

它更适合承担:

过滤
验证
安全检查
日志
生命周期检查
异常拦截
输入输出保护

4.12 Plugin

Plugin 是开放扩展机制。

Web Framework 可以通过 Plugin 增加:

功能
模块
服务
管理页面
接口
工具

SAI Framework 同样需要开放扩展。

例如:

SAI Core
   │
   ├── Robot Extension
   ├── Vehicle Extension
   ├── Sensor Extension
   ├── Device Extension
   └── Custom Engine

但是 SAI Extension 的重点不是 Web 功能,而是 Individual 能力的扩展。

例如增加:

RobotAdapter

或者:

VisionSensor

或者:

NavigationEngine

这样 Framework 可以保持核心稳定,同时支持不同应用场景。


4.13 SAI 对这些思想的重新定义

到这里可以看到:

SAI 并不是拒绝 Web Framework 的工程思想,而是把其中适合的思想重新放入模拟人工个体的体系。

可以建立对应关系:

Web Framework SAI Framework 中的重新定义
Request Information
Response Expression / Action / Output
Controller External Entry Controller
Model Object / Data Model
View Expression / Template / Renderer
Route Input Route / External Route
Container Object / Service Container
Middleware Filter / Validation / Security
Plugin Extension
Application Individual Runtime
MVC Web Application Organization
Framework Individual Construction Framework

这里最重要的是:

Web Framework
    ↓
工程思想

SAI Framework
    ↓
模拟人工个体工程体系

SAI 不是简单修改几个类名。

而是重新确定这些工程思想在 Individual 中的位置和职责


4.14 Web 是 SAI 的应用方式之一

SAI 可以运行在 Web 环境中。

例如:

Browser
 ↓
HTTP Request
 ↓
SAI Web Entry
 ↓
Information
 ↓
Perception
 ↓
Cognition
 ↓
Reasoning
 ↓
Decision
 ↓
Behavior
 ↓
Expression
 ↓
Web Response

这里 Web 只是外部环境。

SAI 的核心仍然是:

Information
 ↓
Cognition
 ↓
Decision
 ↓
Behavior

因此可以说:

Web 是 SAI 的一个运行和表现环境,而不是 SAI 的定义。


4.15 SAI 为什么不属于 Web

判断一个 Framework 属于什么领域,关键要看它的核心目标。

Web Framework 的核心目标是:

HTTP
Request
Response
Web Application

而 SAI Framework 的核心目标是:

Individual

SAI 的运行环境可以是:

Web
API
CLI
Robot
Vehicle
Drone
Industrial Device
Embedded System
Custom Environment

因此:

Web
├── SAI 可以运行
├── SAI 可以输出
└── SAI 可以交互

但:

SAI ≠ Web

更准确的关系是:

                  SAI Framework
                        │
          ┌─────────────┼─────────────┐
          │             │             │
         Web           Robot        Device
          │             │             │
        API/UI        Sensor        Machine

Web 只是其中一个分支。


4.16 Web 与 SAI 的关系

可以从三个层次理解。

第一层:Web 作为输入环境

Browser
 ↓
HTTP Request
 ↓
SAI Information

例如用户输入:

“房间温度是多少?”

进入 SAI:

Information
 ↓
Perception
 ↓
Cognition

第二层:Web 作为输出环境

SAI 产生:

Expression

通过:

WebRenderer

转换成:

HTML
JSON

返回浏览器。


第三层:Web 作为外部系统

SAI 也可以访问:

API
Database
Web Service
External System

这些都可以成为 InformationSource。

因此 Web 对 SAI 可以同时承担:

Input
Output
External Environment

但 SAI 的核心运行机制仍然独立于 Web。


4.17 本章完整运行流程

现在用一个 Web SAI Individual 作为完整案例。

假设:

用户通过浏览器询问房间温度,SAI 获取温度信息、进行判断,并返回结果。


4.17.1 Web Request

浏览器:

GET /temperature

进入 Web Server。

然后:

Request
 ↓
Route

Route 找到:

TemperatureController

4.17.2 Controller

Controller 不直接进行认知。

它只负责把 Web 请求转换成 SAI 可以处理的信息。

Controller
 ↓
InformationReceiver

形成:

Information
{
    type: request,
    source: web,
    subject: temperature
}

4.17.3 Information

SAI 接收信息:

Information
 ↓
InformationReceiver
 ↓
InformationManager

然后进入:

Perception

4.17.4 Perception

PerceptionEngine 对信息进行组织:

temperature
room_01

形成:

Element

然后识别对象:

Room

属性:

temperature

4.17.5 Object

形成:

Room
└── temperature = 32

进一步建立:

Property
temperature = 32

以及相关 Relation。


4.17.6 Cognition

CognitionEngine 对当前信息进行认知组织:

Object
 +
Property
 +
Relation

得到:

Room.temperature = 32

4.17.7 Memory

SAI 可以查询:

Memory

确认:

当前房间
当前温度
最近状态
历史经验

4.17.8 Reasoning

如果存在规则:

IF temperature > 30
THEN temperature_state = HOT

则:

32 > 30

得到:

temperature_state = HOT

4.17.9 Decision

如果 Individual 的任务只是回答温度:

Decision
=
ReturnTemperature

如果同时存在自动控制任务:

Decision
=
TurnOnFan

这说明:

同一个 Web Request 并不等于整个 SAI 的决策。

Request 只是触发信息进入系统的一种方式。


4.17.10 Behavior

如果需要控制设备:

Decision
 ↓
Behavior
 ↓
Action

例如:

Fan.turnOn()

如果只是回答用户:

Decision
 ↓
Behavior
 ↓
Expression

形成:

Temperature = 32℃

4.17.11 Renderer

WebRenderer 接收 Expression:

Expression
{
    temperature: 32,
    state: hot
}

转换为:

{
    "temperature": 32,
    "state": "hot"
}

然后形成:

Response

4.17.12 返回 Web

最终:

SAI
 ↓
Expression
 ↓
WebRenderer
 ↓
HTTP Response
 ↓
Browser

完整流程就是:

Browser
   ↓
HTTP Request
   ↓
Route
   ↓
Controller
   ↓
Information
   ↓
InformationReceiver
   ↓
Perception
   ↓
Element
   ↓
Object
   ↓
Relation / Property
   ↓
Cognition
   ↓
Memory
   ↓
Reasoning
   ↓
Decision
   ↓
Behavior
   ↓
Expression
   ↓
WebRenderer
   ↓
Response
   ↓
Browser

如果存在设备控制,则可以变成:

Decision
   ↓
Behavior
   ↓
Action
   ↓
Adapter
   ↓
Device
   ↓
Feedback
   ↓
Information
   ↓
Perception

于是 Web 和 SAI 形成了一个完整闭环:

                   ┌──────────────────────┐
                   │      SAI Individual  │
                   │                      │
Web Request ──────>│ Information          │
                   │      ↓               │
                   │ Perception           │
                   │      ↓               │
                   │ Cognition            │
                   │      ↓               │
                   │ Reasoning            │
                   │      ↓               │
                   │ Decision             │
                   │      ↓               │
                   │ Behavior             │
                   │      ↓               │
                   │ Expression           │
                   └──────┬───────────────┘
                          │
                     WebRenderer
                          │
                          ↓
                    HTTP Response
                          │
                          ↓
                       Browser

如果接入真实设备:

                     SAI Individual
                           │
                       Decision
                           │
                       Behavior
                           │
                         Action
                           │
                        Adapter
                           │
                         Device
                           │
                        Feedback
                           │
                      Information
                           │
                           └──────────→ SAI

本章核心认识

本章最重要的不是记住:

Request = Information
Controller = Central
Model = Object
View = Template

因为这些并不是完全等价关系。

真正应该理解的是:

SAI 可以借鉴 Web Framework 的工程思想,但必须根据模拟人工个体的运行机制重新定义这些思想。

因此:

Web Framework
        │
        │ 借鉴工程思想
        ↓
SAI Framework
        │
        ↓
Individual

而不是:

Web Framework
      ↓
修改名称
      ↓
SAI

二者的核心目标不同。


Web Framework 的核心

HTTP
 ↓
Request
 ↓
Application
 ↓
Response

SAI Framework 的核心

Information
 ↓
Perception
 ↓
Cognition
 ↓
Memory
 ↓
Reasoning
 ↓
Decision
 ↓
Behavior
 ↓
Action
 ↓
Feedback
 ↓
Experience
 ↓
Learning

最终可以用一句话概括:

SAI Framework 可以运行于 Web,但不依赖 Web;可以借鉴 Web Framework 的工程思想,但其最终目标不是构建 Web 应用,而是构建能够持续运行的模拟人工个体 Individual。

Leave a Reply

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