04. 你的 Agent 越改越乱?先把这 8 个对象分开
04. 你的 Agent 越改越乱?先把这 8 个对象分开 系列来源:本文属于 Agent 开发系列,内容来自 gusibi/molibot 的真实开发记录与项目文档整理。这是系列第四篇,前三篇分别讲了 Agent 的四层分类、runtime 整体架构和最小 run 闭环——没看过不影响理解本篇。 你有没有过这种经历—— Agent demo 跑通以后,你开始往上加功能。文件上传、图片生成、记忆、停止命令、trace 页面。 然后系统开始变乱。 加个「停止」功能,不知道该停哪一次执行。工具失败了,模型却看不到错误。清理临时文件,把用户要的报告一起删了。排查线上问题,只能翻聊天记录猜。 你以为是代码写得不好。其实不是。 是对象混在了一起。 Session 和 run 混了,停止命令不知道该停哪次执行。 Tool result 和 assistant answer 混了,模型看不到真实工具结果。 UI notice 和 message 混了,临时控制污染后续上下文。 Artifact 和 attachment 混了,用户上传的文件和 Agent 生成的产物一起被清理。 Trace fact 和业务消息混了,排障记录又被回灌给模型。 这些问题,demo 阶段一个都看不出来。因为只有一条消息、一个工具、一次执行,混了也能跑。 但系统只要长期运行,边界就会反过来找你。 这篇不画漂亮的类图,只回答一个问题:Agent runtime 里,哪些东西必须分开? 一个对象混乱的事故 先看一个真实场景。 用户发来: 帮我分析这个日志文件,如果里面有异常,生成一份报告。 系统做了四件事:读日志、调模型分析、生成 HTML 报告、把链接发给用户。 这时用户又补了一句: 先停一下,我发现上传错文件了。 如果对象边界不清,这里会同时出现五个问题。 第一,系统不知道「停一下」要停哪次执行。它只有 session,没有 run。session 里有很多消息,但没有一个明确的 active run。 ...