iT邦幫忙

鐵人檔案

2026 iThome 鐵人賽
回列表
Claude AI

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

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

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

Day 11:廠商 API 遷移實戰——legacy 接線如何拆成獨立 package

前言:介面化一支函式很簡單,一整家廠商呢? 「昨天講的 PSR-17/18 介面化,聽起來就是把一支函式包一包,套用到整套廠商接線應該也差不多吧?」 如果只有一...

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

Day 12:package 隔離規則——為什麼廠商 package 不能依賴外層專案的 vendor

前言:反正都在同一個 repo,共用套件不是很正常嗎? 「廠商整合的 package 就放在專案裡面,外層專案已經裝了一堆套件,package 直接拿來用不是很...

2026-09-11 ‧ 由 recca0120 分享
DAY 13

Day 13:依賴注入容器的陷阱——單例快取了不該快取的物件

前言:這段程式碼在正式環境跑了三年都沒事,怎麼會有 bug? 「這個類別已經在正式環境穩定跑了三年,你確定它有問題?」 這是我請 AI 修一個 DI 容器單例的...

2026-09-12 ‧ 由 recca0120 分享
DAY 14

Day 14:型別提示具體類別 vs 介面——DI 容器 autowire 出空殼的真實案例

前言:物件建立成功,代表它是對的嗎? 「這個物件都能正常 new 出來、程式也沒噴任何錯誤,代表這個依賴注入設定是對的吧?」 答案是:不一定。今天要講的這個陷阱...

2026-09-13 ‧ 由 recca0120 分享
DAY 15

Day 15:數值精度——為什麼金額運算要求強制使用 bcmath

前言:這條規則 AI 明明知道,為什麼還是會忘記套用 「金額運算要用 bcmath,不要用浮點數」——這條規則寫在專案規範裡,隨便問哪個 AI coding a...

2026-09-14 ‧ 由 recca0120 分享
DAY 16

Day 16:讓 AI 記住「這個專案的規矩」——CLAUDE.md 與 skill 的分工

前言:規則寫給 AI 看,但寫在哪裡才有用? 「這條規則我明明寫在專案文件裡了,AI 怎麼還是沒套用?」 如果你也遇過這種情況,問題往往不在「有沒有寫」,而在「...

2026-09-15 ‧ 由 recca0120 分享
DAY 17

Day 17:Skill 設計實戰——把一次性的重構經驗變成可重複套用的流程

前言:規則講過一次,AI 下次還會忘記嗎? 「昨天才糾正過 AI 一個錯誤判斷,今天換個任務,它是不是又會犯一樣的錯?」 會的——如果那個教訓只留在昨天那次對話...

2026-09-16 ‧ 由 recca0120 分享
DAY 18

Day 18:AI 的持久記憶系統——user/feedback/project/reference 四種記憶類型

前言:不是每件事都值得寫成 skill 「昨天講完怎麼把一次性踩坑經驗提煉成 skill,那是不是以後每件事都該往 skill 裡塞?」 不是。skill 是給...

2026-09-17 ‧ 由 recca0120 分享
DAY 19

Day 19:從「被使用者糾正」到「記住規則」——feedback 記憶怎麼運作

前言:記住「使用者不喜歡什麼」,真的有用嗎? 「AI 被糾正過的事情,記下來下次不要再犯不就好了嗎?」 聽起來理所當然,但真正動手設計這套記憶機制時,會發現「記...

2026-09-18 ‧ 由 recca0120 分享
DAY 20

Day 20:記憶會過期——怎麼避免 AI 依賴已經失效的舊資訊

前言:AI 說「我記得」,是好事還是壞事? 「AI 有長期記憶,不用每次都重新解釋專案背景,這樣效率不是更高嗎?」 效率確實更高——直到那份記憶跟現實脫節的那一...

2026-09-19 ‧ 由 recca0120 分享