feat(dispatcher): 编排式多智能体接力 —— 上游 agent 产出沿图传给下游
让画布上串联的多个 agent 真正协作完成一件事(如 检索→撰写→审查 出报告), 而非各自对原 query 重答: - board 增 agentOut(各上游 agent 产出按序);RunCtx 增 Upstream,buildMessages 注入"前序协作 agent 的产出,请在此基础上继续"。 - runAgent / runReactAgent / runComposeConversation 三条路径统一:注入 b.agentOut 作上下文,产出经 recordAgentOutput 入黑板(append agentOut + 设为当前成稿 answer, 多 agent 时最后一个 agent 产出即最终成品)。 不需要 eino multiagent 组件——编排式协作由现有图引擎 + 上下文传递实现。 测试 TestAgentCollaborationPassesOutput:下游 agent 确见上游产出、成稿=下游产出; make test-go 全绿。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -19,6 +19,7 @@ type RunCtx struct {
|
||||
Profile string // 召回的画像
|
||||
History []*schema.Message // 短期历史
|
||||
ToolOut []string // 工具/检索节点产出(含参考资料)
|
||||
Upstream []string // 前序协作 agent 的产出(多 agent 接力时注入,让下游基于上游继续)
|
||||
}
|
||||
|
||||
// chatTemplate 是会话消息模板:系统提示词 + 历史占位 + 用户输入。
|
||||
@@ -43,6 +44,10 @@ func buildMessages(ctx context.Context, rc *RunCtx) ([]*schema.Message, error) {
|
||||
sys.WriteString("\n\n以下是工具/检索得到的参考资料:\n")
|
||||
sys.WriteString(strings.Join(rc.ToolOut, "\n---\n"))
|
||||
}
|
||||
if len(rc.Upstream) > 0 {
|
||||
sys.WriteString("\n\n以下是前序协作 agent 的产出,请在此基础上继续完成你的部分(不要重头再来):\n")
|
||||
sys.WriteString(strings.Join(rc.Upstream, "\n---\n"))
|
||||
}
|
||||
return chatTemplate.Format(ctx, map[string]any{
|
||||
"system": sys.String(),
|
||||
"history": rc.History,
|
||||
|
||||
Reference in New Issue
Block a user