Skip to main content
ReAct é o padrão mais antigo e essencial do ChatCLI. Toda invocação de /agent ou /coder roda dentro dele: cada agente especializado (FileAgent, CoderAgent, Planner, Refiner, …) executa seu próprio loop Reason → Act → Observe até resolver a tarefa ou atingir o limite.
ReAct sempre está ativo. Os demais seis padrões do pipeline compõem em volta dele sem substituí-lo.

Como funciona

1

Reason

O LLM recebe o system prompt do agente + a tarefa + histórico de observações e produz uma resposta que pode conter texto de raciocínio, uma <tool_call>, uma <agent_call>, ou a resposta final.
2

Act

Se houve tool/agent call, o chatcli executa (shell, file read, API call, sub-agent dispatch, …) e captura a saída.
3

Observe

A saída da tool volta para o histórico como mensagem de sistema — o próximo turno do LLM já vê o resultado.
4

Repeat

Até o LLM emitir uma resposta sem tool calls (fim natural) ou atingir CHATCLI_AGENT_WORKER_MAX_TURNS (default 30).

Arquitetura no código

O loop ReAct foi deliberadamente deixado intacto no PR dos sete padrões. Toda adição nova (Refine, Verify, Reflexion) se pluga ao redor via QualityPipeline.Run, não dentro.

Configuração

Max-turns > 50 é raramente útil. Se um worker não termina em 30 turns, normalmente é sinal de prompt/tools mal desenhados, não falta de iteração.

Interação com o resto do pipeline

Dentro do Pipeline.Run, o fluxo é:

Observabilidade

Cada turno do loop emite eventos estruturados via zap.Logger:
O dispatcher também emite AgentEvent{Type: Started|Completed|Failed} via canal (ver DispatchWithProgress), consumidos pela UI para renderizar a timeline.

Leia também

Multi-Agent Orchestration

Como o dispatcher fan-out paralelo coordena vários workers ReAct ao mesmo tempo.

#7 Reasoning Backbone

Como o effort hint é auto-atachado ao ctx antes de cada turno.