<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Guidelines on VvVzzz Blog</title><link>https://godvvvzzz.github.io/tags/guidelines/</link><description>Recent content in Guidelines on VvVzzz Blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Wed, 09 Sep 2026 20:30:00 +0800</lastBuildDate><atom:link href="https://godvvvzzz.github.io/tags/guidelines/index.xml" rel="self" type="application/rss+xml"/><item><title>go-modern-guidelines：教 AI Agent 写现代 Go</title><link>https://godvvvzzz.github.io/p/go-modern-guidelines/</link><pubDate>Wed, 09 Sep 2026 20:30:00 +0800</pubDate><guid>https://godvvvzzz.github.io/p/go-modern-guidelines/</guid><description>&#10; &lt;blockquote&gt;&#10; &lt;p&gt;收录于：&lt;a class="link" href="https://godvvvzzz.github.io/p/awesome-open-source-repos/" &gt;开源仓库收藏夹&lt;/a&gt;&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;仓库&lt;/strong&gt;：&lt;a class="link" href="https://github.com/JetBrains/go-modern-guidelines" target="_blank" rel="noopener"&#10; &gt;github.com/JetBrains/go-modern-guidelines&lt;/a&gt; · &lt;strong&gt;许可&lt;/strong&gt;：Apache-2.0 · &lt;strong&gt;来源&lt;/strong&gt;：JetBrains 官方项目&lt;/p&gt;&#10;&lt;h2 id="它是什么"&gt;&lt;a href="#%e5%ae%83%e6%98%af%e4%bb%80%e4%b9%88" class="header-anchor"&gt;&lt;/a&gt;它是什么&#10;&lt;/h2&gt;&lt;p&gt;给&lt;strong&gt;编码 Agent&lt;/strong&gt; 用的现代 Go 写法指南。装上之后，Agent 会：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;用 &lt;code&gt;max(a, b)&lt;/code&gt; 而不是 if-else 取大&lt;/li&gt;&#10;&lt;li&gt;用 &lt;code&gt;slices.Contains&lt;/code&gt; 而不是手写循环&lt;/li&gt;&#10;&lt;li&gt;用 &lt;code&gt;cmp.Or(a, b, c)&lt;/code&gt; 而不是一串 nil 检查&lt;/li&gt;&#10;&lt;li&gt;知道 &lt;code&gt;new(42)&lt;/code&gt; 取值指针、&lt;code&gt;errors.AsType[T](err)&lt;/code&gt; 类型安全错误匹配（Go 1.26）&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;覆盖 &lt;strong&gt;Go 1.0 → 1.27&lt;/strong&gt; 最有用的特性，包括 Go 官方 &lt;code&gt;modernize&lt;/code&gt; analyzer 的全部目标。完整清单在 &lt;a class="link" href="https://github.com/JetBrains/go-modern-guidelines/blob/main/FEATURES.md" target="_blank" rel="noopener"&#10; &gt;FEATURES.md&lt;/a&gt;。&lt;/p&gt;&#10;&lt;p&gt;Agent 行为约定：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;从 &lt;code&gt;go.mod&lt;/code&gt; &lt;strong&gt;检测项目 Go 版本&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;只用 ≤ 该版本的语言/标准库特性&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;优先现代惯用法&lt;/strong&gt;，而不是老写法&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="动机写得很准"&gt;&lt;a href="#%e5%8a%a8%e6%9c%ba%e5%86%99%e5%be%97%e5%be%88%e5%87%86" class="header-anchor"&gt;&lt;/a&gt;动机写得很准&#10;&lt;/h2&gt;&lt;p&gt;Agent 生成「过时 Go」几乎必然，原因只有两个：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;问题&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;含义&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;训练数据滞后&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;训练截止后加的 API（如 &lt;code&gt;errors.AsType[T]&lt;/code&gt;）模型根本没见过&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;频率偏置&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;见过也不一定用：语料里 &lt;code&gt;for i := 0; i &amp;lt; n; i++&lt;/code&gt; 远多于 &lt;code&gt;for i := range n&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;指南的解法很直接：&lt;strong&gt;给 Agent 一份显式参考&lt;/strong&gt;，而不是指望模型「自己想起来」。&lt;/p&gt;&#10;&lt;p&gt;这也和 Go 团队方向对齐：&lt;code&gt;modernize&lt;/code&gt; 负责把旧代码改新，这份指南负责让&lt;strong&gt;新代码一开始就新&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;h2 id="形态小-cli--多端插件"&gt;&lt;a href="#%e5%bd%a2%e6%80%81%e5%b0%8f-cli--%e5%a4%9a%e7%ab%af%e6%8f%92%e4%bb%b6" class="header-anchor"&gt;&lt;/a&gt;形态：小 CLI + 多端插件&#10;&lt;/h2&gt;&lt;p&gt;不是纯 Markdown 甩给模型——各 market 集成会在首次使用时 &lt;code&gt;go install&lt;/code&gt; 一个小 CLI，装进本地缓存（如 &lt;code&gt;~/.cache/go-modern-guidelines&lt;/code&gt;），&lt;strong&gt;不改动你的项目&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;p&gt;要求：PATH 上有 Go toolchain，目标 &lt;strong&gt;Go 1.25+&lt;/strong&gt;；更旧版本在 &lt;code&gt;GOTOOLCHAIN=auto&lt;/code&gt;（默认）下也能拉兼容 toolchain。&lt;/p&gt;&#10;&lt;p&gt;支持面：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;客户端&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;方式&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Junie&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/extensions marketplace add JetBrains/go-modern-guidelines&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Claude Code&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/plugin marketplace add&lt;/code&gt; + &lt;code&gt;modern-go-guidelines@goland-claude-marketplace&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Codex&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;codex plugin marketplace add&lt;/code&gt; + &lt;code&gt;goland-codex-marketplace&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cursor&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;cursor-agent plugin marketplace add …&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;其他（OpenCode 等）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;npx skills add JetBrains/go-modern-guidelines&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Claude Code 装完后 Go 任务会&lt;strong&gt;自动触发&lt;/strong&gt;；也可显式 &lt;code&gt;/modern-go-guidelines:use-modern-go&lt;/code&gt;。&lt;/p&gt;&#10;&lt;h2 id="值得学的两个工程细节"&gt;&lt;a href="#%e5%80%bc%e5%be%97%e5%ad%a6%e7%9a%84%e4%b8%a4%e4%b8%aa%e5%b7%a5%e7%a8%8b%e7%bb%86%e8%8a%82" class="header-anchor"&gt;&lt;/a&gt;值得学的两个工程细节&#10;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;1. 按 &lt;code&gt;go.mod&lt;/code&gt; 探测版本&lt;/strong&gt;&lt;br&gt;&#10;避免 Agent 在 Go 1.21 项目里写出 1.26 才有的 API——这是「知识」和「项目约束」分开的干净做法。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;2. 构建脚本与 Agent 隔离&lt;/strong&gt;&lt;br&gt;&#10;&lt;code&gt;scripts/dev-install.sh&lt;/code&gt; 故意和面向 Agent 的 wrapper 分开：&lt;strong&gt;Agent 永远不能触发本地构建&lt;/strong&gt;。本地调试靠 &lt;code&gt;make dev-install&lt;/code&gt; + &lt;code&gt;GO_MODERN_GUIDELINES_DEV=1&lt;/code&gt;，与 Claude Code / Codex / Cursor 走同一套缓存路径。&lt;/p&gt;&#10;&lt;h2 id="上手claude-code-示例"&gt;&lt;a href="#%e4%b8%8a%e6%89%8bclaude-code-%e7%a4%ba%e4%be%8b" class="header-anchor"&gt;&lt;/a&gt;上手（Claude Code 示例）&#10;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/plugin marketplace add JetBrains/go-modern-guidelines&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/plugin install modern-go-guidelines@goland-claude-marketplace&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;其他客户端安装与更新见 &lt;a class="link" href="https://github.com/JetBrains/go-modern-guidelines#instructions" target="_blank" rel="noopener"&#10; &gt;仓库 README&lt;/a&gt;。&lt;/p&gt;&#10;&lt;h2 id="适合谁"&gt;&lt;a href="#%e9%80%82%e5%90%88%e8%b0%81" class="header-anchor"&gt;&lt;/a&gt;适合谁&#10;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;用 Agent 写 Go，不想再 review「上古写法」&lt;/li&gt;&#10;&lt;li&gt;团队想统一「新项目直接用新惯用法」，而不是事后 &lt;code&gt;modernize&lt;/code&gt; 改&lt;/li&gt;&#10;&lt;li&gt;在做 &lt;strong&gt;language-specific Agent guideline&lt;/strong&gt; 时，可当范本看：动机、版本门控、多端分发、CLI 与 agent 隔离&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="和收藏夹里其他项目的关系"&gt;&lt;a href="#%e5%92%8c%e6%94%b6%e8%97%8f%e5%a4%b9%e9%87%8c%e5%85%b6%e4%bb%96%e9%a1%b9%e7%9b%ae%e7%9a%84%e5%85%b3%e7%b3%bb" class="header-anchor"&gt;&lt;/a&gt;和收藏夹里其他项目的关系&#10;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;同为「给 Agent 的技能/指南」→ &lt;a class="link" href="https://godvvvzzz.github.io/p/pptx-generator/" &gt;pptx-generator&lt;/a&gt;（产物向）vs 本文（语言向）&lt;/li&gt;&#10;&lt;li&gt;跑在各种 Harness 里 → &lt;a class="link" href="https://godvvvzzz.github.io/p/pi/" &gt;Pi&lt;/a&gt;、Claude Code、Codex 等&lt;/li&gt;&#10;&lt;li&gt;指南/技能沉淀与检索 → &lt;a class="link" href="https://godvvvzzz.github.io/p/openviking/" &gt;OpenViking&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;&lt;em&gt;最后更新：2026-09-09。信息基于公开 README 与仓库状态，使用前请以官方文档为准。&lt;/em&gt;&lt;/p&gt;&#10;</description></item></channel></rss>