想法与洞见

探索 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 指南

你的应用在 dev 里一切正常,但用户午休后回来却看到白屏。这里是正确处理原生 lifecycle 的 resume status 模式。

你在 Cursor 里做了一个漂亮的 Expo app。Claude Code 生成了 auth flow、dashboard 和 settings screen。你把它发出去了。用户也下载了。然后私信开始出现。 “为什么我午休后再打开就是白屏?” “为什么我每天早上都得重新登录?” “我从 Instagram…

为什么你的 Vibe-coded React Native app 会在启动时崩掉

如果 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。用户开始下载。这是第一周的故事。 到了第六周,你只是想改一个…

为什么不该让 Claude Code 审你的代码(以及该用什么替代)

LLM code review 既不确定、又慢,还会漏掉架构违规。这套 O(1) guard stack 才真的能让你的代码保持干净。

我认识的一位开发者,把 Claude Code 设成 CI 里的代码 reviewer。「就让 Claude 帮我看 PR,」他对我说,「它会抓到一些我可能漏掉的东西。」我请他把同一个 PR 丢给 Claude 跑两次。 第一次 review 说 error handling 看起来很完整。第二次 review…

通过替换来重构:一种新的思维模型

别再执着于保留旧代码。开始为删除而设计。Autotomy 模式如何让模块安全可替换。

开发者天生有一种想保留旧代码的冲动。我们重构、优化、小心迁移。但如果这种本能本身就是错的呢? 在生物学里,autotomy 指的是动物主动舍弃身体的一部分,比如蜥蜴为了逃生会断尾。尾巴原本有用,但为了活下来,它必须放手。之后新的尾巴还会长出来。 在 AI-coded 的早期 MVP 里,第一版 auth flow…

Cursor 和 Claude Code 是怎么毁掉你的 React Native architecture 的

AI 生成的 auth 看起来没问题,直到一个新 feature 把手伸进了错误的 service。下面解释这套 interface-driven architecture 如何避免 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

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 了。这里是构建 bulletproof external state 的 React 18 pattern。

以前我写 network detection hook 的方式,和大多数 vibe coder 没什么区别:用一个 去 subscribe NetInfo,在 connectivity 变化时更新 state,然后希望一切顺利。它在 development 里能跑,在 production 里会出事。 race…

为什么 AI 生成的代码需要护栏

AI 可以很快把你的 React Native MVP 推到线上,但如果没有 guardrails,每一个小改动都可能打坏无关 flow。下面解释 declarative constraints 如何避免速度直接变成脆弱性。

Vibe coding 的前半段会让人觉得效率离谱地高。Cursor 和 Claude Code 能飞快生成 login、dashboard、settings、push notifications,快到一个 solo founder 几天内就能把 MVP 推上线。 问题往往出在第二轮或第三轮修改。settings…