Claude Code + Cursor:30次實際開發經驗教會我的事
我追蹤了30次開發過程,比較單獨使用Claude Code、單獨使用Cursor以及兩者組合的表現。組合工作流程相較於單獨使用任一工具,實作時間大約縮短了40%,但前提是我必須將任務分配到各工具的強項上。1
TL;DR
Claude Code擅長終端機操作、多檔案變更和代理式任務委派。Cursor擅長行內自動完成、快速單檔編輯和即時程式碼建議。經過30次追蹤的開發過程——包括建構blakecrosley.com、我的Claude Code hook系統以及多個iOS應用程式——我發現了明確的分工:Claude Code負責廣度(架構、多檔案重構、測試、部署),Cursor負責深度(單檔實作、行內建議、視覺化差異檢視)。兩者的組合消除了強迫任一工具進入對方領域所帶來的情境切換開銷。
各工具的優勢所在
Claude Code的強項
| 能力 | 為何Claude Code勝出 | 我的實例 |
|---|---|---|
| 多檔案重構 | 讀取、規劃並編輯整個程式碼庫 | 在一次開發中重構了deliberation系統的8個Python模組 |
| 終端機操作 | 直接存取shell執行git、測試、建構 | 執行我的12模組部落格檢查器、pytest測試套件、git操作 |
| 代理式委派 | 子代理可平行處理獨立任務 | 3個探索代理同時蒐集CSS資料,而我專注撰寫 |
| 研究與探索 | Glob、grep和read工具用於理解程式碼庫 | 搜尋95個hook檔案以找出生命週期事件模式 |
| 自訂自動化 | Hooks、skills和commands實現工作流程自動化 | 95個hooks、44個skills自動執行品質與安全檢查 |
Cursor的強項
| 能力 | 為何Cursor勝出 | 我的實例 |
|---|---|---|
| 行內自動完成 | 打字時即時提供建議 | SwiftUI視圖實作,完成@Observable模式 |
| 單檔快速編輯 | 在編輯器中進行快速、精確的變更 | 在critical.css中微調CSS屬性 |
| 視覺化差異檢視 | 接受前可並排預覽變更 | 檢視產生的HTML模板變更 |
| Tab自動完成流程 | 無需離開編輯器即可接受/拒絕建議 | 填寫Python函式主體 |
三個實際工作流程範例
範例1:部落格品質系統(Claude Code → Cursor → Claude Code)
任務: 建構一個包含引用驗證的12模組部落格檢查器。
Claude Code(架構,45分鐘): 讀取現有的content.py,設計模組結構,建立blog_lint.py包含6個初始模組(元資料驗證、註腳檢查、程式碼區塊語言偵測),在blog-lint.py中連接CLI,執行初始測試。
Cursor(實作潤飾,20分鐘): 改進citation-no-url偵測的正規表達式,調整ONLINE_PATTERNS比對,新增學術論文引用與網頁參考的邊界案例處理。Cursor的行內自動完成在迭代正規表達式方面表現出色——我可以輸入部分模式並快速接受/拒絕建議,比向Claude Code描述模式更快。
Claude Code(驗證,15分鐘): 執行完整測試套件(77個測試),修復正規表達式改進導致的3個失敗,檢查所有33篇部落格文章,建立提交。
總計:80分鐘。 單獨使用Claude Code估計:100分鐘。單獨使用Cursor估計:150分鐘以上(Cursor在多檔案測試基礎架構方面力有未逮)。
範例2:iOS SwiftUI視圖(Cursor → Claude Code)
任務: 為Ace Citizenship建構間隔重複記憶卡片視圖。
Cursor(實作,30分鐘): 建構整個SwiftUI視圖:卡片翻轉動畫、進度指示器、答案揭示。Cursor對SwiftUI的行內自動完成很強,因為該框架具有一致的模式。用Tab完成@Observable、NavigationStack和修飾器鏈感覺很自然。
Claude Code(整合,10分鐘): 將視圖接入導航流程,新增SwiftData查詢,執行建構,修復視圖模型與資料模型之間的型別不匹配問題。
總計:40分鐘。 這個任務75%是單檔工作,因此Cursor承擔了大部分的重任。
範例3:Hook基礎架構(Claude Code主導)
任務: 建構具有產生預算追蹤的recursion-guard.sh。
Claude Code(100%實作): 這個任務完全是多檔案工作:讀取14個JSON設定檔、編輯hook腳本、更新session-start初始化、跨多個代理產生情境進行測試,以及用48個bash整合測試進行驗證。Cursor在此毫無價值——工作橫跨太多檔案且需要終端機操作(執行測試腳本、檢查hook輸出、驗證JSON設定載入)。
組合使用失敗的情境
失敗1:工具間的情境漂移
Claude Code進行檔案系統變更。Cursor在編輯器中看到這些變更。但Cursor的情境(.cursorrules、開啟的檔案、最近的編輯)並不知道Claude Code做出的架構決策。我曾遇過Cursor建議的模式與Claude Code剛建立的架構相矛盾,因為Cursor的MDC檔案沒有更新。
我的解決方法: 在Claude Code架構工作完成後,我會在切換到Cursor之前更新.cursorrules或相關的MDC檔案以反映新模式。這增加了2-3分鐘的額外開銷,但能防止Cursor與新架構產生衝突。
失敗2:重疊的檔案編輯
兩個工具都可以編輯同一個檔案。如果Claude Code修改了content.py,而我切換到Cursor去調整同一檔案中的某個函式,Cursor偶爾會基於編輯前的狀態提供建議(其索引尚未更新)。結果是:產生需要手動解決的衝突編輯。
我的解決方法: 在Claude Code編輯檔案後,在Cursor中關閉並重新開啟該檔案。或者如果需要多次編輯,就全程使用Claude Code處理整個檔案。
失敗3:終端機密集型任務不適合拆分
需要頻繁終端機互動的任務(除錯測試失敗、迭代shell腳本、執行建構)完全無法從Cursor受益。在除錯中途切換到Cursor只為做一行修改,視窗切換的開銷就超過了節省的打字時間。
我的原則: 如果任務需要超過3個終端機指令,就全程留在Claude Code中完成。
開發數據摘要
| 指標 | 單獨Claude Code | 單獨Cursor | 組合使用 |
|---|---|---|---|
| 多檔案任務(平均時間) | 45分鐘 | 90分鐘 | 50分鐘 |
| 單檔任務(平均時間) | 15分鐘 | 8分鐘 | 8分鐘 |
| 終端機密集型任務 | 30分鐘 | 不適用 | 30分鐘 |
| 情境設定開銷 | 2分鐘 | 1分鐘 | 5分鐘 |
| 架構+潤飾任務 | 60分鐘 | 80分鐘 | 40分鐘 |
組合工作流程在「架構+潤飾」類型的任務上優勢最為明顯——由Claude Code處理結構性工作,Cursor處理細節工作。組合工作流程每次任務增加3-5分鐘的情境切換開銷,這意味著10分鐘以下的任務不適合拆分。2
我目前的分工方式
| 任務類型 | 工具 | 理由 |
|---|---|---|
| 多檔案重構 | Claude Code | 跨程式碼庫讀取和編輯 |
| 撰寫測試與除錯 | Claude Code | 需要終端機執行測試 |
| Git操作 | Claude Code | 直接存取shell |
| SwiftUI視圖實作 | Cursor | 強大的行內自動完成 |
| CSS屬性微調 | Cursor | 編輯器中的視覺回饋 |
| 單一函式實作 | Cursor | Tab自動完成流程 |
| Hook/腳本開發 | Claude Code | 終端機密集型、多設定檔 |
| 部落格文章撰寫 | Claude Code | 多檔案檢查與驗證 |
| 正規表達式迭代 | Cursor | 更快的行內迭代 |
重點結論
給同時採用兩個工具的開發者: - 使用Claude Code處理任何涉及多個檔案、終端機指令或自主任務執行的工作 - 使用Cursor進行單檔編輯、行內自動完成和視覺化差異檢視 - 在架構變更後更新共享的情境檔案(CLAUDE.md、.cursorrules),以防止情境漂移 - 10分鐘以下的任務不適合拆分工具;情境切換的開銷會超過節省的時間
給評估AI工具的技術主管: - 這兩個工具服務於不同的工作流程階段;單獨評估任一工具會忽略組合使用的價值 - 追蹤您團隊工作中架構與潤飾的比例,以估算組合工作流程的效益