如何剖析多智能体代码中的Agent Context Engineering实现?
摘要:承接上篇对Context Engineering的探讨,本文将聚焦多智能体框架中的上下文管理实践。我们将深入剖析两个代表性框架:字节跳动开源的基于预定义角色与Supervisor-Worker模式的 Deer-Flow ,以及在其基础上引入
承接上篇对Context Engineering的探讨,本文将聚焦多智能体框架中的上下文管理实践。我们将深入剖析两个代表性框架:字节跳动开源的基于预定义角色与Supervisor-Worker模式的 Deer-Flow ,以及在其基础上引入动态智能体构建能力的清华 **CoorAgent ** 。通过对它们设计思路和实现细节的拆解,提炼出多智能体协作中高效管理上下文的关键策略。
Context Engineering Tips
从开源框架和我们日常的开发实践中,优化多智能体上下文管理有以下一些思路。(注:只是一种Practice,并不是Best Practice,毕竟见山不是山嘛哈哈哈哈)
降低上下文长度与复杂度 (Reduce Length & Complexity)
上文丢弃 (Discard Context): 如Deer-Flow的Coordinator。若用户提问与智能体任务无关,在回复用户后,清空历史对话消息 (Message History = 0)。
上文隔离 (Isolate Context): Supervisor-Worker模式的核心。每个Worker智能体拥有独立的上文环境,仅接收自身任务目标作为启动指令,与Supervisor及其他Worker隔离。
上文分解 (Decompose Context): Supervisor(Planner)将复杂任务拆解为独立步骤。每个步骤复杂度降低,对应负责Worker的上文也随之简化。
降低上下文噪音 (Reduce Context Noise)
关注结果而非过程 (Focus on Results): 关键策略!尤其适用于RePlan、Reflection等判断模块。无需传递冗长的执行过程消息,只需基于当前结果与目标状态即可进行后续规划或反思。直接传递原始Message往往是便捷但非最优解。
过滤/选择上文 (Filter/Select Context): 类比RAG中的Re-ranking。例如Coding Agent中,子Agent仅回传关键stdout而非完整代码。
压缩上文 (Compress Context): 如Deer-Flow中,Researcher对搜索步骤结果进行摘要;Reporter仅基于压缩后的摘要而非原始引用进行最终总结。在Coding Agent设计中也很常见。
框架1:Deer-Flow
Deer Flow
Deer Flow是字节跳动推出的多智能体框架,后面的很多agent框架里都能看到它的影子,Deer Flow同样使用Langgraph构建,包含以下几个核心节点
协调者节点 (coordinator): 负责与用户交互,判断是否需要转交给规划者
核心规划模块(Planner):负责生成详细的任务执行计划
前置背景调查节点 (background_investigator): 执行初步网络搜索获取背景信息
后置人工反馈节点 (human_feedback): 允许用户审查和修改计划
研究团队节点 (research_team): 协调研究者和编码者
研究者节点 (researcher): 执行信息收集和研究任务
编码者节点 (coder): 执行数据处理和代码分析任务
报告者节点 (reporter): 生成最终研究报告
下面我们分别展开说下每个部分的亮点
前置分流(Coordinator):智能体的“防火墙
作用: 拦截并直接处理无需启动复杂流程的请求(如问候"你好"、能力询问"你能干啥"、不当言论"你好讨厌")。
价值: 避免无关上下文污染核心流程,提升效率与用户体验。响应后终止对话,清空历史消息(Discard Context策略)。
核心规划模块(Plan):结构化推理与上下文处理
设计:
采用外层Plan + 内层Steps结构。
