
系列:奇幻塔防開發實錄:用 Claude 打造一款有靈魂的塔防遊戲
今日工具:沒有新工具,只有回顧
今日進度:五個反思、三種讀者的建議、延伸挑戰清單,系列完結
Day 29 的最後一句是:「Claude 寫程式的部分幾乎沒讓我失望,讓我失望的都是我沒問的問題。」今天把它展開成五個反思。每一個都有前面 29 天的具體例子與數字,因為 Day 1 的第五條原則說了——沒數據就不寫——終章也不例外。
這篇不是感言。感言在最後一段,很短。
1. Claude Design 到 Claude Code 的落差在「意圖」,不在像素。 Day 7 的實驗:同一張對話框設計稿,只給 PNG 是 58% 可直接用、給 HTML 是 79%、HTML 加一份人寫的意圖說明是 91%。PNG 到 HTML 補的是數值,HTML 到意圖說明補的是狀態——「灰色選項要顯示需要薪火 ×2」這句話,任何設計工具的匯出格式裡都不存在。設計稿描述的是長相,程式需要的是行為;中間那 12 個百分點永遠要有人寫,而寫它的 15 分鐘是我 30 天裡報酬率最高的 15 分鐘之一。
2. worktree 的真實價值是「等待時間變成可用時間」,不是兩倍速。 四筆數據:−38%、−44%、+13%、−41%。三次成功的共同點是兩個任務碰的檔案不相交、而且各自有長等待(跑測試、terraform init、本機 net/http 模式的 hey 壓測);唯一的失敗(Day 13 實驗 3)是兩邊都改 router.go,慢 13% 還留下一個測試抓不到的 middleware 順序錯誤。Day 12 那句「省的是等待、不是注意力」到最後都成立:平行時我盯螢幕的時間一分鐘都沒少,少的是發呆。Day 14 還多發現一個代價——等待消失,思考的空檔也消失,實驗 2 那 39 分鐘我一次都沒停下來想架構。
3. 自訂 workflow 是護城河,因為它擋掉的是「合理的錯誤」。 Day 20 的 /ultracode 第三步,subagent 反證了假設 H2:MAX_DT 從 Day 15 就存在,掉幀不是漏擊的原因。如果沒有那一步,我原本要做的修改是把 MAX_DT 從 0.1 降到 0.05——一個看起來合理、對根因毫無幫助、而且會讓手機更卡的改動。六步驟裡真正值錢的不是「先寫測試」(每本書都這樣說),是「每個假設都要有人試著推翻」。Day 26 第二次用只花 24 分鐘,因為流程已經不需要意志力。它不是官方功能、也不該是——它長在我這個專案的傷口上。
4. Cowork 的邊界很清楚:擅長彙整與結構,不擅長需要跑程式驗證的事。 它做得好的三次:Day 23 把 3,000 列 CSV 變成曲線圖並抓出「splash 陣亡時還有 62 金幣沒花」、Day 25 從 QA 矩陣裡抓出兩句違反角色禁忌的對白、Day 29 從 30 份 day-log 算出「程式邏輯錯誤只占兩成」。三次都是「事實我有、但懶得整理」的工作。它做不了的也很明確:Day 23 我特別寫「不要給我建議數值」——因為它看不到模擬器,給的建議只能是手感;而 /sim 第一次跑就建議把飛行單位改成非飛行,正是那種手感。分析與決策分開,Cowork 站在分析那一邊。
5. AI 不會幫你做決策,它只會讓錯的決策做得更快。 三個例子。Day 1 第一次讓 Claude 直接規劃架構,十秒得到一份漂亮、完整、完全不屬於我的方案——改成讓它問我十個問題之後,才有了那五條原則。Day 5 的 ADR 也是同一招:Claude 當反方比當顧問有價值。反例是 Day 17:我為了「像箭」的直線感選了不追蹤的投射物,Claude 照做、做得很好,然後 Day 20 用 41 分鐘證明那個美術決定從來沒被數據檢驗過。Claude 執行決策的品質非常穩定,這反而讓「沒經過檢驗的決策」更危險,因為它們也會被漂亮地執行。
把五個反思裡出現的工具收成一張圖,就是這 30 天真正留下的資產盤點:

三層 CLAUDE.md 餵出三個自訂指令、/ultracode 底下掛兩個 subagent——這一排實線是它們真的解決的問題;虛線那一排更誠實:契約落差要靠 Day 21 的 contract test、設計決策要靠人跑模擬器看曲線、實機表現要靠 Day 19 真的拿手機出去測,沒有一個指令能替我做。
想學 Claude Code 的工程師
CLAUDE.md,而且寫「怎麼做」不寫「是什麼」(Day 6);寫完開一個新 session 抽考它。.claude/commands/ 的指令,第一版允許很陽春——Day 6 的 /ultracode 只有六行。想做獨立遊戲的人
data/*.json 定好之後,後端、前端、模擬器可以各走各的,Day 12 的平行開發完全建立在這上面。想在團隊導入 AI 工作流的人
/ultracode 開始,不要從「全公司的 AI 規範」開始;規則要從傷口長出來,不是從簡報。Enemy.progress 的單向前進假設要打破。durationMs 與 livesLeft,缺的是一條 GSI 查詢(或 DynamoDB Streams 彙總)與一個唯讀端點。/sim 現在只給建議;把「改一個數字 → 跑 200 場 → 看曲線」寫成一個 agent,讓它在「三種配置通關率都在 85–100% 之間」的約束下自己迭代,人只審最後的 diff。/ultracode 泛化成 plugin:抽掉專案特有的部分(reviewer 名稱、測試指令),留下六步驟與「每個假設要被反證」的骨架。terraform destroy → apply 重建演練:Day 29 那個 ⚠️。謝謝兩位陪我測第 4 波的朋友,謝謝 Day 19 那三支手機。謝謝讀到這裡的你——如果這 30 篇有任何一段讓你打開終端機試了一次,這個系列就值得。
30 天前我想驗證的那句話是「軟體開發只是 Claude 應用的其中一塊拼圖」。現在我的版本是:Claude 能把每一塊拼圖做得又快又好,但哪一塊該放哪裡、哪一塊根本不該存在,30 天裡沒有一次是它替我決定的。 這是我最想留下的東西。
五個反思、一句話:加速的是執行,不是判斷。Claude Design 缺意圖、worktree 換掉的是等待、/ultracode 擋的是合理的錯、Cowork 站在分析那邊、決策永遠在人手上——這五件事我不是從文件學到的,是從 31 個雷、4,365 分鐘、214 個 commit 裡撿回來的。
project/ monorepo:Vue 3 + Canvas 引擎、Go Clean Architecture API、Terraform 六個 module(foundation/compute/cdn/cicd/monitoring/waf)、四條 CI/CDCLAUDE.md、/ultracode、/sim、/review、兩個 subagent/ultracode、告警演練、月費表、~/emberhold-notes/retrospective.md
《奇幻塔防開發實錄:用 Claude 打造一款有靈魂的塔防遊戲》到此完結。初火還在,要塞交給你了。