스티어링과 큐잉
일반적인 Laravel 애플리케이션의 흐름에서는 스티어링을 직접 사용하는 경우가 거의 없습니다. Laravel의 동기적 실행 패턴에서는 혜택을 받기 어려워 기본적으로 기본 큐잉 운영이 적합합니다.
개요
send() / sendAndWait() / sendAndStream() / Copilot::run() 모두에 $mode 매개변수가 있습니다.
| 모드 | 동작 |
|---|---|
"enqueue"(기본값) | 현재 턴이 완료된 후에 큐로 처리됨 |
"immediate"(스티어링) | 현재 처리 중인 턴에 끼어들어 즉시 주입됨 |
스티어링("immediate")
에이전트가 처리 중인 턴에 직접 메시지를 주입합니다. 에이전트는 실시간으로 메시지를 받아 응답을 조정합니다. 진행 중인 작업을 중단하지 않고 방향을 수정하려는 경우에 사용합니다.
큐잉("enqueue")
메시지를 큐에 추가하고 현재 턴이 완료된 다음 순차적으로 처리합니다. 각 큐된 메시지는 독립된 턴으로 실행됩니다. $mode를 생략한 경우의 기본 동작입니다.
Laravel에서의 실용적인 사고방식
Laravel에서는Copilot::run()이나 sendAndWait()를 사용하는 동기적 패턴이 중심입니다. 이들은 메시지를 보내고 아이들 상태가 될 때까지 대기하므로 에이전트가 처리 중에 끼어들 기회가 없고, $mode는 실질적으로 의미가 없습니다.
"immediate")이 진가를 발휘하는 것은 send()로 비동기적으로 메시지를 보내면서 병렬로 다른 메시지로 진행 중인 턴에 개입할 수 있는 경우입니다. Laravel의 동기적 처리 흐름에서는 그 기회를 만들기 어렵기 때문에 기본적으로는 $mode를 지정하지 않고 기본 상태로 두는 것이 적절합니다.
어느 쪽을 사용해야 하는가
| 상황 | 패턴 |
|---|---|
| 에이전트가 잘못된 방향으로 진행 중 | 스티어링("immediate") |
| 다음에 할 일이 떠올랐음 | 큐잉("enqueue") |
| 여러 태스크를 순서대로 실행하고 싶음 | 큐잉("enqueue") |
| 일반적인 Laravel 앱 | 기본값($mode 불필요) |
베스트 프랙티스
- 기본은 큐잉 —
$mode를 생략(또는"enqueue"를 지정)하는 것이 대부분의 경우에 적절합니다. 예측 가능한 동작을 합니다. - 스티어링은 수정용으로 —
"immediate"는 에이전트가 명백히 잘못된 것을 하고 있는 경우에 한정해서 사용합니다. - 스티어링 메시지는 간결하게 — 현재 컨텍스트에서 이해할 수 있는 짧은 메시지로 합니다. 길고 복잡한 스티어링 메시지는 오히려 혼란을 초래합니다.
- 연속 스티어링은 피할 것 — 짧은 시간에 여러 스티어링을 보내면 턴의 품질이 저하될 가능성이 있습니다. 대폭적인 방향 전환이 필요한 경우에는 턴을 중단하고 처음부터 다시 하는 편이 적절한 경우도 있습니다.
참고
최신 정보는 GitHub 저장소를 참고하세요.