
go-modern-guidelines仓库架构全解从main.go到guidelines.json【免费下载链接】go-modern-guidelinesHelp AI coding agents write modern Go项目地址: https://gitcode.com/GitHub_Trending/go/go-modern-guidelinesgo-modern-guidelines 是 JetBrains 开源的 Go 代码规范工具集它的核心使命是帮助 AI 编程助手写出最新的现代 Go 代码。整个仓库架构极其精巧一条从 guidelines.json 数据源出发、经 Go 程序嵌入、由 CLI 命令分发、最终喂给 AI Agent 的数据流贯穿始终。本文带你逐层拆解这个仓库的架构设计。项目总览一条数据流贯穿整个仓库理解这个项目最快的方式是记住它的四层结构数据层guidelines.json —— 全部 Go 规范的单一数据源Single Source of Truth核心层guidelines.go goversion.go —— 数据加载与 Go 版本解析接口层cli.go main.go —— 命令行入口与命令分发集成层plugin/skills/use-modern-go/ —— 把 CLI 装进各类 AI 编程助手guidelines.json → schema校验 → 内存加载 → 版本过滤 → CLI输出 → AI Agent这种数据即规范的设计让文档、CLI、AI 提示词三者永远不会漂移。入口层main.go 只有 14 行项目入口 main.go 极简到只有 14 行——它只做一件事把命令行参数交给 internal/cli/cli.go 的Run函数出错时打印并退出。真正的分发逻辑在cli.Run中它支持 4 类命令命令作用list列出目标 Go 版本支持的全部规范按新→旧排序explain按 ID 查看某条规范的详细说明和 Before/After 示例--version打印 CLI 版本通过debug.ReadBuildInfo自动探测--help打印用法说明 注意list命令的参数设计它同时接受--go-version、--file-path和位置参数三种版本来源且互斥校验写得很严格——这正是为 AI Agent 设计的Agent 既可以传它正在编辑的 Go 文件路径也可以直接指定版本号。核心数据guidelines.json 与 schema 校验整个仓库最有价值的文件是 internal/guidelines/guidelines.json约 1500 行它用一个 JSON 数组描述了从 Go 1.0 到 1.27 的所有现代规范每条记录包含 8 个字段id规范唯一标识如json_v2、generic_methodssince_version该特性自哪个 Go 版本可用modernizer官方modernize分析器是否支持category/impact分类和影响级别Critical / High / Medium / Lowguideline/details规范摘要与详细说明examplesBefore / After 代码对照但原始 JSON 不可直接信任schema/schema.go 在解析时做了 8 重校验ID 只能是字母数字下划线、ID 不能重复、版本号必须是major.minor格式、数组必须按版本从新到旧排序、每条规范必须自带示例……这些校验把数据错误挡在了运行时之外。数据加载发生在 guidelines.go通过//go:embed把 JSON 直接编译进二进制——CLI 运行零依赖、零配置文件这也是它敢让 AI Agent 直接调用的底气所在。版本解析goversion 如何找到正确的 Go 版本只推荐当前版本可用的特性是这个工具的灵魂版本解析逻辑在 internal/goversion/goversion.go优先级链非常清晰显式指定--go-version 1.24连go1.24.3、devel这类写法都能归一化文件推断给定 Go 文件路径后先向上查找最近的go.mod找不到再找go.workfindUp逐级向上遍历工具链兜底调用go env GOVERSION读取本地 Go 工具链版本拿到目标版本后guidelines.go 中的supportedGuidelines用Compare逐个过滤只保留since_version 目标版本的规范。一个 Go 1.21 的项目绝不会收到 Go 1.26 特性推荐——这是精准度的关键。文档生成从 guidelines.json 到 FEATURES.md仓库根目录的 FEATURES.md 是一份上千行的规范详解文档但它完全不是人写的——文件头标注着 DO NOT EDIT。生成工具在 featuresgen/main.go它读取guidelines.json→ 经 schema 校验 → 渲染出 Markdown 汇总表 每条规范的锚点详解 代码块。维护者只需在 guidelines.go 中执行go generate对应 Makefile 的generate-features目标文档即自动重建。这就是单一数据源架构的红利CLI 输出、人类文档、AI 提示词三者读的是同一份数据天然一致。Agent 集成plugin 目录如何让 AI 用上 CLIplugin/ 目录是仓库与 AI 生态的桥接层extension.json声明 Junie 扩展元数据SKILL.md写给 AI Agent 的使用说明规定它编辑 Go 代码前必须先调list拿到规范清单、需要细节时再调explain并明确禁止用head/grep截断输出run-tool.sh / run-tool.ps1跨平台包装脚本首次调用时自动go install对应版本到本地缓存如~/.cache/go-modern-guidelines并校验版本一致性VERSION锁定 CLI 版本保证所有 Agent 拿到同一个版本巧妙的是构建逻辑被刻意放在 scripts/dev-install.sh 中、与 Agent 包装脚本分离确保 AI Agent 永远不可能触发构建——一个值得学习的安全边界设计。开发体验Makefile 四行命令搞定一切Makefile 只有 4 个目标覆盖完整开发闭环目标命令用途generate-featuresgo generate重建 FEATURES.mdtestgo test ./...全量测试各包均有*_test.godev-installsh scripts/dev-install.sh install把本地改动构建进缓存dev-uninstallsh scripts/dev-install.sh uninstall恢复发布版本配合环境变量GO_MODERN_GUIDELINES_DEV1见 run-tool.sh所有 Agent 会立刻改用你的本地构建——改一行guidelines.json重启 Agent 就能看到效果调试反馈回路极短。架构小结回看 go-modern-guidelines 的完整架构它的设计哲学可以浓缩为三点单一数据源guidelines.json 是唯一事实CLI、文档、AI 技能全部派生自它严格校验前置schema 层在启动时拒绝一切畸形数据把错误消灭在最早期为 Agent 设计互斥参数校验、版本自动解析、零依赖单二进制、构建与运行时分离——每一处细节都在降低 AI 调用的不确定性这是一个小仓库、大工程的典范代码量不大但分层清晰、职责单一非常适合作为 Go CLI 项目的架构参考。【免费下载链接】go-modern-guidelinesHelp AI coding agents write modern Go项目地址: https://gitcode.com/GitHub_Trending/go/go-modern-guidelines创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考