Go测试结果压缩工具

将go test输出压缩为最小化的JSON摘要,为需要测试结果的LLM代理提供高效的数据处理。

  • by hegner123
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 hegner123/reporter

使用说明

记者

敷布 go test 输出为最小的JSON摘要。为LLM代理构建,这些代理需要测试结果,而无需在数千个通过的测试中燃烧上下文。

一个5000行的详细测试运行将变成大约10行JSON,其中包含代理需要执行的所有操作:通过/失败计数、失败的测试名称、包、错误输出和源位置。

输出

{
  "passed": 373,
  "failed": 1,
  "failures": [
    {
      "test": "TestBucketEndpointURL/empty_endpoint_returns_empty_string",
      "package": "github.com/hegner123/modulacms/internal/config",
      "output": "config_test.go:102: BucketEndpointURL() = \"\", want \"s\"",
      "location": "config_test.go:102"
    }
  ]
}

当所有测试通过时, failures 是一个空数组。

入门指南

go build -o reporter .

MCP服务器(默认)

注册为MCP工具。代理商发送原始 go test -json 输出为 input 参数并返回结构化JSON。

claude mcp add --transport stdio reporter -- /path/to/reporter

命令行界面

go test -json ./... | ./reporter
go test -v ./...   | ./reporter

Stdin自动检测:管道输入运行CLI模式,终端运行MCP服务器。 --cli 标志强制CLI模式。

为什么

运行测试的LLM代理会返回一堵文本墙。将其传递到上下文窗口会浪费代理无法处理的信息(通过测试)上的令牌。这个工具把它归结为重要的事情:

  • 令牌压缩:典型试运行时减少250:1。5000行成为计数 "passed": 5725 再加上具有可操作细节的故障。
  • 结构化输出:代理可以直接解析JSON,而不是扫描文本 --- FAIL 模式。
  • 震源位置: file.go:NNN 提取并浮出水面,以便代理可以在不搜索的情况下导航到故障。

输入格式

JSON模式 (go test -json):推荐。每一行都是一个带有测试名称和包的标记事件,因此即使在高度并行和多行日志输出的情况下,输出归因也是可靠的。

详细文本模式 (go test -v):尽最大努力回退。适用于典型输出,但在并行运行测试并产生多行日志输出时,可能会错误地分配行。文本格式从来不是为机器解析而设计的。

从第一个非空行自动检测到:开始于 { 表示JSON,否则表示冗长的文本。

平台支持

  • macOS
  • Linux

不支持Windows。