TanStack AI 1.0 穩定版:現有聊天應用升級,為何要一起搬動前後端?

TanStack AI 1.0 推出穩定核心介面,實驗性代理框架仍維持0.x。本文拆解前後端同步升級、threadId、工具批准、保存資料遷移與舊會話驗收,協助既有應用安排更新。

Share
TanStack AI 1.0 官方主視覺,左側版本文字、右側棕櫚樹
TanStack 官方1.0發布主視覺。核心介面穩定,代理框架仍屬實驗範圍。 圖片來源:官方原文。

你準備把聊天功能升到 TanStack AI 1.0,資料庫裡卻已經累積對話,前端也加上工具批准與檔案操作,升級就不只是換一個套件版本。

TanStack AI 在 2026 年 10 月 23 日推出 1.0,正式承諾核心介面的穩定性,讓開發者可以繼續選擇模型與畫面框架。

但這次也移除了舊版標示淘汰的介面,而且新加入的代理執行框架仍屬實驗功能,沒有一起進入穩定承諾。

對既有應用來說,前後端版本、會話識別和保存資料需要一起處理,否則畫面能開,舊工作卻可能接不上。

我的判斷是,已有使用者的團隊應先完成核心升級和資料驗收,再獨立評估新代理框架是否適合自己的長任務。

先分清楚這次哪些介面穩定、哪些仍在變動,才知道應該升級到哪裡。

TanStack AI 1.0 的穩定承諾涵蓋哪些部分?

1.0 讓核心 API 進入穩定承諾,實驗性的 harness 套件與相關入口仍可能隨小版本改變。API 是程式之間交換指令與資料的介面,因此穩定承諾會影響開發者是否敢把產品建在上面。

TanStack AI 把聊天、工具、媒體、資料保存和模型連接等能力拆成可組合的部分。開發者可以依既有產品選擇畫面框架與模型供應商,而不必為了做一個聊天欄位,把整個應用換成另一套系統。

但可組合也表示需要知道每一部分的版本。官方明列,新代理執行框架仍使用 0.x,相關入口也屬實驗範圍。它和穩定核心的更新方式不同,不能看到主產品進入 1.0 就一起假設不再改動。

這次移除的是舊版已標示將淘汰的介面,替代方式先前已提供。因此,持續處理警告的專案可能比較接近完成升級,長期停留舊寫法的專案則要補上相應修改。

對初次建立產品的團隊,可以從穩定的基本聊天與工具能力開始,依需求增加其他部分。對已上線的產品,更重要的是原本會話、批准與保存檔案能繼續使用,而不是只看新範例能不能執行。

官方也公布跨供應商的自動測試和文件型別檢查,這代表專案在檢查自己的介面一致性,卻沒有代替你的產品測試。自訂工具、歷史資料和連接權限,仍然是應用自己的條件。

範圍分清楚以後,既有產品首先面對的是客戶端與伺服器必須一起更新。

TanStack AI 1.0 官方主視覺,左側版本文字、右側棕櫚樹
TanStack 官方1.0發布主視覺。核心介面穩定,代理框架仍屬實驗範圍。 圖片來源:官方原文。
0:00
/1:40
TanStack 官方1.0發布影片,介紹AI工具組與代理框架,框架API仍屬實驗功能。 來源:官方發布。

為什麼前端、後端與穩定套件要一起升級?

聊天畫面和伺服器共同解讀同一條串流,兩側版本不一致時,事件與狀態便可能對不上。串流是把回應分段送到畫面的方式,除了文字,也可能夾帶工具狀態、批准要求和工作結束訊號。

因此,只更新前端可能讓新畫面遇到舊伺服器回傳的資料。只更新伺服器,也可能讓舊畫面不知道如何處理新狀態。官方要求穩定套件一起更新,就是要減少這類跨版本落差。

這不表示把所有名稱相近的套件強制填成 1.0。實驗性的執行框架仍在 0.x,開發者應按官方穩定與實驗範圍更新,保留它們各自的版本安排。

自動改碼工具能處理部分常見名稱,例如把聊天層的附加資料改成新的欄位名。但它只處理符合辨識條件的程式,透過自己重新匯出的包裝呼叫,可能仍需要人工查看。

這裡也不能全專案直接搜尋取代所有 body。官方遷移文件說明,部分連接介面或單次呼叫仍保留這個名稱,只有特定聊天層選項改名。亂換反而可能改壞原本正確的程式。

升級順序應保留一份可審查的修改,再由型別檢查找出未處理的位置。型別檢查能確認程式傳入的欄位符合介面,但它不會替你判斷同一位使用者的舊對話應該連到哪個識別。

版本一致還不足夠,應用也需要自己決定一段會話的穩定識別。

threadId 改為必填,會影響舊對話如何接續?

新版要求前後端傳入會話識別,避免每次載入都把同一段聊天當成不同工作。這個欄位叫 threadId,可以把它理解成一段對話在應用裡的固定編號。

如果每次畫面重新繪製都隨機產生一個編號,使用者明明還在同一頁,系統卻可能開始另一段會話。官方因此建議使用路由或資料庫裡穩定的編號,而不是在畫面每次更新時重建。

同一個編號還要從前端送到伺服器。畫面認為正在接續某段工作,後端也必須知道相同目標,否則訊息保存、恢復狀態和產物關聯,就可能分散到不同位置。

自動改碼能把舊欄位名稱換成新名稱,卻無法替專案猜出正確的值。這個值和應用如何建立對話、登入與存取資料有關,必須由開發者沿著現有流程接上。

會話編號也不是授權本身。知道一個編號,不應因此取得別人的對話。伺服器仍需要確認登入者有權存取該工作,再使用這個編號讀取資料,避免把識別和權限混在一起。

驗收時可以在同一段聊天送出訊息、重新載入,再確認紀錄與未完成工作是否接續。接著切換另一段對話,確認它沒有誤接前一段結果,這比只看到輸入框正常更能反映遷移是否完成。

識別能連回同一段會話後,工具批准與串流結束也要接到新事件格式。

工具批准、舊UI套件與串流結束要怎麼搬?

新版改用中斷事件處理工具批准,舊的 UI 套件退出,客製串流則要送出正式結束事件。中斷事件是工作暫停等待使用者處理的狀態,批准工具只是其中一種。

舊的批准回覆方式移除後,畫面需要找到對應的工具批准事件,再回覆同意或拒絕。這讓回應連到正在等待的項目,而不是把一個泛用的成功訊號交給沒有明確目標的工作。

如果應用還收到缺少新綁定資料的舊中斷,官方說明它不能直接恢復。因此,升級不能只換按鈕的呼叫名稱,也要考慮那些在更新前就已經停下來等待批准的工作。

現成聊天 UI 套件的部分元件也退出,開發者改用工廠函式組成自己的畫面。工廠函式可以依聊天設定提供型別,實際的訊息、輸入與批准畫面則由應用提供,原本的外觀不會自動跟著搬好。

若是自己寫串流伺服器,結束時也要改送 RUN_FINISHED。這是告訴客戶端工作已結束的事件,舊式文字終止標記不能再被當成所有狀態都已妥善收束。

這些修改會出現在同一段使用者流程:送訊息、等待工具、處理批准,再收到完成結果。因此應整段操作,而不是分別確認每個函式都能編譯,就推論使用者不會卡在中間。

TanStack AI 1.0 對客戶端工具還要求兩側的輸入與輸出結構一致。若伺服器和瀏覽器分別維護不同定義,工具可能停在一般中斷狀態;把同一份工具定義提供給兩側,有助於減少介面各自修改造成的落差。

互動流程搬好之後,仍需要檢查先前保存的聊天、工作與檔案能否讀回。

有保存對話與檔案的應用,部署前要測哪些情境?

官方要求使用 0.x 保存資料的應用先完成資料升級,型別檢查通過不代表舊紀錄已能接續。因為型別多半檢查目前程式,資料庫裡昨天寫入的格式,未必會在建置時被看到。

官方1.0遷移文件把這部分分成執行紀錄、中斷、產物與客戶端保存。不同應用使用的元件不同,應先找出實際存了哪些資料,再處理對應項目。

例如某些舊執行紀錄不再由新版讀取,需要先完成或清理進行中的工作。這會影響正在使用的產品,所以部署前要知道哪些任務還沒結束,不能直接讓它們在更新後失去恢復路徑。

產物紀錄則需要明確保存檔案位置欄位。若紀錄缺少該欄位,新版可能無法載入原本已生成的檔案。因此既有檔案還在儲存空間裡,不代表使用者能從新畫面找到它。

客戶端過去可能直接保存訊息陣列,新版則要求有 messages 的封裝結構。開發者可以在讀取舊資料時轉成新格式,但仍要確認實際回傳內容,而不是只更新寫入端。

較有代表性的驗收包含舊對話、等待批准的任務、已完成的檔案,以及重新載入後的狀態。它們涵蓋不同保存位置,能找出新應用雖然能開始工作,卻接不回舊成果的落差。

這些保存格式說明了 TanStack AI 1.0 為什麼不能只靠重新安裝驗收。開發者需要挑出更新前已存在的實際記錄,確認它們能被新程式理解,才能讓使用者繼續取回原有工作。

核心應用能順利升級,才有條件討論全新的長任務執行方式。

實驗性代理框架如何保留長任務與人工關卡?

新框架以持久會話記錄安排長任務,等待批准或登入時也能留下狀態,再由其他入口接回。執行框架負責模型周圍的工具、步驟和紀錄,讓一次工作不必只存在單次請求裡。

這對耗時任務有實際用途。使用者關掉頁面之後,若工作狀態仍有可靠紀錄,重新打開時就有機會知道代理做到哪裡,而不是重新送出相同目標,造成重複執行。

官方也區分工作中的指示與後續任務。新指示可以在下一次模型呼叫前被處理,後續任務則等待目前工作,這能避免把所有新訊息都當成需要立刻插進當前步驟的命令。

同一份代理定義可以連到終端機、網頁或編輯器等入口,但入口可用不代表執行權限相同。應用仍要決定能讀哪些檔案、是否能連網,以及哪類動作需要等待使用者處理。

框架留下批准或登入的等待狀態,主要是讓流程可恢復。它沒有替應用作出批准決定,也不應因為狀態已保存,就在重新連線時把尚未同意的動作直接執行。

由於這部分介面仍屬實驗功能,團隊需要接受更新時可能修改程式。對依賴長任務的產品,這是架構選擇的成本,不能只因展示能持續工作,就忽略後續維護。

能保留狀態不等於動作已被授權,工具執行範圍仍要由應用程式限制。

既有產品和新專案,現在應該怎麼採用1.0?

我會讓既有產品先驗收對話接續與批准狀態,新專案再把實驗框架當成需要承受介面變動的選項。兩者要處理的問題不同,沒有必要為了同一次版本消息全部重做。

對已上線的應用,最有價值的完成條件是使用者仍能找到舊成果、接續未完成任務,並理解目前正在等待什麼。這些行為通過後,穩定核心的承諾才真正進入產品。

對新的代理產品,則可以先設計清楚的一段長任務,觀察狀態、工具與人工關卡如何串接,再評估實驗介面變動的成本是否能接受,而不是一開始就開放所有工具。

能在升級後繼續讀懂使用者已完成和未完成的工作,才算真正把應用搬到新版本。

延伸閱讀:Vercel durable-harness 是什麼?程式代理雲端當機後如何接著做

延伸閱讀:Claude MCP Tasks 與 Elicitations:長任務交給外掛,何時回來問你?

常見問題 FAQ

TanStack AI 1.0 的代理框架也穩定了嗎?

沒有。穩定承諾涵蓋核心介面,新harness套件與相關入口仍屬實驗範圍,部分套件維持0.x且可能隨小版本改動。

執行自動改碼後就能部署嗎?

還需要同步更新適用套件、處理型別錯誤與保存資料,並實際驗收對話接續、批准和檔案。自動改碼無法替應用猜出正確的會話識別。

threadId 應該每次產生新的隨機值嗎?

同一段會話需要穩定識別。每次畫面更新就產生新值,可能讓系統把原本對話當成新工作,應沿用應用管理的會話編號。

資料來源