交接产物是用于承载交接信息的文档:由一次会话写入环境,再由另一次会话读取。规格说明、任务和计划文档都属于交接产物。
之所以需要写交接产物,是因为模型是无状态的;会话一旦清空,其中没有任何内容能够自动保留。决策、约束、尚未完成的计划,都会随承载它们的上下文一起消失。环境却会持续存在。把重要状态写入文件,就是把它移动到下一次会话能够重新读取的位置。
交接产物属于二手来源——它记述一次会话完成的工作,但并不是工作本身。这使它足够精简,可以快速向新会话说明情况;同时也意味着它可能误导读者:文档记录的是写作会话当时相信的内容,任何遗漏或错误对后续读者都不可见。只要某项陈述很重要,下一次会话就应对照一手来源——代码和测试——进行验证,而不是直接继承。
优秀的交接产物应当假设读者是一个零上下文会话。使用明确文件路径,而不是“我们讨论过的那个文件”;记录作出了什么决定以及原因,避免下一次会话重新争论;说明已经完成什么、还剩什么。告诉写作会话这份文档将被谁使用也很有帮助,例如:“为一个对当前工作一无所知的新会话编写交接文档。”
另一种承载机制是压缩,它在内存中生成摘要。交接产物有两个优势:它存放在磁盘上,可以在后续工作依赖它之前由你阅读并修正;它还可以复用——同一份规格说明可以同时为五个并行会话提供背景。
用法:
“如何把这项工作分给规划智能体和实现智能体?”
“让规划者编写一份交接产物,记录文件路径、决策和约束。实现者的会话从指向该产物的上下文指针开始,并把它作为任务简报。”