自動化與 Agent
改完程式碼卻沒生效?先問那個 process 本身,別急著懷疑自己
改完程式碼、測試新功能還是不動,大部分人第一反應是回頭懷疑自己剛寫的邏輯。但只要是長駐執行的服務,存檔不會讓它自動套用新程式碼——先問那個活著的 process 現在到底認得什麼,往往比重查邏輯快一個數量級。
一個核心觀念
「長駐執行」的服務,存檔不等於生效。
只要是那種你啟動一次、它就一直在背景跑著的程式(開發用的 API server、背景 daemon、任何常駐 process),你改了原始碼檔案,並不會讓那個已經在跑的程式自動重新載入新版本——除非你有特別開啟「自動重載」這個機制(很多框架有這個選項,但預設通常是關的)。
換句話說:你剛剛改的程式碼,此刻可能根本沒有被執行到。它躺在硬碟裡是新的,但記憶體裡跑著的還是舊的。
這跟「一次性執行完就結束」的腳本完全不同——那種你每次執行都是重新讀取最新檔案,不會有這個問題。只有長駐服務才有「存檔≠生效」這個陷阱。
按步驟做
Step 1|先確認你改的東西是不是長駐服務
問自己:這個程式是不是你(或某個自動化流程)啟動一次之後就一直在背景跑,你透過網路請求或某種介面跟它互動?如果是,繼續往下。如果每次都是重新執行整支程式(例如一個一次性腳本),這篇可以跳過,你的 bug 大概真的在程式碼裡。
Step 2|找到一個能反映這個服務「現在狀態」的方式
不同類型的服務有不同的驗證方式,挑一個你的服務有的:
- 如果是 API 服務(像常見的 FastAPI/Flask/Express):打它自帶的 API 文件端點(很多框架會自動生成,例如
/docs或/openapi.json),看看裡面列出的路由/欄位跟你原始碼裡寫的是不是一致。 - 如果沒有這類端點:找一個你最近新增或修改過的功能,直接用最簡單的方式呼叫它一次,看回傳結果跟你原始碼裡寫的邏輯對不對得上。
- 如果完全不知道怎麼打:這是最適合問 AI 的地方,見下方「問 AI 咒語」。
Step 3|對比結果,判斷問題出在哪
- 如果服務回傳的東西跟你原始碼對不上(例如你明明加了新功能,服務卻說「找不到」)→ 問題是服務沒吃到新程式碼,直接跳 Step 4。
- 如果服務回傳的東西跟你原始碼吻合,但行為還是不對 → 這次是真的邏輯問題,回頭檢查程式碼是對的方向。
Step 4|重啟服務,再驗證一次
找到那個長駐服務的 process,停掉它,用啟動指令重新跑一次。重啟後,重複 Step 2 再驗證一次,確認這次它認得的東西跟你的原始碼一致了。
Step 5|不要只驗證你改的那一個功能,順手驗證受影響的其他功能
如果這個服務同時服務好幾個功能,重啟之後花一分鐘把其他相關功能也各測一次——因為既然服務重啟前是舊版本,代表這段時間所有依賴這個服務的功能都可能沒吃到最新修正,不是只有你剛剛在測的那一個。
你一定會踩的坑
- 以為「我剛剛才存檔,應該立刻生效」:存檔跟「服務吃到新程式碼」是兩件事,中間差了一個「重新啟動」的動作。很多開發框架有「自動重載」選項可以在開發階段打開,記得去查你用的框架/工具有沒有這個選項。
- 懷疑錯地方,浪費時間逐行重查程式碼:人的直覺是「東西壞了=我剛寫的東西有問題」,但長駐服務的坑往往不在邏輯層,而在「這段邏輯到底有沒有被執行到」這一層。永遠先確認「有沒有被執行到」,再去確認「邏輯對不對」,順序反了會白費很多時間。
- 只修好了問題本身,卻沒發現同一個服務底下其他功能可能也受影響:一個長駐服務通常同時扛著好幾個功能,如果它已經停滯很久沒重啟,代表所有這段時間新增/修改的東西都可能沒生效。修完記得把整個服務相關的功能都巡一輪。
一次真實案例裡,新功能怎麼測都失敗,五分鐘內用一個指令確認了「服務根本沒重啟過、還在跑更早期的版本」,而不是照著錯誤直覺去重寫本來就沒問題的程式碼。重啟後對所有受影響的功能逐一跑真實請求驗證,全數通過。
卡住時怎麼問 AI
把下面這段貼給 Claude/ChatGPT,換成你的實際狀況:
我在開發一個 [你的服務類型,例如:用 FastAPI 寫的後端 API / 用 Node.js 寫的伺服器]。
我剛剛修改了程式碼裡的 [你改了什麼,例如:某個函式/某個路由],
但測試時發現行為好像跟我改的不一樣。
請幫我:
1. 判斷我這個服務是不是「長駐執行」的類型(存檔後需要手動重啟才會生效)
2. 如果是,教我怎麼用最簡單的方式(例如打一個指令或端點)
確認這個正在跑的服務目前到底載入的是哪個版本的程式碼
3. 一步一步教我怎麼安全地重啟這個服務(我目前是用 [你怎麼啟動它的] 啟動的)
請用最簡單、我可以直接照做的步驟說明,不要假設我已經懂這些工具的進階用法。
如果 AI 回覆的指令跑起來報錯,直接把完整的錯誤訊息複製貼給它,再加一句「請一步一步教我,我是新手」,通常就能繼續往下解決。
一句話總結
改了程式碼卻沒生效時,別急著懷疑自己的邏輯——先花幾秒鐘確認那個長駐服務有沒有真的重新載入你的新版本,這一個習慣能省下大把回頭重查程式碼的時間。
這是踩坑實錄與 AI 工具實測系列的一部分。想收到後續完整 SOP,訂閱電子報。
支持這裡的內容:前往 Ko-fi 斗內