Saltar al contenido
NUEVOGuía práctica con 5 agentes Python para Odoo, verificada contra Odoo 20 →
Focuz/academy

Lección 4 de 7 · intermedio · 12 min

Controla el loop: turnos, presupuesto, effort y permisos

Pon límites al agente con max_turns y max_budget_usd, ajusta el razonamiento con effort y decide qué herramientas puede usar.

Límites del loop

Por defecto el loop no tiene límite de turnos ni de costo. En producción siempre conviene fijarlos:

opts = ClaudeAgentOptions(
    max_turns=20,          # cuenta solo los turnos que usan herramientas
    max_budget_usd=1.0,    # incluye el gasto de subagentes
    effort="medium",       # "low" | "medium" | "high" | "xhigh" | "max" (según el modelo)
)

Si se alcanza un límite, el ResultMessage llega con error_max_turns o error_max_budget_usd.

Permisos: quién decide qué se ejecuta

La documentación de permisos define el orden de evaluación: hooks → reglas deny → reglas ask → modo de permiso → reglas allow → callback can_use_tool. Tres ideas prácticas:

  • allowed_tools aprueba automáticamente lo listado, pero no prohíbe lo demás.
  • disallowed_tools=["Bash"] quita la herramienta del contexto; "Bash(rm *)" solo bloquea las llamadas que coinciden.
  • Para un agente cerrado: allowed_tools + permission_mode="dontAsk". Fija siempre el modo de forma explícita.
Modo Uso típico
default Pregunta antes de acciones sensibles
acceptEdits Acepta ediciones de archivos (generar un módulo)
plan Planifica sin ejecutar cambios (revisiones)
dontAsk Rechaza todo lo que no esté permitido

Regla de oro para Odoo: el agente nunca debe tener credenciales de producción con permisos de escritura amplios. Usa un usuario técnico con permisos mínimos.

Practica con 5 casos reales

Descarga la guía gratuita con agentes Python para Odoo, de Junior a Senior.

Quiero la guía →