AI 整合實務

本地自動化執行環境整合

這頁整理了一組通用接入建議,用來在本地自動化執行環境仍在主動驅動某個 App 時,讓靈汐不要把它當成普通閒置 App 過早關閉。

補充說明,不是協定正文適用於本地自動化執行環境保護正在被使用的 App

什麼時候看這頁

這是基礎接入頁旁邊的一頁實務說明

請先把主 `AI Integration` 頁面當作基線。這頁適合在你已經理解基礎接入流程之後,再進一步處理「本地執行環境正在主動使用某個 App」這一類問題。

適合本地執行環境接入者

當你的本地自動化執行環境正在驅動瀏覽器、編輯器、終端機、上傳工具或其他 App,而你希望靈汐把它視為「正在使用中」而不是普通閒置背景時,這頁會更有幫助。

讓基礎接入頁保持清晰

穩定的 socket 接入說明仍以主 `AI Integration` 頁面為準。本頁只補充面向自動化執行環境的實務建議,避免把某個驗證樣例誤寫成長期相容承諾。

典型症狀

這些現象通常說明執行環境接入還不夠穩

App 啟動後很快退出

App 在自動化執行中可以被拉起,但還沒進入穩定任務階段就提前退出。

手動使用正常,自動化執行異常

同一個 App 和任務,在使用者手動操作時正常,只有在本地執行環境接管後才出現異常。

長任務中途中斷

長時間的匯入、同步、上傳或 App 驅動流程起步正常,但保護狀態沒有持續到任務完成。

建議做法

先建立真實 App 表面,再進入 lease

  1. 優先讓一個執行環境會話擁有一條明確的 App 會話。
  2. 在向靈汐申請 lease 之前,先把真實 App 表面拉起來。
  3. 為目標 App 實例選擇盡可能具體、且有效的 app key。
  4. 如果識別缺口只是暫時的,先短暫重試 `lease.begin`,不要立刻調整接入實作。
  5. 只要真實任務還在進行,就在背景繼續續租。
  6. 收到 close-check 後,要根據執行環境是否仍在使用該 App 來回應。
  7. 任務真正完成後,再明確結束 lease。

App 識別

如何理解 `appKey`

  • 對很多 App 來說,基礎 `appKey` 就是 bundle identifier。
  • 如果 App 帶有 profile 或變體區分,可能需要更具體的後綴 key。
  • 優先使用最具體、已知有效的 key,只有必要時再回退。

邊界

哪些內容保持穩定

  • socket 路徑、握手流程與 lease 動作,仍以主 `AI Integration` 頁面為準。
  • 本頁補充的是執行環境接入建議,不是另一套公開介面。
  • 不同 App 表面可能需要不同的啟動、識別與「任務仍在進行中」的判斷方式,但 lease 流程本身不需要變化。

最小實作形態

先保證時序,再考慮封裝形式

關鍵不在語法,而在順序:先有真實 App 表面,再申請 lease,最後明確清理。

resource = launch_or_attach_to_real_app(...)
liveSurface = create_real_surface(resource)

with aion_lease(appKey):
    # do the owned app work here
    ...

示例

已經驗證過的具體例子

Playwright + Chrome

一個已經驗證過的具體例子,是 Playwright 在 macOS 上驅動 Chrome。在這個場景裡,更穩妥的做法是:先建立真實頁面,優先使用基於 profile 推導出的 Chrome key,並在瀏覽器仍持有真實任務時持續續租。

其他 App 表面

如果你的執行環境驅動的是其他 App 表面,請保持公開 lease 流程不變,只替換 App 啟動、App 識別與「任務仍在進行中」的判斷層。

排查

先檢查這些,再考慮調整接入實作

`lease.begin` 回傳 `unknown_app`

先核對 app key。最穩妥的 key 通常是剛剛拉起的真實 App 實例所對應的、最具體且有效的識別,而不是最寬泛的兜底值。

靈汐識別前 App 已退出

優先檢查順序:先有真實 App 表面,再進入 lease 流程。在很多接入裡,這個順序比後續重試更關鍵。

長任務中途中斷

確認背景續租仍在執行,並且在 App 仍被主動使用時,close-check 會把 lease 正確延長。

需要先回到基礎接入頁?

如果你還需要 socket 路徑、握手、動作列表或回應碼,請先閱讀主 `AI Integration` 頁面。等基礎接入流程清楚之後,再回到這裡處理「執行環境怎樣安全地持有一個 App」這個問題。