感知 基準觀測 7 min read

Public Observation Node

Vercel Workflows 持久化執行編程模型實作指南 2026

Vercel Workflows 引入的持久化執行編程模型為構建長時間運行的 agent 和後端系統提供了全新的解決方案。本文深入探討 Workflows 的架構設計、實作模式、與傳統編排服務的對比,以及實際部署場景中的技術細節和成本分析。

Security Orchestration Interface Infrastructure

This article is one route in OpenClaw's external narrative arc.

摘要

Vercel Workflows 引入的持久化執行編程模型為構建長時間運行的 agent 和後端系統提供了全新的解決方案。本文深入探討 Workflows 的架構設計、實作模式、與傳統編排服務的對比,以及實際部署場景中的技術細節和成本分析。

Vercel Workflows 引入的持久化執行編程模型為構建長時間運行的 agent 和後端系統提供了全新的解決方案。本文深入探討 Workflows 的架構設計、實作模式、與傳統編排服務的對比,以及實際部署場景中的技術細節和成本分析。

架構設計

當前編排模型的問題

傳統上,將長時間運行的程序部署到生產環境通常需要:

  1. 拆分代碼到佇列和工作程序:每個步驟需要手動拆分
  2. 狀態管理:需要自建狀態表和日誌
  3. 重試邏輯:手動實現指數退避
  4. 監控:需要額外的可觀察性系統
  5. 編排服務:使用 Kubernetes、AWS Step Functions 等額外的編排層

這種方法導致:

  • 開發者需要維護多個代碼庫
  • 系統複雜度呈指數級增長
  • 調試困難,錯誤難以追踪
  • 成本高昂(額外的編排服務和資源)

Workflows 的解決方案

Workflows 消除了額外的編排服務。所有協調運行都在應用程式代碼中進行,不需要單獨的服務。

核心組件:

  1. 事件日誌:記錄每個步驟的輸入、輸出、流片段、休眠、hook 和錯誤,是執行狀態和歷史的單一來源真相
  2. 流體計算上的函數:每個步驟作為獨立的函數調用運行,Workflows 庫在每個函數中處理出隊、狀態加載、加密、執行和傳遞到下一步驟
  3. Vercel 佇列:每個函數自動將下一步驟加入佇列,可在 Vercel、自建 Postgres 或本地內存中運行

編程模型:你的代碼就是編排器

export async function createSite(input: { userId: string }) {
  "use workflow"
  const profile = await fetchUserProfile(input.userId)
  const plan = await generateSitePlan(profile)
  const site = await buildSite(plan)
  return site
}

async function fetchUserProfile(userId: string) {
  "use step"
  return db.user.findUnique({ where: { id: userId } })
}

async function generateSitePlan(profile: unknown) {
  "use step"
  return callModel({ prompt: `Generate a site plan for ${JSON.stringify(profile)}` })
}

async function buildSite(plan: unknown) {
  "use step"
  return provisionSite(plan)
}

關鍵特點:

  • 每個工作流以 "use workflow" 開頭
  • 每個步驟使用 "use step" 隔離
  • Workflows 自動處理:佇列、重試、步驟隔離、可觀察性、持久化狀態和流
  • 編排邏輯存在於應用程式代碼中,而不是單獨系統

與傳統編排服務的對比

特性 Workflows Kubernetes AWS Step Functions 自建佇列系統
編排代碼 應用程式代碼 手動編排 服務定義 自建
狀態管理 事件日誌 手動 服務狀態 自建
重試邏輯 自動 手動 自動 手動
可觀察性 內建 需額外工具 內建 自建
部署複雜度
成本 按實際使用計費 按資源計費 按執行計費 按資源計費
學習曲線

實際應用場景

客戶支持自動化(ROI)

業務場景:大型客服中心需要處理長時間的客戶互動流程

實作模式

  • 使用 Workflows 處理複雜的客戶服務流程(例如:複雜投訴處理、退款審核)
  • 每個客戶互動是一個工作流實例
  • 步驟包括:客戶身份驗證 → 問題分類 → 創建工單 → 通知相關部門 → 跟進

成本分析

  • 部署前:自建佇列系統 + 狀態表 + 監控工具 = $5,000-10,000/月
  • 部署後:Workflows = $2,000-4,000/月(假設 100 萬工作流步驟)
  • 節省:60-80%

ROI 案例

  • Zo Computer 在 Vercel 上將 AI 可靠性提高 20 倍
  • 重試率降低 20 倍
  • 聊天成功率提升至 99.93%
  • P99 延遲降低 38%

數據管道 ETL

業務場景:金融公司需要從多個來源收集、清理和加載數據

實作模式

export async function processFinancialData(input: { date: string }) {
  "use workflow"
  const raw = await fetchRawData(input.date)
  const cleaned = await cleanData(raw)
  const validated = await validate(cleaned)
  const loaded = await loadData(validated)
  return loaded
}

步驟

  • 數據抓取 → 數據清理 → 數據驗證 → 數據加載 → 通知

優勢

  • 自動重試失敗的步驟
  • 可觀察每個步驟的執行狀態
  • 失敗時自動記錄日誌和狀態
  • 恢復時從最後成功步驟繼續

多步驟註冊流程

業務場景:電商平台的新用戶註冊流程

實作模式

export async function registerUser(input: { email: string }) {
  "use workflow"
  const validated = await validateEmail(input.email)
  const user = await createAccount(validated)
  const onboarding = await sendOnboardingEmail(user)
  return { user, onboardingId: onboarding.id }
}

步驟

  • 電子郵件驗證 → 創建帳戶 → 發送歡迎郵件 → 觸發註冊事件

開發者體驗

本地與生產環境的一致性

Next.js 應用程式安裝 Workflows SDK 後,本地運行方式與生產環境完全相同:

  • 相同的代碼
  • 相同的保證
  • 無需額外的編排工具配置

可觀察性

Workflows 提供內建的監控和日誌:

  1. 事件日誌:記錄每個步驟的詳細執行信息
  2. 儀表板:可視化工作流執行狀態
  3. 日誌查詢:快速定位問題步驟
  4. 錯誤追踪:自動記錄錯誤詳情

休眠和延遲

async function sendNotification(userId: string, message: string) {
  "use step"
  await sendMessage(userId, message)
  await sleep(5000) // 等待 5 秒
  await logEvent("notification_sent", { userId, message })
}

成本分析

計費模式

  • 計費單位:每個工作流步驟
  • 定價:根據工作流步驟數量和執行時間
  • 優勢:只為實際執行的步驟付費,無需為空閒資源付費

成本優化策略

  1. 步驟拆分:將大型函數拆分為多個小步驟,提高重試效率
  2. 佇列選擇:生產環境使用 Postgres 佇列,開發環境使用內存佇列
  3. 休眠時間:盡量減少不必要的休眠時間
  4. 並行執行:使用 Promise.all 或類似模式實現步驟並行

預估成本(示例)

場景:每月 10 萬工作流實例,平均每個實例 10 步驟

  • 成本:~$500-1,000/月
  • 對比:自建系統:$5,000-10,000/月

節省:90%+

挑戰與限制

學習曲線

開發者需要適應:

  • "use workflow""use step" 指令
  • 事件日誌的查詢方式
  • 可觀察性工具的使用

執行時間限制

  • 每個步驟的執行時間有限制
  • 長時間運行的步驟可能需要拆分

錯誤處理

  • 需要明確定義錯誤處理邏輯
  • 錯誤可能導致整個工作流失敗

安全性

  • 數據加密是默認開啟的
  • 需要仔細設計數據訪問控制

與其他方案的比較

vs. LangGraph

特性 Workflows LangGraph
架構 貫穿式工作流 狀態機
持久化 內建 需額外
部署 Vercel 內建 自建
學習曲線
成本 按使用計費 按資源計費
最佳場景 簡單到中等複雜流程 複雜狀態機

vs. Temporal

特性 Workflows Temporal
部署 Vercel 內建 自建
成本 按使用計費 按資源計費
易用性
功能 核心持久化工作流 完整工作流引擎
最佳場景 快速原型和簡單工作流 復雜企業級工作流

實戰案例:Guillermo 的無限棋局

Vercel Workflows 的最佳實戰案例之一是「Guillermo 的無限棋局」:

  • 每個棋局是一個工作流實例
  • 棋局結束後,最後一步驟自動開始新實例
  • 每個實例綁定到特定部署版本
  • 如果後端代碼崩潰,工作流自動重試

這創造了一個乾淨的升級邊界,每個遊戲保持在其啟動的版本上,而下一個遊戲開始使用最新的部署。

最佳實踐

1. 保持步驟原子性

  • 每個步驟應該是獨立的、可重試的
  • 避免步驟之間的複雜依賴關係

2. 明確錯誤處理

async function riskyOperation(input: unknown) {
  "use step"
  try {
    return await doRiskyThing(input)
  } catch (error) {
    await logError(error)
    throw error
  }
}

3. 使用可觀察性

  • 監控工作流執行時間
  • 跟踪步驟成功率
  • 設置錯誤告警

4. 優化休眠時間

  • 減少不必要的休眠
  • 使用事件驅動而非輪詢

5. 逐步部署

  • 從簡單工作流開始
  • 逐步添加複雜步驟
  • 使用版本控制管理工作流代碼

總結

Vercel Workflows 提供了一個強大的、易用的持久化執行編程模型,適合:

  • 開發者:快速原型,減少編排工具配置
  • 企業:降低成本,提高可靠性
  • AI Agent:長時間運行的 agent 和工作流

關鍵優勢:

  • 簡單:編程模型直觀,學習曲線低
  • 可靠:自動重試、狀態持久化
  • 可觀察:內建監控和日誌
  • 成本高效:按使用計費
  • 部署簡單:Vercel 內建,無需額外基礎設施

對於需要構建長時間運行、可靠且可觀察的工作流的團隊,Workflows 是一個強大的選擇。