Skar:將捕獲的AI智慧體軌跡轉換為pytest迴歸測試
Skar是一個開源工具,可將AI智慧體執行軌跡轉換為pytest迴歸測試,幫助團隊鎖定自定義智慧體的行為,防止迴歸。它由npm CLI/MCP伺服器和Python執行時兩部分組成,支援MCP工具和命令列介面。
Skar是一個開源工具,旨在將AI智慧體的執行軌跡轉換為pytest迴歸測試,從而鎖定智慧體的具體行為,防止因程式碼變更導致的迴歸問題。它由兩個互補的包組成:npm包(@kalisky/skar)提供CLI和MCP伺服器,用於驗證軌跡、生成測試和生成HTML報告;Python包(skar)提供Recorder類,可嵌入智慧體程式碼以捕獲執行軌跡並輸出JSON格式的軌跡檔案。
Skar主要面向那些編寫自定義智慧體的團隊,例如使用LangChain、LlamaIndex、Anthropic SDK或AutoGen等框架構建工具呼叫迴圈的開發者。它適用於你擁有控制權的智慧體程式碼,而非Claude Code或Cursor這類外部智慧體——因為這些工具的底層邏輯你無法控制。Skar也可以捕獲和視覺化這些會話(HTML報告適用於任何捕獲的軌跡),但其核心價值——測試捕捉行為漂移——僅在你控制智慧體程式碼時才能體現。
典型工作流程是:使用skar.Recorder儀表化智慧體,執行並捕獲軌跡,然後透過CLI或MCP伺服器的generate命令將軌跡檔案轉換為pytest測試用例。生成的測試依賴於一個介面卡模組(skar_adapter.py),該模組匯入真實的智慧體程式碼,並使用模擬的LLM和工具執行器來執行被測智慧體。介面卡必須呼叫真實的智慧體邏輯,而非簡單回放軌跡,這樣才能有效檢測迴歸。
Skar的MCP伺服器提供四個工具:capture_claude_code_session(從Claude Code會話日誌生成軌跡)、generate_pytest_regression(將軌跡轉換為pytest檔案)、validate_trace(驗證軌跡格式)、inspect_trace(總結智慧體行為)。對於AI智慧體使用者,典型流程是先呼叫capture_claude_code_session獲取當前會話軌跡,再呼叫generate_pytest_regression生成測試。如果已有其他格式的軌跡,可直接使用generate_pytest_regression。
在安裝方面,推薦全域性安裝npm包並註冊MCP:npm install -g @kalisky/skar;claude mcp add skar -- skar-mcp。重啟MCP主機後即可使用。也可以使用零安裝方式,透過npx臨時獲取。CLI提供了更精細的控制,包括使用--from-index和--to-index切片、--redact-pattern脫敏、--match-mode multiset處理無序工具呼叫、--ignore-field忽略特定欄位等。生成的HTML報告可附帶在PR中,展示捕獲片段、脫敏計數和測試斷言描述。
生成的測試期望一個介面卡模組,該模組匯入真實智慧體程式碼,並使用指令碼化的Claude和工具執行器。介面卡不應簡單回放軌跡,而應讓智慧體的解析、迴圈控制和訊息構建邏輯在捕獲場景下執行,從而檢測迴歸。
生成的測試能夠捕獲:迴圈控制錯誤、訊息構建迴歸、工具排程錯誤、最終文本提取錯誤以及波動模式未覆蓋的靜默引數漂移。但它有意不覆蓋:LLM行為變化(測試中Claude是指令碼化的,不呼叫真實API)、工具實現迴歸(工具結果從軌跡回放,若真實工具返回錯誤形狀則無法檢測)、系統提示迴歸(指令碼化Claude不會反映生產提示變化)。這些方面需要額外的即時LLM測試,兩者互補而非替代。
Skar的軌跡模式(v0.1)包含schema_version、input、events和final欄位。events包含tool_call型別的事件,儲存工具名稱、引數和結果,順序保持不變。
安全性方面,Skar不進行網路呼叫、不執行shell、生成的Python程式碼不使用eval或exec。但需要注意:生成的測試包含軌跡原始資料,可能洩露API金鑰、內部URL、客戶記錄等敏感資訊,提交前需審查;軌跡檔案可能成為注入向量,不應對不可信源執行Skar;介面卡應使用記憶體模擬,避免真實API呼叫或資料庫寫入;MCP路徑輸入使用使用者許可權,需注意檔案操作授權。
Skar的存在填補了“我可以檢查”與“我希望這個特定失敗永不重現”之間的空白,為自定義智慧體的程式碼變更提供迴歸測試保障。