第162章 Behavior与Action类
162.1 提出背景
在个体认知系统中,Capability解决“能不能做”,Method解决“怎么做”,Decision解决“在多个可行方案中选择哪一个”。
但是,仅仅完成Decision还不能产生真实结果。
例如,个体面对一个物体,需要完成“拿起物体”这一目标。系统经过认知过程后可能得到:
Need → Goal → Capability → Method → Decision → Selected Method
此时系统已经知道:
- 要完成什么;
- 是否具备完成任务的能力;
- 可以采用什么方法;
- 当前应该选择哪一种方法。
但是,系统仍然必须进入实际执行阶段。
因此必须继续解决五个问题:
Behavior是什么?
Action是什么?
Action如何执行?
执行以后产生什么Result?
执行过程中的State如何变化?
由此形成:
Decision → Behavior → Action → Execution → Result → State
Behavior与Action因此成为个体认知系统从“认知决定”进入“实际行为”的核心对象。
162.2 Behavior概念定义
**Behavior(行为)**是个体针对特定目标,在特定条件下,由一个或多个Action按照一定结构组织形成的可执行行为过程。
Behavior不是单个动作,而是具有目标、条件、动作组成、执行状态和结果的整体行为对象。
可以定义:
B=(G,C,A,E,R,S)B=(G,C,A,E,R,S)
其中:
- BB:Behavior,行为;
- GG:Goal,行为目标;
- CC:Condition,行为条件;
- AA:Action Set,行为动作集合;
- EE:Execution,行为执行过程;
- RR:Result,行为结果;
- SS:State,行为状态。
因此:
Behavior = Goal + Condition + Action + Execution + Result + State
Behavior解决的问题是:
“个体现在正在实施什么行为?”
而Method解决的问题是:
“完成目标可以采用什么方法?”
两者不能混淆。
Method是一种可选择的实现方案,Behavior则是该方案被实际执行以后形成的行为过程。
因此:
Method → Decision → Behavior
表示:
方法候选 → 方法选择 → 实际行为
162.3 Action概念定义
**Action(动作)**是Behavior内部最基本的可执行操作单元。
一个Behavior通常由一个或多个Action组成。
例如“拿起一个杯子”可以分解为:
观察杯子 → 移动手部 → 接触杯子 → 抓取杯子 → 提起杯子
其中每一步都可以作为一个Action。
因此:
B={A1,A2,A3,…,An}B=\{A_1,A_2,A_3,\dots,A_n\}
其中:
- BB:一个Behavior;
- AiA_i:Behavior中的第 ii 个Action;
- nn:Action数量。
Action具有明确的执行对象、执行条件、执行参数和执行结果。
可以进一步定义:
A=(T,O,C,P,R,S)A=(T,O,C,P,R,S)
其中:
- TT:Action Type,动作类型;
- OO:Object,动作对象;
- CC:Condition,动作条件;
- PP:Parameter,动作参数;
- RR:Result,动作结果;
- SS:State,动作状态。
因此:
Action = Type + Object + Condition + Parameter + Result + State
例如:
Action:
Type = Move
Object = Hand
Target = Cup
Distance = 20cm
State = Ready
执行后可能变成:
Action:
Type = Move
Object = Hand
Target = Cup
Distance = 20cm
State = Completed
Result = HandReachedCup
Action是可以被执行和验证的最小行为单位之一。
162.4 Behavior与Action的层级关系
Behavior与Action不是两个平行对象,而是具有组合关系。
可以表示为:
Behavior → Action1 → Action2 → Action3 → … → ActionN
例如:
Behavior:拿起杯子
可以分解为:
观察杯子 → 移动手 → 接触杯子 → 抓取杯子 → 提起杯子
因此:
Behavior=∑i=1nActioniBehavior=\sum_{i=1}^{n}Action_i
这里的“∑\sum”不是数学上的数值相加,而表示多个Action按照行为结构组合形成一个完整Behavior。
Behavior负责整体目标。
Action负责具体操作。
因此可以形成清晰的层次:
Goal → Behavior → Action → Execution
而不是:
Goal → Action
因为直接由Goal产生Action,会缺少中间的行为组织层。
162.5 Execution概念定义
**Execution(执行)**是系统将Behavior或Action从“准备状态”转变为“实际运行状态”的过程。
Execution不是Action本身。
Action描述:
做什么。
Execution描述:
实际怎么运行这个动作。
例如:
Action = Move Hand To Cup
只是定义了一个动作。
真正发生:
Action → Execution → Hand Position Changed
才形成实际执行。
因此可以定义:
E=(A,T,S,R)E=(A,T,S,R)
其中:
- EE:Execution,执行;
- AA:被执行的Action;
- TT:Execution Time,执行时间;
- SS:Execution State,执行状态;
- RR:Execution Result,执行结果。
Execution可以具有以下状态:
pending
ready
running
completed
failed
blocked
cancelled
其状态转换可以表示为:
Pending → Ready → Running → Completed
失败时:
Running → Failed
被阻止时:
Ready → Blocked
被取消时:
Running → Cancelled
因此Execution本质上是行为运行时的过程对象。
162.6 Result概念定义
**Result(结果)**是Action或Behavior执行以后产生的实际状态变化、输出信息或执行结论。
Result不能简单等同于“成功”。
因为执行结果可能包括:
Success
Partial Success
Failure
No Change
Unexpected Result
Blocked
Cancelled
因此:
R=(E,O,S,C)R=(E,O,S,C)
其中:
- RR:Result;
- EE:Execution,产生结果的执行过程;
- OO:Output,执行输出;
- SS:Result State,结果状态;
- CC:Comparison,实际结果与预期结果之间的比较。
例如:
Expected:
Hand reaches Cup
Actual:
Hand reaches Cup
Result:
Success
也可能:
Expected:
Hand reaches Cup
Actual:
Hand stops 5cm before Cup
Result:
Failure
因此系统不能在Action开始以后直接把结果设置成Success。
必须遵循:
Action → Execution → Actual Result → Expected/Actual Comparison → Result
这样才能保证认知系统中的结果来自真实执行,而不是来自预先假设。
162.7 State概念定义
**State(状态)**表示Behavior、Action或Execution在当前时刻所处的运行状态。
状态不是行为本身,而是行为当前所处的位置。
例如一个Behavior可以具有:
Created
Ready
Running
Paused
Completed
Failed
Blocked
Cancelled
状态变化可以表示为:
Created → Ready → Running → Completed
也可以:
Created → Ready → Blocked
或者:
Running → Failed
因此:
St+1=F(St,E,R)S_{t+1}=F(S_t,E,R)
其中:
- StS_t:当前时刻的状态;
- St+1S_{t+1}:执行后的下一状态;
- EE:执行事件;
- RR:执行结果;
- FF:状态转换规则。
状态转换必须由明确规则控制。
例如:
if ExecutionResult = success
State = completed
if ExecutionResult = failure
State = failed
这里不是依靠随机判断,而是根据执行事实和规则进行离散状态转换。
162.8 Behavior与Action的区别
Behavior与Action虽然都属于行为系统,但层级不同。
| 概念 | 作用 |
|---|---|
| Behavior | 描述完整行为 |
| Action | 描述具体动作 |
| Execution | 描述实际执行 |
| Result | 描述执行结果 |
| State | 描述当前状态 |
例如目标:
拿起杯子
Behavior:
PickUpCupBehavior
Action:
MoveHand
TouchCup
GripCup
LiftCup
Execution:
MoveHand Execution
TouchCup Execution
GripCup Execution
LiftCup Execution
Result:
HandReachedCup
CupContacted
CupGripped
CupLifted
State:
Running
→
Running
→
Running
→
Completed
因此:
Behavior是行为整体,Action是行为组成单元,Execution是实际运行过程,Result是运行产生的事实,State是当前运行状态。
162.9 Behavior运行模型
一个完整Behavior可以建立如下运行模型:
Goal → Behavior Creation → Condition Check → Action Loading → Execution → Result → State Update
进一步展开:
Goal → Behavior → Action1 → Execution1 → Result1 → State1 → Action2 → Execution2 → Result2 → State2 → … → Behavior Result
例如:
拿起杯子目标
首先创建:
Behavior = PickUpCup
然后加载:
Action1 = MoveHand
Action2 = TouchCup
Action3 = GripCup
Action4 = LiftCup
形成:
PickUpCup → MoveHand → TouchCup → GripCup → LiftCup
每一个Action都必须经过实际Execution。
因此:
Action → Execution → Result → State
当Action1完成后,系统才能进入Action2。
这形成了严格的顺序控制:
Action1 Completed → Action2 Ready → Action2 Running
而不是所有Action同时被认为已经完成。
162.10 Behavior状态模型
Behavior的状态必须由其内部Action和Execution共同决定。
可以定义:
Bs=F(As,Es,R)B_s=F(A_s,E_s,R)
其中:
- BsB_s:Behavior当前状态;
- AsA_s:Action状态集合;
- EsE_s:Execution状态;
- RR:执行结果;
- FF:行为状态转换规则。
例如:
如果:
所有Action = Completed
则:
Behavior = Completed
如果:
某关键Action = Failed
则:
Behavior = Failed
如果:
下一Action的Condition不满足
则:
Behavior = Blocked
因此Behavior状态不是人为指定,而是由内部执行事实计算得到。
162.11 Behavior与Method的关系
第160章已经定义Method。
Method解决:
“如何完成目标?”
Behavior解决:
“当前正在实施什么行为?”
两者之间存在转换关系:
Capability → Method Candidate → Decision → Selected Method → Behavior → Action → Execution
例如:
Goal = Pick Up Cup
Capability = Object Grasping
Methods:
M1 = Direct Grasp
M2 = Two-Step Grasp
Decision:
M1 Selected
此时:
Selected Method = Direct Grasp
进入:
Behavior = DirectGraspBehavior
然后:
Behavior
→ Action1
→ Action2
→ Action3
→ Execution
→ Result
因此Method并不直接等于Behavior。
Method是可选择的方案结构。
Behavior是方案进入执行阶段后的行为结构。
162.12 Behavior与Decision的关系
Decision完成的是选择。
Behavior完成的是执行。
因此:
Decision ≠ Behavior
Decision:
Candidate A
Candidate B
Candidate C
↓
Condition
↓
Comparison
↓
Selected Candidate
Behavior:
Selected Candidate
↓
Behavior
↓
Action
↓
Execution
↓
Result
完整关系为:
Need → Goal → Capability → Method Candidates → Decision → Selected Method → Behavior → Action → Execution → Result
这形成从需求到实际行为的完整链路。
162.13 Behavior工程对象模型
在PHP OOP工程中,可以建立Behavior类:
class Behavior
{
protected $id;
protected $name;
protected $goalId;
protected $condition;
protected $actions;
protected $state;
protected $result;
public function addAction($action)
{
$this->actions[] = $action;
}
public function setState($state)
{
$this->state = $state;
}
public function getState()
{
return $this->state;
}
public function setResult($result)
{
$this->result = $result;
}
public function getResult()
{
return $this->result;
}
}
Behavior对象负责管理完整行为。
Action则可以独立建立:
class Action
{
protected $id;
protected $type;
protected $object;
protected $condition;
protected $parameter;
protected $state;
protected $result;
public function execute()
{
$this->state = 'running';
}
}
这里的execute()只代表进入执行过程。
真正的Execution应该继续独立建模。
162.14 Execution工程对象
可以建立:
class Execution
{
protected $id;
protected $actionId;
protected $startTime;
protected $endTime;
protected $state;
protected $result;
public function start()
{
$this->state = 'running';
}
public function complete($result)
{
$this->result = $result;
$this->state = 'completed';
}
public function fail($result)
{
$this->result = $result;
$this->state = 'failed';
}
}
这样就形成:
Action
↓
Execution
↓
Result
↓
State
Action负责描述动作。
Execution负责记录动作运行过程。
Result负责记录实际结果。
State负责表示当前状态。
四者职责不能混在一个对象中。
162.15 Result工程对象
可以建立:
class Result
{
protected $id;
protected $executionId;
protected $expected;
protected $actual;
protected $status;
protected $data;
public function compare()
{
if ($this->expected == $this->actual) {
$this->status = 'success';
return true;
}
$this->status = 'failure';
return false;
}
}
这里最重要的是:
Expected ≠ Actual
系统首先保存预期结果:
Expected
然后从Execution中获得:
Actual
最后执行:
Expected + Actual
→ Comparison
→ Result
这样才能使Result成为真正的执行事实。
162.16 BehaviorManager
当Behavior数量增加以后,需要建立BehaviorManager负责行为管理。
class BehaviorManager
{
protected $behaviors;
public function register($behavior)
{
$this->behaviors[] = $behavior;
}
public function find($id)
{
foreach ($this->behaviors as $behavior) {
if ($behavior->getId() == $id) {
return $behavior;
}
}
return null;
}
}
BehaviorManager主要负责:
- 创建Behavior;
- 加载Behavior;
- 查找Behavior;
- 更新Behavior;
- 管理Behavior状态;
- 管理Action;
- 记录Behavior结果。
它不负责替代Decision,也不负责替代Method。
162.17 数据库模型
Behavior可以建立:
behaviors
主要字段:
id
name
goal_id
condition
state
result
created_at
updated_at
Action可以建立:
actions
主要字段:
id
behavior_id
action_type
object_id
condition
parameter
state
result
sequence
Execution可以建立:
executions
主要字段:
id
action_id
start_time
end_time
state
result
Result可以建立:
behavior_results
主要字段:
id
behavior_id
execution_id
expected_result
actual_result
status
created_at
这样形成:
behaviors
↓
actions
↓
executions
↓
behavior_results
数据库结构与对象结构保持一致。
162.18 行为执行闭环
Behavior不能只执行一次就结束。
真正的个体行为系统应该形成:
Behavior → Action → Execution → Result → State → Feedback
如果Result符合预期:
Result → Completed → Behavior Completed
如果Result不符合预期:
Result → Failed → Behavior Failed
如果出现新的条件:
Result → State Change → Condition Re-evaluation → New Action
因此行为系统实际上形成一个闭环:
Behavior → Action → Execution → Result → State → Behavior Update
这使Behavior成为动态运行对象,而不是静态数据记录。
162.19 行为与认知闭环
将本章与前面的Capability、Method、Decision结合起来,可以形成完整的认知—行为链:
Need → Goal → Capability → Method → Decision → Behavior → Action → Execution → Result → State → Experience
其中:
- Need产生需求;
- Goal确定目标;
- Capability判断能力;
- Method提供方法;
- Decision进行选择;
- Behavior组织实际行为;
- Action产生具体动作;
- Execution执行动作;
- Result产生实际结果;
- State记录当前状态;
- Experience记录执行经验。
因此:
Cognitive Decision→Behavioral ExecutionCognitive\ Decision \rightarrow Behavioral\ Execution
即:
认知决策 → 行为执行
这是ICAI从“思考”进入“行动”的关键连接。
162.20 行为工程的核心原则
Behavior与Action工程必须遵循以下原则。
第一,Behavior不能等于Action
Behavior是整体行为,Action是行为组成单元。
第二,Action不能等于Execution
Action描述要执行什么,Execution描述实际执行过程。
第三,Execution不能直接等于Result
执行过程和执行结果是两个不同对象。
第四,Result必须来自实际执行
不能因为Action被创建,就直接认为Action成功。
第五,State必须根据事实变化
状态转换必须由Execution、Result和Condition共同决定。
第六,失败必须成为合法状态
系统不能强制所有Behavior最终得到Success。
第七,Behavior必须能够产生经验
行为执行结果是Experience的重要来源:
Behavior → Result → Experience
这样,个体才可以根据过去的行为结果形成后续能力和方法变化。
162.21 Behavior类完整模型
综合本章,可以建立:
B=(G,C,A,E,R,S)B=(G,C,A,E,R,S)
其中:
- GG:目标;
- CC:条件;
- AA:动作集合;
- EE:执行过程;
- RR:结果;
- SS:状态。
Action模型为:
A=(T,O,C,P,R,S)A=(T,O,C,P,R,S)
其中:
- TT:动作类型;
- OO:动作对象;
- CC:动作条件;
- PP:动作参数;
- RR:动作结果;
- SS:动作状态。
Behavior执行模型:
B→A→E→R→SB \rightarrow A \rightarrow E \rightarrow R \rightarrow S
完整认知行为模型:
Need→Goal→Capability→Method→Decision→Behavior→Action→Execution→Result→State→ExperienceNeed \rightarrow Goal \rightarrow Capability \rightarrow Method \rightarrow Decision \rightarrow Behavior \rightarrow Action \rightarrow Execution \rightarrow Result \rightarrow State \rightarrow Experience
这条链路把前面的需求、目标、能力、方法和决策,最终连接到真实行为。
162.22 本章总结
Behavior与Action是ICAI从认知结构进入行为结构的核心对象。
Capability回答:
“能不能做?”
Method回答:
“怎么做?”
Decision回答:
“选择哪个?”
Behavior回答:
“现在实施什么行为?”
Action回答:
“具体执行什么动作?”
Execution回答:
“这个动作实际上如何运行?”
Result回答:
“实际产生了什么结果?”
State回答:
“当前处于什么状态?”
因此形成:
Capability → Method → Decision → Behavior → Action → Execution → Result → State
进一步形成完整个体运行闭环:
Need → Goal → Capability → Method → Decision → Behavior → Action → Execution → Result → State → Experience → Learning
从工程角度看,Behavior、Action、Execution、Result、State不应该被设计成一个巨大的混合对象,而应该保持明确的对象职责:
Behavior管理行为整体,Action管理动作,Execution管理执行过程,Result管理执行事实,State管理运行状态。
这种对象分离使ICAI能够将“认知决定”真正转换为“可执行行为”,也为后续的反馈、经验、学习、能力变化和行为优化建立工程基础。