深夜提醒

现在是深夜,建议您注意休息,不要熬夜哦~

🏮 🏮 🏮

新年快乐

祝君万事如意心想事成!

2024 桐庐半程马拉松
00:00:00
时间
0.00
距离(公里)
--:--
配速
--
步频
--
心率 (bpm)
--
配速
步频
|
share-image
ESC

从'PUA AI'到'与AI协作':Agent编程范式下的工程师生存法则

从'PUA AI'到'与AI协作':Agent编程范式下的工程师生存法则

引言:当”提示工程”变成”编程范式”

最近OpenAI发布的一份关于构建可靠AI代码的指南在圈内引发热议。标题很抓眼球——“从古法编程转向Agent编程,或者PUA你的AI”。作为一个在代码堆里摸爬滚打十余年的老兵,我第一眼看到这个标题时,心情是复杂的。

“PUA你的AI”,这个表述既戏谑又精准。它戳中了一个尴尬的现实:过去两年,我们中的很多人确实在用一种近乎”哄骗”的方式与AI打交道——反复调整提示词、施加情绪压力(”你是一个资深专家”)、甚至用”小费”诱导(”回答得好给你200美元小费”)。这些方法有效吗?某种程度上是的。但这是可持续的工程实践吗?显然不是。

OpenAI这份指南的真正价值,不在于它教你怎么”PUA”AI,而在于它试图建立一套从”提示工程”到”Agent编程”的范式转换框架。这不仅仅是技术细节的调整,而是软件工程方法论层面的重构。

作为一个经历过从单体架构到微服务、从瀑布模型到DevOps转型的老兵,我深知范式转换的痛苦与必要性。这篇文章,我想聊聊这背后的逻辑,以及作为工程师,我们该如何在这个转折点上找到自己的位置。


背景分析:为什么”古法编程”正在失效

从Copilot到Agent:AI能力的跃迁

要理解这次范式转换,得先回顾AI编程工具的演进轨迹。

第一阶段:代码补全(2021-2023)
GitHub Copilot的横空出世,让AI从”搜索引擎”变成了”结对编程伙伴”。但这个阶段的AI本质上还是被动响应的工具——你写注释,它补代码;你写函数签名,它补实现。它的上下文窗口有限,理解的是局部代码片段,而非整体系统。

第二阶段:对话式编程(2023-2024)
ChatGPT和Claude的代码能力爆发,带来了”对话式编程”。你可以描述需求,AI生成完整代码块。但这里的核心矛盾是:AI生成的代码是”一次性”的。它缺乏对现有代码库的理解,无法处理复杂的依赖关系,更无法自主验证其正确性。

第三阶段:Agent编程(2024至今)
这就是OpenAI指南所指向的方向。Agent不再是等待指令的工具,而是能够自主规划、执行、验证、迭代的协作主体。它可以调用工具、读取文件、运行测试、甚至自我纠错。

这个阶段的AI,开始具备工程化工作的基本要素:目标导向、反馈循环、错误处理。

“古法编程”的核心困境

所谓”古法编程”,我指的是我们过去几十年形成的软件工程方法论:精确的需求分析、模块化的架构设计、严谨的编码规范、完整的测试覆盖。这些方法在AI时代遇到了三重挑战:

第一,复杂度爆炸与认知瓶颈

现代软件系统的复杂度已经远超人类个体的认知极限。一个中型微服务系统可能涉及数百个服务、数千个API、数万行配置。传统的”人脑建模+手动编码”模式,在面对这种规模时效率急剧下降。

第二,变更频率与响应速度的错配

业务需求的变化速度越来越快,但传统开发流程的响应存在固有延迟。从需求评审到上线,即使是最敏捷的团队,也需要数小时到数天。而AI Agent可以在分钟级别完成从需求到可运行代码的迭代。

第三,质量保障的成本困境

测试覆盖率、代码审查、安全审计——这些质量保障手段的成本与代码量成正比。当AI可以瞬间生成数百行代码时,传统的人工审查模式变得不可持续。

关键洞察:我们面临的不是”AI会不会取代程序员”的问题,而是”程序员如何与AI协作才能应对系统复杂度的指数级增长”。


深度思考:Agent编程的本质是什么

范式转换的核心:从”指令执行”到”目标委托”

OpenAI指南中有一个容易被忽视但极其重要的概念:“委托边界”(Delegation Boundary)

在传统编程中,工程师与计算机的交互是指令式的:你精确描述每一步操作,计算机严格执行。即使使用高级语言,本质上也是在用人类可理解的语法编写机器指令。

Agent编程则引入了目标委托:你描述期望的结果和约束条件,Agent自主规划实现路径。这听起来像”声明式编程”的延伸,但本质上有更深层的不同——Agent具有不确定性自主性

# 传统编程:精确指令
def calculate_total(items):
total = 0
for item in items:
total += item.price * item.quantity
return total

# Agent编程:目标委托(示意)
agent_task = """
计算订单总价,要求:
- 正确处理折扣规则(见 docs/discounts.md)
- 金额精度保留两位小数
- 对异常输入返回友好的错误信息
- 参考现有代码风格(见 services/order_service.py)

验证方式:运行 tests/test_order_calculation.py,全部通过
"""

这个对比揭示了Agent编程的关键特征:

维度 传统编程 Agent编程
交互粒度 语句/函数 任务/目标
约束表达 语法规则 自然语言+示例
执行确定性 100%可预期 概率性,需验证
错误处理 编译期/运行期捕获 迭代修正
知识传递 文档+代码 上下文+反馈循环

“可靠性”的新定义

OpenAI指南反复强调”reliable”(可靠),但这里的可靠性内涵已经发生了变化。

传统软件的可靠性建立在确定性之上:相同的输入必然产生相同的输出,代码行为完全可预测。我们可以通过形式化验证、静态分析、 exhaustive testing 来逼近”零缺陷”。

Agent系统的可靠性则建立在韧性(Resilience)之上:承认单次执行的不确定性,但通过验证-反馈-迭代的机制保证最终结果的正确性。这是一种统计意义上的可靠性,更接近生物系统的运作方式。

这让我想起早年做分布式系统时的经历。我们曾执着于追求”强一致性”,后来发现绝大多数场景下”最终一致性+补偿机制”才是更务实的选择。Agent编程的可靠性模型,或许也是类似的思路转变。

批判性视角:被忽视的隐性成本

作为技术决策者,我必须指出当前Agent编程热潮中被系统性低估的几个成本:

1. 验证成本转移而非消除

很多人误以为Agent编程减少了测试需求。恰恰相反,它将验证从”前置设计”转移到了”后置迭代”。当AI生成代码的方式不透明时,你需要更强大的自动化验证体系来兜底。这个成本往往被”AI写代码好快”的表象掩盖。

2. 认知负载的重新分布

工程师从”写代码”转向”定义任务+验证结果”,看似轻松了,实则认知负载的性质发生了变化。读代码比写代码更难,验证AI生成的代码比验证自己写的代码需要更强的系统理解力。新手工程师可能陷入”看不懂但不敢改”的困境。

3. 技术债务的加速累积

AI生成代码的速度远超人类审查和重构的速度。如果没有严格的架构约束,系统可能在短时间内积累大量”AI生成的遗留代码”——逻辑正确但设计糟糕,能运行但难以维护。

个人观察:在我接触的团队中,使用AI编码最激进的那个项目,六个月后出现了严重的架构腐化。问题不在于AI,而在于团队没有建立与AI协作相匹配的工程纪律。


实践案例:一个真实项目的Agent编程实验

去年,我参与了一个内部工具的重构项目,有意识地尝试了Agent编程方法。这个项目规模适中(约2万行Python),但业务逻辑复杂,涉及多个外部API的编排。

实验设计

我们将开发流程分为三个阶段:

阶段一:传统方式基线(2周)
两名工程师按常规方式开发核心模块,记录工时、缺陷率、重构次数。

阶段二:AI辅助增强(1周)
同样的工程师使用Copilot+ChatGPT辅助,保持相同的代码审查和测试标准。

阶段三:Agent委托实验(1周)
尝试将完整功能点委托给Claude Code(当时还是内测版本),工程师角色转为”任务定义+结果验证”。

关键发现

效率数据

指标 传统方式 AI辅助 Agent委托
功能点交付/人天 0.8 1.5 2.3(首次)/ 3.5(稳定后)
单元测试覆盖率 78% 75% 62% → 85%(补充后)
代码审查发现问题 12个/PR 18个/PR 31个/PR → 15个/PR(优化提示后)
生产环境Bug(首月) 3个 5个 8个 → 2个(优化验证流程后)

几个反直觉的观察

  1. Agent委托的”启动成本”极高

    第一次尝试时,我们花了整整两天才写出有效的任务描述。AI反复误解需求,生成看似合理实则错误的代码。直到我们建立了一套**”任务描述模板”**(包含背景、约束、验证标准、参考示例),效率才显著提升。

  2. 上下文工程比提示工程更重要

    与其在提示词上下功夫,不如把精力投入代码库的结构化。我们将核心领域模型、API规范、错误处理模式抽取为独立的参考文档,Agent的生成质量立即提升一个档次。

  3. 验证自动化是瓶颈

    Agent可以秒级生成代码,但验证其正确性需要运行测试、检查日志、比对输出。当我们把验证流程也自动化(基于pytest+自定义断言),才真正释放了Agent的潜力。

我们总结的”Agent编程契约”

基于这次实验,团队形成了一套工作约定:

## Agent任务描述模板(ACT: Agent Collaboration Template)

### Context(上下文)
- 代码库位置:/src/services/payment/
- 相关模块:order_service, inventory_service
- 参考文档:docs/payment_flow.md, API_SPEC_v2.yaml

### Objective(目标)
- 必须实现:支持优惠券叠加计算
- 禁止行为:直接操作数据库(必须通过PaymentRepository)
- 性能要求:P99 < 50ms

### Verification(验证)
- 运行:pytest tests/payment/test_coupon.py -v
- 检查:日志中无ERROR级别记录
- 人工确认:边界情况清单(见下方)

### Examples(示例)
[提供2-3个典型场景的输入输出示例]

### Error Handling(错误处理)
- 优惠券过期 → 返回特定错误码,触发短信通知
- 计算溢出 → 记录告警,返回"系统繁忙"

观点输出:工程师的三种生存策略

面对Agent编程范式的兴起,我认为工程师群体将分化为三种策略选择,没有绝对优劣,但需要清醒认知:

策略一:”AI训导师”——深耕垂直领域

成为特定领域的”AI上下文提供者”。你的核心价值不在于写代码速度,而在于将领域知识结构化、可验证化的能力

这要求你:

  • 深入理解业务领域的隐性知识(tacit knowledge)
  • 建立领域特定的验证体系和质量门禁
  • 持续优化”人机协作界面”(任务描述、示例库、反馈机制)

策略二:”系统架构师”——把控复杂性

在AI生成代码的规模指数级增长时,控制复杂性成为稀缺能力。你需要设计让AI有效协作的架构约束,而非放任其自由发挥。

关键技能:

  • 定义清晰的模块边界和接口契约
  • 建立可自动验证的架构规则(ArchUnit、自定义linter)
  • 设计”AI友好”的代码结构(显式依赖、最小副作用、可测试性)

策略三:”批判性使用者”——保持选择性

并非所有场景都适合Agent编程。保持对技术适用边界的清醒认知,在合适的地方用合适的工具。

我的判断标准:

  • 适合Agent:边界清晰的算法实现、样板代码生成、测试用例扩展、文档同步
  • 不适合Agent:核心架构决策、安全敏感逻辑、需要深度业务创新的模块、团队知识传承的关键代码

我的选择:我正在向”策略一+策略二”的混合模式转型。写代码的时间确实减少了,但花在设计验证体系、优化协作流程、培养团队AI素养上的时间大幅增加。这不是”变轻松了”,而是工作性质的深刻转变


总结与展望:回归工程本质

Agent编程范式的兴起,某种程度上是一次工程本质的回归

我们曾过度关注”如何写代码”,而忽视了”为什么写这段代码”、”如何知道它是对的”、”如何让它持续演进”。AI的介入迫使我们重新面对这些根本问题——因为当你不再亲手编写每一行代码时,定义正确性验证正确性就成了唯一的工作。

OpenAI的指南,以及类似的行业实践,正在摸索一套新的工程方法论。它还不成熟,充满试错空间。但方向是清晰的:从人与机器的指令交互,转向人与AI的目标协作

对于个体工程师,我的建议是:

  1. 立即开始实验:在自己的项目中尝试Agent编程,建立一手认知
  2. 投资验证能力:学习property-based testing、契约测试、形式化验证等方法
  3. 培养”元技能”:代码可以AI生成,但需求分析、架构设计、质量判断、技术决策的能力无法替代
  4. 保持批判思维:不盲目追捧新技术,也不顽固抵制变革,而是持续评估”这在我的场景下是否适用”

最后,关于那个抓眼球的”PUA你的AI”——我认为这只是一个阶段性的隐喻。真正成熟的Agent编程,应该像优秀的团队协作:清晰的目标、明确的边界、及时的反馈、相互的信任。既不是人对机器的居高临下,也不是人对AI的卑躬屈膝,而是两个智能体在共同约束下的协作共创

这条路还很长,但值得走。


本文部分观点基于与团队成员的讨论,以及OpenAI、Anthropic等公司的公开文档。实验数据已做脱敏处理。

如果你对Agent编程的实践细节感兴趣,欢迎在评论区交流。作为十余年的工程老兵,我很好奇大家的真实体验——毕竟,技术变革的真相,往往藏在一线实践者的具体困境中。

文章作者:阿文
文章链接: https://www.awen.me/post/abc3b507.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 阿文的博客

评论

0 条评论
😀😃😄 😁😅😂 🤣😊😇 🙂🙃😉 😌😍🥰 😘😗😙 😚😋😛 😝😜🤪 🤨🧐🤓 😎🥸🤩 🥳😏😒 😞😔😟 😕🙁☹️ 😣😖😫 😩🥺😢 😭😤😠 😡🤬🤯 😳🥵🥶 😱😨😰 😥😓🤗 🤔🤭🤫 🤥😶😐 😑😬🙄 😯😦😧 😮😲🥱 😴🤤😪 😵🤐🥴 🤢🤮🤧 😷🤒🤕 🤑🤠😈 👿👹👺 🤡💩👻 💀☠️👽 👾🤖🎃 😺😸😹 😻😼😽 🙀😿😾 👍👎👏 🙌👐🤲 🤝🤜🤛 ✌️🤞🤟 🤘👌🤏 👈👉👆 👇☝️ 🤚🖐️🖖 👋🤙💪 🦾🖕✍️ 🙏💅🤳 💯💢💥 💫💦💨 🕳️💣💬 👁️‍🗨️🗨️🗯️ 💭💤❤️ 🧡💛💚 💙💜🖤 🤍🤎💔 ❣️💕💞 💓💗💖 💘💝💟 ☮️✝️☪️ 🕉️☸️✡️ 🔯🕎☯️ ☦️🛐 🆔⚛️🉑 ☢️☣️📴 📳🈶🈚 🈸🈺🈷️ ✴️🆚💮 🉐㊙️㊗️ 🈴🈵🈹 🈲🅰️🅱️ 🆎🆑🅾️ 🆘 🛑📛 🚫💯💢 ♨️🚷🚯 🚳🚱🔞 📵🚭 ‼️⁉️🔅 🔆〽️⚠️ 🚸🔱⚜️ 🔰♻️ 🈯💹❇️ ✳️🌐 💠Ⓜ️🌀 💤🏧🚾 🅿️🈳 🈂🛂🛃 🛄🛅🛗 🚀🛸🚁 🚉🚆🚅 ✈️🛫🛬 🛩️💺🛰️
您的评论由 AI 智能审核,一般1分钟内会展示,若不展示请确认你的评论是否符合社区和法律规范
加载中...

选择联系方式

留言反馈

😀😃😄 😁😅😂 🤣😊😇 🙂🙃😉 😌😍🥰 😘😗😙 😚😋😛 😝😜🤪 🤨🧐🤓 😎🥸🤩 🥳😏😒 😞😔😟 😕🙁☹️ 😣😖😫 😩🥺😢 😭😤😠 😡🤬🤯 😳🥵🥶 😱😨😰 😥😓🤗 🤔🤭🤫 🤥😶😐 😑😬🙄 😯😦😧 😮😲🥱 😴🤤😪 😵🤐🥴 🤢🤮🤧 😷🤒🤕 🤑🤠😈 👿👹👺 🤡💩👻 💀☠️👽 👾🤖🎃 😺😸😹 😻😼😽 🙀😿😾 👍👎👏 🙌👐🤲 🤝🤜🤛 ✌️🤞🤟 🤘👌🤏 👈👉👆 👇☝️ 🤚🖐️🖖 👋🤙💪 🦾🖕✍️ 🙏💅🤳 💯💢💥 💫💦💨 🕳️💣💬 👁️‍🗨️🗨️🗯️ 💭💤❤️ 🧡💛💚 💙💜🖤 🤍🤎💔 ❣️💕💞 💓💗💖 💘💝💟 ☮️✝️☪️ 🕉️☸️✡️ 🔯🕎☯️ ☦️🛐 🆔⚛️🉑 ☢️☣️📴 📳🈶🈚 🈸🈺🈷️ ✴️🆚💮 🉐㊙️㊗️ 🈴🈵🈹 🈲🅰️🅱️ 🆎🆑🅾️ 🆘 🛑📛 🚫💯💢 ♨️🚷🚯 🚳🚱🔞 📵🚭 ‼️⁉️🔅 🔆〽️⚠️ 🚸🔱⚜️ 🔰♻️ 🈯💹❇️ ✳️🌐 💠Ⓜ️🌀 💤🏧🚾 🅿️🈳 🈂🛂🛃 🛄🛅🛗 🚀🛸🚁 🚉🚆🚅 ✈️🛫🛬 🛩️💺🛰️