想法与洞见

探索 AI 优先开发、编码护栏和可处置架构。

在 AI 时代,代码评审会变成规格评审

当 AI 能从规格生成实现、测试和 contracts 时,人类最有杠杆效应的工作会前移到上游。最需要被严格审视的,是规格本身。

如果你已经用 AI 连续交付了几周以上,你大概认识这种感觉。 你打开一个 PR。代码够干净,命名也还过得去,测试也有。表面上看不出哪里明显坏了。可你还是会觉得哪里不太对。 也许 boundary 有点发虚。也许 contract 只是被默认存在,却没有被明确写出来。也许 happy path…

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 的实现。…

陨石开发真的存在。你的代码库不必跟着一起塌

这个梗好笑,是因为很多团队确实活在“陨石开发”里:不断变化的目标、固定期限和半成型范围一起砸下来。Autotomy 不能修复幻想式规划,但它可以让开发继续往前走。

在中文语境里,它更常被直接叫做「陨石开发」;这个说法本来就带着日文工程圈里 Meteo Fall 的梗味。终点先宣布,站点中途再改,预算默认你会想办法吞下,而工程团队需要在列车已经“快要发车”时继续铺轨。 这个工作流之所以做成梗会好笑,是因为现实团队里它真的一直在发生。…

Stanford CS146S 对 AI coding 的判断是对的。缺的课程是架构

这篇对 Stanford CS146S 的评析认为,它准确看到了 AI coding 的转向,但真正决定长期质量的仍是 AI architecture:系统是否可替换、可约束、可持续演进。

Stanford 的课程代码 ,课程全名是 The Modern Software Developer,由 Mihail Eric 授课,是一门在 2025 年秋季首次开设的课程。想看课程的官方概览和 syllabus 细节,可以直接访问官方课程站点…

为什么很多优秀的工程策略直到 AI 出现才真正变得划算

Design by contract、property-based testing、mutation testing、model checking 从来不是坏思路。真正的问题是它们长期需要太多专业判断才能维持,而 AI 正在改变这笔账。

软件工程里有很多方法,你一读就会觉得“这当然应该这么做”。 当然应该用 contracts 明确 function 能接收什么、必须返回什么。当然 tests 不该只写几个人工挑选的例子,而应该验证 properties。当然团队不该把 coverage 当成质量代理,而应该真的去判断 tests 能不能抓到…

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

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

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

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…