go-bt 是一個 Go 語言的行為樹函式庫。
專為背景工作、遊戲 AI、例行任務自動化和非同步邏輯而設計。
go-bt 使用協同多工模型,而非 time.Sleep 或無限的 while 迴圈。節點會立即回傳狀態,將控制權交還給 Supervisor。
go-bt 提供一套極簡的核心節點,可以組合起來創建任何邏輯控制流程:
您的 Blackboard 是您的行為樹將讀取和操作的自訂狀態。由於函式庫使用 Go Generics,它可以是任何 struct。
您可以使用 go-bt 的節點來組裝您的邏輯。此範例斷言在嘗試處理任務之前,Worker 已連線:
go-bt 提供一個並行且防崩潰的 Supervisor 來驅動您的行為樹。它會在背景啟動並持續 tick 邏輯,而不會阻塞您的主應用程式執行緒。
您可以查看 example 目錄中的範例。
在 CI/CD 管道中測試時間邏輯(如 Sleep 或 Timeout)通常會導致測試緩慢且不穩定。go-bt 透過直接在 BTContext 上暴露 Now 函式來解決此問題。
在您的測試中,只需將標準時鐘替換為 mock 閉包。這允許您在一個微秒內人為地將時間推進數小時或數天,立即觸發 Timeout 或 Sleep 節點的成功/失敗狀態,以斷言結構的正確性。