Go代码验证工具

Governor是一个为Go项目开发提供的统一验证、分析和审计工具,支持命令行界面和AI辅助开发的MCP服务器。

  • by deixis
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 deixis/governor

使用说明

州长

州长是 旨在促进人类用户和人工智能代理的Go项目开发的工具.

它为验证、分析和审计Go代码提供了一个统一的、结构化的入口点。Governor可以用作独立的命令行界面,类似于go test,也可以用作 MCP服务器支持人工智能辅助开发.

Governor按照预定的声明性顺序执行测试、linting、静态分析和代码健康检查。它返回键入的、机器可读的结果,而不是非结构化的日志。

这种方法使AI代理能够以可证明的正确性编写和修改Go代码,从而消除了创建自定义工作流、省略验证步骤或误解工具输出的需要。

为什么州长

AI代理可以编写Go代码。 然而,这些代理在确保代码正确性方面经常遇到挑战。

主要挑战不在于模型能力,而在于缺乏结构化执行.

当代理依赖于ad-hoc shell命令时,通常会出现几个问题:

  • 从日志而不是事实推断成功
  • 跳过或不一致地重新运行验证步骤
  • 失去更改与其效果之间的联系
  • 用冗长、低信号输出污染上下文窗口

因此,生成的代码可能看起来是正确的,但缺乏可靠的测试、分析和可审计性。

Governor通过充当代码生成和代码验证之间的语义执行边界来解决这些问题。

州长提供什么

确定性验证 每个执行都遵循一个一致、有序的管道,确保每个步骤都以透明的方式完成或省略。

结构化结果 Governor提供类型化、有界的结果,如通过、失败或不可用,从而消除了日志解析的需要。

强制工作流完整性 测试、lint、静态分析和审计是第一级步骤,而不是可选命令。

统一执行和代码智能 执行和gopls驱动的代码智能通过一个接口公开。

提高代理效率 高级语义工具最大限度地减少了冗余的工具调用、重新执行和上下文窗口混乱。这使代理能够保留更多相关信息,并更有效地实现正确的代码*

  • 代币使用、挂钟时间和收敛速度的经验基准尚未收集。

安装

在全球范围内安装调速器,如 gopls:

go install github.com/deixis/governor/cmd/governor@latest

需要Go 1.25或更高版本。

它是可选的,但强烈建议安装 gopls当gopls可用时,州长将其代理为 gov_* MCP工具。如果gopls不存在,这些工具将返回错误以及安装说明。

CLI使用情况

调速器提供以下命令:

governor check [flags] [packages...]
governor audit [flags] [packages...]
governor mcp   [flags]
governor version

包参数如下 go test 惯例(./...、子树或导入路径)。省略时,默认为 ./....

调速器检查

运行正确性管道:测试、整理、统计检查。第一次失败时停止。

governor check ./...
governor check -fix ./pkg/api/...
governor check -json ./...
标志 默认值 描述
-fix off 运行gofumpt和golangci lint——检查前先修复
-json off 以JSON格式输出完整的RunResult
-v off 显示失败时的详细输出
-timeout config 覆盖每一步超时

州长审计

运行代码健康和安全检查。不会因失败而止步。

governor audit ./...
governor audit -json ./...
标志 默认值 描述
-json off 以JSON格式输出完整的RunResult
-v 关闭 详细输出
-timeout config 覆盖每一步超时

总督mcp

启动AI代理的MCP服务器:

governor mcp
governor mcp -http :9090
governor mcp -instructions

MCP设置(光标)

将Governor添加到您的全局MCP配置中一次(~/.cursor/mcp.json):

{
  "mcpServers": {
    "governor": {
      "command": "governor",
      "args": ["mcp"]
    }
  }
}

工作目录会自动设置为工作区根目录。

MCP工具

本地工具

工具 说明
gov_check 运行完整的正确性管道
gov_audit 运行审核检查,失败时不停止
gov_inspect 检查前一次运行的结果
gov_workspace 总结Go工作区

代码智能(通过gopls)

工具 说明
gov_diagnostics 工作区诊断
gov_package_api 包的公共API
gov_search 模糊符号搜索
gov_file_context 包内依赖关系
gov_symbol_references 查找符号引用
gov_rename_symbol 重命名符号并返回差异

配置

调速器可以从以下位置读取可选配置设置 .governor 位于存储库根目录的YAML文件。

version: 1
timeout: 5m
max_output: 1048576

test:
  args: ["-race", "-count=1"]

lint:
  config: .golangci.yml

staticcheck:
  checks: ["all", "-ST1000"]

check:
  steps: ["test", "lint", "staticcheck"]

audit:
  steps: ["coverage", "complexity", "deadcode", "dupl", "vulncheck"]

州长是 不 CI系统、任务运行器或shell包装器。

这是一个 执行总监:代码生成仍然灵活,但 正确性、结构和可审计性得到加强.