在此之前都是介紹透過 AI 處理從0到有的系統,但有時在公司會接手一個沒有文件、沒有環境說明的既有專案,往往比從零開始開發更具挑戰性。除了需要快速理解系統架構之外,還必須在最短時間內建立可執行的開發環境,並解決因版本升級或環境差異所衍生的各種問題。

這次我嘗試將 GitHub Copilot 作為主要協作工具,從分析專案、補齊文件、建立 Docker 開發環境,到排除執行時的錯誤,完整驗證 AI 在維護既有專案上的實際價值。

這篇文章將分享整個流程,以及我是如何一步一步完成以下工作:

  • 分析既有專案架構與技術棧
  • 自動整理並產生專案文件(README、Copilot Instructions)
  • 建立 Docker 本機開發環境
  • 解決登入帳號與密碼驗證問題
  • 排查 PHP 版本相容性造成的畫面空白問題
  • 完成修復並成功讓專案在本機正常運行

整個流程如下圖所示:

專案背景

本次使用的是一個既有 PHP Web 專案,最近剛好換電腦,有很多東西都重置了,所以就來試試。這個專案中並沒有完整的開發文件,並且也不是使用市面上常用的 framework,因此第一步便是透過閱讀程式碼來理解整體架構,包括:

  • 專案目錄結構
  • 路由與 Ajax 流程
  • 資料庫存取方式
  • 系統角色與權限
  • 使用的技術棧

在完成分析後,再利用 Copilot 協助整理成完整的 README,讓後續維護者可以更快速進入狀況。

建立可重現的開發環境

為了避免不同開發者之間的環境差異,我將整個專案 Docker 化,建立包含:

  • PHP + Apache
  • MySQL
  • 初始化資料庫
  • VirtualHost 設定

只需要一個 docker compose up -d –build,即可快速重建完整開發環境,大幅降低新成員加入專案的成本。

AI 不只是寫程式,更能協助除錯

建置完成後並非一路順利。

首先遇到的是登入問題,由於資料庫中的密碼採用 bcrypt 雜湊,無法直接登入,因此透過 Docker 容器產生新的 bcrypt Password Hash,再建立測試帳號完成驗證。

接著又遇到最棘手的問題──首頁完全空白,但沒有任何錯誤訊息。

透過逐步確認資料庫、模擬 HTTP Request、分析 HTML 回傳內容,最後定位到問題出在 PHP 8.2 對 count(null) 的行為變更,導致舊版程式在渲染過程中直接中斷。

只需將:

!is_array($func_list) && count($func_list) == 0

修改為:

empty($func_list)

便成功解決相容性問題,整個網站也恢復正常運作。

總結

這次最大的收穫,不只是成功將舊專案搬到本機,更驗證了 GitHub Copilot 在維護既有專案上的價值

它不只是協助撰寫程式碼,更能在以下幾個面向提供明顯幫助:

  • 快速理解陌生專案
  • 自動補齊專案文件
  • 建立標準化 Docker 環境
  • 協助分析錯誤原因
  • 提供修復建議並驗證結果

對於維護 Legacy System 而言,真正耗費時間的通常不是「寫功能」,而是「理解系統」與「找出問題」。透過 AI 的協助,許多原本需要數小時甚至數天的工作(ex: docker 建立、系統錯誤排查及建立相關文件),都能在更短時間內(從天到小時)完成,讓開發者能將更多心力放在真正有價值的功能開發與系統優化上。

原本有點擔心沒有 framework 的專案會造成 AI 的混亂,最後發現我錯了,AI 使用的方案還比我之前的還更好。希望這篇文章能提供給正在接手舊專案、或準備導入 AI 協作開發的工程師一些參考與靈感。