AI News HubLIVE
站内改写2 分钟阅读

Skar:将捕获的AI智能体轨迹转换为pytest回归测试

Skar是一个开源工具,可将AI智能体运行轨迹转换为pytest回归测试,帮助团队锁定自定义智能体的行为,防止回归。它由npm CLI/MCP服务器和Python运行时两部分组成,支持MCP工具和命令行界面。

来源Hacker News AI作者: kalisky

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的存在填补了“我可以检查”与“我希望这个特定失败永不重现”之间的空白,为自定义智能体的代码变更提供回归测试保障。