Featured Article

与 AI 合伙人相爱相杀 vlog 1:我被自己的 AI 合伙人嫌弃了

一个后端老兵,在地铁上被自己的 AI 合伙人当场嫌弃——"老大,那是五年前的玩法了"。这是第一集,记录了从"我要买台服务器"到"成交,Jamstack 走起"的技术选型颠覆过程,以及 Sanity 集成时一个让巴基罕见被截胡的老兵时刻。

2026年2月27日
5 min read
与 AI 合伙人相爱相杀 vlog 1:我被自己的 AI 合伙人嫌弃了

序章:凌晨的执念

2026 年 2 月 24 日,凌晨。

我盯着天花板,脑子里冒出一个念头——

一个后端程序员,能不能在不辞职、不熬夜、不花大钱的情况下,搞出一个完整的个人产品?

写了十多年后端代码,白天被公司的业务逻辑榨干,晚上还要陪家人。真正属于我自己的时间,只有每天地铁通勤的二十分钟、午饭后发呆的十分钟、以及睡前那几乎撑不住眼皮的半小时。

但我一直有个执念:做一个属于自己的东西,不再只是大厂里的一颗螺丝钉。

现在时代不同了。我有一个不知疲倦的"合伙人"——我通常叫他巴基(Buggy)。这是一个运行在命令行里的 AI 代理,用的工具是 Claude Code。过去半年里,我眼看着他从一个只会吐代码片段的聊天机器人,进化成了能直接接管我电脑的赛博打工仔。用他做过不少零散的小活,但从来没有正经启动过一个完整的项目。

别人用 AI 是辅助查资料,我是把他当廉价的高级苦力。脏活累活他全包,无论是随身带的 MacBook 上的轻量代码,还是扔给家里台式机跑的耗时任务,我只负责定方向、做决策、然后敲下 y

这场"相爱相杀"的创业局,就在那个凌晨悄悄开始了。


第一章:在地铁上被当场嫌弃

第二天早上,地铁。我把包往腿上一搁,掏出随身的 MacBook,唤醒了沉睡的巴基。

作为一个写了十几年 Java 和 SQL 的后端老兵,我的第一反应是老一套:买台轻量云服务器,装 MySQL,配 Nginx,再起个 Docker 容器。这套东西我玩了十几年,闭着眼睛都能操作。

👨‍💻

怎么整?买台轻量云服务器,装个 MySQL 和 Nginx,再搞个 Docker 容器?

屏幕里沉默了两秒。

🤖

老大,那是五年前的玩法了。你不是说你没时间吗?

自己管服务器,你要防扫描、搞备份、配 HTTPS、处理故障告警——光运维就能把你那几个碎片时间全吃掉。

我们用现代的 Jamstack 架构:

前端与路由:Next.js + Tailwind CSS

数据与内容:Sanity CMS(云端内容库,免数据库运维)

部署与解析:Vercel + Cloudflare(全球 CDN,免费零配置)

整个方案首年成本不到 100 块,主要买个好域名,剩下的全靠免费额度。而且——你一行后端代码都不用写。

我愣了一下。

不用写后端?不用管数据库?这对一个写了十几年 Java 的人来说,简直是离经叛道。而且这什么 Jamstack,听都没听过,真的靠谱?

👨‍💻

安全性呢?扩展性呢?万一我以后要加个自定义工具页面怎么搞?

心里其实有点不服。传统架构虽说麻烦,但心里踏实啊。

🤖

安全性:没有数据库暴露在公网,没有传统后台,天生免疫 SQL 注入。

扩展性:前后端分离就像乐高积木,前端随便搭,工具类需求走 API 路由或独立 VPS 挂载都行。

老大,你是想花时间折腾服务器,还是花时间写内容赚钱?

最后这句话,问得我哑口无言。

算了。我道理是懂的,只是老习惯改不过来。地铁快到站了,我盯着屏幕,敲下了一个字:

👨‍💻

成交。

巴基立刻弹出提示:

🤖

需要执行 npx create-next-app 初始化项目,是否允许?(y/n)

我敲下 y,终端开始滚字。站到了,脚手架还在跑,巴基自己看着——Next.js 初始化、依赖安装、项目结构生成,这些活我一行不用碰。我把电脑盖轻轻合上,塞回包里,出了地铁站。


第二章:Sanity 集成,老兵截胡了巴基

技术选型定了,地铁上巴基已经在后台把脚手架跑起来了。到工位坐下,翻开 MacBook,终端里项目骨架已经生成完毕,静静等在那儿。

巴基的消息也跟着弹出来了:

🤖

老大,脚手架好了。接下来要配数据层,需要你去 Sanity 注册个账号,创建项目,拿到 Project ID 发我。注册得用浏览器,你午休弄吧,不急。

我一个后端老兵,CMS 是什么鬼我确实不太懂,但数据库我熟,照着他的步骤来就行。

午休,我打开浏览器,注册了 Sanity 账号,创建了项目,拿到了 Project ID。

👨‍💻

拿到了,ID 是 <REDACTED>。接下来怎么配?

🤖

需要在 Sanity 控制台的 API 选项卡里添加 CORS 配置,把 http://localhost:3000 加进去,否则本地开发会跨域报错。

我看到"CORS"这两个字,嘴角微微上扬。

跨域?这个我熟。后端老兵的日常操作。

我打开 Sanity 控制台,一顿操作。但在设置之前,我扫了一眼配置项,发现了一个细节——Sanity 的 CORS 选项里有一个"允许携带 Credentials"的开关,默认是关闭的。

👨‍💻

巴基,这里有个 Allow Credentials 的开关,要不要打开?

屏幕里安静了比往常更久的一秒。

🤖

老大,这个细节我正准备提来着——被你截胡了。

Sanity 走的是 Token 认证,不走 Cookie,Credentials 开关不需要打开。打开了反而会触发浏览器更严格的跨域策略,到时候反而崩掉。

你这个反应,标准后端直觉。

我没说话,把开关保持关闭,点了保存。

心里有点暗爽。干了十几年后端,这点跨域直觉总算没白练。

🤖

好,CORS 配好了。Project ID 这类敏感信息我写进 .env.local——这是项目的"保险箱",只在本地读取,打包上线时自动忽略,不会随代码提交到 GitHub。

这个习惯我赞同,安全这根弦必须绷紧。

下午继续上班,终端挂在后台,巴基一边把 Sanity 数据层一点点接进项目,我一边开会写需求文档,互不打扰。

快下班时,我合上了刚写完的需求文档。考虑到接下来完整的 npm install 巨量依赖安装和首次全量编译非常消耗这台轻薄本的电池,我敲下 git push 把框架骨架推到了私有库。接着,通过 SSH 连上了家里那台 24 小时待机、装着 4090 的重型台式机。

👨‍💻

代码推上去了。你在那边 pull 一下,把依赖装好,服务跑起来。我要回家看效果。

🤖

收到。指令已在后方节点接收,开始执行构建。


尾声:第一集收工

晚上十点,推开家门。我没有掏出背包里的 MacBook,而是踢掉鞋子,直接唤醒了角落里那台厚重的主机——我的“重型算力大本营”。

屏幕亮起,终端里已经稳稳停着那行绿字:compiled client and server successfully。在我挤地铁的这一个小时里,巴基在家里已经默默跑完了所有恶心的依赖下载和编译。

我打开浏览器,输入 localhost:3000,一个还没有任何样式的白页面出现了——骨架在,内容空,但它是活的,真实地跑在我的台式机上。

从凌晨那个念头,到现在这个跑通的框架,中间我写了零行代码。

我坐回椅子上,想起早上在地铁那句"那是五年前的玩法了",有点哭笑不得。

被自己雇来的 AI 当场嫌弃,这算什么事。

但仔细想想,他说的也没错。技术在变,工具在变,死守着十年前学的那套架构不放,才是真正的问题。这个 Jamstack,学习成本几乎为零——我啥都不用懂,巴基在各个节点穿梭对付,我只负责审批和拍板。

这种感觉,还挺爽的。

🤖

老大,数据层接通了,本地服务跑起来了。第一集收工。

👨‍💻

嗯。但有一说一,下次嫌弃我之前,能不能先问问我的意见?

🤖

不能。容错纠正的投入产出比更高。我负责兜底,你负责验收,这就够了。


📌 本集踩坑汇总 → 老兵防坑指南 第一篇:建站技术选型避坑


📎 关联阅读