iT邦幫忙

鐵人檔案

2026 iThome 鐵人賽
回列表
Claude AI

用 AI Agent 重構一套無框架的 legacy PHP 系統 系列

接手一套原生 PHP、無框架、運作多年的 legacy 系統,嘗試讓 AI coding agent 參與重構。這系列記錄的不是「叫 AI 生成程式碼」的表面示範,而是一整套讓 AI 安全動手的方法論:怎麼建立分支基準與覆蓋率門檻、怎麼設計驗證機制抓出 AI 引入的迴歸、怎麼把 AI 的長期記憶用在團隊協作上。內容基於真實重構經驗,但已去識別化。

參賽天數 21 天 | 共 21 篇文章 | 2 人訂閱 訂閱系列文 RSS系列文
DAY 1

Day 01:AI 重構 legacy 系統的真正難點在哪裡

前言:不是「AI 會不會寫程式碼」的問題 「現在 AI coding agent 這麼強,重構 legacy 系統不就是叫它動手改就好了嗎?」 這大概是我開始這...

2026-08-31 ‧ 由 recca0120 分享
DAY 2

Day 02:Legacy 系統的典型樣貌——無框架、無測試、跨版本並存的痛

前言:「無框架」聽起來很簡單,為什麼反而更難重構? 「沒有框架不是應該更自由嗎?想怎麼改就怎麼改,哪來的複雜?」 這是我常聽到的另一個誤解。框架的價值從來不是「...

2026-09-01 ‧ 由 recca0120 分享
DAY 3

Day 03:沒有安全網的重構有多危險——一次 AI 引入迴歸的真實案例

前言:測試綠燈,真的代表安全嗎? 「測試都跑過了、CI 也是全綠,這樣總該可以合併了吧?」 這句話聽起來理所當然,但我在這次重構過程中學到一件事:測試綠燈只代表...

2026-09-02 ‧ 由 recca0120 分享
DAY 4

Day 04:建立重構的「基準線」——分支策略與覆蓋率門檻

前言:AI 說「這樣改沒問題」,你要拿什麼驗證? 「AI 都已經跑過測試了,測試都綠燈,這樣還不夠嗎?」 這句話聽起來很合理,但漏掉一個關鍵前提:綠燈只證明「現...

2026-09-03 ‧ 由 recca0120 分享
DAY 5

Day 05:PHP 版本相容性驗證——本機新版 PHP vs 正式環境舊版 PHP 的陷阱

前言:本機測試都綠燈了,還會有什麼問題? 「AI 在本機把測試都跑過一遍,全部綠燈,這樣總可以放心合併了吧?」 如果你也這樣想過,先別急著點頭。這套系統正式環境...

2026-09-04 ‧ 由 recca0120 分享
DAY 6

Day 06:與乾淨基準比對——把「本機環境雜訊」跟「真的迴歸」分開

前言:測試變紅了,是我改壞的,還是本來就這樣? 「跑測試,紅字,代表這次改動有問題」——這句話聽起來理所當然,但在一套運作多年、缺乏完整測試網的系統上,這個推論...

2026-09-05 ‧ 由 recca0120 分享
DAY 7

Day 07:為什麼要在獨立 subagent/子流程裡跑驗證迴圈

前言:驗證跟判斷,可以是同一個人做嗎? 「反正都是同一個 AI 在跑,驗證跟判斷一起做,效率不是更高嗎?」 昨天講完乾淨基準比對,這是個很自然的疑問——為什麼不...

2026-09-06 ‧ 由 recca0120 分享
DAY 8

Day 08:SQL 一律經過 Repository——把裸寫 SQL 的 legacy 程式碼收斂

前言:AI 看得懂 SQL,為什麼還要多包一層? 「AI 又不是看不懂 SQL,裸寫 SQL 讓它直接改,不是比多包一層 Repository 介面更快嗎?」...

2026-09-07 ‧ 由 recca0120 分享
DAY 9

Day 09:Repository 重構實戰——一個 Controller 直接查資料庫的案例

前言:道理都懂,動手時卡在哪裡? 「SQL 要收斂進 Repository,這個原則我聽懂了。但真的要動手改一個已經在正式環境跑好幾年的 Controller,...

2026-09-08 ‧ 由 recca0120 分享
DAY 10

Day 10:外部 API 呼叫的介面化——從裸 curl 到 PSR-17/PSR-18

前言:這段程式碼「沒有改行為」,你怎麼證明? 「AI 說它只是把這段呼叫外部 API 的程式碼重構了一下,邏輯完全沒變,可以直接合併嗎?」 如果這段程式碼是裸寫...

2026-09-09 ‧ 由 recca0120 分享