InvariantEval 에이전트 스킬
InvariantEval은 사용자가 선언한 불변 조건을 강제합니다. 에이전트를 '올바르게' 만들거나 출력을 다시 작성하지 않습니다. 유일한 정직한 주장은 다음과 같습니다: 에이전트가 모든 출력에 대해 사용자가 선언한 안전 규칙을 실행하고, 잠긴 필드가 인간의 확인 없이 자동 채워졌을 때 최종 확정을 거부합니다.
이 스킬을 사용해야 할 때
다음과 같은 경우 구조화된 JSON(또는 유사한) 출력을 최종 확정하기 전에 사용하십시오:
- 도메인에 선언된 잠긴 필드(합격/불합격, 규정 준수 상태 등)가 있는 경우
field_policies와 불변 조건 어설션(assertions)이 포함된suite.yaml이 있거나 필요한 경우- 특정 필드를 인간이 소유해야 하며 모델이 이를 임의로 채우면 안 되는 경우
불변 조건을 추측하기 위해 이 스킬을 사용하지 마십시오. 사용자의 역할은 선언을 원활하게 만드는 것이지, 추론하는 것이 아닙니다.
워크플로우
1. 선언된 스위트(suite) 찾기 또는 생성
- 프로젝트에서 기존
suite.yaml을 찾거나 suite.template.yaml을 프로젝트에 복사하고 사용자가field_policies,equivalence_classes,assertions을 채우도록 하십시오.
사용자가 스위트에 선언하지 않은 잠긴 필드를 절대 임의로 만들지 마십시오.
2. 최종 확정 전에 불변 조건 검사 실행
모델의 원시 파싱된 출력과 의도된 최종 출력이 있습니다. 다음을 실행하십시오:
python agent-skill/invarianteval/check.py \
--suite path/to/suite.yaml \
--case-id agent-check \
--model-parsed /tmp/model_parsed.json \
--final-output /tmp/final_output.json \
--human-confirmed /tmp/human_confirmed.json
현재 턴에서 JSON 파일을 작성하십시오. --human-confirmed는 선택 사항입니다(명시적으로 확인된 내용이 없으면 {} 사용).
스위트에는 주어진 --case-id(기본값: agent-check)와 강제하려는 어설션이 포함된 케이스가 있어야 합니다.
3. 검사가 실패하면: 중지
- 최종 확정, 커밋 또는 출력을 완료된 것으로 제시하지 마십시오.
- CLI 출력에서 정확한 불변 조건 실패를 표시하십시오(예:
never_auto_filled[pass_fail_result]). - 다음 중 하나를 요구하십시오:
- 사용자가 최종 출력을 편집하여 위반 사항을 제거하거나 수정
- 사용자가 필드를 명시적으로 확인(픽스처의
human_confirmed) - 규칙이 잘못된 경우(드문 경우) 사용자가 선언된 스위트를 업데이트
4. 검사가 통과하면: 진행
종료 코드가 0인 경우에만 최종 확정하십시오.
MCP 대안
환경에 [mcp] 추가 기능이 설치된 경우, 동일한 입력에 대해 check_invariants MCP 도구를 선호하십시오. docs/mcp.md를 참조하십시오.
정직한 프레이밍 (필수)
- 말해야 할 것: "선언된 불변 조건", "최종 확정 거부", "잠긴 필드 자동 채움"
- 말하지 말아야 할 것: "자기 수정", "에이전트를 올바르게 만듦", "불변 조건 자동 추론"