Community写作与编辑github.com

AlpharomeroJL/invarianteval

声明的安全不变性评估门控:在每个输出上强制执行你的锁定字段规则,当模型自动填充人工负责的字段时拒绝完成。包含 MCP 工具和智能体技能。

invarianteval 是什么?

InvariantEval 是一个智能体技能,它强制执行你声明的安全不变性规则,而不是通过模拟或猜测来保证正确性。它的核心机制是在每次输出最终确认前运行检查,确保任何被标记为“锁定”的字段(例如“通过/失败”、“合规状态”等)没有被模型自动填充而未经过人工确认。该技能适用于需要结构化 JSON 输出的场景,尤其是当某些字段必须由人类负责填写时。它支持命令行工具和 MCP 工具两种方式,用户需要提供一个包含字段策略和断言声明的 `suite.yaml` 文件。它的诚实价值在于拒绝完成输出,而不是试图让智能体变得“正确”。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add AlpharomeroJL/invarianteval

Installed? Explore more 写作与编辑 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

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。

诚实框架(必需)

  • 要说:“声明的不变性规则”、“拒绝完成”、“锁定字段自动填充”
  • 绝不说:“自我纠正”、“让智能体变得正确”、“自动推断不变性规则”

相关技能