iT邦幫忙

0

從 Vibe Coding 到 Agentic Engineering:AI 寫程式真正缺的不是靈感,是驗證

  • 分享至 

  • xImage
  •  

Vibe coding 最危險的地方,不是它太隨便。

真正危險的是,它太容易讓人產生一種錯覺:只要 AI 跑得出一版東西,工程就往前推進了。

在 demo、side project、內部小工具裡,這種錯覺有時候無傷大雅。你用自然語言描述一個畫面,agent 生出元件;你貼一段錯誤訊息,它補一個修法;你叫它整理資料結構,它改出一個看起來乾淨的 diff。速度很快,爽感也很真。

但真實專案不是這樣運作的。

真實專案裡,一段 code 不是只要能跑。它要符合原本的業務假設,要沒有偷偷改掉邊界行為,要能被測試覆蓋,要知道失敗時怎麼收斂。更麻煩的是,它通常還要跟一堆沒寫在 prompt 裡的團隊約定共存。

所以 coding agent 進入日常開發後,問題已經不是「AI 會不會寫程式」。

問題變成:你能不能把一件工作設計成可以被計畫、被執行、也被驗證的工程循環。

從聊天框變成工作流

以前我們比較容易把 AI coding 工具想成聊天框。

你問,它答。你不滿意,就換個問法。整個互動還是以人類盯著螢幕為中心,AI 比較像一個很快、很有耐心、偶爾亂猜的同事。

現在狀況不一樣了。

AI coding 正在往 IDE、CLI、背景任務、MCP 工具鏈裡鑽。它不只是回答問題,而是開始讀專案、改檔案、呼叫工具、跑命令,甚至在你沒有逐行盯著的時候先把一版工作做完。

這件事聽起來很有效率,但它也把風險往後推了一層。

當 agent 只是幫你補一個函式,你大概還能靠肉眼和直覺接住。當 agent 可以碰 repo、跑測試、串工具、讀更多上下文時,真正需要設計的就不是 prompt,而是工作流。

也就是:它開始之前,知道什麼叫做做好嗎?它執行途中,知道哪些地方不能亂碰嗎?它做完之後,交得出足夠證據嗎?

這才是從 vibe coding 走向 agentic engineering 的分界。

不是把 prompt 寫得更華麗。

而是把「請 AI 幫我弄一下」改成一個有邊界、有檢查點、有驗收證據的循環。

Plan:不要把模糊需求丟進放大器

Agent 很擅長放大模糊。

你給它一個模糊需求,它不一定會停下來問你。很多時候,它會把模糊理解成自由度,然後開始補洞。補得好,你會覺得它很神;補錯了,你會得到一個表面完整、其實方向偏掉的 diff。

所以 Plan 階段不是形式。

它是把風險先講清楚。

一個可以交給 agent 的任務,至少要回答幾個問題:

  • 這次真正要解決的是什麼問題?
  • 可以碰哪些檔案或模組?
  • 哪些地方明確不能改?
  • 預期輸出是修 bug、補測試、寫文件,還是先提出方案?
  • 什麼狀況下 agent 必須停止,而不是繼續猜?
  • 做完後要拿什麼證據來驗收?

這些問題看起來很普通,但普通才是重點。

工程裡很多事故不是來自高深演算法,而是來自「大家以為大家知道」。AI agent 更不會知道。它只能從你給的上下文、repo 裡的線索、工具回傳的結果去推。

如果 Plan 沒寫清楚,agent 的聰明反而會變成麻煩。它可能主動重構你沒要它動的地方,可能把一個局部修復擴大成架構調整,也可能為了讓測試過,把真正該修的邏輯繞過去。

好的 Plan 不需要長。

例如:

修正登入頁在 magic link 過期時錯誤訊息不清楚的問題。只允許修改 auth 模組與對應測試,不要改 session 流程。先補一個過期 token 的測試案例,再調整 UI copy 和錯誤映射。完成後跑 pnpm test auth。如果需要修改 token 產生或驗證規則,停止並回報。

這段沒有什麼 prompt 技巧。

但它像一張工作單。目標、範圍、禁止事項、驗證方式、停止條件都在裡面。Agent 可以照著做,reviewer 也能照著驗。

這比「幫我改善登入錯誤處理」可靠太多。

Execute:控制上下文,不是放它自由發揮

很多人把 agent 的 Execute 想成一個黑盒子:任務丟進去,等它吐結果。

這在玩具專案裡可以。到了產品專案,這樣用很快就會累。

因為 agent 執行時最容易出問題的地方,通常不是它不會寫語法,而是它拿到太多不該用的自由度。

它可以讀整個 repo,於是把不相關的模式也套進來。它可以改很多檔案,於是順手做了「看起來合理」的整理。它可以跑命令,於是只跑最容易通過的那一個。它可以串工具,於是把權限邊界變成一句 vague 的「我需要更多上下文」。

Execute 階段要做的不是把 agent 綁死,而是讓它在正確大小的盒子裡工作。

我會把它拆成幾個很實際的控制點:

  • 檔案範圍:這次可以改哪些路徑,哪些只能讀,哪些完全不要碰。
  • 命令範圍:需要跑哪幾個驗證命令,不要讓 agent 自己挑一個最舒服的。
  • 中途回報:遇到跨模組影響、測試環境壞掉、權限敏感邏輯時要停。
  • diff 大小:小任務就小 diff,不要讓 agent 把「修 bug」變成「順便整理架構」。
  • 假設清單:做完時列出哪些地方只是推測,哪些有證據。

這些控制點聽起來有點煩。

但它們會省掉更多時間。你不需要在 review 時猜 agent 為什麼碰這個檔案,也不用從一大坨 diff 裡找出哪一行才是必要修改。

越接近真實產品,越不該追求「一次讓 agent 做完很多事」。

比較好的節奏是小步交付。讓 agent 先補 failing test,再修 production code;先提出 migration plan,再改 schema;先限定一個元件,再擴到相鄰頁面。它每一步都可以快,但每一步都要能被看懂。

Agent 的價值是降低單步成本,不是讓我們放棄步驟。

Verify:人類價值重新出現的地方

如果只能選一個地方投入力氣,我會選 Verify。

不是因為 Plan 和 Execute 不重要,而是因為驗證是人類責任最後落地的地方。

Agent 可以說它完成了。它也可以說測試通過了。問題是,這些句子本身沒有重量。真正有重量的是它交回來的證據。

一個可以被合併的 agent 產出,至少應該讓 reviewer 快速看見:

  • 原始任務範圍是什麼
  • 實際改了哪些檔案
  • 為什麼這些檔案需要改
  • 新增或修改了哪些測試
  • 跑過哪些命令
  • 哪些命令沒跑,原因是什麼
  • 有哪些假設還沒有被驗證

這不是官僚。

這是把「我覺得可以」換成「我知道哪裡被檢查過」。

尤其 agent 很會產出看似合理的局部修正。它可能讓測試變綠,卻改掉一個隱含行為;它可能補了錯誤處理,卻讓另一個入口吐出不一致的訊息;它可能為了型別通過,加了一個太寬鬆的 fallback,讓真正的資料問題被吞掉。

這些問題不一定會被單一測試抓到。

所以 Verify 不能只問「有沒有跑測試」。

要問的是:這組驗證,跟這次風險對得上嗎?

修 UI 行為,要有截圖或互動步驟。修權限,要有正反案例。修資料轉換,要有邊界輸入。改 CLI,要有實際命令輸出。改 agent 工具權限,更要能說清楚它拿到了什麼能力、哪些 secret 或敏感資料不應該出現在上下文裡。

GitHub 把 MCP server 的 secret scanning 放進討論裡,其實就是同一個方向的提醒:當 agent 能接觸更多工具和上下文時,工程問題會跟治理問題黏在一起。你不是只在驗 code,你也在驗它怎麼取得能力、怎麼留下痕跡、怎麼避免把不該流出的東西帶出去。

Verify 做得好,agent 產出就比較像工程交付。

Verify 做不好,agent 產出就只是比較有自信的猜測。

這跟「任務交給誰」不是同一題

前一篇我談的是 task routing:不同任務要交給不同型態的 agent,也要設定不同權限和驗收方式。

今天這題更往裡面一層。

就算你已經選對 agent,工作也不會自動變安全。你還是要設計這次委派的內部循環:Plan 怎麼定義,Execute 怎麼控制,Verify 怎麼收斂。

這也是很多團隊導入 coding agent 後卡住的地方。

一開始大家會興奮於速度。後來踩到幾次雷,就開始懷疑工具。最後不是全開,就是全禁。這兩種反應都太粗。

比較成熟的做法,是把 agent 放回工程系統裡。

高風險任務先要求計畫。模糊任務先拆小。權限敏感的修改先讓 agent 做分析,不讓它直接改。每個 PR 都要求驗證證據。遇到未驗證假設就標出來,不要包裝成完成。

這些規則看起來很無聊。

但無聊通常表示它開始像工程了。

真正缺的不是靈感

Vibe coding 的好處,我不想否認。

它讓很多人重新感覺到寫東西很快、很輕、很容易試。這很重要。很多產品和工具的第一版,本來就需要這種速度。

但如果要把 AI coding agent 放進長期專案,光靠靈感不夠。

我們需要的是能反覆使用的工作循環:先把意圖和邊界說清楚,再讓 agent 在受控範圍內執行,最後用測試、diff、行為檢查和人工判斷把結果收回來。

真正會用 agent 的工程師,不一定是最會下 prompt 的人。

更可能是最知道什麼東西不能省的人。

能省的是手打樣板、搜尋線索、補測試骨架、整理重複修改。

不能省的是目標、邊界、證據和責任。

AI 寫程式真正缺的不是靈感。它缺的是驗證。而驗證,剛好就是工程師還不能外包掉的那一部分。

Source notes


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言