外观
03. 行为、颗粒度与执行结构
本章回答什么
当角色产生“我想读书”这个意图后,系统怎样把它变成一个真正发生、可能并行、也可能失败的行为?
答案不是“选一个行为树”。《模拟人生 4》把不同问题交给不同结构:
| 问题 | 主要结构 |
|---|---|
| 现在想做什么? | Utility / 效用选择 |
| 这个候选是否允许? | Tests、Buffs、Situation Rules |
| 玩家、自主和反应谁先? | 有优先级的 Interaction Queue |
| 与正在做的事兼容吗? | 可组合 Constraints |
| 怎样到达所需位置、姿态与手持状态? | Transition Graph 搜索 |
| 行为内部怎样推进和退出? | 多状态 Interaction / HFSM 与子行为 |
| 场所中的人分别扮演什么角色? | Situation、Job、Role State |
| 场外居民怎样发生人生变化? | 低 LOD Story Progression |
把这些结构都叫“行为树”,会失去真正重要的责任边界。
一、行为内容从哪里来:物体提供,中央系统选择
GDC 讲义对基础架构的表述很简洁:S01
text
世界由 GameObjects 构成
→ GameObjects 提供 Interactions
→ Sims 运行 Interactions
→ Interaction 是行为的基本单位1
2
3
4
2
3
4
Sim 自己也是 GameObject,因此另一个人同样可以提供“打招呼、聊天、拥抱、争吵”等交互。
“Smart Object”不等于物体自己思考
常见说法是“AI 在物体里”。原版首席 AI 程序员对此做了更精确的澄清:物体携带供 AI 使用的数据,真正的选择算法仍由中央自主系统运行。S03
因此可以同时保留两句话:
- 内容是物体中心的:新增一个物体,就能连同它的交互、条件、收益和约束一起加入世界;
- 决策是角色中心的:角色结合自己的需要、Traits、Buffs 和语境,对这些交互统一比较。
这个结构很适合可扩展房间:以后加入微波炉、花盆或锁箱,不必重写 Agent 的总行为树,只需让新物体声明自己提供什么机会。
二、四种行为颗粒度
《模拟人生 4》公开架构最清楚地覆盖中间两层与身体转场;为了单房间 Agent,需要再补最上层。
| 颗粒度 | 例子 | 时间尺度 | 谁负责 |
|---|---|---|---|
| 长期方向 / 承诺 | 完成一幅画;弄清箱子里是什么 | 小时到多日 | 慢速目标层;原作较弱 |
| 情节意图 / 任务 | 现在继续画画;检查箱子 | 分钟到小时 | 决策轮与浅层规划 |
| Interaction | 拿画笔、打开箱盖、坐下读书 | 秒到分钟 | 效用选择、队列、Interaction 状态 |
| 身体技能 / 转场 | 转身、走近、伸手、抓住、放下 | 帧到秒 | 路径、约束、手与物理执行器 |
颗粒度必须上下对齐
如果性格只说“热爱知识”,但世界只有“使用物体”这个粗行为,玩家看不出个性。反过来,若世界有上百个精细动作,却没有高层意图区分“为了求知”和“为了服从玩家”,记忆和情绪也无法形成连贯意义。
《模拟人生 3》开发者曾把这概括为:更细的人格需要同等细度的社交行为才能表现出来。S11 这条设计原则对单房间项目同样有效,但不要求把全部行为都做得极细。
三、一个 Interaction 必须声明什么
面向设计师,可以把每个 Interaction 当成一份行为合同:
| 字段 | 回答的问题 | “拿起杯子”示例 |
|---|---|---|
| 意图与显示名 | 玩家怎样理解它? | 拿起杯子 |
| Actor / Target | 谁对什么做? | Agent → 杯子 |
| 认识空间条件 | Agent 凭什么认为值得尝试? | 上次看见杯子可抓、手可释放 |
| 权威开始条件 | 开始前世界必须满足什么? | 目标版本未变、可预约、实际可达 |
| 自主许可 | 自主可做,还是仅玩家可下令? | 可自主 |
| 预期收益 | 为什么值得做? | 为喝水准备、满足好奇或回应请求 |
| 约束 | 身体必须到什么状态? | 靠近、面向、手可用、杯子在可达表面 |
| 资源占用 | 运行时锁住什么? | 一只手、部分注意 |
| 时长与阶段 | 行为怎样推进? | 接近 → 伸手 → 抓取 → 收手 |
| 控制与来源 | 谁发起、谁决定、是否同意/强制? | Agent 自选;或操作者租约 |
| 状态版本 / TTL | 这项决定何时变陈旧? | 杯子、意图和控制权版本 |
| 对象预约 | 人类和 Agent 能否同时改它? | 抓取前预约杯子与目标 Slot |
| 兼容性 | 能与什么同时运行? | 原作可组合;单房间 v0 不启用通用身体并发 |
| 可打断性 | 哪些阶段能安全停止? | 接近时可;抓取瞬间需完成或回滚 |
| 不可逆提交点 | 从哪里起不能假装没发生? | 杯子从桌面原子转移到手 |
| Physical Outcome | 世界实际改变什么? | 杯子唯一父对象变为手;手被占用 |
| Social Outcome | 权利、义务或意义是否被认可? | 若是 Gift/Loan,另行确认或保持争议 |
| 失败原因 | 为什么没完成? | 杯子被移动、够不到、手被占、目标销毁 |
| 部分进度 / 补偿 | 中断后怎样守恒而非假回滚? | 已耗资源保留;杯子保持唯一合法归属 |
| 幂等 Outcome ID | 重放会不会重复结算? | 同一完成事件只能消费一次 |
| 冷却 / 重复 | 何时不应马上再做? | 刚放下时短暂抑制无目的再拿 |
| 可见反馈 | 玩家怎样知道发生了什么? | 朝向、伸手、状态图标、失败反应 |
一个行为若没有明确结果和失败原因,就无法成为可靠记忆,也无法进入下一轮反馈。
四、Tests:先回答“能不能”,不要用低分假装不能
Tests 可以检查:
- Actor / Target 类型;
- 年龄、Traits、Skills、Buffs;
- 关系、所有权、隐私与社会规范;
- 当前地点、Situation、Role;
- 物体状态、库存、资源和时间;
- 自主还是玩家指令;
- 近期 Cooldown;
- 其他交互或目标的状态。
对《模拟人生 4》的研究可以把这些都统称 Tests;单房间 Agent 必须分三类:
1. 认识空间 Test
只读 Agent 的当前信念,决定它是否认为可尝试。视野外被移动的杯子不会被这一层静默删掉。
2. 权威硬条件
开始前由世界检查对象版本、实际可达、预约、物理和产品安全。失败只返回可感知证据;隐藏原因保持隐藏。
3. 制度与地方规范
产品明确保留给玩家的交互可以是制度硬禁令;访客不翻抽屉等地方规范则带来源、范围、例外和争议。它们可以生成询问、援引例外、协商或有意违反等社会候选。开发者说明中,一些重大人生选择永远不允许自主执行,这是产品规则,不是普遍社会规范。S03
规则性禁止应能说明来源。否则玩家只看到角色“莫名其妙不肯做”。
五、Queue:一个身体怎样服务多个意图
每个 Sim 同时持有活动交互集合与有序待执行队列。玩家指令通常是 High,自主行为是 Low,已经完成但仍为其他交互提供上下文的活动可进入 Idle。S01
Queue 解决三类冲突:
- 时间冲突:先做哪一个;
- 身体冲突:哪些活动必须结束才能开始新行为;
- 控制冲突:玩家、自主、反应和场景命令谁有权打断谁。
队列不是计划
队列只保存已经选中的待执行交互。它通常不包含:
- 为什么这几步共同服务一个长期目标;
- 未来事件会不会使计划失败;
- 某一步失败后应采用哪个替代方案;
- 被打断一天后是否还要回来继续。
所以“队列里有五个动作”不能证明角色做了五步规划。
队列需要来源
每个入队项都应保留:
- 玩家下令;
- Agent 自主选择;
- 人类提出、Agent 同意的请求;
- 紧急反应;
- 当前任务的 Continuation;
- 场景 / 日程要求。
同样的“坐下”,来源不同,后续打断和记忆意义也不同。
v0 Queue 项的生命周期
text
PROPOSED
→ PENDING
→ PREPARING
→ RUNNING
→ COMMITTED(可选的不可逆阶段)
→ SUCCEEDED / FAILED
→ CLEANING
→ CLOSED
任意安全点可进入 SUSPENDED
条件长期不成立进入 BLOCKED
目标不再值得或预算耗尽进入 ABANDONED1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
- 每个状态有最大停留时间和唯一允许转换;
Retry / Continue / Recover是这些转换,不是可递归选择自身的泛化行为;- 失败预算按
(意图目标、对象、失败原因)共享;时间窗只聚类事件,跨日和新建同义 Interaction 都不会清零; - 普通对象版本变化不解除总扰动预算;只有诊断性稳定证据证明旧前提解除,或有生命周期总上限的显式重议,才增加一次;持续移动仍算同一扰动;
- 清理拥有保留执行预算,不会被普通 Queue 项饿死;
- 全局 watchdog 发现无进展后只能走清理、Blocked、Abandoned 或 Safety,不允许无限等待。
预约与 TTL 转换固定为:
| 转换 | 对象预约 | TTL / 时限 | 下一步 |
|---|---|---|---|
| PREPARING → SUSPENDED | 释放软预约 | proposal TTL 继续计时 | 恢复时重新检查并预约 |
| RUNNING(提交前)→ SUSPENDED | 到安全点后释放 | proposal TTL 已消费;启动 60-tick resume deadline | 重验或 CLEANING |
| COMMITTED | 不允许普通暂停 | 受最坏不可中断时限约束 | 完成有效提交后立刻可抢占 |
| 任意 → BLOCKED | 清理后不持身体/对象资源 | 独立 120-tick Blocked deadline | 新证据重验或 ABANDONED |
| 任意 → ABANDONED | 必须经 CLEANING 释放全部资源 | 不可恢复 | CLOSED |
| proposal TTL / resume deadline 到期 | 不静默续期 | 立即失效 | CLEANING → CLOSED |
Safety 可以授予一次明确的恢复重验,不等于暂停所有时钟。这样 Agent 的 PickUp 被操作者抢占时,杯子预约会在合同时间内释放,操作者不会被旧动作永久阻塞。
六、Constraints:用同一套规则限制并生成行为
GDC 演讲把 Constraint 定义为 Interaction 的前置身体条件,用来回答:S01
- 我能不能运行它?
- 我应该在哪里、以什么姿态运行它?
公开讲义列出的主要约束包括:
- Position;
- Orientation;
- Animation Slot;
- Posture;
- Carry;
- Surface;
- Line of Sight;
- Scoring Function。
同一规则既当门,也当目标
“读书需要坐着或站着、双手可用、不能面对电视”既可以检查当前状态是否满足,也可以成为转场系统要达到的目标状态。
这比写两套逻辑更稳:
text
限制:双手不空时不能读大书
生成:为了读大书,先寻找放下手中物体的转场1
2
2
GDC 的核心 takeaway 正是:最好的规则既能限制行为,也能驱动行为生成;为支持多任务,规则必须可组合。S01
七、多任务:不是任意并行,而是约束仍有交集
两个 Interactions 能否同时活动,取决于它们的约束交集是否非空。S01
例如:
text
喝饮料:需要一只手,可坐或站
看电视:需要电视在视线内,可坐或站
聊天:需要社交视线与群组位置,嘴和注意可用1
2
3
2
3
三者可能有共同解:坐在面向电视、也能看见谈话对象的位置,一手持杯。
但若再加入:
text
读大书:需要双手,坐或站,不能持续面向电视1
交集可能消失。系统需要放下饮料、结束电视,或者不开始读书。
单房间 v0 先不复刻通用多任务
第一版只保留:
| 资源 | v0 状态 |
|---|---|
| 移动 / 姿态 | 行走、站、坐、躺;任一时刻一个 |
| 抽象手 | 空、持一个对象、处于原子交接 |
| 视线 / 注意 | 被动事件流 + 一个主动焦点;不作为第二身体 Interaction |
| 说话 | 短反应可以排队或在显式安全点插入 |
任一时刻只有一个活动身体 Interaction。这样先消除“左手等右手、右手等左手”、优先级反转和清理资源不足等死锁面。
原作的约束交集仍是未来扩展的重要参考。只有某个已定义的玩家体验测试无法由单活动模型通过,才允许白名单加入一个具体并发组合,并为它补资源原子预留、统一获取顺序、最大等待和清理测试;不先造通用并发框架。
八、Transition Graph:为已选行为生成“怎样做到”
约束说明目标身体状态,Transition Graph 保存可能状态以及改变状态的边。系统搜索一条成本较低的路径,把当前状态变成目标状态。S01
例如目标是“坐在桌边,杯子放在桌面”:
text
当前:站立、手持杯子、离桌较远
→ 走到桌边
→ 把杯子放入桌面 Slot
→ 进入椅子位置
→ 从站立转为坐姿
→ 达成目标约束1
2
3
4
5
6
2
3
4
5
6
边可以带成本,路线成本可用近似距离参与搜索。多个状态都满足目标时,选择成本更低的一条。S01
这是身体规划,不是人生规划
Transition Graph 很像规划器,但它解决的是:
“为了执行已经选好的 Interaction,我怎样让身体和对象进入合法状态?”
它不解决:
“我今晚为什么要读书?读完以后是否应该申请大学?”
把两者分开,能让高层意图自由变化,同时保持身体行为稳定可靠。
九、Interaction / HFSM:行为内部怎样运行
开发者说明把《模拟人生 4》的 Interaction 描述为真正的多状态 HFSM,并允许同一角色同时处于多个 Interaction 中。S03
面向设计师,不必关心具体状态类,只需保证每个交互有明确生命周期:
text
等待条件
→ 准备 / 转场
→ 开始
→ 持续内容
→ 可插入子行为
→ 正常结束 / 失败 / 被取消
→ 结算与清理1
2
3
4
5
6
7
2
3
4
5
6
7
对单房间 v0,这个生命周期还必须具有事务语义:
- 准备区:尚未改变不可恢复资源,可在安全点取消;
- 提交点:对象归属或资源消耗发生一次原子变化;
- 部分 Outcome:倒了一半的水、打开了一半的盖等已经发生的效果不会被假装回滚;
- 补偿:取消后把身体和对象带到合法状态,不凭空恢复已耗资源;
- 幂等结算:同一 Outcome ID 重放不会重复加 Need、关系或技能;
- 系统编辑屏障:传送/重置前先到静止点,或原子失效全部动作并统一恢复。
人类拖动物体、Agent 抓取和系统脚本都进入同一个世界命令序列。对象保存唯一父级、预约者和版本号;交接只有在一个原子点从 A 转到 B,不存在“既在手里又在桌上”。
Subaction / Mixer
活动 Interaction 内可运行兼容的子行为。GDC 讲义说明 Subactions:
- 必须与全部活动 Interactions 兼容;
- 可以从候选中做 weighted random;
- 可以增加额外 Tests。S01
聊天中的笑、回应、短句,喝饮料中的小口啜饮,看电视时的换台或打哈欠,都可以成为不必重新选择整个人生方向的局部变化。
这能避免一个常见错误:为了表现每个细小动作,都重新调用全局决策器。
十、Situation:场景规则怎样塑造单体行为
Situation 不直接替每个角色编一棵完整行为树,而是:
对单房间项目,Situation 可以被简化为“当前情节模式”:
- 平常独处;
- 人类来访;
- 紧急危险;
- 实验任务;
- 夜间休息;
- 人类与 Agent 协作完成某事。
模式只临时改变候选、规则和优先级,不应永久改写人格。
十一、情境脚本与社会行为也需要生命周期
多脚本匹配与冲突
系统不神秘地“选一个当前文化脚本”。一次情境匹配输出有序证据集合:所有适用 script_ids、各自规范主张、来源类型、范围、适用性、例外、参与者立场和置信度。
例如 Agent 同时是客人和照护者:
text
GuestPrivacy:私人抽屉 forbidden
CareDuty:取得救命物 required
OwnerRevocation:主人曾撤销许可1
2
3
2
3
不可直接比较时生成显式 NormConflict。候选可以是询问、协商、援引例外、遵守、寻求其他方法,或说明理由后承担违规后果;不能用隐藏总分抹掉冲突证据。
SocialActFrame 状态机
text
PROPOSED
→ ACKNOWLEDGED
→ ACCEPTED / REJECTED / COUNTERFRAMED / CONTESTED
→ SETTLED / REVOKED1
2
3
4
2
3
4
- “拿着”只提出一个含糊框架,不会自动完成 Gift;
- physical handoff 与 social settlement 都满足时,相关权利才结算;
- 澄清前权利保持 pending,对方可以提出 Loan 或 Custody 反框架;
- 已结算框架也可因有依据的撤销进入 REVOKED,并产生新的争议/义务,而不是改写过去;
- 物理拖拽物体默认不等于对某个社会框架的 uptake。
ObjectSocialState 分三层:系统实际执行的 access rules、每位参与者的 rights_claims[]、Agent 自己的当前信念。争议不会提前改写唯一 owner。
Authority、Consent 与 Boundary
Authority Claim 保存:主张者、依据/来源、谁承认、适用领域、期限/撤销与争议。命令域内合法,不代表可以越域要求毁掉私人纪念物。
Consent 不用布尔值:
endorsed:自我认可;assented:同意但未形成强认同;compliance_under_pressure:依赖或有证据威胁下顺从;refused;unknown。
v0 的 BoundaryState 实现 material 与 informational 两类:谁能接触/使用对象,谁能向哪类受众披露某条信息。空间与身体边界明确推迟,不宣称已覆盖。Lab 审计视图能看见全部证据,不等于房间内人类有权询问或获得它。
未决权利、义务、NormConflict 和 SocialActFrame 保存有上限、有 TTL 的 dispute_receipt;经过近期账本淘汰与压缩时仍保留双方主张和最小证据凭证,直到结算、取消或明确过期。
十二、行为树、状态机、GOAP 到底放在哪里
Utility AI
适合从大量异质行为中选择“下一件”。它擅长连续权衡和内容扩展,不擅长自动保证多步未来目标。
HFSM / 状态机
适合执行已经选定的交互:准备、运行、循环、成功、失败、清理。它不应承担全世界所有候选的比较。
Behavior Tree
适合表达局部技能或结构化任务,例如“尝试抓取:若看不见则寻找,若够不到则接近,若手被占则放下”。公开资料不足以把它称为《模拟人生 4》的全局决策核心。
GOAP / 目标规划
适合少量有依赖的任务:想喝水,需要先有杯子、接水、再喝。它不适合每 Tick 对所有生活行为做长远搜索。
Constraint / Transition Search
适合把已选交互转成合法身体状态。它与 GOAP 都会搜索,但搜索空间和设计含义不同。
推荐组合
text
分层仲裁 / Utility:选当前意图
→ v0 显式任务图:只为五个垂直切片列出 2—5 步
→ 短 Queue:仲裁顺序、版本与来源
→ 有限状态 Interaction:执行、提交、失败、清理
→ 离散约束 / 转场:位置、姿态、一只手与对象
→ 世界 Outcome + 唯一 Reducer:确认并归因1
2
3
4
5
6
2
3
4
5
6
没有必要选出一个“唯一正确”的 AI 架构,也没有理由在 v0 同时实现通用 GOAP、左右手并发和通用 Behavior Tree。每个新增结构必须对应一个简化模型确实无法通过的当前验收场景。
十三、单房间行为族
第一版用七个行为族即可覆盖大部分循环:
| 行为族 | 情节意图 | Interactions | 主要反馈 |
|---|---|---|---|
| 身体调节 | 恢复精力、进食、降低不适 | 睡、吃、喝、调整环境 | Needs、身体状态 |
| 观察探索 | 弄清变化、寻找物体、确认风险 | 看、听、检查、搜索 | 认识与不确定度 |
| 物体操作 | 获取、移动、组合或使用物体 | 拿、放、开、关、按、倒 | 世界与手部状态 |
| 房间维护 | 清理、修复、整理、预防危险 | 擦、收纳、修理、关火 | 安全、整洁、能力 |
| 人类互动 | 回应、询问、协商、拒绝、求助 | 说、听、指、递、共同操作 | 关系、承诺、信息 |
| 工作 / 创作 / 玩 | 推进自选方向和技能 | 读、写、画、实验、游戏 | 进度、技能、情绪 |
| 恢复与 Idle | 等待、冷静、发呆、睡眠 | 坐、呼吸、休息、观察 | 降低负荷、给事件留空间 |
“等待”“继续当前行为”“重新观察”“放弃”必须是合法行为。否则 Agent 会被迫用不相关动作填满每一秒。
十四、完整例子:从“想拿杯子”到真实结果
1. 选择层
- 当前意图需要杯子;
- 可见杯子提供
PickUpAffordance; - 认识空间 Test 判断 Agent 相信杯子可抓,且可释放抽象手;
- 与其他候选比较后,
PickUp被选中并入队。
2. 约束与转场层
- 目标约束:在杯子可达范围、朝向杯子、一只手可用;
- 当前抽象手拿书;
- 转场生成:先把书放到桌面,再走近杯子并面向它。
3. 执行层
text
Approach
→ Orient
→ Reach
→ Close hand / attach cup
→ Retract
→ Verify carry state1
2
3
4
5
6
2
3
4
5
6
4. 世界在中途改变
人类在 Agent 转身放书时,通过同一个世界命令序列把杯子拿走;杯子版本随之改变。
正确结果不是“高层已经决定,所以自动成功”,而是:
- 目标位置无杯子;
- Reach 前权威 Test 发现版本变化,预约失败;
- Interaction 返回
target_missing; - 手仍为空;
- 只记录可感知的“预期位置与触觉/视觉反馈不一致”,隐藏操作者不自动暴露;
- 下一轮可选择搜索、询问人类、换杯子或放弃。
这一个例子已经把感知、意图、队列、手、失败、记忆与人类干预闭合起来。
同一个递杯动作怎样产生不同社会结果
text
Physical Interaction:Agent 把杯子原子交接给人类
SocialActFrame A:归还借物
SocialActFrame B:主动赠与
SocialActFrame C:回应照护义务
SocialActFrame D:操作者强制递交1
2
3
4
5
2
3
4
5
四种情况下物理 Outcome 都可能是“人类持杯”,但:
- A 清除返还义务,不转移原始所有权;
- B 只有对方接受赠与框架后才转移相应权利;
- C 可满足角色义务并产生互惠/关系后效;
- D 的
decision_owner是操作者,不能记为 Agent 同意、礼物或人格表现。
若双方对“赠与还是借用”理解不一致,社会 Outcome 是 contested,记忆保留双方主张与证据,不由 LLM 选一个好听版本当真相。
十五、行为系统最容易出现的设计错误
1. 只记录成功,不记录失败原因
Agent 会无意义重复同一动作,语言层还可能捏造解释。
2. 把所有并行组合写成成对特例
行为数增长后,兼容表呈平方爆炸。应优先声明共享资源与目标约束。
3. 高层计划直接控制手
一旦世界变化,高层状态和身体真值会分叉。高层只能请求 Interaction。
4. 每个小动作都重新做全局选择
角色会在伸手前改主意、拿到一半又想休息。小动作应由当前 Interaction 的执行器负责。
5. 只用评分,不用硬测试
极端 Need 或随机数会让不可能行为当选。
6. 只用硬规则,不留柔性评分
所有角色在相同状态下都一样,性格与情境无法表现。
7. 不保留当前意图和切换成本
新刺激每次都赢,Agent 永远完成不了稍长的事情。
8. 行为没有玩家可见的理由
即使系统内部合理,玩家也会把提前结束、绕路或拒绝理解成 Bug。复杂意图必须通过视线、动作、简短语言、图标或状态变化被传达。S02
9. 把地方规范当成物理墙
系统会失去许可、例外、抗议、违规、补偿与文化差异。规范必须有来源和社会后果;只有物理不可能、产品安全与明确不可授权制度规则才硬阻止。
10. 外部强制沿用 Agent 的署名
物理动作也许成功,但责任、同意和记忆被伪造。所有 Queue 与 Outcome 都必须保留发起者、决策所有者、同意/强制和合法权威范围。
本章设计检查
- 新物体能否通过声明 Affordances 加入,而不重写总决策树?
- 每个 Interaction 是否有资格条件、预期收益、真实结果和失败原因?
- 候选选择与身体执行是否严格分开?
- Queue 是否保存优先级、顺序与来源?
- 玩家命令是否仍需通过约束与执行确认?
- 多任务是否由资源 / 约束交集决定,而不是任意并行?
- 转场搜索是否只解决“怎样做到”,不越权决定“为何要做”?
- 小动作是否留在 Interaction 内,而不是反复触发全局思考?
- 失败后是否会清理到一个合法身体状态?
- 每个高层意图是否最终能落到至少一个可成功、可失败的 Interaction 链?
- 决策是否只读 Agent 的认识,而权威世界 Test 只返回合法失败证据?
- 物体是否始终只有一个父级/占有状态,物理转移与权利转移是否分开?
- 每个状态是否有最大停留时间、清理出口和幂等 Outcome?
- 失败预算是否跨同义动作与新意图保持,而不会被重新规划清零?
- 同一社会动作的提议意义、对方认可和争议是否被保存?