想法與洞見
探索 AI 優先開發、編碼護欄和可處置架構。
AI 安全棧: types、contracts、property tests 與 mutation gates
如果你想讓 AI-generated code 能在正式環境站得住,光靠 code review 不夠。你需要一套從 type constraints 到 mutation testing 與 runtime containment 的分層安全棧。
AI-generated code 最大的危險,不是它總是錯的。 真正危險的是,它經常「看起來已經對得足夠可以 merge」。 這正是風險所在。明顯有問題的 code 往往會被擋住。真正會進正式環境的是那種看起來合理、能過幾個 happy-path tests、卻悄悄削弱關鍵 boundary 的實作。…
為什麼許多優秀的工程策略直到 AI 出現才真正變得划算
Design by contract、property-based testing、mutation testing、model checking 從來不是壞想法。真正的問題是它們長期需要太多 expertise 才能維持,而 AI 正在改變這筆帳。
軟體工程裡有很多方法,你一讀就會覺得「這本來就該這樣做」。 當然應該用 contracts 明確 function 能接收什麼、必須回傳什麼。當然 tests 不該只寫幾個人工挑選的例子,而應該驗證 properties。當然團隊不該把 coverage 當成品質代理,而應該真的去判斷 tests 能不能抓到…
Vibe coder 的 React Native App Lifecycle 指南
你的 app 在 dev 裡一切正常,但使用者午休後回來卻看到白畫面。這裡是能正確處理原生 lifecycle 的 resume status 模式。
你在 Cursor 裡做出了一個漂亮的 Expo app。Claude Code 生成了 auth flow、dashboard 和 settings screen。你把它發出去了。使用者也下載了。然後 DM 開始出現: "為什麼我午休後再打開 app 就是白畫面?" "為什麼我每天早上都得重新登入?" "為什麼我從…
為什麼你的 Vibe-coded React Native app 會在啟動時 crash(以及如何阻止它)
如果 optional SDK 用 core infrastructure 的方式初始化,它們完全可能在啟動時把 app 一起拖垮。這套 dependency tier system 能避免非關鍵工具把 production 也一起帶下水。
Vibe-coded mobile app 裡一個很常見的 launch failure 是:analytics、attribution、crash reporting 和真正 critical 的 service 被放在同一條初始化路徑上。如果這些 optional SDK 裡有一個在某個 device 或某種…
為什麼在 Cursor 裡用 NativeWind 做 Vibe coding,會在規模上拖垮你的 React Native app
你用 Cursor 一個週末就交付了 MVP,但現在只改一個 brand color 就會波及 47 個檔案。這套 styling contract 可以止血。
你打開 Cursor,輸入一段 prompt,看著 Claude Code 在幾秒內生成一整套 React Native UI。Flex layout、圓角 button、color theme,全都一次就跑起來。你把它送上 TestFlight。使用者開始下載。這是第一週。 到了第六週,你只是想改一個 brand…
為什麼不該讓 Claude Code 審你的程式碼(以及該改用什麼)
LLM code review 既不確定、又慢,還會漏掉架構違規。這套 O(1) guard stack 才真的能讓你的程式碼保持乾淨。
我認識的一位開發者,把 Claude Code 設成 CI 裡的程式碼 reviewer。「就讓 Claude 幫我看 PR,」他對我說,「它會抓到一些我可能漏掉的東西。」我請他把同一個 PR 丟給 Claude 跑兩次。 第一次 review 說 error handling 看起來很完整。第二次 review…
刪掉,不要遷移:Vibe-coded React Native app 的重構策略
重構 AI 生成程式碼,等於去逆向推斷一個你從來沒有擁有過的意圖。這個以介面為中心的 replacement pattern,能讓刪除變得安全。
在生物學裡,autotomy 指的是動物主動捨棄已經不再有用的身體部位。蜥蜴會斷尾來逃離掠食者。那條尾巴曾經有用,但想活下來,就得放手。之後還會再長出一條新的。 這就是你應該如何看待 Vibe-coded React Native app 的重構。 在 AI-coded 的早期 MVP 裡,第一版 auth flow…
Cursor 和 Claude Code 如何毀掉你的 React Native 架構(以及如何修好它)
AI 生成的 auth 在新 feature 把手伸進錯誤 service 之前,看起來都沒問題。這套 interface-driven 架構能避免 vendor swap 和功能迭代一起打壞 login。
Vibe-coded React Native app 裡一個反覆出現的 failure mode 是:新 feature 直接 import 現有 service,伸手去改不屬於自己的 state,然後把無關的 flow 一起打壞。auth 很容易成為受害者,因為它往往會變成所有人的 shared…
為什麼 deep link 會讓 Vibe-coded React Native app 直接 crash(以及如何用 Zod 驗證它們)
deep link、push payload、shared URL 全都是 untrusted input。這裡會說明如何在 Expo Router boundary 就先 validate 它們,別讓壞 params 進到 screen。
Vibe-coded app 裡的 deep link bug,通常都從一些很無聊的 input 問題開始:malformed user ID、過期的 campaign URL、push payload 裡缺少的 enum 值。接著 app 把這些 input 當成可信資料,screen 就會在 happy-path…
useSyncExternalStore:把你的 Vibe-coded app 從 state bug 裡救出來的 React Hook
別再寫那些會 memory leak、會漏掉 state update 的 useEffect subscription 了。這是 React 18 用來打造 bulletproof external state 的 pattern。
我以前寫 network detection hook 的方式,和大多數 vibe coder 沒什麼兩樣:一個 去 subscribe NetInfo,在 connectivity 改變時更新 state,然後祈禱一切順利。它在 development 裡能跑,在 production 裡會出事。 race…
從 Vibe coding 到 production:為什麼你的 AI 生成 React Native app 需要護欄才能 scale
AI 可以很快把你的 React Native MVP 推上線,但如果沒有 guardrails,每一個小改動都可能打壞無關的 flow。這裡會說明 declarative constraints 如何避免速度直接變成脆弱性。
Vibe coding 的前半段,效率高得離譜。Cursor 和 Claude Code 可以飛快生成 login、dashboard、settings、push notifications,快到一位 solo founder 幾天內就能把 MVP 推上線。 問題通常出在第二輪或第三輪修改。settings 裡一個小…