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 ejecutarodoo-bin: el agente no puede correr otros comandos.acceptEditsle deja crear y editar archivos sin preguntarte en cada paso.max_turnsymax_budget_usdgarantizan 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.
← Anterior
Hooks: audita y bloquea lo que hace el agente
Siguiente →
Contexto largo, compactación y subagentes
Practica con 5 casos reales
Descarga la guía gratuita con agentes Python para Odoo, de Junior a Senior.
Quiero la guía →