🤝 多 Agent 协作
# 文件协作
同一 conversationId 下的不同 Agent 共享同一个 workspace 目录。Agent A 写入文件,Agent B 可以读取:
// Agent A:生成分析报告
@Component("analyzerAgent")
public class AnalyzerAgentCmp extends ReActAgentComponent {
@Override
protected String systemPrompt() {
return "你是一个数据分析专家。请将分析结果写入 report.md 文件。";
}
// ...
}
// Agent B:总结报告
@Component("summaryAgent")
public class SummaryAgentCmp extends ReActAgentComponent {
@Override
protected String systemPrompt() {
return "你是一个总结专家。请读取 report.md 文件并生成摘要。";
}
// ...
}
<chain name="collaborateChain">
THEN(analyzerAgent, summaryAgent);
</chain>
# 通过 Slot 协作
Agent 通过 handleReply 把结果写入 Slot,下一个 Agent 通过 userPrompt 读取:
// Agent A 的 handleReply
@Override
protected void handleReply(Msg reply) {
ctx().getSlot().setOutput("analyzerResult", reply.getTextContent());
}
// Agent B 的 userPrompt
@Override
protected String userPrompt() {
Object prev = getSlot().getOutput("analyzerResult");
return "请基于以下分析结果进行总结:\n" + prev;
}
# 通过 ContextBean 协作
定义一个共享的上下文 Bean,多个 Agent 都可以读写:
public class AgentCtx {
private String analysisResult;
private String riskResult;
private String finalReport;
// getters and setters...
}
// 各 Agent 的 handleReply 中写入
@Override
protected void handleReply(Msg reply) {
AgentCtx ctx = ctx().getSlot().getContextBean(AgentCtx.class);
ctx.setAnalysisResult(reply.getTextContent());
}
// 后续 Agent 的 userPrompt 中读取
@Override
protected String userPrompt() {
AgentCtx ctx = getSlot().getContextBean(AgentCtx.class);
return "分析结果:" + ctx.getAnalysisResult() + "\n风险评估:" + ctx.getRiskResult() + "\n请生成最终报告。";
}
# 并行分析 + 汇总模式
这是最常见的多 Agent 协作模式:
<chain name="parallelSummary">
THEN(
prepare,
WHEN(analyzerAgent, riskAgent, marketAgent).maxWaitSeconds(120),
summaryAgent,
notify
);
</chain>
三个 Agent 并行分析不同维度,最后一个 Agent 汇总所有结果。
帮助我们改善此文档 (opens new window)
上次更新: 2026/05/24, 14:26:24


