Reelier
官方代理會提出主張,Reelier 則開立收據——記錄代理的工具呼叫工作流程一次,以零令牌方式確定性地重播,並透過比對執行結果來捕捉偏差。
你可以用 Reelier MCP 做什麼?
- 以確定性方式重播已記錄的技能 — 要求以 0 tokens 執行已儲存的
.skill.md的reelier run,預設為唯讀,以達成位元組完全相同的重新執行。 - 偵測代理程式執行中的漂移 — 使用
reelier diff將重播結果與原始內容比對,並依步驟標記 SAME 或 DRIFTED,若有任何變更則以結束碼 1 退出。 - 為相依性升級 PR 設立關卡 — 讓助理設定 CI 工作流程,針對 Dependabot/Renovate PR 重播您的技能,並在確切漂移的步驟上失敗。
- 將現有軌跡轉換為技能 — 透過
reelier compile將trace.jsonl或現有的SKILL.md編譯為可重播的技能,並將誠實的缺口列為開放問題。 - 離線驗證已簽署的收據 — 執行
reelier verify重新計算已推送收據階梯中的每一項聲明,顯示哪些階梯已獲證明、哪些是誠實的缺口。 - 在錄製前檢查代理程式涵蓋範圍 — 使用
reelier init --dry-run檢查 Path A/B/C 觀察涵蓋範圍與重播候選項目,而不寫入或變更任何內容。
文件
Reelier
讓你的代理程式寫作。保留收據。
你的代理程式整晚工作。這裡是確切變更的內容。
Reelier 記錄有效的執行,將其凍結為可重播的技能,並以確定性方式重播——每次執行都會回傳一張收據:證明代理程式做了什麼,以及因此改變了什麼。代理程式提出主張。Reelier 開立收據。
在你的代理程式 PR 上取得收據——安裝即完成
代理程式撰寫的 PR(Dependabot、Claude、Codex、Cursor 等)會在幾秒內收到收據評論:作者、變更的檔案、宣告的範圍與實際變更的對比、敏感路徑標記。無需工作流程檔案、無需 CLI、無需設定。
→ 安裝 Reelier 收據 GitHub App——公開儲存庫永久免費。
Reelier 收據——代理程式 PR 作者:
dependabot[bot]· 變更檔案數:2(+119 −41) 宣告範圍:無(新增.reelier/scope.yml以啟用非預期寫入偵測) 觸及的敏感路徑:⚠ 1 —package-lock.json證明範圍與變更,而非正確性
來自 Reelier 自家儲存庫的真實收據——查看實際範例。在 .reelier/scope.yml(或 PR 內文中的 reelier-scope 區塊)中為每個代理程式宣告範圍,收據便會回報非預期的寫入。收據證明範圍與變更,絕不證明正確性或安全性。
為什麼
AI 代理程式是非確定性的——相同的提示詞,每次執行結果都不同——而且無論是否真的完成,它們都會聲稱已完成工作。Reelier 記錄有效的執行,以確定性方式重播,並開立一份簽署的收據來證明。只需一個工作流程即可指向你現有的 CI——它新增可驗證的收據,不會取代你的技術棧。
在真實的對等基準測試中測量,相同任務、相同資料(完整方法):
- 1,000 / 1,000 次重播位元組完全相同
- 每次重播都附帶簽署收據——證明執行內容與變更內容,絕非聲稱
- 重播時 0 次 LLM 呼叫——確定性重新執行,而非重新推理
確定性重播也比重新執行代理程式約便宜 50 倍、快約 59 倍,基於相同基準測試。
安裝
npm i -g reelier && reelier init
# No Node install needed — same commands via Docker:
docker run --rm ghcr.io/seldonframe/reelier --help
reelier init [--dry-run] 在 Reelier 的三條路徑上執行一次檢查點式的本機檢查:路徑 A 觀察覆蓋率、路徑 B 重播/凍結候選,以及路徑 C 可綁定/可結果/僅影子/不支援的連線與候選。它不會部署、閘控、分派、上傳、複製憑證,或改寫主機設定。--dry-run 不寫入任何內容;一般指令只會在 .reelier/init/ 下方寫入清理過的產物。
作為代理程式外掛
教導你的程式碼代理程式何時使用 Reelier。相同的兩個指令,任一主機皆可:
claude plugin marketplace add seldonframe/reelier
claude plugin install reelier@seldonframe
codex plugin marketplace add seldonframe/reelier
codex plugin add reelier@seldonframe
這只會安裝兩個代理程式技能,沒有其他內容。reelier-replay 教導你的代理程式凍結可重複的工具呼叫工作,並以 0 個 token 重播。reelier-write-safety 涵蓋在授予代理程式寫入權限前如何綁定其寫入:記錄器看到什麼、政策拒絕什麼,以及收據證明與不證明什麼。它不附帶任何 MCP 伺服器,因此不會自行包裝、觀察或閘控任何工具呼叫;reelier CLI 負責這部分,技能透過 npx 驅動它。以 Agent Plugins v1.0.0 格式(plugin/agent-plugins/)和 Claude Code 格式(plugin/claude/)打包,由 scripts/build-plugin-packages.mjs 從單一來源產生。
已在 codex-cli 0.147.0-alpha.1.2 上端對端驗證:兩種格式都能安裝、啟用,且技能可觸及模型。其他主機未經測試,各主機狀態在 docs/specs/agent-plugins-coverage-v1.md §4 中追蹤,而非在此宣稱。
如何使用
reelier init --dry-run # inspect Path A/B/C locally; write nothing
reelier init # persist resumable sanitized inspection artifacts
reelier run <name>.skill.md # replay deterministically — 0 tokens (read-only by default)
reelier diff <name> # SAME or DRIFTED, per step — exit 1 on drift
reelier push <name>.skill.md # sync receipts to your ledger (opt-in)
reelier ci # write a workflow: drift-CI + PR receipts, one command
- 檢查,然後記錄或凍結。
reelier init在不改變路由的情況下揭示觀察到的覆蓋率與本機候選。reelier mcp --wrap "<mcp server>"代理即時工具;reelier scan/from-session凍結支援的歷史記錄。 - 編譯。
reelier compile將追蹤轉換為SKILL.md——0 次 LLM 呼叫、最小斷言、誠實的缺口列印為開放問題。 - 重播。
reelier run在 Level 0 重播——無 LLM、位元組相同、預設唯讀(寫入需要--allow-writes)。 - 差異比對。
reelier diff逐步回報 SAME 或 DRIFTED,並以失敗的斷言作為原因——發生漂移時退出碼為 1。 - 登入。
reelier login透過瀏覽器中的裝置碼將此機器連線到 Reelier Cloud——或為 CI 和自架設設定REELIER_CLOUD_URL/REELIER_CLOUD_KEY。 - 推送。 每次執行都是一張收據;
reelier push可選擇性地將其同步到帳本,以取得永久連結和可嵌入的已驗證重播徽章。
已經有代理程式技能?轉換它——你的技能,減去模型:
reelier compile trace.jsonl --from-skill ./my-skill/SKILL.md
三項測試,一個技能
| 測試 | 指令 | 答案 |
|---|---|---|
| 確定性 | reelier run <skill.md> | 這是否仍會做它原本做的事? |
| 復原 | reelier run <skill.md> --fail N | 如果這壞了,技能會注意到並修復嗎? |
| 漂移 | reelier run <skill.md> --wrap "<your mcp server>" | 世界是否已從此技能之下移開? |
分類法歸功於 Mads Hansen 對發布文章的評論。 每項測試的完整語義,包括復原注入與清單防護: docs/REFERENCE.md。
閘控 Dependabot / Renovate 升級 PR
Dependabot 和 Renovate 會開啟 PR 並執行你的測試套件——但兩者都不知道你的代理程式在執行時期實際做了什麼,因此依賴升級若靜默改變工具呼叫的形狀(重新命名的欄位、新的預設值、不同的錯誤),就會在綠色單元測試下通過。這是它們不會執行的檢查。
將 .github/workflows/reelier-bump-check.yml 複製到你的儲存庫,將 skill: 指向你自己記錄的 .skill.md 檔案,它將:閘控來自 dependabot[bot]/renovate[bot](或 dependencies 標籤)的 PR、安裝升級的依賴、在 --max-level 0(0 個 token)下對其即時重播你記錄的技能,並在漂移的確切步驟上讓檢查失敗。
這測試依賴與 MCP 工具呼叫行為——它不測試模型升級;--max-level 0 從不呼叫 LLM。完整清單複製與設定: docs/marketplace-listing.md。
證明它
推送的收據攜帶一階梯可獨立驗證的主張——不是單一籠統的「已驗證」。取決於你開啟什麼,它可以被簽署、加時間戳、CI 認證,並攜帶可交叉檢查的提供者請求 ID。reelier verify 離線重新計算每個主張,而你未啟用的主張只會呈現為誠實的缺口,絕不會是羞愧的缺口。
查看真實範例: reelier.com/r/HWBdmGob9KeHRqXi-OEaRD0z。
完整的 8 階梯、每階證明與不證明什麼: docs/REFERENCE.md。
如果你的技能是員工
| 員工生命週期 | Reelier 對應 |
|---|---|
| 將工作階段技能化 | reelier from-session |
| 績效評估 | reelier run + reelier diff |
| 團隊維護 | 排程重播 + 漂移警報 |
| 記錄 | 簽署收據 |
「已驗證」描述的是記錄,絕非代理程式——收據證明執行內容與變更內容,而非代理程式擅長其工作。
僱傭合約不會讓員工變好——它讓員工做的事可見且有界。這裡也一樣:收據證明範圍與變更,絕非正確性。
適合誰
- 獨立開發者 / OSS 維護者——再次擁有真正的回歸測試;漂移無法靜默通過。
- 團隊發布代理程式變更——「執行乾淨」變成可檢查的 PR 產物,而非聲稱。
- 為客戶執行代理程式的代理商——客戶可驗證的簽署、加時間戳的交付證明。
- 市集買家或賣家——經證實的收據是無法被假造的評論。
- 面對稽核的營運——每次寫入的簽署、CI 認證軌跡,包含冪等金鑰。
MIT,永久免費(≤0.16.0 版本仍為 AGPL-3.0)。你的資料——技能、追蹤、執行——在 SPEC.md 中定義,因此離開就是複製一個資料夾。
貢獻: 歡迎 issue 和 PR——SPEC.md 是格式的真相來源;修正程式碼,而非規格。PR 前請先執行 npm test。
如果 Reelier 幫你省了一次重新執行,為它加星 ⭐——這是其他建構者找到它的方式。