常見問題
直接說清楚 Evidrift 能檢查什麼、不能保證什麼,以及為什麼它不是另一個 AI reviewer。
Evidrift 解決什麼問題?
Coding Agent 常依賴外部 assumption 寫程式,例如某條 TypeScript overload 接受特定 parameter,或某個 OpenAPI operation 仍使用指定 identifier。Code review 通常只留下實作,沒有保存這個理由。Evidrift 把 deterministic evidence 存進 repository,再交給 CI 重新檢查。
什麼是 TypeScript API drift?
消費端程式完成後,package declaration 發生改變。Evidrift 會詢問消費端專案的 TypeScript
compiler:真實 call 選到哪一條 declared overload,接著 normalize signature 並記錄
hash。Selected signature 改變時會產生 FAIL contract_mismatch;不相關的
overload reordering 不會。
什麼是 OpenAPI contract drift?
json.pointer adapter 會使用 RFC 6901 JSON Pointer,從 repository-local
OpenAPI JSON 或 JSON Schema 選出一個 canonical value。Selected value 改變會
deterministic FAIL;若只有不相關文件內容改變,selected value 仍相同,就會回報
WARNING source_changed。
Evidrift 與 contract testing 有什麼不同?
Contract testing 通常會執行 provider 與 consumer behavior。Evidrift 不執行 service 或 dependency code;它鎖定影響某個 code location 的一項明確 static assumption,並在 merge 前重新驗證。兩種工具可以一起使用。
Evidrift 與 RAG 或 AI code review 有什麼不同?
RAG 在生成答案時供應 context;AI code review 在程式完成後做 probabilistic judgment。Evidrift 把 deterministic evidence commit 到 repository,之後不透過 LLM judge 重新計算。
哪些 Coding Agent 可以使用 Evidrift?
任何能啟動 local STDIO server 的 MCP client 都能使用。Repository 包含 Codex、Claude Code 與 Cursor 的最小設定;MCP tools 與 CLI 使用同一套 core。
Agent 能偽造 verified Receipt 嗎?
Receipt JSON 被視為不可信輸入。evidrift check 會驗證 schema、重新計算
Receipt ID 與 evidence hash,再載入 source;不信任儲存的 matched 或
verified field。若攻擊者同時替換 Receipt 與 lock,仍可建立新的 internally
consistent evidence,因此 Git review 與 branch protection 依然必要。
Evidrift 會抓 URL 或執行 command 嗎?
不會。TypeScript evidence 來自已安裝 declaration file,JSON evidence 來自
repository-local
.json。Receipt 無法觸發 shell command、package import、network request 或
LLM call。
目前還不支援什麼?
v0.3.2 不支援 YAML、remote URL、remote OpenAPI $ref、runtime
correctness、semantic equivalence、cloud storage、Dashboard、automatic repair 或
LLM-as-a-judge CI gate。
機器介面不翻譯
CLI command、Receipt schema、error code、API name 與 machine-readable output 刻意維持英文,讓 CI、MCP client、Coding Agent 和兩種語言的文件使用同一套穩定介面。