ADR-0030 整份落地:交互原语改 host 注册开放 registry + 移除四个能力位(趁零 host,破坏性变更现在免费) #104
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
现状核实(对
origin/main@0ea65b7)poke/poke_send/reaction_receive/reaction_send整体移除capabilities.py:22-25四个全在,tools.py/runtime_loop.py仍在按它们门控ArisePorts.interaction_renderersConversationInput.interaction改开放形状conversation.py:11仍是InteractionKind = Literal["poke", "reaction"]EgressPort.poke_send/reaction_send仍在,POKE_SEND/REACTION_SEND仍是 core 工具方向是净简化:删四个能力位 + 两个 core 工具 + 两个
EgressPort方法,换一个注册表 + 一层固定信封。InteractionEvent在src/里只有conversation.py一个消费点,改动面比听起来小。ADR-0030 决策原文(逐条要落的)
ConversationInput.interaction改为开放形状:{kind: str, target_is_self: bool, actor_id: str, target_id: str | None, payload: dict},取代原封闭InteractionEvent{kind: Literal["poke","reaction"], target_message_id, emoji}。kind是任意字符串,core 不理解其语义。target_is_self由 host 判定并上报:host 拿原始平台事件与自己的 bot user_id 判断,core 只吃这个布尔值做路由,不参与判断。target_is_self=True→ ADR-0029 统一评估管线(事件触发、全量上下文);False→ ADR-0014 的EnvironmentSignal(复用其actor_id/subject_id)。ADR-0023「命中本人走 reactive、旁观走环境信号」这条边界判断本身不变,只是判定者从"core 按 kind 认"改成"host 上报布尔值"。ArisePorts.interaction_renderers: dict[str, IngressInteractionRenderer],host 在configure()时按kind注册render(payload: dict) -> str。core 仍拥"信封"——固定包一层<interaction kind="..." sender_id="..." sender_name="..." time="...">{host 渲染内容}</interaction>,与<message>同一套入口序列化外壳。第三方事件(target_is_self=False)不需要这套渲染,直接复用EnvironmentSignal现有表示。poke/reaction不作为 core 内置预注册项保留:彻底清空,变成 host 自己注册的普通 registry 成员,与未来任何新增交互原语地位相同,不享有特殊待遇。@all/@user/@face的处理原则相同(那次也是"注册表状态即能力信号,不设独立能力位",issue #28 已验证过这个模式)。Acceptance criteria
ConversationInput.interaction改为开放形状;InteractionKind封闭Literal删除。ArisePorts.interaction_renderers注册表 + core 侧固定信封渲染;kind未注册时的行为要明确(建议沿用tags.py既有先例:未注册即整体剔除、不留占位,见 issue #28)。target_is_self路由:True→ 统一评估管线;False→EnvironmentSignal。路由行为不得改变,只换判定者。CapabilitySet删除,tools.py/runtime_loop.py相应门控删除。EgressPort.poke_send/reaction_send删除,POKE_SEND/REACTION_SENDcore 工具删除——host 改经工具港注册。CapabilitySet少四个字段,若有按字段枚举的测试/守卫(get_args或字段清单式断言)会红,那正是它该做的——顺着红的地方改,不要绕开守卫。InteractionEvent在tests/有 3 处引用(runtime_loop_helpers.py/test_conversation.py/test_runtime_loop.py),加上能力位相关用例,一并适配。docs分支,按规则不推送):ADR-0004「决策」节至今仍列着poke位,而 ADR-0030 宣布移除了它——这是一处已存在的 ADR 间矛盾,本票落地后追加更新节消掉它。ADR-0030 自身追加"已实现"更新节。CONTEXT.md「交互事件」「能力探测」两条术语核对。按本仓惯例只追加## 更新(…)节,不就地改写既有「决策」/「拒绝了」。Not in scope
target_is_self、怎么注册 renderer —— 那是 host 的事,本票只交付 core 契约。