Straight answers / zh-TW

常見問題

直接說清楚 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;不信任儲存的 matchedverified 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 和兩種語言的文件使用同一套穩定介面。