先这样答
多 Agent 的消息协议,至少要包含消息 ID、发送方、接收方、任务 ID、内容、时间戳和因果关系。任务 ID 要贯穿一次任务的所有消息。因果关系要说明当前消息回复了哪条消息。
内容建议同时包含结构化载荷和自然语言说明。结构化载荷方便 Agent 和程序读取。自然语言说明方便排查和理解。消息 ID 用来区分每条消息。发送方和接收方用来说明通信边界。时间戳用来还原消息发生的时间顺序。
可追踪要靠日志和消息落盘。系统按任务 ID 聚合日志。每一步产生的消息都要落盘。这样可以从一个任务出发,查看它经过了哪些 Agent,以及每一步传递了什么内容。可重放要保证消息按原顺序重新执行,并尽量复现原来的执行轨迹。执行中遇到随机因素时,要记录随机种子或快照。
面试官会怎么追问
-
「为什么任务 ID 必须贯穿所有消息?」
任务 ID 用来把一次任务中的多条消息关联起来。按它聚合日志,才能还原任务经过了哪些 Agent,以及每一步发生了什么。 -
「只记录消息内容,为什么还不够?」
还需要记录消息 ID、双方身份、时间戳和因果关系。否则无法确认消息属于谁、先后顺序如何,也无法判断当前消息回复了哪条消息。 -
「重放时为什么还要记录随机种子或快照?」
同样的消息顺序不一定能得到同样的结果,因为执行可能包含随机因素。记录随机种子或快照,才能更接近原来的执行轨迹。
回答的坑
只列字段而不说明任务 ID、日志聚合和消息落盘,回答就没有覆盖可追踪。
只说按顺序重发消息而不记录随机因素,回答就没有真正说明如何复现执行轨迹。
同系列的题
—— 本题完 ——