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的存在填補了“我可以檢查”與“我希望這個特定失敗永不重現”之間的空白,為自定義智能體的代碼變更提供迴歸測試保障。