Agentic AI 时代的软件工程基础

软件工程基础的持久性

AI agent 已跨越了功能能力的门槛——它们现在可以生成“能用”的代码。然而,生产一个可运行的原型与构建一个可持续系统的工程能力有着本质的区别。软件工程基础——特别是设计可维护、可调试、分层且可组合的系统——仍然至关重要,因为当前的语言大模型 (LLMs) 缺乏真正的推理能力,而是依赖于基于压缩的人类知识的模式预测。

功能性代码与工程化系统之间的差距

能够执行的代码与为长期生存而设计的工程化代码之间存在显著差异。虽然 agentic harnesses 可以快速实现功能,但它们往往在软件的“接缝”处表现挣扎——即 API、目录结构以及整体架构的契合度。

AI 生成架构的局限性

LLMs 在遵循指令和工具调用方面非常有效,但在高层架构推理方面经常失败。这体现在以下几个方面:

  • 杂乱无章的结构: AI 生成的代码往往导致混乱的目录结构和不一致的接口设计。
  • 武断的假设: 模型经常对错误处理和状态管理做出未指定的假设,在没有人类指导的情况下决定哪些失败是关键的,哪些不是。
  • 缺乏远见: 虽然 AI 可以实现特定的 prompt,但它往往缺乏确保代码在长期内可维护性的远见。

为了缓解这些问题,开发者必须依赖确定性的验证工具,例如全面的测试套件和强大的类型检查器,以验证 AI 的输出是否符合预期的架构。

LLMs 中的推理与预测

LLMs 并不进行传统意义上的“推理”;它们是基于训练数据中发现的模式来预测下一个 token。当一个模型表现出推理能力时,它通常是在回响其训练集中编码的人类推理痕迹。

“思维的幻觉”

研究(例如论文 The Illusion of Thinking)表明,LLMs 在真正的推理方面存在困难。虽然它们可以机械地应用“模糊启发式”并识别系统中的常见模式,但它们无法一致地处理复杂系统设计所需的权衡。这使得人类工程师的角色变得至关重要,用于:

  • 管理认知负荷: 选择合适的抽象来保持系统的可理解性。
  • 定义稳定性: 确定系统的哪些部分必须保持刚性,哪些部分需要灵活性。
  • 评估权衡: 根据特定的问题上下文和长期目标做出主观决策。

安全与可靠性问题

尽管在对齐 (alignment) 和安全防护 (safety harnesses) 方面取得了进展,但 AI 生成的代码中仍存在根本性的差距。一个主要的担忧是“致命三要素”:LLMs 无法一致地分辨好坏建议,以及它们容易受到 prompt injection 攻击。

虽然一些报告表明,较新的模型(例如 Claude 的 Auto mode)对间接 prompt injection 表现出很高的抵抗力,但其他人认为,在缺乏真正推理的情况下进行指令遵循,其本质特征会造成持续的安全风险。

对职业未来的看法

关于 AI 是否会使该职业“去技能化”或仅仅是转移所需的专业知识,存在着巨大的争论。

“宜家家具”类比

有人认为 AI 生成的代码类似于宜家家具:它对于大多数企业需求来说是一致且“足够好”的,这可能会减少对“精细工匠”(高级工程师)的需求。在这种观点下,大多数平庸的软件将被一致的、AI 生成的基准代码所取代,只留下极小比例的精英工程师来处理高端、专业化的需求。

Agentic 转向

相反,一些开发者报告称,AI 已经能够维护大型代码库(例如 150k lines of code)而无需人类持续审查,这表明如果 AI 本身就是主要的维护者,那么传统的对可维护性和可调试性的强调可能就不那么重要了。

最终,当前 agentic engineering 的状态表明,虽然 AI 的“大棒”提供了巨大的杠杆作用,但人类工程师必须仍然提供支点——即战略推理和基础工程原则——来撬动世界。

Sources

相关