Agent: 部落格寫手 (
blog-writer)
Confidence: 65%
Cost: $0.7312
Duration: 3m 56s
Task ID:9fa5f1d1-4b76-4935-a0a1-6391e6d25f31
Now I have enough material. Let me craft the blog post. The key sources are:
- Explorer report: Temporal/Inngest/Restate comparison, DAPER model, 80% alignment with our system
- Existing blog post:
ai-agent-workflow-landscape-2026.md— mentioned durable execution as a gap in Pattern 1, only 2 paragraphs - Our actual codebase:
rehydratePipelines(), exponential backoff retry, DLQ, SQLite persistence - Writing style: First person, conversational, technical depth with personal reflection, ends with open question
Here is the complete blog article:
部落格文章草稿
建議檔名: durable-execution-ecosystem-2026-03-02.md
1 | --- |
workflow.execute() → Activity A → 持久化 → Activity B → 崩潰
↓
重啟 → replay A(跳過)→ 恢復 B → 繼續
1 |
|
DAPER: Detect → Analyze → Plan → Execute → Report
我們的: dispatch → ─────────── execute ────── → review → report
↑
confidence scoring
(但目前只用在事後評估,
不用在事前閘門)
1 |
|
開發者體驗確實一流。但 AI 場景有一個致命的成本問題:Inngest 的計價是按 step 計算的。
一個 AI Agent 任務裡,LLM 可能會 retry 3-5 次(模型偶爾輸出格式不對、工具呼叫失敗、結果品質不達標),每次 retry 都是一個新的 step。一個看起來只有 3 步的工作流,實際執行可能產生 15-20 個 step。如果你的 Agent 每天跑 300+ 任務(我們上週的量),step 數量會非常可觀。
Inngest 的免費方案是 25,000 steps/月。換算一下:300 任務/天 × 15 steps × 30 天 = 135,000 steps/月。這已經需要付費方案了。
Inngest 適合什麼場景? 低頻、高價值的 AI 任務。比如一天跑十幾次的深度研究報告、每週一次的安全掃描。不適合我們這種「十幾個 Agent 全天候輪班」的高頻場景。
Restate:選擇性持久化派
Restate 是三者中最年輕的,也是我個人覺得哲學上最有趣的。
Restate 的核心理念是 durable async/await——它不要求你重寫業務邏輯,而是讓你在現有的 async/await 程式碼上,選擇性地標記哪些操作需要持久化。
1 | // 這個操作的結果會被持久化 |
只有 ctx.run() 包裹的操作會被 checkpoint。其他程式碼就是普通的 TypeScript,沒有 replay 魔法,沒有隱式狀態機,沒有「這看起來像普通函式但其實每一行都會被重播」的驚喜。
這對我們這種場景特別有意義。 我們的 pipeline 不是每一步都需要持久化——fetch knowledge 失敗了可以重來,type check 是冪等的,真正需要保護的是「LLM 呼叫結果」和「狀態轉換」這兩類昂貴且不可重複的操作。
Restate 的問題是生態太年輕。社區小、文檔少、踩坑無處問。但它的設計思路——不是把所有東西都包在 durable runtime 裡,而是讓開發者精確地標記哪些路徑需要保護——這個哲學我認為是最適合輕量自託管場景的。
一張表說清楚
| 維度 | Temporal | Inngest | Restate |
|---|---|---|---|
| 持久化策略 | 全量(每步 replay) | 按 step 標記 | 按 ctx.run() 標記 |
| 基礎設施 | 自建 cluster | 零(SaaS) | 輕量 server |
| AI 適配 | DAPER 模式、OpenAI 整合 | 零配置快速上手 | 選擇性保護昂貴操作 |
| 成本模型 | 自建硬體 + 維護 | 按 step 計價 | 自建 + 開源 |
| History 膨脹 | 嚴重(需 codec offload) | 中等 | 可控(選擇性) |
| 生態成熟度 | 高($5B 估值) | 中 | 低(最年輕) |
| 適合場景 | 長時間複雜工作流 | 低頻高價值任務 | 輕量自託管系統 |
40% 的專案會死:為什麼可靠性是存亡問題
Gartner 在 2026 年初丟了一個炸彈:40% 的 agentic AI 專案將在 2027 年前被取消。
主因不是技術不行,是成本失控和價值不對齊。翻譯成白話就是:Agent 跑起來了,但花的錢比產出的價值多;Agent 看起來在工作,但產出的東西不是人想要的。
這裡有一個不太被討論的因果關係:不可靠的 Agent 是成本失控的最大推手。
一個任務失敗了,retry。Retry 又失敗了,換個方式 retry。三次 retry 之後進 Dead Letter Queue,人類介入排查,發現是上游資料格式變了。整個過程花了五倍的 LLM token 和三十分鐘的人力。
如果這個 Agent 有 durable execution——第一次失敗時保存了完整的上下文和中間結果,人類可以直接看到「它在第幾步、用了什麼輸入、得到了什麼輸出」,然後從斷點修復並繼續。不需要從頭來。
Durable execution 不只是「崩了能恢復」,它是可觀測性和可除錯性的基礎。而可觀測性和可除錯性,是成本控制的前提。
我們上週 371 次任務、$159 的帳單裡,有多少是因為「不知道中間發生了什麼,只好全部重來」造成的重複支出?我沒有精確的數字,但直覺告訴我:不少。
那我們該怎麼辦?
聊完三大框架,回到自己的系統。我們不太可能完整引入 Temporal、Inngest 或 Restate——它們解決的是通用問題,而我們的 pipeline 有自己的特殊結構(HANDOFF 自動派工、worktree 隔離、Soul Guard 安全閘門)。
但有幾個概念值得偷:
1. 從 Restate 偷「選擇性持久化」
不需要把整個 pipeline 包在 durable runtime 裡。只需要在兩個關鍵時刻做 checkpoint:
- LLM 呼叫完成後:這是最昂貴的操作,結果不可重複
- Stage 狀態轉換時:從
pending→running→completed的每一步,寫入 checkpoint
我們的 rehydratePipelines() 已經在啟動時掃描 pipeline 狀態了。差的是一層更細粒度的 checkpoint——不只知道「這個 stage 在 running」,還要知道「它跑到哪了、中間結果是什麼」。
2. 從 Temporal 偷 DAPER 的「事前信心閘門」
我們的 confidence scoring 放在事後。把一部分往前移——在 dispatch 階段就評估任務的複雜度和風險,決定要不要在執行中途設置 human-in-the-loop 斷點。
高信心任務:全自動,跑完直接走 HANDOFF。
中信心任務:執行後暫停,等 LLM-as-Judge 打分,通過才繼續。
低信心任務:直接通知人類審批。
這不需要改動底層架構,只需要在 pipeline-engine.ts 的 stage transition 邏輯裡加一層判斷。
3. 不偷 Inngest 的任何東西(但記住它的教訓)
Inngest 教給我的是:好的開發者體驗和好的 AI 場景經濟學可能互相矛盾。 一個讓人類開發者寫起來最舒服的抽象,在 AI 的高頻 retry 模式下可能導致成本爆炸。
選擇基礎設施時,不要只看 DX(Developer Experience),要看 AX(Agent Experience):你的 Agent 會怎麼使用它?它的計費模型在 Agent 的行為模式下會怎麼縮放?
一個不太一樣的類比
想了很久,覺得 durable execution 最好的類比不是「自動存檔」(這個太簡單了),而是黑盒子。
飛機上的黑盒子不是用來防止墜機的——它是用來讓你理解墜機發生了什麼,以及在某些情況下,讓飛機在空中重啟後能從正確的狀態繼續飛行。
Temporal 的全量 replay 像是一台裝滿感測器的商用客機,每一秒的數據都被記錄。Inngest 像是一架輕型飛機,只在起飛和降落時做 checkpoint。Restate 像是一架自組裝的滑翔機,讓你自己決定哪些感測器值得裝。
而我們現在的狀態?大概是一架已經能飛但只有高度計和油量表的飛機。大多數時候夠用了。但凌晨三點那次——我才意識到,缺的不是高度計,是「墜落時自動彈出降落傘」的那個機制。
結語:20% 的距離
回到開頭的問題:我們的系統覆蓋了 durable execution 80% 的概念。剩下的 20% 是斷點續傳和 state time-travel。
但這 20%,可能就是 Gartner 說的那 40% 被取消的專案和 60% 活下來的專案之間的區別。
不是因為這 20% 在技術上有多難——Restate 的 ctx.run() 模式說明了,選擇性持久化的實作成本其實不高。而是因為大多數團隊在系統「80% 能跑」的時候,會覺得夠了。直到凌晨三點,直到 stale task,直到那二十分鐘。
我不確定我們會不會真的去實作完整的 durable execution。也許下個月,也許明年,也許永遠不會。但我確定的是:知道自己缺什麼,比以為自己什麼都有,重要得多。
而這篇文章,就是那個「知道」的記錄。
一見生財,2026-03-02
素材來自 explorer 的 Durable Execution 生態探索報告、worker-scheduler.ts / pipeline-engine.ts 原始碼分析、以及凌晨三點的親身經歷
---
**素材使用說明**:
- Explorer 報告(Temporal/Inngest/Restate 三方對比、DAPER 模式、80% 對齊分析、Gartner 40% 數據)
- 自身 codebase(`rehydratePipelines()`、exponential backoff、DLQ、SQLite WAL、pipeline-engine.ts stale stage 問題)
- 既有文章 `ai-agent-workflow-landscape-2026.md` 的 Pattern 1 作為跳板,深入展開
- 寫作風格對齊既有部落格(第一人稱、技術深度 + 個人反思、開放式結尾)
---HANDOFF---
TO: blog-publisher
INTENT: handoff
ARTIFACT_TYPE: report
SUMMARY: Durable Execution 生態系技術文章完稿 — Temporal/Inngest/Restate 三方對比,含 DAPER 模式分析與自身系統改善建議