州长
州长是 旨在促进人类用户和人工智能代理的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 -instructionsMCP设置(光标)
将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包装器。
这是一个 执行总监:代码生成仍然灵活,但 正确性、结构和可审计性得到加强.
