|
前几天,一位做了很多年开发的朋友跟我说: "现在的 AI Agent 让我想起当年第一次用 Spring 框架的感觉——既兴奋又迷茫。" 我深有同感。 每一次技术范式的转变,都会让我们重新审视"什么是软件"这个根本问题。 最近在研究 12-Factor Agent,看到了一篇特别有意思的软件简史。 作者用一个简单却深刻的视角,带我们回顾了软件开发 60 年的演进之路。 看完之后,我突然明白了一件事: 原来我们写了 60 年代码,本质上都在做同一件事——有向图。 只不过,画图的方式越来越高级罢了。 让我们先看看这 60 年的演进。 60 年前:一切都是流程图还记得大学时代学 C 语言,老师总是让我们先画流程图吗? 那时候觉得很烦,现在想想,老师真是用心良苦。 因为软件的本质,就是一个有向图(DAG)。 开始→输入数据→处理→判断→输出结果→结束 60 年前的程序员,真的是在纸上画流程图,然后一步步翻译成代码。 每个判断分支、每个循环结构,都要仔细设计。 就像搭积木,一块一块地拼接。 问题是,积木越来越多,图越来越复杂,人脑已经 hold 不住了。 20 年前:让机器帮我们管理流程2000 年前后,出现了一批 DAG 编排工具: Airflow(空气流,名字就很形象) Prefect(完美编排) Dagster(DAG 大师)
这些工具的核心思想很简单: 既然软件是流程图,那就让专门的工具来管理这些流程。 这就像从手工作坊升级到了流水线工厂。 每个步骤都清晰可见,出错了能自动重试,还能监控每个环节的状态。 程序员终于可以专注于业务逻辑,而不是纠结于异常处理和任务调度。 10 年前:AI 开始帮我们处理部分节点当机器学习模型变得实用后,我们开始在流程图中加入 AI 组件: "用 AI 总结这一列的文本" "用情感分析判断客户反馈" "用图像识别检测产品缺陷"
但本质上,AI 只是流程图中的一个节点。 整体架构还是确定性的,只是某些步骤变聪明了。 就像工厂流水线上,某些工位换成了机器人,但流水线本身没变。 现在:AI 说"让我来画流程图"这就是 AI Agent 带来的真正革命。 传统方式: 程序员:我要设计10个步骤,处理5种异常情况 AI:我是第3步的执行者
Agent 方式: 程序员:这是目标,这是可用的工具 AI:我来决定用哪些工具,按什么顺序
从"AI 执行流程"到"AI 设计流程",这是质的飞跃。 就像从"司机开车"进化到"自动驾驶"。 你只需要告诉它目的地,路线规划交给 AI。 理想很丰满,现实很骨感但是,就像自动驾驶在复杂路况下会迷路一样,AI Agent 也有个致命问题: 上下文太长时,它会迷失方向。 我曾经让一个 Agent 帮我重构代码,前 10 轮对话还好,到了第 20 轮,它开始: 重复之前试过的方案 忘记最初的目标 在错误的路上越走越远
这就像一个人在迷宫里转圈,走得越久越迷糊。 即使 AI 支持 128k token 的上下文,但经验告诉我们: 短小精悍的提示词和上下文,永远比长篇大论效果更好。
实践中的解决方案:微型 Agent既然让 AI 管理整个流程容易失控,那就让它管理局部流程。 这就是"微型 Agent"的思路: 确定性流程 ↓ 步骤1(普通代码) ↓ 步骤2(微型Agent:处理3-5个相关任务) ↓ 步骤3(普通代码)
举个真实的例子——部署机器人: 人类:合并代码到主分支 确定性代码:部署到测试环境 确定性代码:运行自动化测试 微型 Agent:负责生产部署的人机交互 Agent:准备部署前端 人类:先部署后端吧 Agent:好的,先部署后端 人类:批准 Agent:后端部署完成,现在部署前端
确定性代码:运行生产环境测试
这个 Agent 只负责一件事:理解人类的部署意图并执行。 任务明确,上下文可控,不会迷失。 Agent 的本质:四个核心组件剥开所有花哨的外衣,一个 Agent 其实就是: Prompt(提示词):告诉 AI 可以做什么 Switch 语句:根据 AI 的决策执行相应动作 上下文累积:记录已经发生的事 For 循环:重复直到任务完成
context = [初始任务] while True: # AI决策下一步 next_action = ai.decide(context)
# 执行动作if next_action == "完成": break result = execute(next_action)
# 累积上下文 context.append(result)
就这么简单。 但简单的东西,往往最有力量。 写在最后:我们还在画流程图回顾软件开发 60 年的历史,我们一直在做三件事: 画流程图(设计逻辑) 优化画图方式(提高效率) 让 AI 画图(智能化)
从手绘流程图,到 DAG 编排器,再到 AI Agent。 工具在变,思维方式在变,但本质没变。 它可能还不够完美,偶尔会迷路,但潜力无限。 "每一次范式转变,都让我们重新认识软件开发。" 你觉得呢? |