我用 OpenClaw 做後端開發:從 Stripe 支付到 AI 生成,全程不寫一行代碼

作者:孟健AI編程
日期:2026年4月5日 下午1:21
來源:WeChat 原文

整理版優先睇

速讀 5 個重點 高亮

本文作者孟健分享如何用 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 同驗收。
  • 環境準備係關鍵一步:需要預先註冊 CloudflareStripeReplicate、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 登錄)。每個服務都要攞到對應嘅密鑰。

.env 環境變數範本 plaintext
# 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. 1 畀 Agent 一條訊息:「headshotcraft 後端 closure,測試 pricing → login → checkout,測試登錄態 AI 生成鏈路,確認 production 最新版本,如有修改直接 commit + push + deploy」。
  2. 2 Agent 自己讀取項目結構(src/app/api/ 下嘅路由),逐個驗證。用 curl 模擬 POST /api/checkout 測試 Stripe 鏈路。
  3. 3 驗證 AI 生成:調用 Replicate API 創建預測任務,輪詢狀態,確認返回 4 張圖片。
  4. 4 遇到真實 bugReplicate 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 最熟悉嘅框架)。

wrangler.toml 部署配置 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 白名單,係 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 張專業頭像 → 下載。

headshotcraft.com 首頁

後端需要做啲咩?

  • 用戶登入(Google OAuth)
  • 積分系統(免費用戶 1 次,付費用戶按月扣)
  • Stripe 支付(月付/年付訂閲)
  • AI 生成(對接 Replicate API)
  • Webhook 回調(支付成功後自動開通權益)

第一步:話俾 Agent 知你嘅需求

我俾墨樞發咗一條訊息:

P0:headshotcraft 後端 closure

  1. 真測 pricing → login → checkout
  2. 真測登入態 AI 生成鏈路
  3. 確認 production 係唔係最新版本
  4. 如有修改,直接 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);
  }
}
Stripe API 文檔

呢段代碼唔係我寫嘅。係 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。

Replicate API

第五步:一個真實嘅線上 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 嘅完整後端技術棧:

組件
技術
點解揀佢
運行時
Cloudflare Pages (Edge)
全球 CDN,免費額度夠用
數據庫
Cloudflare D1 (SQLite)
同 Pages 同生態,無需額外配置
支付
Stripe
標準做法,文檔齊全
AI 生成
Replicate API
按量付費,無需自建 GPU
登錄
Google OAuth
最簡單嘅第三方登入
框架
Next.js
Pages 兼容,Agent 最熟悉

部署配置就得一個 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 收到代碼之後自動構建部署。

headshotcraft.com Pricing 頁面

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 Pages
$0
免費額度 500 次/天部署
Cloudflare D1
$0
免費額度 5GB + 500 萬讀/天
Replicate
按量
每次生成約 $0.02-0.05
Stripe
0
按交易抽成 2.9% + $0.30
域名
$10/年
.com 域名

冇用戶之前,基礎設施成本接近零。 呢個就係 Cloudflare 方案最大嘅優勢。


08 踩坑指南

坑 1:第三方 API 嘅 version 會變

Replicate 嘅 model version 唔係永久嘅。寫死 version ID 嘅代碼,某日就會冧。建議喺配置文件集中管理 version ID,方便 Agent 快速定位同替換。

坑 2:Edge Runtime 限制多

Cloudflare Pages 嘅 Edge Runtime 唔支持 Node.js 嘅 fschild_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
OpenClaw GitHub 349k Stars

第二步:創建一個後端 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 愛好者交流,共同成長嗎?

同一班志同道合嘅人,持續精進 AI 嘅每一日

我的微信



📚 精選文章推薦


大家好,我是孟健。

我的 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 張專業頭像 → 下載。

headshotcraft.com 首頁

後端需要做什麼?

  • 用戶登錄(Google OAuth)
  • 積分系統(免費用戶 1 次,付費用戶按月扣)
  • Stripe 支付(月付/年付訂閲)
  • AI 生成(對接 Replicate API)
  • Webhook 回調(支付成功後自動開通權益)

第一步:告訴 Agent 你的需求

我給墨樞發了一條消息:

P0:headshotcraft 後端 closure

  1. 真測 pricing → login → checkout
  2. 真測登錄態 AI 生成鏈路
  3. 確認 production 是不是最新版本
  4. 如有修改,直接 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);
  }
}
Stripe API 文檔

這段代碼不是我寫的。是 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。

Replicate API

第五步:一個真實的線上 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 的完整後端技術棧:

組件
技術
為什麼選它
運行時
Cloudflare Pages (Edge)
全球 CDN,免費額度夠用
數據庫
Cloudflare D1 (SQLite)
和 Pages 同生態,無需額外配置
支付
Stripe
標準做法,文檔齊全
AI 生成
Replicate API
按量付費,無需自建 GPU
登錄
Google OAuth
最簡單的第三方登錄
框架
Next.js
Pages 兼容,Agent 最熟悉

部署配置就一個 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 收到代碼後自動構建部署。

headshotcraft.com Pricing 頁面

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 Pages
$0
免費額度 500 次/天部署
Cloudflare D1
$0
免費額度 5GB + 500 萬讀/天
Replicate
按量
每次生成約 $0.02-0.05
Stripe
0
按交易抽成 2.9% + $0.30
域名
$10/年
.com 域名

沒用戶之前,基礎設施成本接近零。 這就是 Cloudflare 方案最大的優勢。


08 踩坑指南

坑 1:第三方 API 的 version 會變

Replicate 的 model version 不是永久的。寫死 version ID 的代碼,某天就會掛。建議在配置文件裏集中管理 version ID,方便 Agent 快速定位和替換。

坑 2:Edge Runtime 限制多

Cloudflare Pages 的 Edge Runtime 不支持 Node.js 的 fschild_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
OpenClaw GitHub 349k Stars

第二步:創建一個後端 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愛好者交流,共同成長嗎?

和一羣志同道合的人,持續精進 AI 的每一天

我的微信



📚 精選文章推薦