Agentic AI 時代的軟體工程基礎
軟體工程基礎的持久性
AI agent 已跨越了功能能力的門檻——它們現在可以生成「可以運作」的程式碼。然而,產出一個可運作的原型與工程化一個可持續的系統,在根本上是不同的。軟體工程基礎——特別是設計可維護、可除錯、分層且可組合的系統——仍然至關重要,因為目前的 Large Language Models (LLMs) 缺乏真正的推理能力,而是依賴於基於壓縮人類知識的模式預測。
功能性程式碼與工程化系統之間的差距
執行中的程式碼與為了長期可行性而工程化的程式碼之間存在顯著差異。雖然 agentic harnesses 可以快速實作功能,但它們在軟體的「接縫處」——API、目錄結構以及整體的架構契合度——往往表現掙扎。
AI 生成架構的局限性
LLMs 在遵循指令和工具調用方面非常有效,但在高層次的架構推理方面經常失敗。這體現在以下幾個方面:
- 雜亂無章的結構: AI 生成的程式碼通常會導致混亂的目錄結構和不一致的介面設計。
- 任意的假設: 模型經常對錯誤處理和狀態管理做出未說明的假設,在沒有人類引導的情況下,自行決定哪些失敗是關鍵的,哪些不是。
- 缺乏遠見: 雖然 AI 可以實作特定的 prompt,但它通常缺乏確保程式碼在長期內可維護的遠見。
為了減輕這些問題,開發者必須依賴確定性的驗證工具,例如全面的測試套件和強大的型別檢查器,以驗證 AI 的輸出是否符合預期的架構。
LLMs 中的推理與預測
LLMs 並非以傳統意義上的方式進行「推理」;它們是根據其訓練數據中發現的模式來預測下一個 token。當一個模型看起來在推理時,它通常是在回響其訓練集中編碼的人類推理痕跡。
「思考的幻覺」
研究(例如論文 The Illusion of Thinking)指出,LLMs 在真正的推理方面表現掙扎。雖然它們可以機械式地應用「模糊啟發式」並識別系統中的常見模式,但它們無法一致地處理複雜系統設計所需的權衡。這使得人類工程師的角色變得至關重要,用於:
- 管理認知負荷: 選擇正確的抽象來保持系統的可理解性。
- 定義穩定性: 確定系統的哪些部分必須保持剛性,哪些部分需要靈活性。
- 評估權衡: 根據特定的問題情境和長期目標做出主觀決策。
安全與可靠性疑慮
儘管在對齊和安全機制方面有所進步,但 AI 生成的程式碼中仍存在根本性的差距。一個主要的擔憂是「致命三要素」:LLMs 無法一致地分辨好壞建議,以及它們容易受到 prompt injection 攻擊。
雖然有些報告指出較新的模型(例如 Claude 的 Auto mode)對間接 prompt injection 表現出高度抵抗力,但其他人則認為,在缺乏真正推理的情況下遵循指令的本質,造成了持續的安全風險。
對職業前景的看法
關於 AI 是否會使該專業「去技能化」或僅僅是轉移所需的專業知識,存在著顯著的爭議。
「IKEA 家具」類比
有人認為 AI 生成的程式碼類似於 IKEA 家具:它是一致且對於大多數企業需求來說「足夠好」,這可能會減少對「精細工匠」(資深工程師)的需求。在這種視角下,大多數平庸的軟體將被一致、由 AI 生成的基準程式碼所取代,僅留下少數精英工程師來處理高端、專業化的需求。
Agentic Shift
相反地,有些開發者報告稱,AI 已經能夠在不需要持續人類審查的情況下維護大型程式碼庫(例如 150k lines of code),這表明如果 AI 本身就是主要的維護者,那麼傳統上對可維護性和可除錯性的強調可能就不再那麼重要。
最終,當前的 agentic engineering 狀態表明,雖然 AI 的「大棒」提供了巨大的槓桿作用,但人類工程師仍必須提供支點——策略性推理和基礎工程原則——來推動世界。
Sources
相關
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch