Community寫作與編輯github.com

AlpharomeroJL/invarianteval

聲明式的安全不變量評估閘門:強制在每個輸出上執行您鎖定欄位的規則,並在模型自動填入人類擁有的欄位時拒絕完成。包含 MCP 工具與代理技能。

invarianteval 是什麼?

InvariantEval 是一個代理技能,強制執行您宣告的不變量。它不會讓代理「正確」,也不會為您重寫輸出。唯一的真實主張是:您的代理在每個輸出上執行您聲明的安全規則,並在鎖定欄位未經人類確認而被自動填入時**拒絕完成**。它支援 JSON 結構化輸出,適用於任何需要鎖定欄位的領域(例如通過/失敗、合規狀態等)。該技能可以透過 Python CLI 或 MCP 工具使用,需要一個包含 `field_policies` 和斷言的 `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。

誠實框架(必要)

  • 說:「宣告的不變量」、「拒絕完成」、「鎖定欄位自動填入」
  • 絕不說:「自我修正」、「使代理正確」、「自動推斷不變量」

相關技能