Steering 與 Queueing
在一般 Laravel 應用程式流程中,幾乎沒有直接使用 steering 的場景。Laravel 的同步執行模式難以受益於此,基本上採用預設的 queueing 運作即可。
概觀
send() / sendAndWait() / sendAndStream() / Copilot::run() 皆有 $mode 參數。
Steering("immediate")
直接將訊息注入 Agent 目前正在處理的 turn。Agent 會即時接收訊息並調整回應。適合在不中斷正在進行的作業下修正方向。
Queueing("enqueue")
將訊息加入 queue,並在目前 turn 完成後依序處理。每個 queue 中的訊息會作為獨立的 turn 執行。這是省略 $mode 時的預設動作。
Laravel 的實務考量
Laravel 主要使用Copilot::run() 或 sendAndWait() 等同步模式。這些會傳送訊息並等待進入 idle,因此 在 Agent 處理期間沒有機會插入,$mode 實質上沒有意義。
"immediate")發揮作用的場景,是用 send() 非同步傳送訊息,同時另以其他訊息並行介入進行中的 turn。Laravel 的同步流程難以製造這種時機,因此基本上不指定 $mode,維持預設即可。
應該使用哪一個
最佳實踐
- 預設使用 queueing — 省略
$mode(或指定"enqueue")在多數情境下都是合適的。行為可預測。 - Steering 用於修正 —
"immediate"僅在 Agent 明顯做錯事時才使用。 - Steering 訊息應簡潔 — 使用能於目前 context 理解的短訊息。長而複雜的 steering 訊息反而會造成混亂。
- 避免連續 steering — 短時間內傳送多次 steering 可能導致 turn 品質下降。若需大幅轉向,直接中斷 turn 重新開始有時反而更適當。
參考
最新資訊請參閱 GitHub 儲存庫。