有个细节很刺眼:当 prompt 里开始反复写 MANDATORYDO NOT SKIP,系统其实已经在报警了。

你不是在编程。你是在劝一个不稳定的执行者别走神。

这篇开发者博客讲的就是这个问题。它的核心命题很短:reliable agents need deterministic control flow encoded in software, not elaborate prompt chains。可靠的复杂 Agent,需要写在软件里的确定性控制流,而不是越来越复杂的提示词链。

我认可这个判断。Agent 工程的分水岭,正在从“谁更会写 prompt”,转向“谁能把 LLM 降级成可编排、可验证、可兜底的组件”。

Prompt 能做任务,不能当骨架

原文反对的不是 prompt。

窄任务里,prompt 很有用。改写、分类、提取、生成候选方案,提示词仍然是低成本入口。问题出在复杂 Agent:多步执行、工具调用、状态更新、异常处理,都被塞进一段自然语言里。

原文用了一个很准的比喻:如果一种编程语言的语句只是“建议”,函数还可能幻觉式返回 Success,复杂系统就无法推理,也无法扩展。

这不是修辞。它正好点中 Agent 的工程硬伤。

环节Prompt 适合承担软件运行时该承担
单步判断分类、总结、生成候选输入输出格式约束
多步流程提供局部推理状态转移、分支、重试
工具调用生成调用意图权限、参数校验、执行顺序
可靠性给出解释或建议验证检查点、日志、回滚、人审

关键点不是让 LLM 本身变成完全确定的机器。那不现实,也不是原文的意思。

确定性应该放在外层。状态怎么变,工具能不能调,结果是否合格,失败后走哪条路,这些都要由软件接管。LLM 可以负责判断和生成,但不该负责整套系统的秩序。

对开发者来说,这意味着 prompt 模板要退到第二层。真正要写清楚的是状态图、输入输出契约、校验器、失败分支。

对技术管理者来说,采购或自研 Agent 平台时,也别只看 demo 是否顺滑。更该问四个问题:状态是否可追踪,工具调用是否可控,失败是否可见,输出是否可验。

真正危险的是静默失败

复杂 Agent 最怕的不是报错。

报错反而干净。系统停下来,团队知道哪里坏了。

更麻烦的是静默失败:它没有崩溃,没有红灯,还给出一段看起来很完整的结果。错就这样进入下一步,被包装、被引用、被执行。

拿客服 Agent 举例,不需要虚构事故也能看清风险。用户问退款,Agent 先查订单,再判断规则,再生成回复,再触发工单。只要其中一步把状态理解错,后面每一步都可能继续“顺畅”运行。

如果没有程序化校验,团队通常只剩三种兜底。

兜底方式实际做法现实代价
Babysitter人盯着 Agent 跑自动化收益被吃掉
Auditor事后全量审计成本后置,反馈太慢
Prayer差不多就收把可靠性交给运气

这三种都不适合生产系统。第一种省不了人,第二种拖慢交付,第三种迟早出账单。

“工欲善其事,必先利其器。”放在 Agent 工程里,这句话不是劝大家买更多工具,而是提醒团队别把工程问题伪装成玄学调参。

更可执行的做法,其实没有那么玄。

工程动作要解决的问题典型做法
显式状态管理Agent 当前走到哪一步用状态机或工作流记录阶段、输入、输出
工具权限控制防止乱调工具按任务开放工具,限制参数和调用顺序
输出校验防止错结果进入下一步schema 校验、规则校验、必要字段检查
失败重试防止一次偏差放大区分可重试、需降级、需中止的错误
日志追踪事后能定位原因记录 prompt、模型输出、工具返回、状态变化
人审节点把高风险环节拦住金额、权限、外发、删除类动作强制人审

这些东西不性感。也不适合做发布会截图。

但它们决定 Agent 能不能从演示走到生产。没有这些,模型越能干,错误扩散得越快。

门槛正在回到软件工程

我更在意的是,这篇博客说中了一个行业变化:Agent 的门槛不再只是 prompt 技巧,而是系统能力。

早期大家迷恋提示词,可以理解。它见效快,演示好看,进入门槛低。铁路刚出现时,最吸引人的也是速度。但铁路真正改变世界,靠的不只是火车头,而是时刻表、信号系统、调度规则和维修体系。

这个类比不完全一样。Agent 的不确定性更强,任务边界也更松。但重复的是同一种结构:单点能力很耀眼,真正的规模化靠外层制度。

开发者接下来要做的事会更具体。

少花一点时间堆“你必须、你绝对不能、请严格遵守”。多花一点时间写状态迁移、验证器和错误处理。能用代码约束的,就别交给自然语言祈求。

技术管理者也要改判断标准。

如果一个 Agent 项目只能展示成功路径,不能展示失败路径,它还没准备好进入核心流程。采购可以延后,试点可以缩小,先把可观测性和人审边界补上。

这不是保守。恰恰是对生产系统最基本的尊重。

目前还看不清的是,行业会不会形成一套稳定的 Agent 运行时标准。原文只是一篇开发者博客,不是正式标准,也没有给出万能框架。

但有几个变量已经可以观察:

  • Agent 平台是否把状态、工具调用、日志和校验做成一等能力;
  • 团队是否愿意为失败路径投入工程时间;
  • 高风险动作是否默认有人审或强校验;
  • prompt 是否从“流程控制中心”退回“模型交互接口”。

这几个问题,比提示词写得漂不漂亮更重要。

把逻辑从散文里拿出来,放回软件里。LLM 是组件,不是整套系统。

这句话听起来克制,其实很硬。它把 Agent 从魔法拉回工程,也把很多团队从 demo 的舒适区里拽出来。