🐞 Lecture 11.5: 名偵探與急診室病例文檔:收集三大金牌線索、解剖 F12 隱形病灶與 Agent Self-Healing 自我修復歷程

NOTE作者資訊 (Author Info)

歡迎來到 Bug 特種偵探事務所兼 Agent 急診室會診現場!我是你的首席偵探兼主治醫師。

在上一堂黑客松實戰中,我們體驗了指揮 AI 大副開發網頁的快感。然而,在真實的軟體工程領域中,有一項客觀規律是絕對無法迴避的——那就是 Bug(程式漏洞與運行異常)

當你點擊網頁上的按鈕卻一片死寂,或者黑色命令列視窗突然噴出一整頁紅色的英文報錯時,零程式基礎的學員常會陷入兩種極端的處置誤區:

請跟著主治醫師一起在急診室裡大喊:遇到 Bug 絕對不要慌張!Bug 是軟體開發中再正常不過的物理日常!

大副是一個具備 Self-Healing(自我修復) 能力的高級 Agent。但如果你只對它喊「壞掉了」,它的自注意力機制因為缺乏客觀的事實線索(Observation),只能憑空猜測幻覺,甚至越修越爛。

今天,我們就要學習如何像一名頂尖的名偵探與急診室醫師一樣,精準收集 Bug 的三大金牌病況線索,讓大副在一秒內定位病灶並完成 Self-Healing 自我修復!


🩺 急診室第一會診:醫生看診三大金牌病況線索 (Expected / Actual / Error Traceback)

想像你去醫院看診。如果你只是坐在醫生面前大哭喊:「醫生,我生病了,你快救我!」卻不肯說哪裡痛、發燒幾度、吃了什麼食物,醫生即便有神醫之術也無能為力。

當程式出錯時,請為大副提供這三大金牌病況線索

📌 線索一:你原本『期待』發生什麼事?(Expected Behavior)

告訴大副你的初始設計目標與預期功能。 * ❌ 無效描述:「按鈕壞了。」 * ✅ 絕佳診斷:「我原本期待點擊『翻譯點字』按鈕時,下方文字框會顯示翻譯好的中文國字。」

📌 線索二:實際上『發生了』什麼事?(Actual Behavior)

精準描述客觀觀察到的現象,絕不夾帶個人猜測。 * ❌ 無效描述:「我覺得是網頁死掉了。」 * ✅ 絕佳診斷:「但是當我點擊按鈕後,下方文字框一片空白,沒有顯示任何文字,也沒有跳出任何警告視窗。」

📌 線索三:最關鍵的『現場屍體』:複製完美的錯誤日誌(Error Traceback)

這是診斷過程中最具決定性的實體線索!不管是命令列裡的紅色英文 Traceback,還是瀏覽器 Console 裡的錯誤訊息,原封不動選取並複製貼給大副! * ❌ 無效描述:「終端機顯示好像找不到檔案。」 * ✅ 絕佳診断:「命令列跳出了以下這段紅字報錯:[貼上完整 Traceback,例如 FileNotFoundError: [Errno 2] No such file or directory: 'brl.dic']。」

當你將這三大金牌線索整整齊齊貼給大副時,大副的神經網路會立刻完成自注意力配對,它不需要憑空猜測,能直接精準定位到出錯的程式碼行數與變數,並觸發工具自動修復!


🔍 視障無障礙特種搜查隊:用 NVDA 與 F12 主控台捕捉『隱形 Bug 殘留物』

對於使用 NVDA 螢幕閱讀器的視障同學來說,瀏覽器網頁點了沒反應時,畫面上可能不會跳出任何顯眼的警告視窗。我們要去哪裡抓取這個「隱形 Bug 病灶」呢?

請掌握以下兩大無障礙除錯通道:

🌐 第一通道:瀏覽器開發者工具 (F12 Console 報讀)

💻 第二通道:命令列終端機 (PowerShell / CMD 全選複製)

如果是在 PowerShell 執行 Python 腳本時噴出紅字 Traceback: * 按下 Ctrl + A(全選當前命令列文字)或使用 NVDA 審閱游標選取報錯區塊。 * 按下 Ctrl + C 複製。 * 直接貼給大副說:「大副,請幫我分析這段 Traceback 報錯並自動修復程式碼。」


🔬 手術室現場直播:大副 Self-Healing 自我修復五步曲機制大解剖

當你把三大金牌線索交給大副後,大副在背景是如何幫你把 Bug 默默修好的呢?

我們來解剖大副在背景執行的 Self-Healing 自動修復五步曲 完整生命週期:


📋 經典診斷病案會診室與實戰問答

在結束本診所會診前,我們進行三項經典病案會診:

Bug 不是你的敵人,它是引導你與大副把程式做得更完美的指路明燈!

現在,你已經是一位合格的除錯偵探兼 Agent 急診室醫師了。

👉 下一堂課:Lecture 12 五星級阿基師主廚解密:用五大廚房結構比喻與三大魔法提示詞,解開任何程式碼黑盒子 👉 回課程大綱:學習地圖

🔥 專家級深度思考與實戰挑戰 (Expert Challenge)

以下題目專為尋求真正硬核觀念與專家級實戰能力的學員設計。題目無法從講義表面抄寫解答,請嘗試獨立思考後再點擊展開解析。

❓ 挑戰 1:診斷三大金牌線索(Expected / Actual / Traceback)的資訊完備性 👉 點擊展開專家解析答案

【實戰情境問題】:為什麼如果向 AI 提問只給出「按鈕點了沒反應」(只有 Actual),而不給出 Expected(預期行為)與 Traceback(錯誤日誌),AI 的修復成功率會暴跌 80%?

【鑑別點說明】:測試學員對 Bug 報告的資訊熵與推理搜尋空間(Search Space)縮減的理解。

【專家級解答與深度剖析】: 「按鈕點了沒反應」只提供了最終症狀,可能的根因高達上百種(如:事件監聽未綁定、CSS `pointer-events: none` 遮擋、JavaScript 語法錯誤、後端 API 404 等)。沒有 Traceback,AI 只能進行大海撈針式的盲目猜測;沒有 Expected,AI 無法確定正確的業務邏輯。提供完整的 Traceback 直接將搜尋空間縮減至特定的檔案與行號,修復效率提升數倍。

❓ 挑戰 2:Self-Healing(自我修復)迴圈中的防死循環破局機制 👉 點擊展開專家解析答案

【實戰情境問題】:當 Agent 嘗試修復一個 Bug,改完程式碼後執行測試,發現拋出了一個全新的錯誤 B;修復錯誤 B 後,又重新引發了原始錯誤 A。這種「A ➔ B ➔ A」的自我修復死循環該如何破局?

【鑑別點說明】:考驗學員對自動化除錯佇列中的狀態圖檢測與回滾(Rollback & Branching)策略。

【專家級解答與深度剖析】: Agent 的 Self-Healing 模組必須維護一個歷史修復 Hash 軌跡(State Graph)。當檢測到當前產生的 Error Traceback 曾經在 3 步內出現過時,觸發死循環警報!此時 Agent 必須:1. **停止繼續修改**;2. **執行 `/rewind` 回滾** 到最初乾淨的 Commit 狀態;3. **重新評估修復策略**(如放棄局部修補,改為重構整個函數架構),或主動跳出 HITL 提示向工程師求助。