我用 OpenClaw 做後端開發:從 Stripe 支付到 AI 生成,全程不寫一行代碼
整理版優先睇
本文作者孟健分享如何用 OpenClaw Agent 全程自主開發一個 AI 頭像生成站的後端,從 PRD 到生產上線無需手寫代碼,重點展示其邊界、實戰流程、成本與踩坑經驗。
孟健係 headshotcraft.com 嘅創辦人,佢想用最慳力嘅方式搭建後端,唔使親自寫 code。佢選擇咗 OpenClaw Agent(名為墨樞)嚟處理曬 Stripe 支付、Replicate AI 生成、Cloudflare D1 資料庫、OAuth 登錄同 Webhook 回調。結果係由拿到 PRD 到生產上線,佢一次都冇開過 code editor。
呢篇文章係佢親身經驗嘅詳細紀錄,講述點樣準備環境、定義邊界、畀 Agent 任務,同埋遇到嘅 bug 同解決方法。整體結論係:標準化 SaaS 後端已經可以完全交畀 AI Agent,開發者嘅核心能力變咗寫 PRD、驗收 code 同做架構決策。
文章仲覆蓋咗成本分析、技術棧選擇同踩坑指南,對想用 OpenClaw 做後端嘅人好有參考價值。孟健強調 Agent 唔係萬能,但對於佢哋呢類標準化場景,絕對係高效方案。
- OpenClaw Agent 可以獨立完成標準化 SaaS 後端開發,包括 API、支付、數據庫、登錄同 AI 生成,開發者只需寫 PRD 同驗收。
- 環境準備係關鍵一步:需要預先註冊 Cloudflare、Stripe、Replicate、Google OAuth 等服務,並將 API Key 寫入 .env 檔案。
- 實戰流程包括:畀 Agent 一條訊息 → Agent 自動讀 code、改 code、測試(用 curl 模擬請求)→ commit + push + deploy。
- 遇到真實 bug(Replicate model version 失效),Agent 自己排查日誌、替換 version ID、修復部署,全程無人幹預。
- 成本方面,OpenClaw 開源免費,每次任務 LLM 調用約 $5-15,基礎設施(Cloudflare Pages + D1)喺無用戶時接近零成本。
headshotcraft.com 後端源碼(GitHub)
文章中實戰項目嘅後端源碼,包含完整 API 路徑、數據庫封裝同配置。
環境變數模板(.env)
文章列出嘅全部 API Key 同密鑰變數名,可複製直接使用。
wrangler.toml 部署配置
Cloudflare Pages 部署用嘅設定檔模板,包含 D1 數據庫 binding。
邊界先搞清楚:OpenClaw 做後端嘅能力範圍
OpenClaw 唔係萬能,佢擅長嘅係 標準化 SaaS 後端:API 開發、支付對接、數據庫操作、第三方 API 整合、部署上線。佢唔擅長嘅係從零設計架構(你要畀 PRD)同高度定製化嘅業務邏輯(例如複雜權限系統、實時協作)。
孟健嘅策略係:前端同設計用其他 Agent 或自己做,後端就專門交畀一個 Agent(佢叫佢做墨樞)。只要畀一份清晰嘅 PRD,Agent 就可以開工。
環境準備:呢 step 一定要自己做
Agent 冇辦法幫你註冊賬號或申請 API Key。你要事先準備好以下服務:Cloudflare(部署 + D1 數據庫)、Stripe(支付)、Replicate(AI 生成)、Google Cloud Console(OAuth 登錄)。每個服務都要攞到對應嘅密鑰。
# Google OAuth
GOOGLE_CLIENT_ID=xxx
GOOGLE_CLIENT_SECRET=xxx
# Session
SESSION_SECRET=xxx
# Stripe
STRIPE_SECRET_KEY=sk_live_xxx
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_live_xxx
STRIPE_WEBHOOK_SECRET=whsec_xxx
# Cloudflare
CLOUDFLARE_API_TOKEN=xxx
# Replicate
REPLICATE_API_TOKEN=r8_xxx
攞齊曬之後,寫入項目嘅 .env 檔案,然後 Agent 就可以接手。
實戰:AI 頭像生成站嘅後端全鏈路
以 headshotcraft.com 為例,功能係用戶上傳自拍 → AI 生成 4 張專業頭像 → 下載。後端要做嘅包括:Google OAuth 登錄、積分系統、Stripe 訂閲支付、Replicate AI 生成、Webhook 回調。
- 1 畀 Agent 一條訊息:「headshotcraft 後端 closure,測試 pricing → login → checkout,測試登錄態 AI 生成鏈路,確認 production 最新版本,如有修改直接 commit + push + deploy」。
- 2 Agent 自己讀取項目結構(src/app/api/ 下嘅路由),逐個驗證。用 curl 模擬 POST /api/checkout 測試 Stripe 鏈路。
- 3 驗證 AI 生成:調用 Replicate API 創建預測任務,輪詢狀態,確認返回 4 張圖片。
- 4 遇到真實 bug:Replicate model version 失效。Agent 自動排查日誌 → 發現 404 → 檢查當前版本 → 替換 version ID → commit → push → 自動部署。
成個開發到上線到修 bug,全程 Agent 自主完成,我只負責 PRD 同驗收。
技術棧:點解揀呢套組合?
headshotcraft.com 用嘅後端技術棧:Cloudflare Pages (Edge)(全球 CDN,免費額度夠用)、Cloudflare D1 (SQLite)(同 Pages 一體化,唔使另外配置)、Stripe(標準支付方案)、Replicate API(按量付費,唔使自建 GPU)、Google OAuth(最簡單第三方登錄)、Next.js(Agent 最熟悉嘅框架)。
name = "headshotcraft"
compatibility_date = "2024-09-23"
compatibility_flags = ["nodejs_compat"]
pages_build_output_dir = ".vercel/output/static"
[[d1_databases]]
binding = "DB"
database_name = "headshotcraft"
database_id = "4cf723c5-f87a-44b2-81f4-6d38b795e6c0"
數據庫透過 binding 直接注入,唔需要 HTTP 連接或 IP 白名單,係 Agent 最容易操作嘅方案。部署就一行命令,Cloudflare 會自動構建。
踩坑指南:四個你一定要知嘅位
- 第三方 API 版本會變:Replicate model version 唔係永久,寫死 version ID 會某日失效。建議集中管理 version ID 喺配置檔。
- Edge Runtime 限制多:Cloudflare Pages 唔支援 fs、child_process 等 Node.js 模組。Agent 第一次用 fs.readFile,部署直接報錯,要改為從 env binding 讀取。
- Webhook 簽名驗證唔好慳:Stripe Webhook 必須驗證簽名,Agent 一開始漏咗,要加 stripe.webhooks.constructEventAsync()。
- 測試要測生產環境:staging 同生產嘅配置可能唔同(API key、環境變數),Agent 喺 staging 測通但生產 D1 binding 錯,原來係 wrangler.toml 嘅 database_id 寫錯。
大家好,我係孟健。
我嘅 AI 頭像生成站 headshotcraft.com 嘅後端,唔係我寫嘅。
Stripe 支付對接、Replicate AI 生成、Cloudflare D1 數據庫、OAuth 登入、Webhook 回調——全部由一個 OpenClaw Agent 獨立完成。由拎到 PRD 到生產上線,我冇打開過一次代碼編輯器。
今日我將成個過程拆開嚟講,你跟住做,都可以用 OpenClaw 幫自己嘅項目搭後端。
01 先搞清楚:OpenClaw 做後端嘅邊界喺邊?
OpenClaw 唔係萬能㗎。佢擅長嘅係標準化 SaaS 後端:API 開發、支付對接、數據庫操作、第三方 API 整合、部署上線。
佢唔擅長:由零設計架構(你要俾 PRD)、高度定製化嘅業務邏輯(複雜嘅權限系統、實時協作等)。
我嘅做法係:前端同設計用其他 Agent 或者自己做,後端專門交俾一個 Agent(我叫佢墨樞)。 俾佢一份清晰嘅 PRD,佢就能夠跑得起。
02 環境準備:Agent 需要啲咩?
喺俾 Agent 鬱手之前,你要先將環境準備好。呢一步好關鍵——Agent 冇辦法幫你註冊賬號、申請 API Key。
headshotcraft.com 用咗呢啲服務,每個都需要你提前註冊並拎到密鑰:
Cloudflare(部署 + 數據庫)
註冊 Cloudflare 賬號 安裝 Wrangler CLI: npm install -g wrangler登錄: wrangler login創建 D1 數據庫: wrangler d1 create headshotcraft拿到 database_id,寫進wrangler.toml
Stripe(支付)
註冊 Stripe 賬號 喺 Dashboard → Developers → API Keys 拎到 STRIPE_SECRET_KEY創建兩個 Price(月付/年付),拎到 price_xxx創建 Webhook Endpoint,拎到 STRIPE_WEBHOOK_SECRET
Replicate(AI 生成)
註冊 replicate.com 喺 Account → API Tokens 創建 Token,拎到 REPLICATE_API_TOKEN
Google Cloud Console(OAuth 登入)
創建 OAuth 2.0 Client 拿到 GOOGLE_CLIENT_ID和GOOGLE_CLIENT_SECRET
全部拎到之後,寫入項目嘅 .env 文件:
# Google OAuth
GOOGLE_CLIENT_ID=xxx
GOOGLE_CLIENT_SECRET=xxx
# Session
SESSION_SECRET=xxx
# Stripe
STRIPE_SECRET_KEY=sk_live_xxx
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_live_xxx
STRIPE_WEBHOOK_SECRET=whsec_xxx
# Cloudflare
CLOUDFLARE_API_TOKEN=xxx
# Replicate
REPLICATE_API_TOKEN=r8_xxx
呢啲 Key 都喺你自己手度,Agent 只係用佢哋嚟調用 API,唔會洩漏。
📍 環境準備好之後,其餘嘅開發、測試、部署,全部可以交俾 Agent。
03 實戰:AI 頭像生成站嘅後端全鏈路
以 headshotcraft.com 為例。呢個站嘅功能好簡單:用戶上傳自拍 → AI 生成 4 張專業頭像 → 下載。

後端需要做啲咩?
用戶登入(Google OAuth) 積分系統(免費用戶 1 次,付費用戶按月扣) Stripe 支付(月付/年付訂閲) AI 生成(對接 Replicate API) Webhook 回調(支付成功後自動開通權益)
第一步:話俾 Agent 知你嘅需求
我俾墨樞發咗一條訊息:
P0:headshotcraft 後端 closure
真測 pricing → login → checkout 真測登入態 AI 生成鏈路 確認 production 係唔係最新版本 如有修改,直接 commit + push + deploy
就呢一條。佢知道項目喺邊、用咩技術棧、點樣部署——因為呢啲資訊都寫喺佢嘅 SOUL.md 和 MEMORY.md 裏。
第二步:Agent 自己讀代碼、改代碼
墨樞收到任務之後,直接讀咗項目代碼。項目結構:
src/app/api/
├── auth/
│ ├── login/route.ts # Google OAuth 登錄
│ ├── callback/route.ts # OAuth 回調
│ └── me/route.ts # 獲取當前用戶信息
├── checkout/route.ts # 創建 Stripe Checkout Session
├── generate/route.ts # 調用 Replicate 生成頭像
├── upload/route.ts # 上傳圖片
├── user/
│ ├── credits/route.ts # 查詢積分餘額
│ └── account/route.ts # 賬户信息
└── webhooks/
└── stripe/route.ts # Stripe 支付回調
佢讀嘅文件同我列嘅一樣多。 然後佢開始逐個驗證。
第三步:驗證 Stripe 支付鏈路
Agent 用 curl 模擬咗真實請求:
POST /api/checkout
Authorization: Bearer <session_token>
Body: { "plan": "monthly" }
後端代碼做咗呢啲事(checkout/route.ts):
const checkoutSession = await stripe.checkout.sessions.create({
mode: "subscription",
line_items: [{ price: priceId, quantity: 1 }],
success_url: `${origin}/app?checkout=success`,
cancel_url: `${origin}/pricing?checkout=cancelled`,
customer_email: session.email,
metadata: {
userId: String(session.userId),
plan: plan === "yearly" ? "pro_yearly" : "pro_monthly",
},
});
返回 Stripe Checkout URL,前端自動跳轉。支付成功後,Stripe 發 Webhook 到 /api/webhooks/stripe,後端自動俾用戶開通權益。
Webhook 代碼(webhooks/stripe/route.ts):
if (event.type === "checkout.session.completed") {
const session = event.data.object;
const userId = session.metadata?.userId;
const plan = session.metadata?.plan;
const customerId = session.customer;
if (userId && plan) {
await setPlan(Number(userId), plan, customerId);
}
}

呢段代碼唔係我寫嘅。係 Agent 寫嘅,測試嘅,部署嘅。
第四步:驗證 AI 生成鏈路
用戶上傳照片後,後端調用 Replicate API 生成頭像。核心代碼(generate/route.ts):
const response = await fetch("https://api.replicate.com/v1/predictions", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.REPLICATE_API_TOKEN}`,
},
body: JSON.stringify({
version: "ddfc2b08d209f9fa8c1eca692712918bd449f695dabb4a958da31802a9570fe4",
input: {
input_image: image,
prompt: `img, ${prompt}`,
style_name: "Photographic (Default)",
num_outputs: 4,
},
}),
});
先創建預測任務,然後輪詢狀態,等 AI 跑完後返回 4 張圖片。成個過程 Agent 用 curl 喺生產環境跑咗一次,確認返回 4 張圖,下載連結 200 OK。

第五步:一個真實嘅線上 Bug
上線後某日,AI 生成突然冧咗。用戶上傳照片後一直報錯。
根因:Replicate 嘅 model version 失效咗。
Replicate 會不定期更新模型版本,舊版本嘅 hash 直接唔可用。我嘅代碼裏寫死咗一個 version ID,某日佢就失效咗。
墨樞自動排查:讀日誌 → 發現 Replicate 返回 404 → 檢查當前可用版本 → 替換 version ID → commit → push → Cloudflare 自動部署。
commit 2b7aadd — fix: update replicate model version
push origin/main
deploy → https://23f775b9.headshotcraft.pages.dev
由故障到修復上線,全程冇人幹預。我唯一做嘅事係睇到報告之後㩒咗一下確認。
04 技術棧:Agent 用咗啲咩?
headshotcraft.com 嘅完整後端技術棧:
部署配置就得一個 wrangler.toml:
name = "headshotcraft"
compatibility_date = "2024-09-23"
compatibility_flags = ["nodejs_compat"]
pages_build_output_dir = ".vercel/output/static"
[[d1_databases]]
binding = "DB"
database_name = "headshotcraft"
database_id = "4cf723c5-f87a-44b2-81f4-6d38b795e6c0"
數據庫通過 binding 直接注入,唔需要 HTTP 連接、唔需要 IP 白名單、唔需要密碼。 呢個係 Cloudflare D1 最大嘅優勢,亦都係 Agent 最容易操作嘅數據庫方案。
部署就一行命令:
CLOUDFLARE_ACCOUNT_ID=xxx npx wrangler pages deploy .vercel/output/static \
--project-name headshotcraft --branch main
Agent 每次 commit + push 之後,自動執行呢行命令。Cloudflare 收到代碼之後自動構建部署。

05 數據庫操作:Agent 點樣讀寫 D1?
Agent 寫咗一個統一嘅數據庫封裝(src/lib/db.ts):
function getDB() {
const { env } = getRequestContext();
const db = env.DB;
return db;
}
// 查詢
async function query(sql, params = []) {
const db = getDB();
return await db.prepare(sql).bind(...params).all();
}
// 寫入
async function run(sql, params = []) {
const db = getDB();
return await db.prepare(sql).bind(...params).run();
}
然後用呢套封裝做所有數據庫操作:查積分、扣積分、更新用戶 plan、記錄 Stripe customer ID。
你唔需要話俾 Agent 知用咩 ORM。佢自己判斷 D1 係 SQLite 兼容嘅,直接寫原生 SQL 最簡單。
06 我係點樣俾 Agent 交接㗎?
好多人問:Agent 點樣知道要做啲咩?
答案好簡單:寫好 PRD。
我嘅 PRD 裏麪包含:
站點定位同目標用戶 核心功能清單(邊啲必須做,邊啲可以後補) 技術棧約束(必須用 Cloudflare,唔可以用 AWS) 定價方案(月付 $9.99,年付 $79.99) API 設計( /api/upload、/api/generate、/api/checkout)數據庫表結構(users、credits)
Agent 讀完 PRD 就開工喇。中間遇到唔清楚嘅地方,佢會問我。例如佢問過:「積分不足時係返回錯誤定提示升級?」我話返回 402 並提示升級。
成個後端開發過程,我同 Agent 嘅交互唔到 10 條訊息。
07 成本核算
OpenClaw 開源免費。成本喺兩方面:
LLM API 調用:
後端 Agent 用嘅模型係 GPT-5.4,單次後端開發任務(由讀代碼到 commit + deploy)大概消耗 5-8 萬 tokens。按 GPT-5.4 嘅定價,單次任務成本約 $5-15。
注意:呢個唔係 $183。$183 係 Agent 長期 session 嘅累計成本(佢同時處理咗好多任務)。單個後端開發任務嘅實際成本好低。
基礎設施:
冇用戶之前,基礎設施成本接近零。 呢個就係 Cloudflare 方案最大嘅優勢。
08 踩坑指南
坑 1:第三方 API 嘅 version 會變
Replicate 嘅 model version 唔係永久嘅。寫死 version ID 嘅代碼,某日就會冧。建議喺配置文件集中管理 version ID,方便 Agent 快速定位同替換。
坑 2:Edge Runtime 限制多
Cloudflare Pages 嘅 Edge Runtime 唔支持 Node.js 嘅 fs、child_process 等模塊。Agent 第一次寫代碼時用咗 fs.readFile,部署後直接報錯。改做由 env 讀取 binding 後就 OK 喇。
坑 3:Webhook 簽名驗證唔好慳
Stripe Webhook 必須驗證簽名。Agent 一開始漏咗呢個,被我在 review 時發現。加上 stripe.webhooks.constructEventAsync() 之後先安全。
坑 4:測試要測生產環境
staging 同生產環境嘅配置可能唔一樣(API key、環境變量)。Agent 喺 staging 測通咗,但生產上 D1 binding 唔啱,導致 500。後來發現係 wrangler.toml 裏面 database_id 寫錯咗。
09 想自己試?呢幾步跟住做
第一步:裝 OpenClaw
npm install -g openclaw
openclaw init

第二步:創建一個後端 Agent
在 ~/.openclaw/agents/ 下新建一個 Agent 目錄,寫好 SOUL.md(話俾佢知係做後端開發嘅)同 TOOLS.md(俾佢 shell 訪問權限)。
第三步:準備好所有 API Key
參考第 02 節嘅清單:Cloudflare、Stripe、Replicate、Google OAuth。註冊賬號,拎到 Key,寫入 .env。
第四步:寫一份 PRD
唔需要太複雜。話俾佢知:做咩站、用咩技術棧、核心功能有邊啲、數據庫表結構。
第五步:發任務
直接俾 Agent 發訊息:『按照 PRD 搭建後端,完成後 commit + push。』
然後你就等住睇代碼啦。
寫喺最後
OpenClaw 349k Stars 嘅原因,唔係佢識得寫代碼——Cursor、Claude Code 都識得寫。
係佢可以令到 Agent 持續運行、自主決策、自己修 Bug。
我嘅 headshotcraft 後端由開發到上線到修 Bug,全程 Agent 自主完成。我只係負責 PRD 同驗收。
後端開發呢件事,已經唔需要你自己寫啦。但你要識得寫 PRD,識得驗收代碼,識得做架構決策。
呢啲先係未來後端工程師嘅核心能力。
有問題評論區傾,我每條都睇。
🚀 想同更多 AI 愛好者交流,共同成長嗎?

📚 精選文章推薦
突發:Anthropic 今日起封殺 OpenClaw 用訂閲額度,我嘅應對方案 一行代碼冇手寫,OpenClaw 前端 Agent 100 分鐘做完一個站 GLM-5.1 嚟咗:開源模型第一次喺長程任務上斷檔領先 Claude Code 源碼洩漏後,我反而更確定:終端 Agent 只應該接 3 類嘢 唔識設計都可以做站:我用 OpenClaw + Stitch 2.0 半個鐘出咗成套設計稿同代碼 OpenClaw 做站全流程:5 個 AI Agent 接力,由選詞到文案一日跑通 OpenClaw 自動出 PRD:由選詞到產品文檔一日搞掂 唔好再亂咁揾需求啦:我用 OpenClaw 搭咗一套 11 步全自動挖掘系統 40 蚊/月用 4 個編程模型,我唔想再折騰了 128K Star 嘅開源 AI 編程 Agent,逼到 Anthropic 發律師信了
大家好,我是孟健。
我的 AI 頭像生成站 headshotcraft.com 的後端,不是我寫的。
Stripe 支付對接、Replicate AI 生成、Cloudflare D1 數據庫、OAuth 登錄、Webhook 回調——全部由一個 OpenClaw Agent 獨立完成。從拿到 PRD 到生產上線,我沒打開過一次代碼編輯器。
今天我把整個過程拆開講,你照着做,也能用 OpenClaw 給自己的項目搭後端。
01 先搞清楚:OpenClaw 做後端的邊界在哪?
OpenClaw 不是萬能的。它擅長的是標準化 SaaS 後端:API 開發、支付對接、數據庫操作、第三方 API 集成、部署上線。
它不擅長:從零設計架構(你得給 PRD)、高度定製化的業務邏輯(複雜的權限系統、實時協作等)。
我的做法是:前端和設計用其他 Agent 或自己做,後端專門交給一個 Agent(我叫它墨樞)。 給它一份清晰的 PRD,它就能跑起來。
02 環境準備:Agent 需要什麼?
在讓 Agent 動手之前,你得先把環境準備好。這一步很關鍵——Agent 沒法幫你註冊賬號、申請 API Key。
headshotcraft.com 用了這些服務,每個都需要你提前註冊並拿到密鑰:
Cloudflare(部署 + 數據庫)
註冊 Cloudflare 賬號 安裝 Wrangler CLI: npm install -g wrangler登錄: wrangler login創建 D1 數據庫: wrangler d1 create headshotcraft拿到 database_id,寫進wrangler.toml
Stripe(支付)
註冊 Stripe 賬號 在 Dashboard → Developers → API Keys 拿到 STRIPE_SECRET_KEY創建兩個 Price(月付/年付),拿到 price_xxx創建 Webhook Endpoint,拿到 STRIPE_WEBHOOK_SECRET
Replicate(AI 生成)
註冊 replicate.com 在 Account → API Tokens 創建 Token,拿到 REPLICATE_API_TOKEN
Google Cloud Console(OAuth 登錄)
創建 OAuth 2.0 Client 拿到 GOOGLE_CLIENT_ID和GOOGLE_CLIENT_SECRET
全部拿到後,寫進項目的 .env 文件:
# Google OAuth
GOOGLE_CLIENT_ID=xxx
GOOGLE_CLIENT_SECRET=xxx
# Session
SESSION_SECRET=xxx
# Stripe
STRIPE_SECRET_KEY=sk_live_xxx
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_live_xxx
STRIPE_WEBHOOK_SECRET=whsec_xxx
# Cloudflare
CLOUDFLARE_API_TOKEN=xxx
# Replicate
REPLICATE_API_TOKEN=r8_xxx
這些 Key 都在你自己手裏,Agent 只是用它們來調用 API,不會泄露。
📍 環境準備好後,剩下的開發、測試、部署,全部可以交給 Agent。
03 實戰:AI 頭像生成站的後端全鏈路
以 headshotcraft.com 為例。這個站的功能很簡單:用戶上傳自拍 → AI 生成 4 張專業頭像 → 下載。

後端需要做什麼?
用戶登錄(Google OAuth) 積分系統(免費用戶 1 次,付費用戶按月扣) Stripe 支付(月付/年付訂閲) AI 生成(對接 Replicate API) Webhook 回調(支付成功後自動開通權益)
第一步:告訴 Agent 你的需求
我給墨樞發了一條消息:
P0:headshotcraft 後端 closure
真測 pricing → login → checkout 真測登錄態 AI 生成鏈路 確認 production 是不是最新版本 如有修改,直接 commit + push + deploy
就這一條。它知道項目在哪、用什麼技術棧、怎麼部署——因為這些信息都寫在它的 SOUL.md 和 MEMORY.md 裏。
第二步:Agent 自己讀代碼、改代碼
墨樞收到任務後,直接讀了項目代碼。項目結構:
src/app/api/
├── auth/
│ ├── login/route.ts # Google OAuth 登錄
│ ├── callback/route.ts # OAuth 回調
│ └── me/route.ts # 獲取當前用戶信息
├── checkout/route.ts # 創建 Stripe Checkout Session
├── generate/route.ts # 調用 Replicate 生成頭像
├── upload/route.ts # 上傳圖片
├── user/
│ ├── credits/route.ts # 查詢積分餘額
│ └── account/route.ts # 賬户信息
└── webhooks/
└── stripe/route.ts # Stripe 支付回調
它讀的文件和我列的一樣多。 然後它開始逐個驗證。
第三步:驗證 Stripe 支付鏈路
Agent 用 curl 模擬了真實請求:
POST /api/checkout
Authorization: Bearer <session_token>
Body: { "plan": "monthly" }
後端代碼做了這些事(checkout/route.ts):
const checkoutSession = await stripe.checkout.sessions.create({
mode: "subscription",
line_items: [{ price: priceId, quantity: 1 }],
success_url: `${origin}/app?checkout=success`,
cancel_url: `${origin}/pricing?checkout=cancelled`,
customer_email: session.email,
metadata: {
userId: String(session.userId),
plan: plan === "yearly" ? "pro_yearly" : "pro_monthly",
},
});
返回 Stripe Checkout URL,前端自動跳轉。支付成功後,Stripe 發 Webhook 到 /api/webhooks/stripe,後端自動給用戶開通權益。
Webhook 代碼(webhooks/stripe/route.ts):
if (event.type === "checkout.session.completed") {
const session = event.data.object;
const userId = session.metadata?.userId;
const plan = session.metadata?.plan;
const customerId = session.customer;
if (userId && plan) {
await setPlan(Number(userId), plan, customerId);
}
}

這段代碼不是我寫的。是 Agent 寫的,測試的,部署的。
第四步:驗證 AI 生成鏈路
用戶上傳照片後,後端調用 Replicate API 生成頭像。核心代碼(generate/route.ts):
const response = await fetch("https://api.replicate.com/v1/predictions", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.REPLICATE_API_TOKEN}`,
},
body: JSON.stringify({
version: "ddfc2b08d209f9fa8c1eca692712918bd449f695dabb4a958da31802a9570fe4",
input: {
input_image: image,
prompt: `img, ${prompt}`,
style_name: "Photographic (Default)",
num_outputs: 4,
},
}),
});
先創建預測任務,然後輪詢狀態,等 AI 跑完後返回 4 張圖片。整個過程 Agent 用 curl 在生產環境跑了一遍,確認返回 4 張圖,下載連結 200 OK。

第五步:一個真實的線上 Bug
上線後某天,AI 生成突然掛了。用戶上傳照片後一直報錯。
根因:Replicate 的 model version 失效了。
Replicate 會不定期更新模型版本,舊版本的 hash 直接不可用。我的代碼裏寫死了一個 version ID,某天它就失效了。
墨樞自動排查:讀日誌 → 發現 Replicate 返回 404 → 檢查當前可用版本 → 替換 version ID → commit → push → Cloudflare 自動部署。
commit 2b7aadd — fix: update replicate model version
push origin/main
deploy → https://23f775b9.headshotcraft.pages.dev
從故障到修復上線,全程無人干預。我唯一做的事是看到報告後點了個確認。
04 技術棧:Agent 用的什麼?
headshotcraft.com 的完整後端技術棧:
部署配置就一個 wrangler.toml:
name = "headshotcraft"
compatibility_date = "2024-09-23"
compatibility_flags = ["nodejs_compat"]
pages_build_output_dir = ".vercel/output/static"
[[d1_databases]]
binding = "DB"
database_name = "headshotcraft"
database_id = "4cf723c5-f87a-44b2-81f4-6d38b795e6c0"
數據庫通過 binding 直接注入,不需要 HTTP 連接、不需要 IP 白名單、不需要密碼。 這是 Cloudflare D1 最大的優勢,也是 Agent 最容易操作的數據庫方案。
部署就一行命令:
CLOUDFLARE_ACCOUNT_ID=xxx npx wrangler pages deploy .vercel/output/static \
--project-name headshotcraft --branch main
Agent 每次 commit + push 後,自動執行這行命令。Cloudflare 收到代碼後自動構建部署。

05 數據庫操作:Agent 怎麼讀寫 D1?
Agent 寫了一個統一的數據庫封裝(src/lib/db.ts):
function getDB() {
const { env } = getRequestContext();
const db = env.DB;
return db;
}
// 查詢
async function query(sql, params = []) {
const db = getDB();
return await db.prepare(sql).bind(...params).all();
}
// 寫入
async function run(sql, params = []) {
const db = getDB();
return await db.prepare(sql).bind(...params).run();
}
然後用這套封裝做所有數據庫操作:查積分、扣積分、更新用戶 plan、記錄 Stripe customer ID。
你不需要告訴 Agent 用什麼 ORM。它自己判斷 D1 是 SQLite 兼容的,直接寫原生 SQL 最簡單。
06 我是怎麼給 Agent 交接的?
很多人問:Agent 怎麼知道要做什麼?
答案很簡單:寫好 PRD。
我的 PRD 裏包含:
站點定位和目標用戶 核心功能清單(哪些必須做,哪些可以後補) 技術棧約束(必須用 Cloudflare,不能用 AWS) 定價方案(月付 $9.99,年付 $79.99) API 設計( /api/upload、/api/generate、/api/checkout)數據庫表結構(users、credits)
Agent 讀完 PRD 就開工了。中間遇到不清楚的地方,它會問我。比如它問過:"積分不足時是返回錯誤還是提示升級?" 我說返回 402 並提示升級。
整個後端開發過程,我和 Agent 的交互不到 10 條消息。
07 成本核算
OpenClaw 開源免費。成本在兩塊:
LLM API 調用:
後端 Agent 用的模型是 GPT-5.4,單次後端開發任務(從讀代碼到 commit + deploy)大概消耗 5-8 萬 tokens。按 GPT-5.4 的定價,單次任務成本約 $5-15。
注意:這不是 $183。$183 是 Agent 長期 session 的累計成本(它同時處理了很多任務)。單個後端開發任務的實際成本很低。
基礎設施:
沒用戶之前,基礎設施成本接近零。 這就是 Cloudflare 方案最大的優勢。
08 踩坑指南
坑 1:第三方 API 的 version 會變
Replicate 的 model version 不是永久的。寫死 version ID 的代碼,某天就會掛。建議在配置文件裏集中管理 version ID,方便 Agent 快速定位和替換。
坑 2:Edge Runtime 限制多
Cloudflare Pages 的 Edge Runtime 不支持 Node.js 的 fs、child_process 等模塊。Agent 第一次寫代碼時用了 fs.readFile,部署後直接報錯。改成從 env 讀取 binding 後就好了。
坑 3:Webhook 簽名驗證別省
Stripe Webhook 必須驗證簽名。Agent 一開始漏了這個,被我在 review 時發現。加上 stripe.webhooks.constructEventAsync() 後才安全。
坑 4:測試要測生產環境
staging 和生產環境的配置可能不一樣(API key、環境變量)。Agent 在 staging 測通了,但生產上 D1 binding 不對,導致 500。後來發現是 wrangler.toml 裏 database_id 寫錯了。
09 想自己試?這幾步照着走
第一步:裝 OpenClaw
npm install -g openclaw
openclaw init

第二步:創建一個後端 Agent
在 ~/.openclaw/agents/ 下新建一個 Agent 目錄,寫好 SOUL.md(告訴它你是做後端開發的)和 TOOLS.md(給它 shell 訪問權限)。
第三步:準備好所有 API Key
參考第 02 節的清單:Cloudflare、Stripe、Replicate、Google OAuth。註冊賬號,拿到 Key,寫進 .env。
第四步:寫一份 PRD
不需要多複雜。告訴它:做什麼站、用什麼技術棧、核心功能有哪些、數據庫表結構。
第五步:發任務
直接給 Agent 發消息:"按照 PRD 搭建後端,完成後 commit + push。"
然後你就等着看代碼吧。
寫在最後
OpenClaw 349k Stars 的原因,不是它能寫代碼——Cursor、Claude Code 也能寫。
是它能讓 Agent 持續運行、自主決策、自己修 Bug。
我的 headshotcraft 後端從開發到上線到修 Bug,全程 Agent 自主完成。我只負責 PRD 和驗收。
後端開發這件事,已經不需要你自己寫了。但你得會寫 PRD,會驗收代碼,會做架構決策。
這些才是未來後端工程師的核心能力。
有問題評論區聊,我每條都看。
🚀 想要與更多AI愛好者交流,共同成長嗎?

📚 精選文章推薦
突發:Anthropic 今天起封殺 OpenClaw 用訂閲額度,我的應對方案 一行代碼沒手寫,OpenClaw 前端 Agent 100 分鐘做完一個站 GLM-5.1 來了:開源模型第一次在長程任務上斷檔領先 Claude Code 源碼泄露後,我反而更確定:終端 Agent 只該接 3 類活 不會設計也能做站:我用 OpenClaw + Stitch 2.0 半小時出了整套設計稿和代碼 OpenClaw 做站全流程:5 個 AI Agent 接力,從選詞到文案一天跑通 OpenClaw 自動出 PRD:從選詞到產品文檔一天搞定 別再瞎找需求了:我用 OpenClaw 搭了一套 11 步全自動挖掘系統 40塊/月用4個編程模型,我不想再折騰了 128K Star 的開源 AI 編程 Agent,把 Anthropic 逼到發律師函了