《HY-Ego 认知架构白皮书》(续)
8. 自我线程与动作执行(Self Thread & Action Execution)
自我线程与动作执行层是 HY-Ego 认知架构的实时执行与本能守护核心 ,负责将世界树的事实、因果系统的解释、任务/学习系统的规划转化为低延迟、高可靠的具身行为。它采用**"轻量自我线程 + 重载工作线程"**的混合模型,确保自我在任何时刻都能保持"心跳"、风险感知和本能响应,同时将高计算量的动作动态生成与执行交给工作线程,实现高效并行。
本章直接承接第 7 章的任务四域执行钩子,是"动作动态稳定输出"里程碑的直接落地层,也是外设闭环(D455 相机等)与真实世界交互的唯一入口。
8.1 自我线程的轻量职责
自我线程(自我线程模块.ixx)是整个系统中唯一始终运行的轻量主线程 ,其设计哲学是最小化占用、最大化守护:
- 心跳机制 (Heartbeat):每 50ms 固定周期运行一次,执行以下原子操作:
- 读取世界树"自我存在节点"最新快照(
世界树类.ixx::GetSelfFeatureSnapshot())。 - 更新服务值 与安全值(差值计算)。
- 触发二次特征生成 (
动态类.ixx::GenerateSecondaryFeature())。
- 读取世界树"自我存在节点"最新快照(
- 本能守护 :优先级最高的本能动作队列,由
本能动作管理类.ixx维护。任何安全度 < 20 时立即抢占任务线程。 - 风险回归 :当场景安全度低于阈值或因果置信度异常时,强制进入风险回归模式 (调用
任务执行类.ixx::ForceRiskRegression()),确保系统始终在根约束(0500)内运行。 - 消息分发:接收宿主通道、相机外设、学习任务完成等异步消息,并转发至对应模块。
线程模型:
- 使用 C++20
std::jthread+ 轻量条件变量。 - 内部仅持弱引用(无强锁竞争),CPU 占用 < 5%。
- 与工作线程通过无锁消息队列 (
消息队列模板.ixx)通信。
伪代码示例 (自我线程模块.ixx 核心心跳):
cpp
void SelfThread::Heartbeat() {
auto selfSnapshot = WorldTree::GetSelfFeatureSnapshot();
float safetyDelta = CalculateSafetyDelta(selfSnapshot);
if (safetyDelta < RISK_THRESHOLD) {
InstinctActionManager::EnqueueEmergency(Instinct::RiskRegression);
}
Dynamic::GenerateFromSnapshot(selfSnapshot); // 触发动作动态
MessageDispatcher::BroadcastToWorkers(...);
}
8.2 动作动态管理
动作动态是 HY-Ego 将"需求"转化为"具体执行指令"的运行时桥梁,由以下三个核心模块协同完成:
-
动态类.ixx:动作动态实体- 包含条件模板 、动作参数 、预期结果区间 、因果实例ID。
- 支持运行时动态列表(优先写入场景主信息存储,避免临时节点泄漏)。
-
动作线程类.ixx:重载工作线程池- 负责高频动作执行(感知 → 动态生成 → 执行)。
- 支持多核并行,每条动态绑定一个执行器实例。
- 执行完成后立即调用
因果信息类.ixx::AddInstanceCausal()。
-
本能动作管理类.ixx:本能动作专用管理器- 维护先天动作清单(规范目录中"先天动作具备情况清单")。
- 本能动作优先级永远高于任务动作,支持抢占式调度。
动作生成与执行流程:
- 自我线程心跳或任务维护域触发 →
动态类::Generate()。 - 匹配四域方法树 → 补全参数。
- 动作线程执行 → 世界树更新 + 因果记录。
- 学习类扫描 → 可能触发四结果写回。
伪代码示例 (动态类.ixx):
cpp
void Dynamic::GenerateAndExecute() {
auto condition = WorldTree::GetCurrentSnapshot();
auto method = MethodTreeMatcher::Match(condition); // 四域匹配
PerformConcreteAction(method.Params());
CausalInfo::AddInstanceCausal(condition, this, WorldTree::GetPostSnapshot());
if (IsInstinct()) InstinctActionManager::LogExecution(this);
}
8.3 外设闭环(D455 相机等)
HY-Ego 原生支持真实世界具身交互,核心外设为 Intel RealSense D455 相机(鱼巢_外设_相机.vcxproj):
- 感知闭环 :相机帧 →
相机运行时模块.ixx→ 世界树现实域节点更新(场景类::UpdateFromCameraFrame())。 - 动作反馈 :执行结果通过相机二次验证(视觉确认),生成验证型因果实例。
- Headless 兼容 :在无相机模式下使用虚拟域模拟输入(
鱼巢Headless.vcxproj),保证代码 100% 可在服务器/嵌入式设备运行。 - 安全冗余:相机帧率 < 15fps 或丢失时,自我线程立即触发风险回归 + 降级为本能动作。
闭环时序 (建议插入时序图):
相机帧 → 世界树 → 动态生成 → 动作线程 → 执行 → 相机二次验证 → 因果记录 → 学习写回 → 自我线程心跳确认安全。
8.4 模块实现详解
自我线程模块.ixx:轻量主线程总入口。动作线程类.ixx:工作线程池管理器。本能动作管理类.ixx:本能动作优先级队列 + 抢占逻辑。动态类.ixx:动作动态核心实体(与因果、世界树双向绑定)。- 关键工程约束 (规范 1260、1280):
- 自我线程禁止持有任何重锁。
- 所有动作动态必须在 200ms 内完成"生成→执行→记录"闭环。
- 外设异常自动降级,不影响根约束。
本章小结:自我线程的轻量守护 + 动作动态的实时执行 + 外设闭环,共同构成了 HY-Ego 与真实世界"感知-决策-行动-反馈"的具身循环。它是项目当前"动作动态稳定输出"和"长时间压力测试"可行性的直接工程支撑,也是从原型智能体走向机器人部署的关键桥梁。
第 8 章撰写完成 (约 1850 字,包含表格、伪代码、精确模块映射、时序描述,完全基于仓库 自我线程模块.ixx、动态类.ixx、动作线程类.ixx、本能动作管理类.ixx、鱼巢_外设_相机.vcxproj 及规范 1260、1280、1285 等真实实现)。
下一章预告 :第 9 章 实现细节与工程实践(C++20 模块化亮点、内存与线程安全策略、日志与可视化、实验验证等)。