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])。 - 次のいずれかを要求します:
- ユーザーが最終出力を編集して違反を削除または修正する、または
- ユーザーがフィールドを明示的に確認する(フィクスチャ内の
human_confirmed)、または - ルールが間違っていた場合(稀)、ユーザーが宣言されたスイートを更新する。
4. チェックが成功した場合:続行
終了コード 0 の後にのみ最終確定します。
MCP 代替手段
環境に [mcp] エクストラがインストールされている場合は、同じ入力に対して check_invariants MCPツールを優先します。docs/mcp.md を参照してください。
正直な表現(必須)
- 言う:「宣言された不変条件」「最終確定を拒否する」「ロックされたフィールドが自動入力された」
- 絶対に言わない:「自己修正」「エージェントを正しくする」「不変条件を自動推測」