JetBrains 开源 go-modern-guidelines:让 AI 编码助手写出地道的现代 Go 代码

项目简介

随着 AI 编码助手(Claude Code、Cursor、Codex 等)在开发流程中的普及,一个尴尬的问题逐渐浮现:它们生成的 Go 代码往往是”过时”的。JetBrains 推出的 go-modern-guidelines 正是为了解决这个痛点——它是一套专为 AI 编码 Agent 设计、帮助其写出”现代 Go”代码的规范指南。

这个项目一经发布就冲上了 GitHub Trending 前列,目前已收获 2,878 Star,由 JetBrains 官方维护(Apache-2.0 协议)。它覆盖了从 Go 1.0 到 Go 1.27 的一系列实用特性,目标非常明确:让 AI 写出的 Go 代码从一开始就是现代的、符合官方推荐的写法

核心功能与背景

项目直指 AI 生成 Go 代码的两个根本问题:

  • 训练数据滞后(Training data lag):模型不知道训练截止日期之后新增的特性。比如 Go 1.26 才引入的 errors.AsType[T](err)new(42)(获取值指针的语法),模型如果没见过,自然就不会用。
  • 频率偏差(Frequency bias):即便模型知道某个新特性,它也更倾向于套用训练数据中更常见的旧写法。例如训练数据里 for i := 0; i < n; i++ 远比 for i := range n 多,于是旧循环就”赢”了。

这套规范通过给 Agent 一份明确的参考清单来同时解决这两个问题。它和 Go 官方团队的思路一脉相承——官方已有的 modernize 静态分析工具负责把旧代码自动升级,而 go-modern-guidelines 则负责让 Agent 从源头直接写出新代码,减少后续返工。

技术特色

  • 自动检测 Go 版本:Agent 会从项目的 go.mod 里读取 Go 版本,只使用该版本(含)及以下可用的语言特性和标准库新增能力。
  • 优先现代惯用法:自动用 max(a, b) 替代 if-else 块,用 slices.Contains 替代手写循环,用 cmp.Or(a, b, c) 替代一串 nil 判断等。
  • 完整的特性清单:项目内 FEATURES.md 详细列出了每一项特性的说明与示例,并覆盖了 modernize 分析器所追踪的全部内容。
  • 多平台集成:以插件/技能(Skill/Plugin/Marketplace)形式分发,同一套规范可跨多种 Agent 复用。
  • 零侵入:CLI 安装到本地缓存(如 ~/.cache/go-modern-guidelines),从不改动你的项目文件。

详细使用步骤

这套规范面向 Junie、Claude Code、Codex、Cursor,以及其他支持 skills.sh 的 Agent(如 OpenCode)。安装前需确保 go 工具链已安装并加入 PATH(推荐 Go 1.25+,旧版本需开启 GOTOOLCHAIN=auto)。

Claude Code

在 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

Codex

在终端执行:

codex plugin marketplace add JetBrains/go-modern-guidelines
codex plugin add modern-go-guidelines@goland-codex-marketplace

Cursor

cursor-agent plugin marketplace add https://github.com/JetBrains/go-modern-guidelines

随后在 Cursor 会话中通过 /plugins 命令完成安装。

其他 Agent(skills.sh)

npx skills add JetBrains/go-modern-guidelines

适用场景

  • 使用 AI 辅助开发 Go 项目的团队和个人:希望 AI 生成的代码紧跟语言演进、减少 code review 时的”过时写法”返工。
  • 长期维护的 Go 项目:通过统一的现代惯用法,保持代码库风格一致、可读性更高。
  • 对 Go 新特性不敏感、需要参考清单的开发者FEATURES.md 本身就是一份很好的学习资料。
  • CI/无值守开发流程:让 Agent 从头写出符合现代标准的代码,降低后续 modernize 等工具的修复成本。

项目信息

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享