跳到主要内容

共享上下文的多 Agent 协作

共享上下文的协作凭什么是"继承式"的?​

  • 结构: 每个阶段都是一个独立 Agent(拥有自己的系统提示词与工具集),但它继承前序 Agent 的完整轨迹;
  • 类比: 接班的同事能翻阅前任留下的所有工作日志;
  • 核心优势: 信息不丢失,每个 Agent 都能回顾之前任何阶段的细节;
  • 核心挑战: 如何让当前 Agent 专注于自身核心职责,而不被继承来的大量历史信息干扰(角色惯性);
  • 轨迹定义见 Agent 公式与边界;

为什么要在阶段之间切换角色?​

  • 问题: 复杂任务中 Agent 的角色与职责在不同阶段显著变化,若始终使用同一套静态系统提示词,要么过于笼统缺乏针对性,要么把所有阶段指导塞在一起而过于冗长;
  • 做法: 按当前阶段动态切换系统提示词与工具集,让 Agent 在每个阶段以最合适的"身份"工作;

角色转换应该替换 system prompt 还是加载 Skill?​

选择角色规程的载体工具可见性上下文/KV Cache 影响约束能力
transfer_to_agent替换当前 system prompt,通常并替换工具集只暴露当前角色工具每次切换改变请求前缀;从变化点起的缓存通常无法复用强:越界工具在 schema 层不可见
Skill固定 system prompt 中的 Skill 目录,按需把 SKILL.md 追加到轨迹通常固定暴露工具全集或稳定的工具搜索入口静态前缀不变;Skill 内容成为末尾轨迹,已有前缀可继续复用弱:Skill 是行为指令,硬权限仍需 Harness 门
  • 判断规则一: 角色差异主要来自知识、流程与写作风格时,优先使用 Skill;
  • 判断规则二: 角色差异涉及权限、工具隔离、合规边界或需在运行时强制禁止某类动作时,使用独立 Agent 或 transfer_to_agent,并在 Harness 层用代码限制工具调用;
  • 相关模式: 渐进式披露与只增不改的设计意图见 设计模式;

实验对比的结论是什么?​

  • 控制变量: 两条路径使用同一模型、同一用户任务、同一工具实现、同一份角色规程与全量共享轨迹,任务为查找中国 2021—2023 年新能源汽车销量、计算 CAGR、写不超过 120 字的投资人摘要;
  • 路径一(系统提示词切换): 五种角色 triage(默认入口)、research、coding、data_analysis、writing,每个角色只看到自己的专属工具与 transfer_to_agent;移交时保存历史、加载目标角色提示词与工具集再继续;
  • 路径二(Skill): system prompt 与完整工具全集在整个会话中固定,模型按需调用 load_skill(name),读到的 SKILL.md 作为 tool result 进入共享轨迹;
  • 关键差异: Skill 路径静态前缀不因角色变化而重写,但工具始终可见,硬权限由 harness 中的规则保证;
  • 架构含义: 共享上下文下"角色"可以是提示词层面的规程,也可以是运行时层面的隔离,两者成本模型不同,不能互相替代;