每月 20 刀讓我忍無可忍,我用 OpenClaw 把項目從 Vercel 遷到了 Cloudflare
整理版優先睇
每月慳20美金,用OpenClaw由Vercel搬到Cloudflare,省錢仲學到嘢
呢篇文章係作者俊哥(前字節跳動工程師)分享佢點樣用AI Agent工具OpenClaw,將一個由Vercel每月收20美金嘅項目遷移到Cloudflare。佢嘅出發點好簡單:唔想再每個月俾Vercel嗰20蚊溢價,而係想揾個免費嘅替代方案。但佢冇自己逐行改代碼,而係用OpenClaw呢個AI Agent全程幫手。成個過程發現咗好多坑,例如Worker runtime唔係Node.js、bcrypt超時、ORM唔相容、D1事務限制、環境變量雙軌制、域名切換時序問題。OpenClaw唔單止自動執行遷移,仲會解釋每個問題嘅原因同解決方案,逼住作者去理解底層機制。最後成功搬好,每個月慳返20美金,而且對成個技術棧嘅認知深咗好多。
作者認為AI Agent同普通AI工具最大分別係:普通AI幫你查資料,AI Agent係同你一齊做曬成件事。佢唔會「算啦先咁樣」,而係一直跟實每個細節。呢次遷移表面係平台轉換,實際係一次技術債清算、架構認知升級,同埋對系統主權嘅重新理解。佢強調未來有價值嘅能力唔係識用幾個AI工具,而係識用AI Agent將一件真實嘅事由頭到尾跑通。
- Vercel每月20美金嘅溢價可以靠Cloudflare免費額度完全取代,關鍵係用AI Agent輔助遷移,唔係手動硬搬。
- OpenClaw會自動掃描代碼、分析依賴、識別相容性問題,並逐步執行遷移,減少遺漏。
- Cloudflare Worker係V8 Isolate環境,唔等同Node.js,要改用Web Crypto API;bcrypt超時需換PBKDF2;better-auth+drizzle同D1不相容,要改用kysely-d1;D1唔支援互動式事務,要用batch API。
- AI Agent唔單止省時,更重要係強迫你理解每一步點解咁做,帶你行過每個坑,遷完之後對技術棧理解深好多。
- 如果帳單壓力大,可以考慮呢條路:事前瞭解平台差異、準備對應方案、用AI Agent輔助執行,慳錢之餘仲學到嘢。
點解要搬?唔係Vercel唔好,而係20蚊太貴
作者每個月見到Vercel扣20美金,就諗:呢20蚊係為咗技術能力定係為咗「自己懶得折騰」嘅溢價?佢決定用AI Agent工具OpenClaw幫手遷到Cloudflare,因為Cloudflare嘅Worker、D1、Pages等服務喺一定用量內完全免費。
Vercel 每個月收我 20 刀
OpenClaw 是一個可以真正幫你幹活的 AI Agent 平台
OpenClaw唔係問一句答一句嗰種,而係你話「幫我將呢個項目遷到Cloudflare」,佢就會開始讀code、分析依賴、識別問題、一步步執行。
遷移遇到嘅6個大坑,OpenClaw全部幫你避開
OpenClaw讀完code之後第一時間指出:你用咗import crypto from 'crypto',但Cloudflare Worker係V8 Isolate,冇Node.js模組,需要用Web Crypto API。呢個坑如果自己搬,可能要等到上線先知。
Cloudflare Worker 跑的是 V8 Isolate,不是 Node.js
better-auth配drizzle-orm遷到D1之後狂報錯,OpenClaw排查後話係相容性問題,建議換kysely-d1,對D1支援更原生。跟住佢幫手重寫曬所有query邏輯,一個人好易半途而廢,有AI Agent一齊反而順好多。
D1 底層是 SQLite
D1唔支援互動式事務,原來嘅db.begin()、db.commit()直接報錯。OpenClaw解釋原因之後幫改做batch API,將多條SQL打包成原子操作提交。
D1 的 batch API 寫法
環境變量有兩套:本地讀.dev.vars,線上讀Dashboard Secrets,冇自動同步。OpenClaw提醒兩個都要維護。最後域名切換嗰陣,佢特意話唔好兩邊同時活躍,否則TTL刷唔切會亂。
不要兩邊同時保持活躍狀態
搬完之後:免費額度夠用,仲賺到認知升級
Cloudflare方面:Worker每日10萬次請求免費、D1 500MB儲存每日500萬次讀免費、Pages靜態託管免費、KV/R2有免費額度。作者個項目完全喺免費額度內,一蚊都唔使俾。Vercel就20美金一個月,一年240美金。
完全在免費額度以內
作者話最大感受唔係慳咗錢,而係「應該早啲搬」。最重要嘅係OpenClaw逼佢理解每一步,唔係繞過坑,而係一齊睇清楚再過去。遷完之後對bcrypt點解唔得、D1事務點解咁設計、ORM選型互相影響等等,都清楚曬。
這兩天。
我在做一件憋了很久的事。
遷移。
把跑在 Vercel 上的項目,搬到 Cloudflare。
為什麼遷?
說出來其實很樸實:
Vercel 每個月收我 20 刀。

我受不了了。
不是說 Vercel 不好。
它真的很好用。
好用到你不用懂任何基礎設施,點幾下就能上線。
但好用是有代價的。
每個月看着賬單扣款的時候。
我就會忍不住想一個問題:
我到底在為什麼付費?
是技術能力?
還是"我懶得自己折騰"的溢價?
這次我決定動手了。
但這次有點不一樣。
我沒有一行一行自己扒代碼。
沒有一個坑一個坑靠 Google 趟。
我用的是 OpenClaw。
OpenClaw 是一個可以真正幫你幹活的 AI Agent 平台。
不是問一句答一句的那種。
是你說"幫我把這個項目遷到 Cloudflare"。
它真的開始讀你的代碼、分析依賴、識別問題、一步步執行。
這次遷移,我全程用它跑。
然後我發現了一件事:
用 AI Agent 幹工程活,不是"更方便了"。
而是你會被強迫比以前更清醒。
我助理給我的對照圖

坑 1:Worker 的 runtime 不是 Node.js
OpenClaw 讀完我的代碼之後,第一條反饋:
"你這裏用了
import crypto from 'crypto',在 Cloudflare Worker 裏會報錯,需要換成 Web Crypto API。"
我當時還有點懵。
crypto 不是標準庫嗎?
然後才想起來:
Cloudflare Worker 跑的是 V8 Isolate,不是 Node.js。
它更接近瀏覽器環境。
不是所有 Node.js 原生模塊都能用。
以前我對這個有模糊的認知。
但從來沒有人在我每寫一行相關代碼的時候,立刻告訴我"這裏會炸"。
OpenClaw 會。
坑 2:bcrypt 在 Worker 免費版直接超時
認證模塊用的是 bcrypt 做密碼哈希。
標準做法。
OpenClaw 掃到這裏,停下來跟我說:
"Worker 免費版 CPU 時間限制是 10ms,bcrypt 一次哈希需要幾百毫秒,建議換 PBKDF2。"
我:……
然後它直接幫我把哈希邏輯改成了 Web Crypto API 的 PBKDF2 實現。
同樣安全。
Worker 原生支持。
CPU 消耗完全可控。
這個坑,我如果自己遷,大概率要等到線上報錯才會發現。
OpenClaw 是在遷移過程中,提前就把它堵上了。
坑 3:better-auth + drizzle-orm 跟 D1 不兼容
我原來用 better-auth 做認證框架,配 drizzle-orm 操作數據庫。
遷到 D1 之後。
炸了。
報的是那種玄學報錯。
SQL 方言不對。事務方式不對。
OpenClaw 排查完之後結論很清晰:
"better-auth 的 drizzle 適配器和 D1 有兼容性問題,建議換 kysely-d1,對 D1 的支持更原生。"
然後它幫我把 ORM 層從 drizzle 遷到了 kysely-d1。
這不是小改動。
所有 query 邏輯都要跟着重寫。
但這件事一個人扛,很容易半途而廢。
有 OpenClaw 在旁邊一步步執行、一個問題一個問題解決——
反而跑得很順。

坑 4:D1 不支持交互式事務
D1 底層是 SQLite。
但它跑在邊緣節點,事務不是本地同步的。
我原來有一段邏輯:
await db.begin()
await db.execute(sql1)
await db.execute(sql2)
await db.commit()
D1 裏:直接報錯。
OpenClaw 解釋了原因,然後幫我改成了 D1 的 batch API 寫法。
把多條 SQL 打包成一個原子操作提交。
語法變了,但邏輯完全對等。

坑 5:環境變量是兩套,本地和線上不互通
Cloudflare 的環境變量管理有兩套:
本地開發讀 .dev.vars線上 Worker 讀 Dashboard 裏配的 Secrets
兩套獨立的。
沒有自動同步。
OpenClaw 在配置環節直接提示我:
"你需要同時維護本地的
.dev.vars和線上的 wrangler secrets,缺一個都會導致對應環境拿不到變量。"
這種事看起來簡單。
但就是這種"看起來簡單"的細節,最容易在深夜被坑。
坑 6:域名切換時兩邊同時活躍,行為會亂
最後一步,準備把域名從 Vercel 切到 Cloudflare。
OpenClaw 在這裏特意停下來跟我說:
"不要兩邊同時保持活躍狀態,建議先在 Vercel 完全下線,等 TTL 刷新,再切 DNS,否則會出現同一域名請求不一致的情況。"
這種錯誤不會報錯。
它是靜默的亂。
同一個域名,不同設備拿到的是不同的後端。
你排查半天,找不到任何代碼問題。
因為代碼沒問題。
是操作順序的問題。

遷完之後算一筆賬
Cloudflare 這邊:
- Worker
:每天 10 萬次請求以內,免費 - D1 數據庫
:500MB 存儲,每天 500 萬次讀,免費 - Pages
:靜態託管,免費 - KV / R2
:有免費額度,超出再付
我現在這個項目的體量:
完全在免費額度以內。
一分不花。
Vercel 那邊:
20 刀/月。
12 個月。
一年 240 刀。
不是說 240 刀很多。
但如果這 240 刀買來的只是"方便"。
而你其實可以用 Cloudflare 免費額度跑同樣的東西。
那這 240 刀,就是在為"沒搞清楚有免費選項"而付費。
遷完之後我第一個感受不是"省錢了"。
而是:
我應該早點遷的。
這次遷移最大的感受
我以為用 AI Agent 幹工程活,最大的價值是"省時間"。
確實省了。
但這不是最重要的。
最重要的是:它會強迫你理解每一步在做什麼。
不是幫你繞過坑。
而是帶你把坑看清楚,再一起過去。
每次 OpenClaw 遇到問題,它都會先解釋原因,再給方案。
這導致我遷完之後,
對這套技術棧的理解,比遷之前深了不止一倍。
bcrypt 為什麼不行、D1 事務為什麼這樣設計、ORM 選型為什麼會互相影響——
這些我以前"知道一點"的東西,
這次我真的搞清楚了。
為什麼我選擇用 OpenClaw 來做這件事
說實話。
這種遷移工作,一個人扛是很消耗心力的。
不只是技術難度。
而是它需要你在極短的時間內,
在十幾個不同的技術決策點上,
每一個都做出正確的判斷。
一個人很容易:
某個坑繞過去但沒真正搞清楚 某個方案湊合了但埋了隱患 某個環節偷懶了但以後會出問題
有 OpenClaw 在一起跑,
它記得每一個細節。
它不會"算了先這樣"。
它會一直盯着你把每一個問題真正解決掉。
這是我覺得 AI Agent 和普通 AI 工具最大的區別:
普通 AI 工具是"幫你查資料"。
AI Agent 是"和你一起把事情做完"。
我是俊哥,前字節跳動牛馬,萬人社羣AI編程教練
連結我,領資料進交流羣

最後
這次從 Vercel 到 Cloudflare。
表面上是一次平台遷移。
實際上是:
一次技術債清算 一次架構認知升級 一次對"系統主權"的重新理解
而且這次是和 OpenClaw 一起完成的。
這讓我更確定一件事:
未來真正有價值的能力,不是會用幾個 AI 工具。
而是會用 AI Agent 把一件真實的事情,從頭到尾跑通。
一句話總結:
我每月給 Vercel 交 20 刀。
遷到 Cloudflare 之後,這 20 刀沒了。
但我得到的東西,比 20 刀值錢多了:
對自己系統更深的理解,和把事情真正做完的能力。