针对AI编程Agent的Go语言规范指南,覆盖Go 1.0到1.27新特性和惯用写法,避免Agent生成过时模式(如用slices.Contains替代手写循环)。
本仓库包含帮助代码 Agent 编写现代 Go 代码的指南。
例如,具备这些指南的 Agent 会使用 max(a, b) 而不是 if-else 块、使用 slices.Contains 而不是手动循环、使用 cmp.Or(a, b, c) 而不是一连串的 nil 检查。它还了解最近的新增特性,比如 new(42) 可以获取值的指针,以及 errors.AsType[T](err) 用于类型安全的错误匹配——两者都来自 Go 1.26。
这些指南涵盖了 Go 1.0 到 Go 1.27 中最有用的特性,包括所有 modernize 分析器针对的目标。Agent 会:
从 go.mod 检测项目的 Go 版本
使用该版本及以下可用的语言特性和标准库新增功能
倾向于现代惯用法而非旧模式
所有代码 Agent 都倾向于生成过时的 Go。原因有二:
训练数据滞后。模型不了解训练截止日期之后添加的特性。如果从未见过 errors.AsType[T](Go 1.26),就无法使用它。
训练数据滞后。模型不了解训练截止日期之后添加的特性。如果从未见过 errors.AsType[T](Go 1.26),就无法使用它。
频率偏差。即使模型知道某个特性,它也经常选择更旧的模式。训练数据中 for i := 0; i < n; i++ 比 for i := range n 更多,所以输出的就是前者。
频率偏差。即使模型知道某个特性,它也经常选择更旧的模式。训练数据中 for i := 0; i < n; i++ 比 for i := range n 更多,所以输出的就是前者。
这些指南通过为 Agent 提供明确的参考资料来解决这两个问题。
这与 Go 团队的方向一致。modernize 分析器存在目的是自动更新现有代码以使用更新的惯用法(参见 Go 团队的这次演讲)。这些指南为新代码服务相同的目标:Agent 从一开始就编写现代 Go,因此后续需要修复的内容更少。
市场集成会运行一个小 CLI,首次使用时通过 go install 安装。因此,Go 工具链必须已安装并在 PATH 中可用。
CLI 安装到本地缓存(例如 ~/.cache/go-modern-guidelines),永远不会修改你的项目。它面向 Go 1.25 或更高版本;在较旧的 Go 上,只要启用了自动工具链切换(GOTOOLCHAIN=auto,默认值),它仍然可以工作,这允许 Go 在首次运行时获取兼容的工具链。
这些指南可用于 Junie、Claude Code、Codex 和 Cursor,也可通过 skills.sh 用于其他 Agent。
在 Junie CLI 会话中运行以下命令。
将此仓库添加为市场:
/extensions marketplace add JetBrains/go-modern-guidelines
安装扩展:
/extensions install modern-go-guidelines
Junie 会在与 Go 任务相关时自动调用该技能。
在 Junie CLI 会话中更新已安装的扩展:
/extensions update modern-go-guidelines
在 Claude Code 会话中运行以下命令。
将此仓库添加为市场:
/plugin marketplace add JetBrains/go-modern-guidelines
/plugin install modern-go-guidelines@goland-claude-marketplace
Claude Code 会在与 Go 任务相关时自动调用该技能。
要显式调用它:
/modern-go-guidelines:use-modern-go
Claude Code 可以在启动时自动更新市场和已安装的插件。第三方市场的自动更新默认是禁用的,因此需要启用一次:
打开 Marketplaces 并选择 goland-claude-marketplace。
选择 Enable auto-update。
当 Claude Code 报告插件已更新时,使用以下命令将新版本应用到当前会话:
/reload-plugins
要手动更新,请在终端中运行以下命令:
claude plugin marketplace update goland-claude-marketplace
claude plugin update modern-go-guidelines@goland-claude-marketplace
在终端中运行以下命令。
将此仓库添加为市场:
codex plugin marketplace add JetBrains/go-modern-guidelines
codex plugin add modern-go-guidelines@goland-codex-marketplace
刷新市场并重新安装插件,以便 Codex 替换其缓存副本:
codex plugin marketplace upgrade goland-codex-marketplace
codex plugin remove modern-go-guidelines@goland-codex-marketplace
codex plugin add modern-go-guidelines@goland-codex-marketplace
为方便起见,这些指南以 Cursor 插件形式分发。
通过在终端中运行以下命令将此仓库添加为市场:
cursor-agent plugin marketplace add https://github.com/JetBrains/go-modern-guidelines
在 Cursor 会话中使用 /plugins 命令安装插件。
从 Git 刷新市场并重新打开 Cursor,以便它能获取新插件版本:
cursor-agent plugin marketplace update goland-cursor-marketplace
如果已安装的插件仍在上一版本,则使用 /plugins 命令重新安装。Cursor 目前不提供用于更新已安装插件的非交互式 CLI 命令。
相同的技能包可跨其他 Agent(如 OpenCode)使用。使用以下命令安装:
npx skills add JetBrains/go-modern-guidelines
(--skill use-modern-go 仅安装此技能。)
使用以下命令更新项目安装的技能:
npx skills update use-modern-go -p -y
对于全局安装的技能,将 -p 替换为 -g。
要尝试 CLI 的更改,请将此检出的代码构建到工具的缓存中:
make dev-install
然后在 Agent 运行的环境中设置 GO_MODERN_GUIDELINES_DEV=1。设置后,任何使用该插件的 Agent 都会运行你的本地构建而非发布版本,这在 Claude Code、Codex 和 Cursor 中行为一致。在启动 Agent 前导出它,以便 Agent 进程继承它:
export GO_MODERN_GUIDELINES_DEV=1
编辑 CLI 后,再次运行 make dev-install 以重新构建;下次调用时会获取它。要恢复发布版本,请取消设置该变量(或运行 make dev-uninstall 以移除构建):
make dev-uninstall
这需要 Go 工具链。开发构建存储在工具的缓存目录中($XDG_CACHE_HOME/go-modern-guidelines 或 ~/.cache/go-modern-guidelines)。
构建由 scripts/dev-install.sh 驱动,它故意与面向 Agent 的包装脚本分开,这样 Agent 就永远不会触发构建。在没有 make 的情况下(例如在 Windows 上),你可以直接运行它:
sh scripts/dev-install.sh install # 或: uninstall
pwsh scripts/dev-install.ps1 install # PowerShell 等效命令