Agent 不是聊天框多 Agent 协作系统的工程边界设计一、从单轮问答到协作编排问题不是“让模型更聪明”很多团队第一次做 Agent 系统时会把重点放在提示词上。提示词当然重要但生产环境里真正先出问题的往往不是模型不会回答而是任务边界不清、状态无法追踪、工具调用不可回滚。单个聊天框可以靠人工兜底多 Agent 协作系统却必须像后端服务一样设计责任、超时、重试和审计。一个常见场景是自动生成运营素材。规划 Agent 负责拆任务检索 Agent 负责找资料写作 Agent 负责产出初稿审核 Agent 负责检查事实和合规。看起来分工明确但如果没有工程边界问题会很快出现规划 Agent 反复拆分无效子任务检索 Agent 把旧资料当成新证据写作 Agent 在上下文不足时编造细节审核 Agent 只给“通过/不通过”却没有可执行的修复建议。因此多 Agent 协作不是把多个 Prompt 串起来而是把不确定的模型能力放进确定的工程流程中。核心目标不是“全自动”而是“可观测、可限制、可恢复”。这也是 Agent 架构设计最容易被忽略的地方。二、协作链路拆解把智能能力放进有边界的状态机flowchart TD A[用户任务] -- B[任务规划 Agent] B -- C{任务是否可拆分} C -- 否 -- D[人工澄清] C -- 是 -- E[子任务队列] E -- F[检索 Agent] E -- G[执行 Agent] F -- H[证据缓存] G -- I[草稿结果] H -- J[审核 Agent] I -- J J -- K{质量是否达标} K -- 是 -- L[归档与交付] K -- 否 -- M[修复建议] M -- E这张图的关键不是节点数量而是每个节点都有明确输入和输出。任务规划 Agent 的输出不应该是一段自然语言而应该是结构化任务列表。检索 Agent 的输出不应该是“我找到了资料”而应该包含来源、时间、置信度和摘要。执行 Agent 的输出不应该只有正文还要包含引用的证据 ID。审核 Agent 的输出也不能只是打分而要给出失败项、修复建议和是否需要人工介入。把 Agent 当成状态机之后系统就有了几个硬约束。第一每个状态必须可序列化方便落库和重放。第二每次工具调用必须有超时和错误码。第三任何 Agent 都不能直接覆盖最终结果只能提交候选结果。第四跨 Agent 的共享上下文必须有版本号避免上一轮残留污染下一轮。三、生产级实现任务上下文、超时和审计日志下面是一个简化的 Go 侧编排骨架。重点不在模型调用细节而在上下文管理、错误处理和审计。type TaskState string const ( StatePlanned TaskState planned StateFetched TaskState fetched StateDrafted TaskState drafted StateReviewed TaskState reviewed StateFailed TaskState failed ) type AgentResult struct { State TaskState Payload map[string]any Evidence []string Score float64 Error string } type Agent interface { Name() string Run(ctx context.Context, input map[string]any) (AgentResult, error) } func RunAgent(ctx context.Context, a Agent, input map[string]any, audit AuditStore) (AgentResult, error) { runCtx, cancel : context.WithTimeout(ctx, 30*time.Second) defer cancel() start : time.Now() result, err : a.Run(runCtx, input) audit.Write(AuditLog{ Agent: a.Name(), Latency: time.Since(start), Input: input, Output: result.Payload, Error: errString(err), CreateAt: time.Now(), }) if err ! nil { return AgentResult{State: StateFailed, Error: err.Error()}, err } return result, nil }这段代码保留了三个生产必需点。第一所有 Agent 都接受同一种上下文结构便于链路追踪。第二每次运行都有超时避免模型或工具阻塞整个任务队列。第三审计日志记录输入、输出、延迟和错误后续才能定位是哪一个 Agent 让结果变差。四、架构权衡Agent 越多系统不一定越智能多 Agent 的代价非常直接。节点越多链路越长延迟越高。每个 Agent 都可能产生不稳定输出误差会在流程中累积。为了控制风险需要给每个 Agent 设置输入大小、输出格式和重试次数。不要让一个 Agent “自由发挥”到影响全局状态。禁用场景也要说清楚。如果任务本身是强规则流程比如订单扣款、库存扣减、权限变更就不应该让 Agent 做最终决策。Agent 可以辅助生成建议不能绕过确定性校验。对于高风险内容也必须有人审或规则审兜底。比较稳妥的做法是先从两类 Agent 起步一个规划一个审核。执行逻辑仍然由传统服务承载。等日志、指标、评估集都建立起来再逐步加入检索、写作、修复等 Agent。这样系统复杂度可控也更容易向团队解释 ROI。五、总结多 Agent 协作系统的核心不是把模型串起来而是把模型放进有边界的工程流程中。任务状态要可序列化工具调用要可超时结果要可审计失败要可回滚。只有这些基础能力存在Agent 才能从演示走向生产。落地建议很简单先定义任务状态机再定义 Agent 输入输出协议然后接入审计日志和质量评分。不要一开始追求全自动。先让系统可观察再让系统变聪明。