你上一次寫程式,是什麼時候「真正」在寫,而不是在指揮一個 AI 幫你寫?
如果這個問題讓你愣了一下,那你並不孤單。我們正處於一個奇異的轉折點:軟體開發的定義,正在從「親手建構」變成「精準指揮」。這不是未來,這是現在。在 Y Combinator 最新的一集訪談中,Conductor 的 CEO Charlie Holtz 毫不掩飾地揭開了他自己的 AI 編程工作流程——一個極度高效、甚至有點「駭客」風格的生產力機器。但在他流暢的示範背後,藏著一個讓所有工程師都必須正視的真相:如果你還在用 2022 年的方式寫程式,你已經落伍了。
這篇文章將拆解 Charlie Holtz 的 AI 編程心法,把那些看似炫技的流程,提煉成你立刻能用的核心要點。準備好接受震撼了嗎?我們開始。
要點一:AI 不是工具,是你的「即時編譯器」
多數人用 AI 寫程式的方式,還停留在「問問題、拿答案、複製貼上」的階段。這就像你用一台超級電腦來算 1+1——不是不行,但完全浪費了它的潛力。
Charlie Holtz 的觀點更激進:AI 不該是你的搜尋引擎,它應該是你的即時編譯器。在他的工作流程中,他不會停下來問 AI「這段程式碼怎麼寫」,而是直接把一個半成品、甚至是一個錯誤的程式碼片段丟給 AI,然後說:「幫我把這個修好,讓它跑起來。」
這背後的核心邏輯是:人類負責意圖,AI 負責語法。
傳統開發流程中,你花 80% 的時間在處理語法錯誤、API 文件查詢、框架配置——這些全是「低階的機械勞動」。Charlie 的做法是,把這些全部外包給 AI,自己只保留 20% 的精力在「這支程式到底要實現什麼功能」的純粹思考上。
「我發現,當我停止試圖『教』AI 如何寫程式,而是開始『告訴』它我要什麼結果時,我的生產力暴增了十倍。」—— Charlie Holtz
這不是偷懶,這是策略。當你把語法細節交給 AI,你的大腦就能解放出來,專注在更高層次的系統設計與商業邏輯。這才是 AI 時代真正的「槓桿」。
要點二:你不需要「最好的 AI」,你需要「最快的循環」
市面上充斥著各種 AI 編程工具:GitHub Copilot、Cursor、Claude、GPT-4… 每個都號稱最強。但 Charlie 的選擇標準非常務實:誰的回饋循環最快,誰就是最好的。
在他的示範中,他反覆強調一個概念:「延遲就是生產力的殺手。」 當你在編寫程式碼時,中斷 30 秒去等 AI 生成回應,你的心流就斷了。斷了的心流,需要 15 分鐘才能重新接上。這不是感覺問題,這是認知科學。
因此,他偏好的工具不是因為它寫的程式碼最優雅,而是因為它能在一秒內回應。他使用的設定是:
- 主要編輯器: 一個高度整合 AI 的輕量級編輯器(類似 Cursor 或 Windsurf 的變體)
- 核心原則: 所有 AI 互動必須在編輯器內完成,絕不切換到瀏覽器去開 ChatGPT
- 關鍵技巧: 使用客製化的快捷鍵,一鍵將當前檔案或選取區塊送進 AI,並直接將結果插入程式碼
這聽起來很簡單,但要做到極致,需要你徹底改變工作習慣。大多數人還在「複製 → 貼上 → 切換視窗 → 等待 → 複製 → 貼上」的循環中浪費時間。Charlie 的做法是讓 AI 變成編輯器的一個原生功能,像自動補全一樣自然。
數據會說話: 根據他的經驗,這個「零切換」的工作流程,讓他每天的「有效編碼時間」從 4 小時暴增到 8 小時以上。不是他工作更久,而是他不再把時間浪費在等待和切換上。
要點三:Prompt 的藝術不在「詳細」,在「脈絡」
很多人以為給 AI 的提示詞(Prompt)越長越好,最好把整個專案的 README 都貼上去。Charlie 對此嗤之以鼻。
他的觀點是:AI 不是你的助理,它是你的「極度專注但極度無知」的實習生。 你給它的脈絡太多,它會迷失;你給的太少,它會亂猜。
他的秘訣是建立一個「脈絡層級系統」:
- 全局脈絡(Global Context): 放在專案根目錄的一個
ai_context.md檔案,裡面寫明這個專案的整體架構、使用的技術棧、編碼風格偏好。AI 工具通常會自動讀取這個檔案。 - 檔案級脈絡(File Context): 在每個檔案開頭用註解寫明這個檔案的職責。例如:
// 這個模組負責處理使用者認證,不應該包含任何 UI 邏輯。 - 即時脈絡(Instant Context): 當你要 AI 改動某段程式碼時,只選取那幾行,並提供一句話的指令。例如:
將這個函式改成非同步,並加入錯誤處理。
這個系統的威力在於:你讓 AI 知道「邊界」,而不是「路徑」。 你告訴它「不能做什麼」,遠比告訴它「要做什麼」更有效。
實戰案例:在訪談中,Charlie 示範了一個重構任務。他沒有說「幫我重構這個類別」,而是選取了一個方法,然後說:「這個方法違反了單一職責原則。幫我把它拆成兩個方法,並在呼叫端更新。」AI 不僅正確拆分了,還自動產生了單元測試。為什麼?因為全局脈絡告訴了 AI 這個專案使用 Jest 框架,檔案級脈絡告訴了 AI 這個類別的邊界,而即時脈絡給了明確的任務邊界。
要點四:測試不再是「驗證」,而是「規格」
這可能是最反直覺的一點。Charlie 的工作流程中,測試程式碼的優先級,高於功能程式碼。
傳統思維是:先寫功能,再寫測試來確認功能正確。Charlie 的做法是:先寫測試,然後讓 AI 根據測試來生成功能程式碼。
為什麼?因為測試是一種「可執行的規格書」。當你寫下:
expect(add(2, 3)).toBe(5);
你其實是在對 AI 說:「我需要一個叫做 add 的函式,它接受兩個參數,並回傳它們的和。」這比任何文字描述都精確。
他稱之為 「測試驅動開發(TDD)的 AI 版本」。但這裡的 TDD 不是為了確保程式碼品質(雖然那是一個副產品),而是為了減少 AI 的幻覺空間。當 AI 看到一個測試案例,它必須通過這個測試,它的輸出就會被嚴格限制在一個可驗證的範圍內。這大幅降低了 AI 生成垃圾程式碼的機率。
「當我給 AI 一個測試,我就把它關進了籠子裡。它可以在籠子裡亂跳,但絕對跑不出籠子。」—— Charlie Holtz
這個做法還有一個隱藏好處:當你的測試寫得夠好,你幾乎不需要手動除錯。 因為 AI 在生成功能程式碼的同時,你已經用測試定義了所有成功路徑。如果 AI 寫錯了,測試會立刻告訴你哪裡錯了,而且通常 AI 自己就能根據測試失敗的訊息來修正。
要點五:版本控制的「終局之戰」——讓 AI 幫你寫 Commit
最後一個要點聽起來像小事,但 Charlie 認為這是生產力提升的最後一塊拼圖:讓 AI 自動生成語義化的 Git Commit 訊息。
你可能覺得這很 trivial,但仔細想想:你一天寫了多少次 git commit -m "fix bug"?這種垃圾訊息在一個月後對你完全沒有意義。但如果你能養成習慣,讓 AI 分析你的變更內容,並生成像 refactor(auth): extract token validation logic into a separate middleware 這樣的訊息,你的專案歷史就會從「垃圾堆」變成「一本書」。
Charlie 的做法是設定一個 Git Hook,在每次 commit 之前,自動將 diff 送給 AI,並要求它生成一個符合 Conventional Commits 規範的訊息。他只需要確認或微調即可。
這看似只節省了 30 秒,但它的真正價值在於長期可維護性。當你三個月後回頭看一個 commit,你能立刻知道當時改了什麼、為什麼改。這讓程式碼審查(Code Review)和回溯(Revert)變得極度高效。
核心觀點匯總表
| 要點 | 傳統做法 | Charlie Holtz 的 AI 做法 | 核心差異 |
|---|---|---|---|
| AI 角色 | 搜尋引擎 / 程式碼產生器 | 即時編譯器 / 語法處理器 | 從「問答案」變成「下指令」 |
| 工具選擇 | 追求功能最強 | 追求回饋循環最快 | 心流連續性比模型能力重要 |
| 提示詞策略 | 寫長篇大論的 Prompt | 分層脈絡(全局/檔案/即時) | 告訴 AI 邊界,而非路徑 |
| 測試角色 | 功能寫完後的驗證步驟 | 功能寫作前的可執行規格 | 測試成為 AI 的「行為籠子」 |
| 版本控制 | 手寫垃圾 Commit 訊息 | AI 自動生成語義化訊息 | 將專案歷史變成可讀文件 |
總結:你該如何開始?
看完這五個要點,你可能覺得有點 overwhelm。沒關係,你不需要一夜之間全部做到。Charlie 本人也是花了數個月才迭代出這個流程。
但有一件事你現在就可以做:明天開始,強迫自己在編輯器內完成所有 AI 互動。 關掉瀏覽器上的 ChatGPT 分頁,學會你常用編輯器的 AI 快捷鍵。就這一個改變,就能讓你感受到生產力的質變。
接下來,你可以逐步導入測試優先和脈絡分層。這不是一個關於「工具」的故事,這是一個關於「工作哲學」的故事。AI 不會取代工程師,但懂得指揮 AI 的工程師,會取代不懂的工程師。
最後,留給你一個值得深思的問題:
如果 AI 可以幫你寫出 90% 的程式碼,那剩下的 10%,你打算用來做什麼?
是繼續跟語法搏鬥,還是開始思考那些真正值得你花費腦力的問題?答案,決定了你在下一個十年,是駕馭浪潮,還是被浪潮淹沒。