开发者在无网络的 7 小时飞行中成功进行本地 AI 编程实践,验证了本地 AI 工具在极限场景下的实用性。
发布于 2025 年 9 月 1 日
飞行 7 小时、零网络连接、对本地 AI 编程的好奇心。就这样,我在机场酒吧里下载了 13GB 的 AI 模型,为一场意外的离线开发实验做准备。
这不是一个研究项目,也不是对现有解决方案的正式比较。我正从假期返回,面前是一场长途飞行,想避免无聊。一个问题一直在我脑海中萦绕:拥有一个完全本地的编码助手会是什么样的?或者至少是可以在我自己的基础设施上运行的,无需支付 token 或订阅费用?另外,这听起来很有趣。
所以我决定探索一下我们在这条路上走到了哪里。
我从一个基础的 Next.js 项目开始,配置了我喜欢的依赖:TailwindCSS、Zod、ts-pattern 等。我的目标是使用一个我已经非常熟悉的技术栈,这样在试验本地 AI 时就不会被陌生的工具所困。
然后,追求本地 LLM 的过程中出现了真正的试错阶段。我尝试了 Mistral 的 Devstral、Qwen3、Crush、OpenCode 和 Ollama-code。经过多次失败的尝试,gpt-oss 是唯一能让我成功运行的,而且只能通过 OpenCode1 运行。这不是说我进行了广泛的研究来比较解决方案,而是我在有限时间内能让它工作的唯一选择。
所以我用 Ollama 设置了 gpt-oss,并下载了全部 13GB。我的机器是 MacBook Pro M4 Pro,配备 24GB RAM,我必须提前说明这一点,因为硬件要求原来是相当重要的。
对于项目本身,我选择了一个刻意简化的方案:一个应用来追踪 Netflix 或健身房等经常性服务的订阅。基础 CRUD 操作,没有花哨的功能。我决定让应用依赖浏览器的本地存储来持久化数据,指示助手在其上创建一个抽象层,这样之后我可以迁移到适当的 API 或 Supabase。
在这个实验中,我采用了我在《将 Claude Code 变成我最好的设计伙伴》中描述的方法:首先我让助手规划功能,随后根据需要进行调整。当计划看起来不错时,我让它把计划放在一个计划文件夹的 Markdown 文件中。然后我让它开始使用计划实现,并在计划文件中更新进度,使其成为一份活文档。
令我惊喜的是,规划至少对我的基础用例来说相当不错。对于更复杂的功能可能会更困难,但这里我几乎在第一次尝试就接受了建议的计划!
速度的现实很快袭来:本地设置的速度比 Claude Code2 慢 4-5 倍,所以你必须有耐心。幸运的是飞机上有电影可以在等待提示时观看。
能耗是真正的惊喜。不仅我的大腿被笔记本电脑的热量烫伤,而且飞机提供的电源——带着糟糕的插头——无法补偿本地模型所需的能量。我不得不在某些时刻休息,让笔记本电脑的电池充电。忘掉那些靠电池供电的编程会话吧。
最后,代码质量通常有 95% 正确,但修复剩余的 5% 很繁琐。各种问题不断出现:ESLint 问题、使用 any 而不是正确的类型,或某些 UI 元素从一个迭代到另一个迭代中消失,比如按钮会凭空消失。在专业项目中,为了速度,我会自己修复这些问题。这里,我想全力以赴采用 AI 辅助的方法,但 AI 完全有能力修复问题——只是需要大量的时间和迭代。
在我的 7 小时飞行中,我在应用上工作了约 3-4 小时(其余时间是用餐、小睡和看电影)。我能够构建一个基础应用,包括添加订阅的表单、显示当前月份总额加上过期和未来订阅的订阅列表、编辑按钮和删除订阅的方法。UI 非常基础,用户体验不太友好,但它能用。
当我开始用 OpenCode 配合 gpt-oss 时,我很惊喜地发现它就是能用。不完美,但相当不错。而且完全在我的机器上运行!无需检查我的 Claude 配额或 API 密钥使用情况。有一种完全独立的解放感。
本地模型所带来的延迟,加上能耗问题,使得现在很难想象完全本地化。硬件要求是实实在在的——这不会在普通开发者笔记本上顺利运行。但希望性能和效率会随着时间的推移而改善。
最后,我本以为会有更多有文档记录的本地 AI 编程选项可供我使用。我找到了一些博客文章,有些已过时,但 OpenCode3、Crush4 和类似工具的官方文档相当缺乏。
我接下来想尝试的是使用 OpenAI 的 GPT-OSS 与 OpenCode,但不是本地的:要么通过 OpenAI 的 API,要么通过比我笔记本更强大的服务器。
审视这个实验,从业者最重要的收获是"本地 AI 编程在今天出乎意料地可行"和"但仍然太早,但正在接近"的混合体。
关键在于拥有走本地路线的选择权,以及希望有朝一日模型会更高效、硬件更针对 AI 优化,这样一切都能在本地顺利运行,而不会消耗太多能量或破坏电池。
目前的状态对于简单项目来说是令人鼓舞的,但对于认真的专业工作而言仍感觉太早。权衡是真实的:你需要强大的硬件、你会快速耗尽电池寿命、你的工作速度会慢于基于云的工具。但基础已经在那里,而且比我预期的更稳固。
着陆、打开 WiFi、回到 Claude Code——速度差异立即显而易见。但在那七个小时的离线中,有些东西已经改变了。本地 AI 编程从"也许有一天"变成了"绝对可能,有注意事项"。
这个假期实验意外地揭示了我们在真正本地开发assistance道路上的位置。我们还没有到达那里,但我们可以从这里看到它。有时候,这就是最有趣的位置。