/config, e compõe com os demais sem regressão de performance no caminho padrão.
Premissa de design: opt-in por padrão. Com
CHATCLI_QUALITY_* sem configuração, o pipeline roda com zero post-hooks — Pipeline.Run degenera em uma chamada direta a agent.Execute. Você só paga pelos padrões que ativar.Os sete padrões
#1 — ReAct
Reason → Act → Observe. O loop base que todo worker executa. Já estava presente; agora emite eventos estruturados e auto-atacha effort hints.
#2 — Plan-and-Solve / ReWOO
PlannerAgent emite JSON estruturado; PlanRunner executa passos em ordem topológica com placeholders #E1.head=200.#3 — Reflexion
Detecta erro, alucinação ou qualidade baixa; destila uma Lesson via LLM e persiste em
memory.Fact para retrieval futuro via RAG.#4 — RAG + HyDE
Hypothesis-based keyword expansion (3a) + busca por cosseno em vetores (3b — Voyage/OpenAI, backend pure-Go).
#5 — Self-Refine
RefinerAgent crítica o rascunho e reescreve. Multi-pass com convergência por EpsilonChars.#6 — Chain-of-Verification
VerifierAgent gera perguntas de verificação independentes, responde cada uma e reescreve se houver discrepância.#7 — Reasoning Backbone
Abstração cross-provider:
thinking_budget na Anthropic, reasoning_effort na OpenAI. Auto-attach para agents críticos.Configuração
Env vars
CHATCLI_QUALITY_*, /config quality, e os cinco slash commands: /thinking, /plan, /refine, /verify, /reflect.Como os padrões se conectam
Arquitetura do Pipeline (engine)
O QualityPipeline em si é uma máquina thread-safe com garantias enterprise. Os hooks são plugáveis, mas o scheduler embaixo deles cuida de concorrência, falhas e shutdown:1
State machine (Active → Draining → Closed)
Transições via CAS atômico.
DrainAndClose(timeout) espera in-flight terminarem antes de fechar — safe pra SIGTERM graceful.2
Copy-on-Write snapshots
Cada
AddPre/AddPost/SwapConfig constrói um novo snapshot e faz CAS-swap via atomic.Pointer. Runs em vôo sempre veem um view consistente; zero lock no hot path.3
Isolamento por hook
Cada hook roda dentro de um wrapper que recupera de panic, impõe timeout (default 30s) e registra falhas num circuit breaker per-hook (default 5 falhas → open 30s).
4
Priority-based ordering
Hooks implementando
Prioritized interface são ordenados (lower first). Ties usam ordem de registro. Backward-compat: hooks sem Priority() ficam em 100.5
Short-circuit sentinels
PreHook pode retornar
ErrSkipExecution (cache-hit → pula agent.Execute) ou ErrSkipRemainingHooks (para a phase). Pipeline sintetiza um result pra PostHooks continuarem rodando.6
Hot reload
SwapConfig(cfg) substitui config atomicamente. Runs em vôo mantêm o config antigo (correto — um turn sob um config só); runs novos pegam o novo.Métricas do pipeline
5 coleções emchatcli_quality_pipeline_*:
Use
generation pra correlacionar dashboards com config changes:
Tabela de disparo
Prioridade de overrides
Para um dado turno, o effort hint é resolvido nesta ordem (último ganha):1
Skill frontmatter
effort: high no frontmatter da skill ativada.2
Agent default
Ex:
PlannerAgent tem effort="high" embutido.3
CHATCLI_QUALITY_REASONING_*
Auto-enable para agents em
AutoAgents.4
/thinking session override
Ganha de tudo acima para o próximo turno.
1
/config quality (env)
CHATCLI_QUALITY_REFINE_ENABLED, etc.2
/refine e /verify session toggles
*bool override que mora em cli.qualityOverrides; sobrescreve o env para a sessão.1
Flag one-shot /plan
cli.pendingPlanFirst = true consumido na próxima dispatch.2
CHATCLI_QUALITY_PLAN_FIRST_MODE + complexidade
always ignora score; auto dispara quando ComplexityScore(task) >= threshold.Custo e latência
Defaults foram calibrados para steady-state idêntico ao chatcli pré-pipeline. Padrões caros (Refine, Verify, HyDE) iniciam desligados; você opt-in quando o contexto justifica.
Observabilidade
Todo padrão ativo aparece em/config quality:
Próximos passos
Tutorial: Plan-and-Solve
Comece pelo padrão com maior impacto em tarefas multi-step.
Configurar HyDE com vetores
Ative embeddings (Voyage, OpenAI ou Bedrock Titan/Cohere) para retrieval semântico.
Referência de slashes
/thinking, /plan, /refine, /verify, /reflect.Lista completa de env vars
Todos os
CHATCLI_QUALITY_* e CHATCLI_EMBED_*.