InvariantEval 智能体技能
InvariantEval 强制执行你声明的不变性规则。它不会让智能体变得“正确”,也不会为你重写输出。唯一诚实的声明是:你的智能体在每个输出上运行你声明的安全规则,并且当锁定字段在没有人工确认的情况下被自动填充时拒绝完成。
何时使用此技能
在最终确认任何结构化 JSON(或类似)输出之前使用,当:
- 领域有声明的锁定字段(通过/失败、合规状态等)
- 你有(或需要)一个包含
field_policies和不变性断言的suite.yaml - 某个人类应该负责某些字段,而模型不得自行填充
不要使用此技能来猜测不变性规则。你的任务是让声明它们变得无摩擦,而不是推断它们。
工作流程
1. 定位或创建声明的套件
- 在项目中找到现有的
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])。 - 要求以下之一:
- 用户编辑最终输出来移除或纠正违反项,或者
- 用户明确确认该字段(在 fixture 中的
human_confirmed),或者 - 用户更新声明的套件(如果规则有误,这种情况很少见)。
4. 如果检查通过:继续
仅在退出码为 0 之后才进行最终确认。
MCP 替代方案
如果环境中安装了 [mcp] 扩展,优先使用 check_invariants MCP 工具处理相同的输入。参见 docs/mcp.md。
诚实框架(必需)
- 要说:“声明的不变性规则”、“拒绝完成”、“锁定字段自动填充”
- 绝不说:“自我纠正”、“让智能体变得正确”、“自动推断不变性规则”