while True:
next_step = llm.determine_next_step(context)
if next_step.intent == "done": return final_answer
result = execute_step(next_step)
context.append(result)
❌ 核心问题
上下文窗口过长时,Agent 会迷失,反复尝试同样的错误路径。
即使模型支持更长上下文,小且聚焦的提示 + 上下文效果始终更好。
超过 10–20 轮交互后,错误率明显升高(90% 准确率对客户远不够)。
🧩 四、实际有效方案:微Agent(Micro Agents)
模式
将 Agent 模式“洒入”更大的确定性 DAG 中。每个微 Agent 只负责范围很小的任务,由确定性代码调度。
📌 示例:部署流程中的微Agent
确定性代码:合并 PR → 部署到 staging → 跑端到端测试。
交给 微 Agent 负责生产部署(初始上下文:“部署 SHA 4af9ec0”)。
Agent 调用 deploy_frontend_to_prod → 确定性代码请求人工审批。
人类拒绝并反馈:“先部署 backend”。
Agent 调用 deploy_backend_to_prod → 审批通过 → 执行。
Agent 再调用前端部署 → 审批通过 → 执行。
Agent 判断完成 → 确定性代码跑生产端到端测试。
✨ 关键价值
LLM 的主要作用:解析人类的自然语言反馈,并建议修正后的操作路径。
任务和上下文被高度隔离,每个微 Agent 只处理 5–10 步的工作流。
避免上下文错误循环。
🧠 五、Agent 的真正组成(作者定义)
提示(Prompt):告诉 LLM 行为规则和可用工具,输出下一步的 JSON(工具调用)。
switch 语句:根据 JSON 决定要做什么。
累积上下文:存储所有已执行步骤及其结果。
for 循环:直到 LLM 发出“终端”信号,不断重复“决定→执行→追加上下文”。
🔧 额外收益(拥有控制流与上下文积累)
能在流程中暂停、等待人工输入或长时间任务完成。
可以序列化上下文窗口,实现“暂停→恢复”。
可以极致优化传递给 LLM 的指令和“已发生事件”的展示方式。
🔮 六、结论与预告
微Agent + 确定性DAG 是目前在实践中有效的方式。
第二部分将把这些模式形式化,方便在不完全采用传统 Agent 定义的情况下,为任何软件项目添加可靠的 AI 功能。
“having language models managing well-scoped sets of tasks makes it easy to incorporate live human feedback...without spinning out into context error loops.”
“Even as models support longer and longer context windows, you'll ALWAYS get better results with a small, focused prompt and context.”