第180章 FeedbackService
在 ICAI(Individual Cognitive AI,个体认知人工智能)工程体系中,行为执行并不是认知过程的终点。一个行为经过 Action、Execution 后产生 Result,但系统只有在接收并处理 Result、State Change、Environment Change 等信息之后,才能知道刚才发生了什么、当前状态是否发生变化、目标是否仍然成立,以及下一步是否需要继续执行、重新决策、诊断或修复。
因此,在 BehaviorService 之后,需要建立独立的 FeedbackService。
FeedbackService 的职责不是重新执行行为,也不是直接替代 ResultService 或 StateService,而是负责把执行产生的结果和状态变化转换为可供认知系统继续使用的结构化反馈信息。
其基本过程为:
Execution → Result → Feedback → Feedback Processing → State Update → Result Saving → Memory / Experience / Decision
FeedbackService 的核心任务可以概括为:
FeedbackService = Feedback Receive + Feedback Process + State Update + Result Save
即:
反馈接收 → 反馈处理 → 状态更新 → 结果保存
一、FeedbackService定义
FeedbackService,即反馈服务,是 ICAI Service 层中负责接收执行反馈、分析反馈类型、比较预期与实际结果、协调状态变化以及保存反馈与结果信息的应用服务。
FeedbackService 本身不是 Feedback 对象。
Feedback 是认知对象,描述某次执行之后获得的信息。
FeedbackService 是应用服务,负责组织这些信息进入系统。
因此:
Feedback = 反馈对象
FeedbackService = 反馈处理服务
二者不能混为一谈。
FeedbackService 的基本模型可以定义为:
FS = (R,P,S,V)
其中:
- R(Receive):反馈接收
- P(Process):反馈处理
- S(State Update):状态更新
- V(Save):结果保存
因此:
FeedbackService = 接收 + 处理 + 状态更新 + 保存
它位于执行系统和认知系统之间。
其基本结构为:
ExecutionService → Execution → Result → FeedbackService → Feedback → StateService / MemoryService / ExperienceService
这里必须特别注意:
FeedbackService 不负责产生原始执行结果。
原始 Result 应当由实际 Execution 产生。
FeedbackService 负责读取、组织、比较和处理这个 Result。
因此:
Execution 产生事实 → FeedbackService 处理事实
而不是:
FeedbackService 假定事实 → 生成结果
二、反馈接收
2.1 反馈接收的定义
反馈接收是 FeedbackService 从实际执行过程获得反馈信息,并将其转换为标准 Feedback 对象的过程。
反馈可能来自多个来源:
- Execution
- Result
- State Change
- Environment Change
- Verification
- Action
- Behavior
- External Object
- System Event
因此反馈并不只有一种形式。
第163章已经定义:
F = (R,S,E,C,T)
其中:
- R:Result Feedback,结果反馈
- S:State Feedback,状态反馈
- E:Environment Feedback,环境反馈
- C:Comparison,比较结果
- T:Time,反馈时间
FeedbackService 接收到反馈之后,首先需要确定反馈来源和反馈类型。
例如一次机器人执行“抓取杯子”的行为:
Behavior → Action → Execution → Result
Execution 返回:
Action = GraspCup
Result = Success
Object = Cup
State = Held
FeedbackService 接收到的信息不是简单的:
true
而应该形成结构化反馈:
Behavior:FetchCup
Action:GraspCup
Expected:CupHeld
Actual:CupHeld
Result:Success
StateBefore:Ready
StateAfter:Holding
Time:T1
这样反馈才具有后续认知处理价值。
2.2 反馈接收必须基于实际事实
FeedbackService 不应该根据预期结果直接生成反馈。
例如:
Expected = CupHeld
不能直接推出:
Actual = CupHeld
只有 Execution 实际完成并产生结果之后,才能形成:
Actual = CupHeld
因此:
Expected ≠ Actual
而:
Actual = Execution产生的实际事实
FeedbackService 的职责是读取这个实际事实,并进行比较。
完整过程为:
Goal → Method → Behavior → Action → Execution → Actual Result → FeedbackService
而不是:
Goal → Expected Result → Feedback
这种区别是 ICAI 系统避免虚假成功状态的重要基础。
三、反馈处理
3.1 反馈处理的定义
反馈处理是对接收到的 Feedback 进行分类、比较、判断、关联和转换的过程。
FeedbackService 接收到反馈之后,并不能直接将其作为新的状态保存。
首先必须进行反馈处理。
其基本流程为:
Receive → Validate → Classify → Compare → Evaluate → Generate Update Information
即:
接收 → 验证 → 分类 → 比较 → 判断 → 形成更新信息
3.2 反馈验证
反馈进入系统之后,首先需要验证基本结构。
例如:
Feedback ID
Source
Object
Result
State
Time
如果 Feedback 没有来源,或者没有对应的 Execution、Result 或 State 信息,则不能直接作为有效反馈进入认知链。
可以定义:
ValidFeedback = Source ∧ Structure ∧ Time ∧ Evidence
其中:
- Source:反馈来源存在
- Structure:反馈结构完整
- Time:反馈时间有效
- Evidence:存在对应事实依据
这一步并不是判断行为是否成功,而是判断反馈本身是否具有可处理性。
3.3 反馈分类
FeedbackService 可以根据反馈来源和内容,将反馈划分为:
结果反馈
用于回答:
“执行结果是否达到预期?”
例如:
Expected = Position A
Actual = Position A
Comparison = Equal
Status = Success
状态反馈
用于回答:
“对象状态发生了什么变化?”
例如:
Before = Ready
After = Running
或者:
Before = Empty
After = Holding
环境反馈
用于回答:
“外部环境发生了什么变化?”
例如:
Door = Closed
→
Door = Open
异常反馈
用于描述执行过程中出现的异常。
例如:
Execution = Failed
Reason = ObjectNotFound
异常反馈可以进一步进入:
Diagnosis → Repair
3.4 预期结果与实际结果比较
反馈处理中的重要工作,是比较 Expected Result 与 Actual Result。
可以定义:
C = Compare(E,A)
其中:
- E:Expected Result,预期结果
- A:Actual Result,实际结果
- C:Comparison,比较结果
比较结果可以包括:
Equal
Partial
Different
Failed
Unknown
例如:
Expected = Position B
Actual = Position B
得到:
Comparison = Equal
如果:
Expected = Position B
Actual = Position C
则:
Comparison = Different
如果:
Expected = ObjectHeld
Actual = ObjectNotHeld
则:
Comparison = Failed
FeedbackService 不应该把所有结果压缩成 Boolean。
因为:
true / false
无法表达:
- 部分完成
- 状态改变但目标未完成
- 执行成功但结果异常
- 结果未知
- 外部环境变化
- 目标条件改变
因此 Feedback 必须保留结构化信息。
四、状态更新
4.1 FeedbackService为什么需要状态更新
Feedback 本身并不一定改变状态。
但是 Feedback 所描述的事实可能导致状态变化。
例如:
Execution → Result = Success
经过 Feedback 处理后:
Behavior = Completed
或者:
Execution → Result = Failed
导致:
Behavior = Failed
因此:
Feedback → State Update
是 FeedbackService 与 StateService 之间的重要连接。
4.2 FeedbackService不直接破坏StateService边界
虽然 FeedbackService 负责协调状态更新,但它不应该绕过 StateService 直接修改对象状态。
正确结构是:
FeedbackService → StateService → StateEngine → State Change
FeedbackService 负责:
- 判断是否存在状态变化
- 确定状态更新原因
- 提交状态更新请求
StateService 负责:
- 读取当前状态
- 验证状态转换
- 执行合法状态转换
- 保存状态历史
StateEngine 负责:
- 状态转换规则
- 状态合法性判断
因此:
FeedbackService负责协调
StateService负责状态生命周期
StateEngine负责状态规则
4.3 状态更新模型
状态更新可以表示为:
Sₜ + F + C → Sₜ₊₁
其中:
- Sₜ:当前状态
- F:反馈
- C:状态转换条件
- Sₜ₊₁:新的状态
例如:
Behavior = Running
Feedback = ExecutionSuccess
Condition = AllActionsCompleted
得到:
Behavior = Completed
另一个例子:
Behavior = Running
Feedback = ExecutionFailed
Condition = FailureConfirmed
得到:
Behavior = Failed
这不是 FeedbackService 自己随意改变状态,而是根据 StateEngine 中已经定义的状态转换规则进行转换。
五、结果保存
5.1 结果保存的定义
FeedbackService 处理反馈之后,需要将处理后的反馈、比较结果以及状态变化信息保存下来。
保存的对象至少包括:
Feedback
Result
Comparison
State Change
Processing Time
Source
Reason
这样后续 MemoryService、ExperienceService、DiagnosisService 和 DecisionService 才能读取这些历史事实。
5.2 Result与Feedback分别保存
Result 与 Feedback 不能完全合并。
例如:
Result
Actual = CupHeld
描述实际执行结果。
而:
Feedback
Expected = CupHeld
Actual = CupHeld
Comparison = Equal
Status = Success
描述系统对该结果进行处理之后得到的反馈信息。
因此:
Result = 实际结果
Feedback = 对实际结果及状态变化进行结构化后的反馈
两者应该保持对象边界。
5.3 Feedback历史
Feedback 需要形成历史记录。
例如:
feedback_id
source_type
source_id
object_id
result_id
feedback_type
expected_value
actual_value
comparison
state_before
state_after
reason
created_at
这样可以形成:
Feedback History
Feedback History 不是 Memory。
它首先是事实记录。
之后 MemoryService 可以将其中具有长期认知价值的信息转换为 Memory。
进一步:
Feedback History → Memory → Experience
六、FeedbackService与Memory、Experience的关系
FeedbackService 不负责直接制造 Experience。
它首先产生结构化反馈。
之后:
Feedback → History → Memory → Experience
例如某个行为连续多次发生:
Method A
Condition X
Result Success
第一次执行产生 Feedback。
第二次执行继续产生 Feedback。
多次历史记录形成:
History
之后 MemoryService 进行存储和关联:
Memory
ExperienceService 再从多个历史事实中形成:
Experience
例如:
Condition X
+
Method A
+
Result Success
经过多次验证后,可以形成:
Experience:
在 Condition X 下,Method A具有较高成功经验。
因此 FeedbackService 是学习链条的重要前端,但不是 Experience 本身。
完整链条为:
Execution → Result → Feedback → History → Memory → Experience
七、FeedbackService与Diagnosis的关系
如果 Feedback 表明:
Expected ≠ Actual
并且结果达到失败条件,则可以进一步形成 Failure。
例如:
Expected = ObjectFound
Actual = ObjectNotFound
FeedbackService 可以产生:
Feedback = Failure
然后进入:
Failure → Diagnosis
Diagnosis 再判断:
ObjectNotFound
↓
Sensor Problem?
Object Position Changed?
Method Error?
Environment Change?
Capability Insufficient?
因此 FeedbackService 不应该直接执行诊断。
正确边界是:
FeedbackService → Failure / Abnormal Feedback → DiagnosisService
FeedbackService 提供证据。
DiagnosisService 负责原因分析。
八、FeedbackService与DecisionService的关系
反馈还可能影响下一次决策。
例如:
Method A
→ Execution
→ Failure
→ Feedback
反馈进入 Memory 与 Experience 后,未来再次遇到类似条件时:
Goal
→ Capability
→ Method A / Method B
→ Decision
DecisionService 可以读取过去经验:
Method A
Condition X
Historical Failure
于是可能选择:
Method B
因此形成:
Decision → Behavior → Execution → Result → Feedback → Memory → Experience → Decision
这构成 ICAI 的反馈决策闭环。
九、FeedbackService的PHP工程结构
在 PHP OOP 工程中,可以定义:
class FeedbackService
{
protected $feedbackRepository;
protected $resultRepository;
protected $stateService;
public function __construct(
$feedbackRepository,
$resultRepository,
$stateService
) {
$this->feedbackRepository = $feedbackRepository;
$this->resultRepository = $resultRepository;
$this->stateService = $stateService;
}
public function receive($data)
{
// 接收实际反馈
}
public function process($feedback)
{
// 验证、分类、比较、处理反馈
}
public function updateState($feedback)
{
// 根据反馈协调 StateService
}
public function saveResult($feedback, $result)
{
// 保存结果与反馈
}
}
这里的关键不是代码数量,而是职责边界。
FeedbackService 不应该出现:
$object->state = 'completed';
这种绕过 StateService 的直接状态修改。
正确方式应该是:
$this->stateService->transition(
$object,
'completed',
'feedback_confirmed'
);
具体状态是否合法,由 StateEngine 判断。
十、FeedbackService的工程调用流程
完整执行流程可以设计为:
Controller
↓
FeedbackService
↓
Receive Feedback
↓
Validate Feedback
↓
Classify Feedback
↓
Compare Expected / Actual
↓
Generate Processing Result
↓
StateService
↓
StateEngine
↓
Update State
↓
FeedbackRepository
↓
Save Feedback / Result / History
↓
MemoryService
↓
ExperienceService
↓
DecisionService
因此 FeedbackService 是连接执行层与认知层的重要 Service。
十一、数据库结构
FeedbackService 可以对应以下数据库结构。
feedbacks
id
source_type
source_id
feedback_type
object_id
result_id
expected_value
actual_value
comparison
status
reason
created_at
feedback_state_changes
id
feedback_id
object_id
state_before
state_after
reason
created_at
feedback_history
id
feedback_id
action
old_value
new_value
reason
created_at
results
Result 本身仍然应该由 Result 对象和 ResultService 管理。
FeedbackService 可以通过 result_id 建立关系,而不是把 Result 完全复制到 Feedback 中。
数据库关系可以表示为:
Execution
↓
Result
↓
Feedback
↓
State Change
↓
Feedback History
十二、FeedbackService与其他Service的边界
为了防止 Service 层职责不断膨胀,需要明确边界。
| Service | 核心职责 |
|---|---|
| BehaviorService | 建立和组织行为 |
| ActionService | 管理具体操作 |
| ExecutionService | 管理实际执行 |
| ResultService | 管理实际结果 |
| FeedbackService | 接收和处理反馈 |
| StateService | 管理状态生命周期 |
| MemoryService | 管理记忆 |
| ExperienceService | 管理经验 |
| DiagnosisService | 分析异常原因 |
| DecisionService | 进行方案选择 |
因此不能让 FeedbackService 同时承担:
行为建立
动作执行
结果产生
状态规则计算
经验生成
决策选择
否则 Service 层将重新变成一个巨大的控制类。
ICAI 的工程原则仍然是:
一个核心对象一个明确职责,一个Service协调一个明确领域流程。
十三、FeedbackService完整生命周期
FeedbackService 的生命周期可以定义为:
Receive → Validate → Classify → Compare → Process → Update → Save → Forward
即:
反馈接收 → 反馈验证 → 反馈分类 → 结果比较 → 反馈处理 → 状态更新 → 结果保存 → 向认知系统传递
如果反馈正常:
Execution
→ Result
→ Feedback
→ Compare
→ Success
→ State Update
→ Save
→ Memory
如果反馈异常:
Execution
→ Result
→ Feedback
→ Compare
→ Failure
→ State Update
→ Save
→ Diagnosis
→ Repair
如果反馈表明当前条件已经变化:
Execution
→ Result
→ Feedback
→ Environment Change
→ State Update
→ Re-evaluation
→ Decision
因此 FeedbackService 可以形成三条主要路径:
正常路径:
Result → Feedback → State Update → Save → Memory
失败路径:
Result → Feedback → Failure → Diagnosis → Repair
环境变化路径:
Result → Feedback → Environment Change → Re-evaluation → Decision
十四、FeedbackService在ICAI中的位置
经过前面的 IndividualService、ObjectService、StateService、RelationService、KnowledgeService、GoalService、CapabilityService、MethodService、DecisionService 和 BehaviorService,FeedbackService 进一步完成了执行结果向认知更新的连接。
完整服务链可以表示为:
IndividualService
↓
ObjectService
↓
StateService
↓
RelationService
↓
KnowledgeService
↓
GoalService
↓
CapabilityService
↓
MethodService
↓
DecisionService
↓
BehaviorService
↓
ActionService
↓
ExecutionService
↓
ResultService
↓
FeedbackService
↓
MemoryService
↓
ExperienceService
↓
DecisionService
这不是简单的线性程序调用,而是一个可以循环运行的认知工程结构。
其中:
GoalService决定要达到什么目标
CapabilityService判断能不能做
MethodService管理怎么做
DecisionService选择采用什么方案
BehaviorService组织当前行为
ActionService定义具体操作
ExecutionService产生实际执行
ResultService保存实际结果
FeedbackService解释执行反馈
StateService更新当前状态
MemoryService保存具有认知价值的信息
ExperienceService形成结构化经验
最终再次影响:
DecisionService
十五、FeedbackService核心模型
因此,FeedbackService 可以最终定义为:
FeedbackService = Receive + Process + State Update + Save
进一步展开为:
FS = (R,P,C,S,V,H)
其中:
- R(Receive):接收反馈
- P(Process):处理反馈
- C(Comparison):预期与实际结果比较
- S(State):协调状态更新
- V(Save):保存结果与反馈
- H(History):形成反馈历史
完整模型:
Execution → Result → Receive → Validate → Compare → Feedback Process → State Update → Save → History → Memory / Experience / Diagnosis / Decision
这使 Feedback 不再只是程序中的“返回值”,而成为 ICAI 认知循环中的正式对象。
十六、本章总结
FeedbackService 的核心不是“接收一个结果”,而是建立从实际执行到认知更新之间的结构化反馈通道。
它首先接收实际执行产生的信息,然后验证反馈来源与结构,再区分 Result Feedback、State Feedback、Environment Feedback 和异常反馈,并比较 Expected Result 与 Actual Result。
随后,FeedbackService 将反馈形成的状态变化请求交给 StateService,由 StateEngine 根据状态规则完成合法状态转换,最后保存 Result、Feedback、State Change 和 History。
因此:
Result = 实际发生了什么
Feedback = 系统从实际结果中获得并结构化了什么信息
State = 当前系统处于什么状态
Memory = 哪些历史信息值得保存和再次使用
Experience = 从历史事实中形成了什么结构化经验
Decision = 下一次应该选择什么
最终形成:
Behavior → Action → Execution → Result → Feedback → State Update → Memory → Experience → Decision
这条链路构成 ICAI 从“执行”返回“认知”的核心闭环。
FeedbackService 不是大模型接口,也不是生成式系统。
它完全可以建立在:
PHP OOP + Domain Object + Rule + State + Result + Relation + History + MySQL
之上,通过确定性的对象、规则、状态转换和历史事实完成反馈处理。
因此,FeedbackService 在 WSaiOS-ICAI 中承担的真正工程职责是:
把执行产生的事实转换成可验证、可保存、可更新、可再次参与认知计算的结构化反馈。