用途:在修改依赖前为项目挑选兼容的 Go 工具链,避免因本地 Go 版本错误导致构建失败,且不擅自改动全局系统状态。
主要能力:读取 go.mod 中的 go、toolchain、replace 指令;发现并列出已安装的 Go 二进制;检测可用的切换后端(优先 goenv,也尊重 mise、asdf、g、gvm、Homebrew 等已有管理器);按规则选择版本(优先精确 toolchain goX.Y.Z,其次同 minor 最高补丁,go 指令视为最低要求而非升级许可);支持单命令、当前终端、仓库持久化三种切换范围;提供常见失败诊断与分级验证。
使用方式:脚本位于 .agents/skills/go-version-manager/scripts/go-version-manager.sh,常用命令包括 requirement <project-dir>、list、manager、select <project-dir>、exec <project-dir> -- test ./...、shell-command <project-dir>、switch-local <project-dir>。切换后用 <go-binary> version 与 <go-binary> env GOROOT GOTOOLCHAIN GOPATH GOMODCACHE GOCACHE 确认。
限制:脚本除 switch-local 写入 .go-version 及 exec 触发的 Go 子命令外为只读;不自动安装缺失版本;不手改 go.sum;不重写 /usr/local/go、系统符号链接、shell 配置或全局 PATH;不擅自引入第二个版本管理器;goenv global 仅在用户明确要求时修改;依赖下载或工作区外写入需先获批准。