轻量级编码代理评估框架,通过 Docker 隔离与加权评分机制,支持 6 种编程语言和 19 种主流编码代理的标准化基准测试。
SanityHarness 是一个用 Go 编写的 CLI 工具,旨在解决 LLM 编码代理评估缺乏统一标准的问题。
核心能力
- Docker 容器隔离执行,确保宿主机安全
- 支持 Go、Rust、TypeScript、Kotlin、Dart、Zig 共 6 种语言的 26 项编码任务
- 内置 19 种编码代理集成(Claude Code、Gemini、Codex CLI、Cline、Copilot、Kimi、Qwen、Goose、Junie、Kilocode、Amp、Crush、Pi 等)
- 基于难度因子的加权评分系统,确保公平比较
- BLAKE3 哈希完整性验证,防止结果篡改
- Bubblewrap 沙箱隔离,限制代理系统访问权限
- 并行评估(--parallel)、Watch 模式、可恢复运行
典型用途
- 编码代理开发团队的回归测试与能力评估
- 研究人员对比不同 LLM 在代码生成任务上的表现
- 企业在选定编码辅助工具前进行基准测试
安装要求
- Go 1.25+
- Docker(运行中的守护进程)
- bubblewrap(可选,用于代理沙箱隔离)
快速开始
git clone https://github.com/lemon07r/sanityharness.git
cd sanityharness
make tools && make build
./sanity list
./sanity eval --agent gemini --tier all --parallel 4
核心命令
./sanity list [--language <lang>] [--tier <tier>]- 列出任务./sanity run <task> [--watch]- 运行单个任务./sanity eval --agent <name> [--model <model>] [--parallel N]- 评估代理./sanity show <session-path>- 查看结果./sanity verify <path>- 验证提交完整性
架构设计
- CLI 层:基于 Cobra 构建
- 任务系统:任务文件编译时嵌入二进制,零依赖分发
- 运行时:容器启动后保持运行,通过
docker exec复用减少开销 - 配置:支持
./sanity.toml、~/.sanity.toml、~/.config/sanity/config.toml
输出结构
summary.json- 完整结果与加权分数attestation.json- BLAKE3 哈希验证report.md- 可读报告submission.json- 排行榜格式提交文件
项目信息
- 当前版本:v1.8.2
- 许可证:MIT License
- 主语言:Go (73.1%)
- 官方排行榜:https://sanityboard.lr7.dev/