第159章 Capability类
159.1 提出背景
在个体认知系统中,仅仅拥有对象、属性、状态、关系、场景、知识、需求和目标,还不能直接产生行为。
个体必须回答一个更加基础的问题:
“我现在是否具有完成某项任务的能力?”
例如,一个个体面对“抓取杯子”这一目标,需要判断自己是否具有抓取能力;面对“移动到指定位置”,需要判断自己是否具有移动能力;面对“识别某种对象”,则需要判断自己是否具有对应的识别能力。
因此,Capability(能力)是连接认知结构与行为执行的重要工程对象。
能力不是简单的“可以”或“不可以”,而是一个具有明确条件、当前状态、适用范围和验证机制的结构。
其基本运行过程可以表示为:
Knowledge → Need → Goal → Capability → Condition → Method → Behavior → Result → Verification
其中,Capability负责回答:
当前个体在什么条件下,具有什么能力,以及该能力是否经过实际验证。
因此,本章建立 Capability类,将能力从抽象概念转换为可以被 PHP OOP 系统管理、查询、匹配、验证和更新的运行对象。
159.2 Capability概念定义
Capability(能力)是个体在一定条件和范围内,能够执行某种任务、产生某种行为并获得相应结果的结构化能力对象。
能力不是行为本身。
例如:
“抓取杯子”是一个具体行为;
“能够抓取物体”属于能力。
因此:
Capability ≠ Behavior
能力描述“能不能做以及在什么条件下能做”,行为描述“实际做了什么”。
可以定义:
Capability=Type+Condition+State+Range+VerificationCapability = Type + Condition + State + Range + Verification
其中:
- Type:能力类型;
- Condition:能力成立所需要的条件;
- State:能力当前状态;
- Range:能力能够适用的范围;
- Verification:能力是否经过实际验证以及验证结果。
因此,一个完整能力对象可以表示为:
C=(T,Co,S,R,V)C=(T,Co,S,R,V)
其中:
- CC:Capability,能力;
- TT:Capability Type,能力类型;
- CoCo:Condition,能力条件;
- SS:Capability State,能力状态;
- RR:Capability Range,能力范围;
- VV:Capability Verification,能力验证。
159.3 Capability Type
Capability Type(能力类型)用于说明能力具体属于哪一种能力。
例如:
grasp
move
identify
compare
calculate
store
retrieve
operate
这些类型并不是自然语言描述,而是系统内部可以识别和匹配的能力类型标识。
例如:
$capability = new Capability(
'grasp',
array('object_type' => 'cup'),
'available',
array('weight_max' => 2)
);
其中:
grasp
表示抓取能力。
能力类型可以参与Goal与Capability之间的匹配:
Goal Type
↓
Required Capability
↓
Capability Type Matching
↓
Capability Available
如果目标要求:
grasp
系统首先查找能力类型为:
grasp
的Capability对象。
因此,Capability Type是能力匹配的第一层结构。
159.4 Condition
Condition(条件)是能力能够成立或执行所必须满足的前提状态。
能力不是任何时候都可以使用。
例如,一个个体具有:
grasp
能力,但该能力可能要求:
object_visible = true
object_distance < 10
hand_available = true
object_weight <= 2
因此:
Capability成立 ≠ Capability永远可执行。
能力必须经过条件判断。
可以表示为:
CapabilityAvailable=Condition1∧Condition2∧…∧ConditionnCapabilityAvailable = Condition_1 \land Condition_2 \land … \land Condition_n
当所有必要条件成立时:
CapabilityAvailable=trueCapabilityAvailable = true
否则:
CapabilityAvailable=falseCapabilityAvailable = false
例如:
抓取能力
↓
对象存在?
↓
对象可接触?
↓
手部可用?
↓
重量是否在范围内?
↓
能力可执行
因此,Condition是Capability与现实运行状态之间的连接结构。
159.5 Condition对象化
为了使条件能够进入系统运行,Condition不应只作为字符串存在,而应该成为独立的结构。
例如:
class CapabilityCondition
{
protected $type;
protected $operator;
protected $value;
public function __construct($type, $operator, $value)
{
$this->type = $type;
$this->operator = $operator;
$this->value = $value;
}
public function getType()
{
return $this->type;
}
public function getOperator()
{
return $this->operator;
}
public function getValue()
{
return $this->value;
}
}
例如:
$condition = new CapabilityCondition(
'object_visible',
'=',
true
);
系统得到一个明确的条件对象:
Condition
Type = object_visible
Operator = =
Value = true
这使能力条件可以进入离散判断过程。
159.6 State
Capability State(能力状态)表示能力当前处于什么状态。
能力不是静态数据。
随着个体状态、环境状态和历史经验发生变化,能力状态也可能变化。
例如:
unknown
available
unavailable
limited
disabled
verified
failed
其中:
unknown:能力未知;available:当前可用;unavailable:当前不可用;limited:能力受到限制;disabled:能力被禁止使用;verified:已经经过验证;failed:最近验证失败。
因此:
CapabilityState=f(Condition,Range,Verification)CapabilityState = f(Condition, Range, Verification)
能力状态不是凭空产生,而是由条件、范围和验证结果共同影响。
159.7 Capability State与Object State的区别
Capability State不能与Object State混淆。
例如:
Object State:
cup = broken
表示杯子的状态。
而:
Capability State:
grasp = available
表示个体抓取能力的状态。
两者属于不同对象。
可以表示:
Object
↓
Object State
Individual
↓
Capability
↓
Capability State
对象状态可能导致能力条件发生变化:
Cup State = broken
↓
Condition Change
↓
Grasp Capability
↓
Capability State = limited
因此,Capability State是能力对象自身的运行状态,而不是被操作对象的状态。
159.8 Range
Range(能力范围)用于定义能力能够处理的对象、状态、数量、距离、尺寸或其他边界。
没有Range的能力通常无法准确描述实际能力边界。
例如:
一个抓取能力可能是:
object_type = cup
weight_max = 2kg
distance_max = 10cm
size_max = 15cm
因此:
Range={r1,r2,…,rn}Range = \{r_1,r_2,…,r_n\}
Range可以包含:
- 对象类型范围;
- 数值范围;
- 空间范围;
- 时间范围;
- 状态范围;
- 数量范围;
- 尺寸范围。
例如:
抓取能力
对象:杯子
重量:0~2kg
距离:0~10cm
尺寸:0~15cm
这意味着系统不能简单地判断:
“我有抓取能力。”
而应该进一步判断:
“我有针对这个对象、在这个条件和范围内的抓取能力。”
159.9 Range匹配
Capability Range需要与Goal要求进行匹配。
例如Goal要求:
抓取一个重量为1kg的杯子
系统首先读取:
Goal
object_type = cup
weight = 1kg
然后读取Capability:
Capability
type = grasp
object_type = cup
weight_max = 2kg
进行匹配:
ObjectTypegoal=ObjectTypecapabilityObjectType_{goal}=ObjectType_{capability}
以及:
Weightgoal≤WeightmaxWeight_{goal}\leq Weight_{max}
如果两个条件均成立:
Range Match = true
否则:
Range Match = false
因此能力匹配可以表示为:
Goal Requirement → Capability Type → Condition Check → Range Check → Capability State → Capability Available
159.10 Verification
Verification(能力验证)是对Capability是否真实存在、是否能够实际运行以及运行结果是否符合预期进行确认的过程。
这是能力工程中非常重要的部分。
系统不能因为数据库中存在:
grasp
就直接认为个体具有抓取能力。
必须通过实际运行进行验证。
因此:
Capability≠VerifiedCapabilityCapability \neq VerifiedCapability
只有经过验证之后,能力才可以获得更高的可信状态。
能力验证过程可以表示为:
Capability → Condition → Execute Method → Behavior → Result → Compare → Verification
例如:
声明:
具有抓取能力
↓
建立测试条件
↓
执行抓取方法
↓
产生实际行为
↓
获得结果
↓
结果比较
↓
Verification
如果结果满足要求:
Verification = passed
如果结果不满足要求:
Verification = failed
159.11 Verification不是简单的Boolean
工程系统中,Verification不应该只有:
true
或者:
false
更合理的结构应该保存验证历史。
例如:
array(
'status' => 'passed',
'time' => '2026-09-08 10:00:00',
'method' => 'grasp_method_01',
'result' => 'object_held'
)
这样系统不仅知道:
能力已经验证
还知道:
什么时候验证
使用什么方法验证
获得什么结果
验证历史可以继续进入Experience:
Capability Verification
↓
Result
↓
Experience
↓
Capability Update
因此,Capability具有一定的学习和更新能力,但这里的“学习”仍然是基于实际结果、离散记录和规则更新,而不是依赖任何生成式模型。
159.12 Capability类
根据前面的理论,可以建立PHP Capability类。
<?php
class Capability
{
protected $type;
protected $conditions;
protected $state;
protected $range;
protected $verification;
protected $history;
public function __construct($type)
{
$this->type = $type;
$this->conditions = array();
$this->state = 'unknown';
$this->range = array();
$this->verification = 'unverified';
$this->history = array();
}
public function getType()
{
return $this->type;
}
public function addCondition($condition)
{
$this->conditions[] = $condition;
}
public function setState($state)
{
$this->state = $state;
}
public function getState()
{
return $this->state;
}
public function setRange($range)
{
$this->range = $range;
}
public function getRange()
{
return $this->range;
}
public function verify($result)
{
$this->verification = $result;
$this->history[] = array(
'verification' => $result,
'time' => date('Y-m-d H:i:s')
);
if ($result == 'passed') {
$this->state = 'verified';
} else {
$this->state = 'failed';
}
}
public function getVerification()
{
return $this->verification;
}
public function getHistory()
{
return $this->history;
}
}
该类将五个核心结构直接映射到对象:
Capability
├── Type
├── Conditions
├── State
├── Range
└── Verification
同时保留:
History
用于保存能力验证变化。
159.13 Capability条件检查
Capability不能只保存Condition,还需要执行条件检查。
例如:
public function checkConditions($context)
{
foreach ($this->conditions as $condition) {
if (!isset($context[$condition->getType()])) {
return false;
}
if ($context[$condition->getType()] != $condition->getValue()) {
return false;
}
}
return true;
}
系统可以提供当前运行上下文:
$context = array(
'object_visible' => true,
'hand_available' => true
);
然后:
if ($capability->checkConditions($context)) {
$capability->setState('available');
}
这形成了明确的离散计算过程:
Context → Condition → Compare → Boolean Result → Capability State
159.14 Capability范围检查
范围检查也应该进入独立的方法。
例如:
public function checkRange($object)
{
if (!isset($object['weight'])) {
return false;
}
if (isset($this->range['weight_max'])) {
if ($object['weight'] > $this->range['weight_max']) {
return false;
}
}
return true;
}
于是完整判断过程变成:
Capability Type Match
↓
Condition Check
↓
Range Check
↓
State Check
↓
Verification Check
↓
Capability Available
这比单纯保存一个:
can = true
更加符合认知工程要求。
159.15 Capability Manager
当系统拥有多个Capability时,需要建立CapabilityManager统一管理能力对象。
class CapabilityManager
{
protected $capabilities;
public function __construct()
{
$this->capabilities = array();
}
public function addCapability($capability)
{
$this->capabilities[] = $capability;
}
public function findByType($type)
{
foreach ($this->capabilities as $capability) {
if ($capability->getType() == $type) {
return $capability;
}
}
return null;
}
}
例如:
CapabilityManager
├── grasp
├── move
├── identify
├── compare
└── calculate
Goal产生之后,可以通过Manager查询所需能力:
Goal
↓
Required Capability Type
↓
CapabilityManager
↓
Capability
↓
Condition
↓
Range
↓
State
↓
Verification
159.16 Capability与Goal的关系
Goal描述目标。
Capability描述完成目标所需要的能力。
例如:
Goal:
把杯子移动到桌面
系统可以分析目标需要:
Capability:
grasp
move
release
因此:
Goal→RequiredCapabilityGoal \rightarrow RequiredCapability
再进一步:
RequiredCapability→AvailableCapabilityRequiredCapability \rightarrow AvailableCapability
如果:
Required Capability = grasp
Available Capability = grasp
且:
Condition = true
Range = matched
State = available
Verification = passed
则:
Capability Match = true
否则不能直接执行。
159.17 Capability与Method的关系
Capability不是Method。
Method(方法)描述“采用什么方式完成”。
Capability描述“是否具备完成该任务的能力”。
例如:
Capability:
grasp
可以对应多个Method:
Method A → two_finger_grasp
Method B → palm_grasp
Method C → side_grasp
因此:
Capability→MethodCapability \rightarrow Method
可以形成:
Capability
↓
Available Methods
↓
Method Selection
↓
Behavior
能力决定可行空间,方法决定具体执行方式。
159.18 Capability与Behavior的关系
Behavior(行为)是能力经过条件判断和方法选择后实际发生的执行过程。
因此:
Capability ≠ Behavior
完整关系为:
Capability → Method → Behavior
例如:
具有抓取能力
↓
选择抓取方法
↓
执行抓取行为
↓
产生结果
如果行为失败,并不一定说明Capability永久不存在。
可能原因包括:
Condition失败
Range超限
Method选择错误
Object State变化
Environment变化
因此验证结果必须回到Capability结构中进行分析。
159.19 Capability动态更新
能力是动态结构。
能力状态可以随着验证结果发生变化:
Unknown
↓
Verified
↓
Available
↓
Limited
↓
Failed
↓
Re-verified
↓
Available
例如某个能力原本:
grasp = verified
后来对象重量超过能力范围:
weight > weight_max
此时不能简单地删除Capability。
应该更新为:
grasp = limited
当范围重新满足条件后:
grasp = available
因此:
CapabilityStatet+1=f(CapabilityStatet,Condition,Range,Verification)CapabilityState_{t+1} = f(CapabilityState_t, Condition, Range, Verification)
能力状态是一个随运行过程不断变化的离散状态。
159.20 Capability Verification闭环
能力验证最终应该形成闭环:
Capability → Condition → Range → Method → Behavior → Result → Verification → Capability State
例如:
Capability
grasp
↓
Condition
object_visible = true
↓
Range
weight <= 2kg
↓
Method
grasp_method_01
↓
Behavior
执行抓取
↓
Result
object_held
↓
Verification
passed
↓
Capability State
verified
如果结果失败:
Result
object_dropped
↓
Verification
failed
↓
Capability State
failed
↓
Experience
记录失败原因
↓
Capability Update
由此,能力不再是静态配置,而成为一个能够参与实际认知运行的对象。
159.21 Capability在个体认知架构中的位置
Capability位于认知结构和执行结构之间。
完整结构可以表示为:
Individual
↓
Knowledge
↓
Need
↓
Goal
↓
Capability
↓
Condition
↓
Range
↓
Method
↓
Behavior
↓
Result
↓
Verification
↓
Experience
↓
Capability Update
Capability因此成为:
“目标要求”与“实际执行能力”之间的匹配层。
它回答的不是:
“系统知道什么?”
而是:
“系统能够做什么?”
进一步回答:
“在什么条件下能够做?”
“能够处理什么范围?”
“当前是否能够做?”
“以前是否验证成功?”
159.22 工程数据库映射
Capability可以映射到MySQL数据库。
例如建立:
CREATE TABLE capabilities (
id INT NOT NULL AUTO_INCREMENT,
capability_type VARCHAR(100) NOT NULL,
capability_state VARCHAR(50) NOT NULL,
verification_state VARCHAR(50) NOT NULL,
range_data TEXT,
created_at DATETIME,
updated_at DATETIME,
PRIMARY KEY (id)
);
条件可以独立保存:
CREATE TABLE capability_conditions (
id INT NOT NULL AUTO_INCREMENT,
capability_id INT NOT NULL,
condition_type VARCHAR(100) NOT NULL,
operator VARCHAR(20) NOT NULL,
condition_value VARCHAR(255),
PRIMARY KEY (id)
);
验证记录可以保存:
CREATE TABLE capability_verifications (
id INT NOT NULL AUTO_INCREMENT,
capability_id INT NOT NULL,
verification_state VARCHAR(50) NOT NULL,
method_type VARCHAR(100),
result_value TEXT,
created_at DATETIME,
PRIMARY KEY (id)
);
于是数据库结构对应:
capabilities
↓
capability_conditions
↓
capability_verifications
PHP对象则对应:
Capability
CapabilityCondition
CapabilityVerification
CapabilityManager
这样实现理论对象到工程对象的一一映射。
159.23 Capability的核心判定模型
综合本章内容,可以建立Capability核心判定公式:
A=T∧C∧R∧S∧VA = T \land C \land R \land S \land V
其中:
- AA:Capability Available,能力可用;
- TT:Type Match,能力类型匹配;
- CC:Condition满足;
- RR:Range满足;
- SS:Capability State允许执行;
- VV:Verification通过。
只有当这些条件同时满足时:
A=trueA=true
系统才允许进入Method选择和Behavior执行阶段。
因此:
Capability Available = Type Match ∧ Condition ∧ Range ∧ State ∧ Verification
这是一种明确的离散规则判断,而不是概率生成式判断。
159.24 Capability运行模型
最终形成完整的能力运行链:
Goal → Required Capability → Capability Type → Condition → Range → State → Verification → Method → Behavior → Result
执行结果再反馈:
Result → Verification → Capability State → Experience → Capability Update
因此形成:
Goal → Capability → Execution → Result → Verification → Capability
这是个体能力从“认知对象”进入“实际运行对象”的重要闭环。
159.25 本章总结
Capability类建立了个体“能够做什么”的工程表达。
本章定义了五个核心结构:
Capability
├── Condition
├── State
├── Range
└── Verification
其中:
Condition决定能力成立需要什么前提。
State表示能力当前是否可用、受限或失败。
Range定义能力能够处理的范围和边界。
Verification通过实际执行结果确认能力是否真实有效。
因此,Capability不再是一个简单的Boolean值,而是一个具有类型、条件、状态、范围、验证和历史的动态认知工程对象。
其完整关系可以总结为:
Goal → Capability → Condition → Range → State → Verification → Method → Behavior → Result → Verification → Capability Update
由此,个体认知系统开始从“知道对象”进一步进入“具备能力并能够验证能力”的工程阶段。
Capability是连接:
Knowledge → Goal → Capability → Method → Behavior
的重要中间层,也是后续 Method类、Behavior类、Action类、Execution类建立的直接基础。