Skip to content

[lark-bot] 明确并实现 reply chain 的 completion semantics #647

@YueZh127

Description

@YueZh127

背景

当前 lark reply 主链路为:

ConversationGAgent -> IChannelLlmReplyRunDispatcher -> AgentRunDispatcher -> AgentRunGAgent -> ConversationReplyGenerator -> ChatRuntime

这条链路的局部行为已经有不少测试覆盖,但跨 actor handoff 的完成语义仍然不够清楚,尤其是:

  • accepted
  • committed
  • delivered
  • finalized

这几个阶段之间的边界目前更多是靠读代码理解,而不是由明确契约表达。

问题

现在最容易混淆的地方包括:

  • NeedsLlmReplyEvent 已提交,不等于用户已经收到回复
  • dispatcher accepted,不等于 downstream delivery 已完成
  • AgentRunGAgent terminal,不等于 channel 侧可见回复已经最终收尾
  • reply ready / dropped / failed 分别处于哪个 completion phase 还不够显式

如果这几层语义不清楚,后续测试和实现都容易把弱保证误写成强保证。

目标

明确并落地 reply chain 的 completion semantics,让每一层只承诺已经真实发生的阶段。

范围

  • 明确 accepted / committed / delivered / finalized 的边界
  • 明确同步返回值与异步事件分别承诺什么
  • 对齐 ConversationGAgent、dispatcher、AgentRunGAgent 的语义表达
  • 去掉隐式、模糊、容易误读的完成态表达

验收标准

  • 有简短设计说明 / ADR 补充 / 架构说明
  • ConversationGAgent、dispatcher、AgentRunGAgent 的完成态语义一致
  • code review 时不需要再靠“读代码猜语义”来判断某个状态的真实含义
  • 结果足够明确,可以支撑后续 chain-level contract tests

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions