惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Cloudflare Blog
U
Unit 42
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
腾讯CDC
罗磊的独立博客
博客园 - 聂微东
博客园_首页
雷峰网
雷峰网
云风的 BLOG
云风的 BLOG
Jina AI
Jina AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
D
DataBreaches.Net
The GitHub Blog
The GitHub Blog
人人都是产品经理
人人都是产品经理
Y
Y Combinator Blog
量子位
Microsoft Azure Blog
Microsoft Azure Blog
阮一峰的网络日志
阮一峰的网络日志
小众软件
小众软件
月光博客
月光博客
T
The Exploit Database - CXSecurity.com
Google DeepMind News
Google DeepMind News
H
Help Net Security
O
OpenAI News
Blog — PlanetScale
Blog — PlanetScale
S
Security Affairs
S
Security @ Cisco Blogs
Microsoft Security Blog
Microsoft Security Blog
T
The Blog of Author Tim Ferriss
AI
AI
MongoDB | Blog
MongoDB | Blog
G
Google Developers Blog
MyScale Blog
MyScale Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
D
Docker
Hugging Face - Blog
Hugging Face - Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Schneier on Security
Cloudbric
Cloudbric
H
Heimdal Security Blog
J
Java Code Geeks
N
News and Events Feed by Topic
Hacker News - Newest:
Hacker News - Newest: "LLM"
宝玉的分享
宝玉的分享
有赞技术团队
有赞技术团队
S
SegmentFault 最新的问题
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
爱范儿
爱范儿
I
Intezer
GbyAI
GbyAI

鸟窝

鸟窝 鸟窝 鸟窝 鸟窝 鸟窝 鸟窝 鸟窝 鸟窝 鸟窝 鸟窝 鸟窝 鸟窝 鸟窝 鸟窝 鸟窝 鸟窝 鸟窝 鸟窝 鸟窝 鸟窝 鸟窝 鸟窝 鸟窝 鸟窝 鸟窝 鸟窝 鸟窝 鸟窝 LLM 究竟是如何工作的? Go 实验特性详解 amd64 微架构级别对 Go 程序性能提升多少? Loop Engineering 实践:一次批量实现 8 个 issue,完成夔牛工具的开发 Loop Engineering 实践:我把 RDMA 开发库移植到 Go 语言,花费 239 块钱 傻瓜式RDMA高性能网络开发:从零跑到 400 Gb每秒 百度物理网络监控工具开源第二弹:毫秒级监控工具 baize,让你的网络问题无处遁形 百度网络监控工具开源第三弹:lidar — 不只是 pingmesh 别只盯着gopacket了,看看这个强大的网络库 大厂的内部工具居然开源了! 一窥百度物理网络秒级监控定位的秘密 如何构建你自己的 Agent 运行时 寻找你代码中的臭味:一个让 AI 帮你嗅出架构腐化的开源 Skill 套壳不丢人!我用Go+AI搓了一个Agent统一编排框架,ClaudeCode-Codex-Pi全被我包了 SPEC和PRD的区别 SPEC和方案设计有什么区别 从需求到上线,让 AI 管理你的整个研发流程! antigravity-cli 使用 CLIProxyAPI, 让最新的 Codex 能够支持国内的各大模型 Clawpatch + codex-review:AI 代码审查工具链的正确打开方式 拆解Manus:沙盒架构深度解析 40+ Claude Code Tips: From Basics to Advanced Ralph 实验:构建 SQLite UI 了解 Manus Sandbox - 您的云计算机 Notex:一个开源 NotebookLM 替代方案的实现 拆解Manus:真正有用的深度报告的生成 Claude Code 使用 我给每个模型服务商『捐』了10块钱,只为了... Go之禅 - 基于Rob Pike思想的Go语言哲学 Codex CLI vs Gemini CLI vs Claude Code:谁是最佳选择? goskills:Claude Skills 功能强大,为我所用 一行代码使用 Claude Skill 和 deepseek langchain + MCP:如虎添翼 Linux 中网络包的一生 godotenv 库介绍 Codex CLI vs Gemini CLI vs Claude Code: Which is the Best? 使用Linux 30年了,我都不知道 ping 8.8 还能这么用? 从 AI 哪里挣钱? Go sync 包近两年发展综述 deepseek-v3.2-exp的闪电索引器
告别死锁和陈旧语法、告别性能瓶颈:三个开源 Skill,新手Gopher 秒变 Go 语言大神
smallnest · 2026-06-11 · via 鸟窝

你是不是也曾经盯着 pprof 火焰图发呆?

线上服务 P99 延迟从 50ms 飙到 800ms,Grafana 告警刷了满屏。CPU profile 翻来覆去看了三遍,热点函数是 sync.Mutex.Lock —— 锁竞争。但问题出在哪?锁粒度大、false sharing、还是并发模型本身选错了?脑子里闪过一堆可能性,每一条都够排查半小时。

如果有一个 Go语言的并发专家和性能专家在身边多好。

还有,对于有经验的老Go程序员,已经习惯了历史的Go语法和代码,对于新的特性反而没有新手更了解,如何保持与时俱进而不被新人所唾弃?

现在,这个愿望变成了现实:三个skill = 顶级有活力的Go语言专家。

三个 Skill,把 Go 的三座大山装进 AI

做 Go 开发这些年,我发现 Go 程序员面对的最棘手的问题,几乎都可以归为三类:

第一类:并发。 死锁、数据竞争、goroutine 泄漏、channel 关闭时机不对、WaitGroup 计数配不平、锁重入导致自死锁……你写过 Go,就一定被其中至少一个坑过。

第二类:性能。 内存分配太多导致 GC 压力大、逃逸分析看不懂、编译器有没有帮你做 BEC 边界检查消除、sync.Pool 到底用对了没、struct 字段排列浪费了多少内存、CPU 缓存 false sharing 在拖累你的并发吞吐……

第三类:代码现代化。 Go 版本在狂飙,每个版本都带来新 API 和惯用法。interface{} 早该换成 any 了。for i := 0; i < n; i++ 能写成 for i := range n。手写的 if a < b { v = a } 不如直接用 min(a, b)sort.Slice 该退休了,换成 slices.SortFunc。但你不可能记住 Go 1.18 到 1.26 每一个版本的每一个变更——结果就是老代码里到处是"上一代"的写法。

这三类问题有一个共同点:答案分散在无数本书、无数篇博客、无数个 GitHub Issue 里,排查的时候你得像侦探一样在各种资料之间跳来跳去。

我当时刚出版完《Go并发编程实战》,书里把 Go 标准库 sync 包的每一个原语、官方扩展并发库(信号量、SingleFlight、ErrGroup、限流)、13+ 种并发模式、第三方并发库(CyclicBarrier、断路器、WorkerPool)、甚至基于 etcd 的分布式同步原语全部拆开讲了一遍。300 多页,够系统,但——有几个程序员会随身带着一本书写代码?

所以我把这本书"灌"进了一个 AI Skill:chao-go-sync

然后又想,并发问题解决了,性能呢?于是我又把 Dave Cheney 的 High Performance Go Workshop、dgryski 的 go-perfbook、Effective Go、Go 101 Optimizations 这些 Go 性能领域的"圣经"级资料整合成了第二个 Skill:chao-go-perf

再然后,项目里的老代码看着越来越扎眼。Go 从 1.0 一路进化到 1.26,每一个版本都引入了更简洁、更高性能的 API 和语法糖——但你不可能手动把所有老项目翻一遍。于是我把 Go 团队 modernize 分析(已集成到go fix命令中)、社区最佳实践、以及 28 个版本感知的转换规则集成起来,做了第三个 Skill:modern-go。它就像一个智能版的 go fix,但不是只修语法——修复惯用法。

三个 Skill 合在一起:一个管并发,一个管性能,一个管现代化。Go 编程的铁三角,齐了。

它们到底能干什么?

说的很玄,来点实际的。这三个 Skill 嵌入 AI Coding Agent 之后,你的 AI 智能体会变成这样:

/chao-go-sync:Go 并发编程专家

你把一段并发代码或者整个项目告诉 AI,它会自动:

诊断 Bug。 代码里有潜在的数据竞争?它不会只告诉你"可能有 race condition",而是会指出来——这段代码里 WaitGroup.Add 放在 goroutine 内部了,这是典型的竞态模式;那把锁在两个函数里的获取顺序不一致,死锁只是时间问题;你 Copy 了一个 Mutex struct,go vet 能检测到但你没跑。

推荐方案。 "这里保护共享变量,读写比例大概 95:5,应该用 RWMutex 而不是 Mutex",然后它会给出改写代码。甚至能告诉你 Go 1.21 新出的 OnceValue[T] 比你的手写双重检查锁更干净,Go 1.25 新加的 WaitGroup.Go(f) 能让你的编排代码少写 3 行。

覆盖的广度。 从 sync 包的全部标准原语(Mutex、RWMutex、WaitGroup、Cond、Once、Pool、sync.Map、atomic、channel、context),到官方扩展库(Semaphore、SingleFlight、ErrGroup、限流),到 13+ 种并发模式(半异步半同步、Reactor、断路器、Per-CPU 等),到基于 etcd 的分布式同步原语(Leader 选举、分布式锁、分布式队列、STM),再到哲学家就餐、理发师问题这些经典并发场景——一本书的知识,全在你的 Copilot 里。

即使是沉浸Go语言开发十多年的老兵,而且还出了 Go 并发实战专栏和相关图书的程序员,我写的代码也不能保证没有并发的问题。比如我用它分析我最近开源的 goscapy 网络库项目, 我在Claude Code中输入: /chao-go-sync 分析这个项目有没有并发问题,把发现的文体summary给我即可,它给我了一个详细的分析报告:
image-20260526232642521.png

结果一目了然,非常详细而且值得学习,接下来你可以根据自己的需求,让它自动修复或者你自己手搓代码。

/chao-go-perf:Go 性能分析专家

性能问题更难排查,因为"瓶颈在哪"本身就是一个需要专业知识才能回答的问题。这个 Skill 解决的就是这个:

数据驱动。 不再凭直觉猜瓶颈——它教你正确写 benchmark(sink 变量防优化消除、b.ResetTimer 去预热噪音)、用 benchstat 做统计验证(p < 0.05 才叫显著),然后用 pprof 精准定位 CPU 热点和内存分配热点。

编译器视角。 很多人写了十年 Go,没看过一次逃逸分析输出(go build -gcflags="-m"),不知道编译器有没有帮你做 BCE(边界检查消除),不清楚哪些函数被内联了、为什么没被内联。这个 Skill 就补这一块——它懂编译器,你能让它帮你分析。

硬件友好。 CPU 缓存、cache line 对齐、false sharing 消除、struct 字段排序减少 padding、分支预测友好代码——这些"高阶操作"在 Skill 里都是速查项。

版本感知。 Go 1.12 到 1.27 每个版本的关键性能变更都记录了。从 Go 1.17 的寄存器传参(5-10% 性能提升),到 Go 1.20/1.21 的 PGO(Profile-Guided Optimization),到 Go 1.24 sync.Map 重写为 hash-trie map——你的 Copilot 知道哪个版本能给你什么免费的性能提升。

我在Claude Code中输入: /chao-go-perf 本项目有性能问题吗?, 它给我了一个详细的性能分析报告:

它会给你它发现的每一个性能问题以及详细分析,还包括改进的建议,你可以决定要不要让AI自动优化,比如你可以选择高优先级的问题进行修复。

/modern-go:Go 代码现代化专家

![告别死锁和陈旧语法、告别性能瓶颈:三个开源 Skill,新手Gopher 秒变 Go 语言大神__assets/image-20260527000517831.png](告别死锁和陈旧语法、告别性能瓶颈:三个开源 Skill,新手Gopher 秒变 Go 语言大神__assets/image-20260527000517831.png)

这是三个 Skill 里最"务实"的一个。它不跟你讲原理,直接动手。

go fix类似又有点不一样,它会根据你的go.mod选择的Go版本,将Go现代语法优化到这个版本,并提供详细的分析报告。

把项目交给它,它会自动:

扫描 go.mod,确定目标版本。 你的项目声明的 Go 版本是多少,它就应用多少版本能用的转换。Go 1.21 的项目不会收到 Go 1.22+ 的规则——绝对不会引入兼容性问题。

按版本从旧到新,逐条应用 28 种转换。 time.Now().Sub(start)time.Since(start)(Go 1.0);interface{}any(Go 1.18);for i := 0; i < n; i++for i := range n(Go 1.22);b.N 循环 → b.Loop()(Go 1.24);sync.WaitGroup.Add + go funcwg.Go(f)(Go 1.25);errors.As + 临时变量 → errors.AsType 直接表达式(Go 1.26)……覆盖了 Go 1.0 到 1.26 每一个有意义的惯用法升级。

改完自动跑 goimports。 新增的 import(如 slicesmapscmp)自动补齐,移除的 import 自动清理。代码不会因为改完而编译不过。

输出清晰总结。 哪个文件改了什么转换、总共改了多少处、哪些转换被跳过(因为版本不够)。一目了然。

举个真实例子。这是我前段时间写的一个命令行“斗地主”扑克牌游戏,我在Claude Code中输入/modern-go 本项目, 它给了![告别死锁和陈旧语法、告别性能瓶颈:三个开源 Skill,新手Gopher 秒变 Go 语言大神__assets/image-20260527002012982.png](告别死锁和陈旧语法、告别性能瓶颈:三个开源 Skill,新手Gopher 秒变 Go 语言大神__assets/image-20260527002012982.png)253285.png)

它不但找出了陈旧的Go写法,还帮我更新到go.mod中定义的Go版本新语法。

安装只需一行命令

三个 Skill 都是 MIT 开源协议,完全免费。如果你用的是 Claude Code 或者支持 Skills 规范的 AI Coding Agent:

1
2
3
4
5
6
7
8

npx skills add smallnest/chao-go-sync


npx skills add smallnest/chao-go-perf


npx skills add smallnest/goal-workflow --skill modern-go

装完之后,不需要手动触发——当你的代码或对话涉及 Go 并发、性能或现代化相关话题时,对应的 Skill 会自动激活。你也可以手动调用:

1
2
3
/chao-go-sync   # 提一个并发问题
/chao-go-perf # 分析一段代码的性能
/modern-go # 现代化你的 Go 代码

三个skill的GitHub 地址: