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

Lección 6 de 7 · avanzado · 20 min

Caso práctico: un agente que genera y testea un módulo Odoo

Combina herramientas de archivos, un comando de tests permitido y límites de presupuesto para que el agente itere hasta que los tests pasen.

El objetivo

Pedirle al agente un módulo pequeño (modelo, vistas, permisos y tests) y que no termine hasta que los tests pasen. Es el corazón del loop engineering: el verificador son los tests de Odoo.

opts = ClaudeAgentOptions(
    cwd="./addons",
    allowed_tools=["Read", "Write", "Edit", "Glob", "Grep", "Bash(odoo-bin *)"],
    disallowed_tools=["WebFetch", "WebSearch"],
    permission_mode="acceptEdits",
    max_turns=40,
    max_budget_usd=2.0,
    effort="high",
    system_prompt=(
        "Eres desarrollador senior de Odoo 20. Cada modelo nuevo lleva ir.model.access.csv "
        "y tests TransactionCase con el tag 'post_install'. Ejecuta los tests y corrige hasta que pasen."
    ),
)

PROMPT = (
    "Crea el módulo 'x_visitas' para registrar visitas comerciales (cliente, fecha, resultado). "
    "Luego ejecuta: odoo-bin -d test -i x_visitas --test-tags /x_visitas --stop-after-init "
    "y corrige los errores hasta que todos los tests pasen."
)

Por qué funciona

  • Bash(odoo-bin *) permite solo ejecutar odoo-bin: el agente no puede correr otros comandos.
  • acceptEdits le deja crear y editar archivos sin preguntarte en cada paso.
  • max_turns y max_budget_usd garantizan que el loop se detiene aunque no converja.
  • Los tests de Odoo (TransactionCase, --test-tags) son el verificador: cada fallo vuelve al agente como contexto del siguiente turno.

Revisa siempre el diff antes de llevarlo a producción. El agente acelera la ejecución; la revisión sigue siendo humana.

Practica con 5 casos reales

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

Quiero la guía →