Cursor Composer 將 AI 輔助開發從傳統局部的「單檔案程式碼自動補全」,推進到了具備全庫理解與自主協同能力的「工程級智能體(Agent)」層次。在複雜的軟體專案中,開發者不再需要手動在各個檔案之間複製貼上程式碼,而是利用 Composer 協調處理跨層級的功能實作、架構重構與跨模組協定同步。
然而,跨越整個程式庫(Repository)的批次修改伴隨著極高的架構偏離風險。經驗豐富的資深工程師在使用 Composer(快捷鍵 Cmd + I 或 Ctrl + I)時,通常會屏棄「盲目生成」的習慣,嚴格遵循三階段工程紀律:**規劃階段(Plan)**確立上下文與規範邊界、**生成階段(Generate)**驅動自癒式的原子修改、**審查階段(Review)**運用差異比對、檢查點與自動化工具嚴格把關。
基礎準備:建立架構邊界與精準上下文
若缺乏對專案架構與約定的全域認知,AI 生成的跨檔案程式碼往往會引發嚴重的相容性問題。工程師在啟動 Composer 前,會先透過規則與上下文符號建構明確的約束條件。
1. 透過 Cursor Rules(.cursor/rules)固化專案規範
為了避免在每次對話中重複提示編程規範與架構慣例,團隊通常會在程式庫中配置 .cursor/rules/*.mdc(或根目錄的 .cursorrules):
- 通用常駐規則(Always-on Rules):定義技術棧基準,例如嚴格 TypeScript 模式、Python 3.12+ 現代語法、特定錯誤處理模式及單元測試規範。
- 檔案路徑規則(Glob-scoped Rules):依據目標路徑自動套用約定。例如,匹配
src/api/**/*.ts的規則強制要求使用 Zod 進行請求驗證與結構化日誌;匹配src/components/**/*.tsx的規則則要求遵循專案專屬的 UI 元件庫與無障礙(a11y)標準。
透過這些規則,Composer 在新增檔案或修改現有呼叫端時,能自動遵守既有的架構契約。
2. 使用 @ 符號進行手術刀式的上下文工程
將過多無關檔案灌入模型會造成「上下文膨脹(Context Bloat)」,不僅消耗大量 Token,還容易引發模型幻覺。熟練的工程師會精準選用 @ 符號:
@codebase:觸發全專案庫的語意索引搜尋。在接手陌生模組、追查依賴圖譜或分析跨服務呼叫鏈時最為實用。@file與@folders:精確掛載核心依賴(例如@schema.prisma、@authService.ts或共用型別目錄),確保模型以權威定義為依據。@docs:直接引用第三方框架或工具庫的最新官方文件,防止模型使用過期或已廢棄的 API。@git:注入最近的 Commit 歷史或分支差異,使 Composer 能精準對齊目前的 PR 開發進度。
第一階段:運用 Plan Mode(Shift + Tab)進行架構規劃
對於涉及資料庫遷移、跨層呼叫或大型重構等複雜任務,直接開始生成程式碼往往會導致難以收尾的邏輯衝突。工程師的第一步通常是切換至 Plan Mode。
啟動與執行規劃模式
在 Composer 輸入框中按下 Shift + Tab 即可切換至 Plan Mode:
- 程式庫自主探索:智能體深入檢索受影響的模組、介面定義與設定檔,評估改動對全庫的連鎖衝擊。
- 主動提出關鍵問題:若業務邏輯存在邊界模糊、向下相容性不明或缺少例外處理定義,Composer 會主動提問以釐清需求,而非擅自假設。
- 產出結構化實作計劃:模型會輸出一份詳盡的 Markdown 規劃草案,包含:
- 預計建立、修改或移除的具體檔案清單;
- 實作的先後順序(例如:先執行資料庫遷移與定義型別,再撰寫業務服務層,最後改寫 API 端點與前端呈現);
- 潛在的破壞性改動(Breaking Changes)與相應的自動化測試驗證方案。
工程師審核並修正計劃
工程師在此時扮演主架構師角色,審閱並調整 Markdown 方案:刪減不必要的檔案改動、調整介面命名、並插入中間驗證檢查點(例如要求在第二步驟後執行型別檢查)。雙方確認無誤後,才正式啟動程式碼生成。
第二階段:協同生成多檔案變更並落實自我修復
規劃確定後,Composer 進入執行階段。在現代 Cursor 架構中,Composer 作為自主工程智能體,能跨越多個檔案並搭配終端機工具鏈共同作業。
1. 跨層級協調生成
相較於傳統單檔編輯器,Composer 能夠在單一工作階段中維持跨系統層級的一致性:
- 資料庫層:產生 Migration 遷移腳本並同步 ORM 模型;
- 服務與領域層:實作商業邏輯,更新方法簽章與匯出的介面宣告;
- 路由與控制器層:建立 API Endpoint,掛載中介軟體(Middleware)與權限驗證;
- 前端呈現層:調整 UI 元件、更新資料抓取 Hook 與狀態管理邏輯;
- 測試套件:同步補充對應的單元測試與整合測試案例。
所有待變更檔案會列入佇列,開發者可在浮動面板、側邊攔或全螢幕編輯器模式下即時監控進度。
2. 終端機工具整合與自愈循環(Self-Healing Loop)
Composer 具備直接執行本機終端機指令的權限,能形成即時的反饋閉環:
- 靜態型別檢查:智能體可自動執行
tsc --noEmit、mypy或cargo check,驗證修改是否破壞了現有的型別合約。 - 執行測試與 Linter:自動觸發
npm test、pytest或程式碼風格檢查。 - 自動修正錯誤:一旦編譯或測試失敗,Composer 能即時讀取終端機輸出的錯誤日誌與堆疊追蹤(Stack Trace),定位出衝突檔案並修正程式碼,重複此過程直到所有檢驗通過。
3. 將大型任務拆解為原子節點
工程師會避免使用一段模糊的指令強行修改數十個檔案,而是依循規劃計劃分步驅動:
- 節點 1:「定義新的資料結構並匯出 TypeScript 型別。」(驗證型別檢查無誤)
- 節點 2:「實作資料庫服務層方法並通過單元測試。」(驗證測試通過)
- 節點 3:「重構 API 路由並更新前端各調用點。」(完成全域建置)
這種分步推進能確保模型注意力不被分散,並讓後續的差異審查維持在清晰可控的規模。
第三階段:審查差異、檢查點復原與全面驗證
多檔案 AI 生成的最大潛在風險在於細微的程式碼迴歸(例如無意中漏掉邊界判斷、修改了預設值或引入非預期的套件)。嚴密的驗證流程是確保系統穩定性的關鍵。
1. 細粒度差異對比(Diff Review)
當 Composer 完成一輪變更後,會呈現多檔案的差異對比介面:
- 逐檔細查:工程師應依序檢查每個被修改檔案的並排(Side-by-side)或行內差異;
- 局部接受或拒絕:系統支援針對單一檔案或單一程式碼區塊執行
Accept或Reject,而非盲目點擊「全部接受(Keep All)」; - 即時修正提示:若某個檔案的實作有瑕疵,工程師可直接在當前對話中給予修正指令(例如:「
payment.ts中的錯誤請使用統一的BusinessException封裝」),Composer 會針對性地修訂該檔案。
2. 運用檢查點(Checkpoints)作為安全防護網
在每一輪變更生成前,Composer 會自動為工作區建立 檢查點(Checkpoint) 快照:
- 若模型在自我修復過程中越改越亂,或走入了錯誤的技術方向,工程師可直接點擊 Restore Checkpoint;
- 工作區檔案會瞬間復原到該輪生成前的純淨狀態,同時完整保留對話紀錄,讓工程師能調整提示詞重新出發。
3. 執行 Cursor Agent Review
在正式將程式碼納入 Git 暫存區前,工程師可啟動 Cursor 內建的 Agent Review 功能:
- 快速審查(Quick Review):檢查語法完整性、未使用的引用變數與基本程式碼邏輯缺陷;
- 深度審查(Deep Review):針對整體變更進行深度的語意與架構掃描,檢查跨模組介面契約、潛在迴歸漏洞與安全風險。
4. Git 版本控制與原子化提交
AI 僅是輔助工具,Git 才是軟體資產的最終防線:
- 工程師透過終端機執行
git status與git diff,確認沒有殘留多餘的臨時檔案或機敏設定; - 配合預先規劃的階段,進行原子化(Atomic)的 Git Commit,維持乾淨的提交歷程。
最佳實踐重點整理
| 階段 | 建議做法 | 應避免的常見錯誤 |
|---|---|---|
| 準備階段 | 設定 .cursor/rules,並利用 @file / @folders 精確注入上下文 | 不論問題規模大小皆濫用 @codebase,導致上下文雜訊過多 |
| 規劃階段 | 啟用 Plan Mode(Shift + Tab),確認跨檔案依賴與實作步驟 | 缺乏規劃即直接要求 AI 進行全庫大量檔案修改 |
| 生成階段 | 授權終端機自動執行編譯器與測試檢查,發揮自癒修復優勢 | 忽略終端機報錯,在已有編譯錯誤的基礎上繼續疊加新需求 |
| 審查階段 | 逐一檔案檢驗 Diff,在方向偏差時善用 Checkpoints 一鍵復原 | 不經檢視直接點選全部接受,忽略隱藏邏輯錯誤 |
| 驗證階段 | 提交前執行 Agent Review(Deep)並於本地跑完完整測試套件 | 盲目相信 AI 生成結果,未經本地測試即推送到遠端分支 |