Habilidad de agente InvariantEval
InvariantEval aplica los invariantes que tú declaras. No hace que un agente sea "correcto" ni reescribe la salida por ti. La única afirmación honesta: tu agente ejecuta tus reglas de seguridad declaradas en cada salida y se niega a finalizar cuando un campo bloqueado se ha completado automáticamente sin confirmación humana.
Cuándo usar esta habilidad
Úsala antes de finalizar cualquier salida JSON estructurada (o similar) cuando:
- El dominio tiene campos bloqueados declarados (aprobado/rechazado, estado de cumplimiento, etc.)
- Tienes (o necesitas) un
suite.yamlconfield_policiesy aserciones de invariantes - Un humano debe poseer ciertos campos y el modelo no debe completarlos voluntariamente
No uses esta habilidad para adivinar invariantes. Tu trabajo es hacer que declararlos sea sencillo, no inferirlos.
Flujo de trabajo
1. Localizar o crear un conjunto declarado
- Encuentra un
suite.yamlexistente en el proyecto, o - Copia
suite.template.yamlal proyecto y pide al usuario que completefield_policies,equivalence_classesyassertions.
Nunca inventes campos bloqueados sin declaración del usuario en el conjunto.
2. Ejecutar la verificación de invariantes antes de finalizar
Tienes la salida analizada sin procesar del modelo y la salida final prevista. Ejecuta:
python agent-skill/invarianteval/check.py \
--suite ruta/a/suite.yaml \
--case-id agent-check \
--model-parsed /tmp/model_parsed.json \
--final-output /tmp/final_output.json \
--human-confirmed /tmp/human_confirmed.json
Escribe los archivos JSON desde el turno actual. --human-confirmed es opcional (usa {} cuando no se haya confirmado nada explícitamente).
El conjunto debe contener un caso con el --case-id dado (predeterminado: agent-check) y las aserciones que deseas aplicar.
3. Si la verificación falla: DETENTE
- No finalices, confirmes ni presentes la salida como completa.
- Muestra el fallo de invariante exacto desde la salida de la CLI (por ejemplo,
never_auto_filled[pass_fail_result]). - Exige una de las siguientes acciones:
- El usuario edita la salida final para eliminar o corregir la infracción, o
- El usuario confirma explícitamente el campo (
human_confirmeden el fixture), o - El usuario actualiza el conjunto declarado si la regla era incorrecta (raro).
4. Si la verificación pasa: continúa
Finaliza solo después del código de salida 0.
Alternativa MCP
Si el entorno tiene instalado el extra [mcp], prefiere la herramienta MCP check_invariants para las mismas entradas. Consulta docs/mcp.md.
Marco honesto (obligatorio)
- Di: "invariantes declarados", "se niega a finalizar", "campo bloqueado completado automáticamente"
- Nunca digas: "autocorrección", "hace que el agente sea correcto", "inferir invariantes automáticamente"