iT邦幫忙

2025 iThome 鐵人賽

DAY 27
0
Software Development

Temporal 開發指南:掌握 Workflow as Code 打造穩定可靠的分散式流程系列 第 27

(未完成) Day27 - AI 對話平台:整合 Temporal 與 AI Agents (中)

  • 分享至 

  • xImage
  •  

未完成

範例出了些狀況,所以今天卡住了

中:深入 workflows.ts 的設計細節(Update/Signal、佇列、取消、切割歷史)
工作流骨架與狀態
chatSessionWorkflow(startArgs): 長駐實體;以 pendingQueue: QueueItem[] 暫存待處理訊息。
proxyActivities 設定 startToCloseTimeout 與 retry 策略(控制重試/backoff)。
Update/Signal 與佇列機制
sendMessageUpdate: 用 Trigger 實現 deferred 結果,僅「入列」。
confirmLedgerUpdate: 直接呼 acts.saveLedger,避免阻塞訊息佇列。
cancelSignal: 操作 CancellationScope 取消當前任務。
主循環與壓力控制
condition(() => pendingQueue.length > 0 || workflowInfo().continueAsNewSuggested) 等待新任務或建議切割。
FIFO 出列,dispatchByCapability 分流到 chatReply、weatherReply、parseLedgerProposal、queryLedgerRange。
continueAsNew:歷史過大時切割以降低歷史回放成本。
錯誤處理與使用者體驗
對可預期錯誤(如 Not a ledger、Invalid date、Unsupported range)回傳可讀訊息。
其他錯誤讓工作流失敗或交給 Activity 重試,維持決定性邊界。
可擴充路徑
增加新能力:擴充 Capability、加入新 Activity、在 dispatchByCapability 新增分支。


上一篇
Day26 - AI 對話平台:整合 Temporal 與 AI Agents (上)
系列文
Temporal 開發指南:掌握 Workflow as Code 打造穩定可靠的分散式流程27
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言