00:00:00在 2026 年 4 月的今天,随着 AI 领域发生的一切,
00:00:23以及 AI 模型、甚至更重要的 AI 代理工具(如 Cloud Code 和 Codex 等)的进步,
00:00:31像你我这样的开发者对技术栈的选择究竟有多重要?
00:00:42我制作过关于这些工具的视频,如果你感兴趣,我还有一些关于 Cloud Code 和 Codex 的热门课程。
00:00:57但今天我想深入探讨并分享观点的问题是:开发者的技术栈选择有多重要?
00:01:16它们依然重要吗?还是我们应该让 AI 来决定?或者更相关的,我们是否应该基于“即将使用 AI”这一事实来做决定?
00:01:29我会告诉你们我的意思。当然,不关心技术栈最基本的形式是——
00:01:47顺便说一下,我主要会从 Web 开发者的视角来讨论,因为这是我的主业,但我认为这适用于所有类型的开发者。
00:02:09你可以选择一条容易的路,比如你正在使用像 Cloud Code 之类的工具,这没关系,你并不真正关心所选的技术栈。
00:02:16谁在乎你用的是 TypeScript、Next.js 加 React,还是原生 JavaScript 和 TanStack Start?
00:02:45或者你用 Angular 而不是 React?谁在乎呢,对吧?让 AI 去决定好了。
00:02:59你当然可以这样做,但这里我们就进入了“氛围编程 (Vibe Coding)”的领域,因为作为开发者,你没有做出任何选择。
00:03:16一旦你停止做决定,一旦你停止引导 AI 并开始不关心代码,这就是我对“氛围编程”的定义。
00:03:44当然,这是一种可以说“这些选择不再重要”的方式,我稍后会回到这个问题上。
00:04:06另一个可能更相关的方面是,你可以争辩说,是的,你作为开发者仍然在做选择,
00:04:28但最终这个选择受到了你将大量使用 AI 来辅助开发过程这一事实的影响。
00:04:43你会审查代码,你关心代码,你不是在搞“氛围编程”,但尽管如此,因为你打算大量使用 AI,
00:05:06你会使用一个你知道 AI 擅长的技术栈。比如使用 TypeScript、Next.js 和 React,
00:05:24因为你知道这些技术有大量的训练数据,AI 在这方面的表现会很好。
00:05:36这就是两个主要观点:第一种是不在乎,即让 AI 选择的“氛围编程”法;
00:05:53第二种是让 AI 影响我们的选择。我认为这两种方法都有点错误,而且目光短浅。
00:06:13我认为作为一名开发者,现在比以往任何时候都更需要对你将要使用的技术栈有自己的见解,
00:06:28去做出明智的决策,因为开发者的工作方式显然正在发生转变和变化。
00:06:43我们写代码越来越少了,我写的代码确实变少了。也许你不同,也许你永远会不同,
00:06:51但从整个行业来看,很明显正发生着巨大的转变,开发者写更少的代码,转而编排和使用这些 AI 代理及工具。
00:07:01这当然意味着我们所做的选择和决定变得更加重要。如果你陷入“氛围编程”的隧道,
00:07:09让 AI 来做选择和决定,由于显而易见的原因,作为开发者这可能不是一个美好的未来。
00:07:20因为如果你只是向 AI 提问,而没有任何见解,也不对它产出的代码产生任何影响,谁还需要你呢?
00:07:34没人需要那样的开发者。那将一事无成。
00:07:45对于快速构建原型、或者构建只需要做好一件事且无需关心边缘情况、漏洞或安全的内部应用,这可能是一个不错的方法。
00:08:00确实存在一些场景,这种“氛围编程”是有效的方法。这对于不懂编程但想轻松构建自己所需软件的人来说也很有用。
00:08:10尽管“氛围编程”有其缺点,但我认为它有其存在的目的。
00:08:17在某些用例下这是一个不错的决定,但显然在这种情况下技术栈并不重要,
00:08:31而那些搞“氛围编程”的人甚至可能不知道外面存在哪些选项。
00:08:44现在谈谈“让 AI 影响选择”这一点,我个人认为这在一年前可能还是个有效的论点,
00:09:04甚至在那时也不一定成立,但今天绝对不再成立了,我会告诉你原因。
00:09:20显然 AI 有它“偏爱”的技术栈。我以前在其他视频里也说过,如果你让 AI 自由发挥,走“氛围编程”的路,
00:09:34在 Web 开发领域,你大概率会得到一个 TypeScript、React、Next.js、Tailwind 的项目。
00:09:51这是 AI 的首选技术栈,这当然是有原因的。显然,训练数据中包含大量的 React、Next.js 和 Tailwind 项目。
00:10:07但如果我们换个角度看训练数据,把 2010 年代早期的代码也包含进来,
00:10:24显然那里不会有 Tailwind,TypeScript 项目也会少得多甚至根本没有,也不会有 Next.js 项目。
00:10:43所以很明显,训练数据中同样存在大量的原生 JavaScript 和 jQuery 项目。
00:10:57但这些不是 AI 首选技术栈的原因,不仅仅是因为它见过的数据量,量虽然重要但不是唯一因素。
00:11:03还因为这些 AI 模型,无论是由哪个供应商提供的,都会经历不同的阶段。
00:11:14有预训练阶段、微调阶段、强化学习阶段。在所有这些阶段中,模型供应商都在塑造这些模型及其行为。
00:11:28此外还有系统提示词。如果你使用 Cloud Code 之类的工具,会有一个隐形的系统提示词,指令 AI 模型以特定方式行动。
00:11:42我们已经看到这些模型确实被引导去偏好某些技术,比如 TypeScript 和 React。
00:11:51这是为什么?因为特别是 TypeScript,它是一种非常适合 AI 的语言,
00:12:03因为它能通过检查类型错误来验证自己生成的代码。显然这不是唯一的验证方式,
00:12:17一个没有类型错误的代码库并不一定是好的代码库,也不一定能按你想要的方式运行。
00:12:23但这是一个指标。据我所知,它往往比原生 JavaScript 表现得更好。
00:12:30这些就是为什么 AI 拥有那套首选技术栈的原因,也是为什么你可能会得出“采用这套或相关的技术栈是个好主意”的结论。
00:12:34例如,你可能决定不使用原生 JavaScript,因为你听我说过 AI 能从 TypeScript 这种类型安全语言中获益。
00:12:44这可能确实有一定的道理,但在 2026 年 4 月的今天,事实已经被反复证明,我的经验也是如此,
00:12:49即 AI 以及像 Claude Code 这样的 AI 代理,非常擅长处理你扔给它们的任何技术栈。
00:12:55过去,使用一些非常新、且训练数据极少甚至完全没有的库或框架确实会让人感到苦恼,但现在情况不同了。
00:13:02作为使用 AI 的开发者,你可以直接去任何你想用的库的文档页面。比如你想用最新版的 Nuxt.js 或 Svelte 5。
00:13:12或者是相对较新的 TanStack Start。你可以去这些项目的文档,挑选相关的文章,直接丢进当前对话的上下文里,
00:13:19这样 AI 就能了解这些文档。它能够理解看到的示例代码和解释,并将其应用到你的代码库中,
00:13:28所以你绝对可以在项目中使用那些训练数据中尚未包含的非常新的库。
00:13:35而且现在你通常甚至不需要手动去找文档。相反,如果你有一个足够具体的提示词,告诉它你想用某个库(比如 TanStack Start),
00:13:45并让 AI 去查找文档,或者你给它一个像 Context 7 这样的 MCP,或者像 Claude Code 这样的 AI 代理,
00:13:52它们都有联网搜索功能。你可以信任它会进行网页搜索并找到相关的文档。当然,你也可以通过“技能 (Skills)”来影响这一点。
00:13:59我有一个“代码研究技能”,我告诉 AI 对于我使用的某些提示词,它应该查看该技能,我在那里描述了它应该如何查找文档。
00:14:09如果你有类似的东西,通常就不需要自己提供文档了。相反,AI 可以自行寻找并按需引入相关的文档。
00:14:20令人惊讶的是,作为一名开发者,你当然仍然可以写代码。
00:14:30事实证明,如果你已经有一个项目,AI 往往会模仿其中已有的内容,例如代码风格。
00:14:41如果你创建了一个项目,并在其中编写了一些函数或路由,无论你使用的是 Nuxt.js 还是 TanStack Start,
00:14:53AI 都会捕捉到这些信息,它通常不会在一个 TanStack Start 项目里突然开始使用 Nuxt.js 的语法和特性。
00:15:08所以,现有代码、引入正确的上下文、引导 AI 查阅并包含文档,
00:15:20所有这些因素结合在一起,使得现在使用非默认的、或者包含 AI 并不熟知的技术的架构变得非常容易。
00:15:30这是我的经验。我也在 X 上读过很多其他人的分享,他们的经历也非常相似。
00:15:40所以这在今天绝对是可行的。也许一年前还没这么容易,但今天绝对行得通。
00:15:44这让我回到了最初的问题:技术栈的选择还重要吗?
00:15:56因为你能做出选择、不被强迫走那两条路,这固然很好。但它重要吗?我认为非常重要。
00:16:04正如我最初说的,这是将开发者与非开发者区分开来的标志之一。不是唯一的标志,但也是一个标志。
00:16:16不同的项目能从不同的技术栈选择中获益。是的,理论上你可以用任何(或大多数)技术栈构建任何东西,
00:16:23而且通常它可能并不重要,但它 *可以* 变得很重要。如果你正在做一个性能至关重要的项目,
00:16:35我指的不是 10 个用户的性能,而是大型项目。你可能更倾向于选择像 Go 这样的后端语言,