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

推荐订阅源

Apple Machine Learning Research
Apple Machine Learning Research
J
Java Code Geeks
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Last Week in AI
Last Week in AI
雷峰网
雷峰网
博客园_首页
小众软件
小众软件
美团技术团队
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
腾讯CDC
P
Proofpoint News Feed
MongoDB | Blog
MongoDB | Blog
Google DeepMind News
Google DeepMind News
MyScale Blog
MyScale Blog
U
Unit 42
The Cloudflare Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Microsoft Security Blog
Microsoft Security Blog
大猫的无限游戏
大猫的无限游戏
Engineering at Meta
Engineering at Meta
N
Netflix TechBlog - Medium
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 叶小钗

姓王者的博客

Linux用户Secure Boot自主维护指南 | 姓王者的博客 MAD Bugs 已经开始——关于信息安全的军备竞赛 | 姓王者的博客 解决钉钉Dingtalk无法在Linux新版内核上启动问题-修复可执行栈错误 | 姓王者的博客 突发:GitHub 正遭受大规模 Issue 赌博广告轰炸 | 姓王者的博客 Ubuntu26.04-beta体验:坚毅浣熊! | 姓王者的博客 fakeclaw装作龙虾发贴吧 | 姓王者的博客 找回12年前的QQ记忆 | 姓王者的博客 在Linux上玩Flash网页游戏-洛克王国 | 姓王者的博客 Copilot将使用交互数据来训练 | 姓王者的博客 重要通知-请更新我的GPG公钥 | 姓王者的博客 为了自由Android | 姓王者的博客 GPL"2,3"事 | 姓王者的博客 短文-对VitePlus的一点🤏小贡献 | 姓王者的博客 Bing收录没了?亲测有效的快速恢复指南 | 姓王者的博客 解决桌面设备二维码快速识别的工具-ClipQR | 姓王者的博客 解决 Nautilus 自定义终端插件安装依赖问题 | 姓王者的博客 OpenClaw 该熄火了 | 姓王者的博客 Vite8 - 统一的基建开始 | 姓王者的博客 Astro 6 推出啦 | 姓王者的博客 ubuntu的openvpn异常暂停推送更新 | 姓王者的博客 Ubuntu 24.04 安装 Win10 虚拟机 | 姓王者的博客 ESA-后记:热爱阿里云 | 姓王者的博客 Moonbit 0.8.0 重大发布,我也要改一下我的包 | 姓王者的博客 ESA Pages 边缘开发大赛获奖 | 姓王者的博客 Astro: 优化katex,mermaid和灯箱使用 | 姓王者的博客 从edgeone迁移到esa | 姓王者的博客 出租人类:AI时代的荒诞与真实 | 姓王者的博客 Astro 5.17构建性能优化实践:从18s到13s | 姓王者的博客 Moonbit License Checker 开发使用 | 姓王者的博客 Stalux Astro博客主题自荐 | 姓王者的博客
别让AI替你捣乱-致零软件工程经验新人的指南 | 姓王者的博客
作者:xingwangzhe · 2026-06-09 · via 姓王者的博客

🕒 阅读时间:4 分钟 📝 字数:1564 👀 阅读量: Loading...

本文核心观点、结构与内容由本人撰写,AI 仅参与排版修饰与润色。目的就是强调人的主观能动性与 AI 指挥协作。


引言

GitHub 最近这几个月频繁崩溃,由于我订阅了 GitHub status 的邮件通知,导致某一天半夜连续受到几十封邮件轰炸

根本原因:胡乱的 PR,没完没了地跑 CI/CD,让 AI 替代人做各种事情,却不加以任何思考。

最近维护仓库也看到了许多噪音 PR。我觉得真的非常有必要讲讲——AI 时代下,零软件工程经验的人如何去贡献


软件工程的概念

将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护,以及对这些方法的研究 —— IEEE

当然不止软件——所有工科都学过至少一门工程管理课。作为外部 contributor,你至少需要一点工程知识,才能做好贡献。不过这只是充分不必要条件

条件说明
充分但不必要上过工程管理课不等于一定能做好贡献
必要但不充分没上过课不等于做不好贡献

你不必上那些”务虚”的课——只要你做过项目、参与过软件协作、写过 Issue、提过 PR,自然会懂。

有人说这不就成了悖论了吗:没经验很难做好 PR,但不做又没有经验。你说的对。 所以本文讲的就是——面向零软件工程经验新人的指南


万事开头难,先了解项目

AI 提效,首先在于快速了解项目。我可以假定你不会看每一行代码,但至少要看:

  • README.md
  • CONTRIBUTING.md
  • AGENTS.md / CLAUDE.md(仓库给 AI 准备的文档)

架构分析

让 AI 帮你画出项目架构图,比从零啃代码高效得多:

模式适用场景输出格式稳定性
TUI 模式终端命令行工具(如 Claude Code)ASCII 图表终端宽度变化可能错位
ChatBox 模式Web 端 AI 对话工具(如 ChatGPT)Mermaid 图表渲染稳定,可截图保存

TUI 模式 — 用 ASCII 作画:

请你阅读当前仓库的 README, CONTRIBUTING, AGENTS.md 等文档,

然后分析架构,最后画出 ASCII 图表来展现架构。

ChatBox 模式 — 用 Mermaid 渲染:

请你阅读当前仓库的 README, CONTRIBUTING, AGENTS.md 等文档,

然后分析架构,最后画出 Mermaid 图表来展现架构。

新人建议:优先使用 ChatBox 模式的 Mermaid 图表,渲染稳定、可截图反复参考。


隐性知识之一:错综复杂的包依赖

我想应该没有哪个新人蠢到不自知,去用 AI 贡献基础库却一点人工 review 都不做。

大部分贡献发生在应用层软件上。尽管仓库文档看似实现了知识闭包,但这些项目无一例外地依赖:

  • 大量第三方库
  • 一两个主体框架

这就是隐性知识之一——维护者默认你已经了解这些包了,但对新人来说,这是完全空白的领域。AI 也不会主动提这些事,因为它默认你懂。

补充提示词:快速补全依赖知识

分析完架构之后,请你再分析:

1. 当前项目的包管理器(npm / pnpm / yarn / cargo 等)

2. 核心第三方包及其作用

3. 主体框架是什么

4. 这些第三方的文档链接

核心目的:避免重复造轮子与低效代码。
明明查文档在配置文件里改一行开关就能实现的功能,非要用 AI vibe 出一个复杂度爆炸、难以 review 的实现——得不偿失。


隐性知识之二:编码规范与测试要求

每个项目都有自己的代码风格和测试要求。在你动手写代码之前,务必让 AI 帮你理清:

请分析当前项目的:

- 代码风格(缩进、命名规范、注释习惯)

- 是否有 linter 配置

- CI 中跑哪些测试

- 提交 PR 前需要通过什么检查

这一步花不了几分钟,但能避免你辛辛苦苦写出的 PR 因为格式问题或 CI 挂掉而被直接关闭。


准备贡献,先看 Issue

请不要直接 PR!作为新人,应该先去 Issue 看看。

你也许有奇妙的想法、天马行空的创造,但请先看看 Issue,避免撞车。

安装 gh CLI,让 AI agent 帮你快速筛选:

# 带有 good-first-issue 标签——最适合新人入手

gh issue list --label "good first issue" --limit 20

# 按关键词搜索

gh issue list --search "bug" --limit 20


场景 A:解决现有 Issue

如果你的想法和某个 Issue 吻合:

  1. 在 Issue 下留言,表示准备接手
  2. 去理解内容,补全必要的隐性知识
  3. 再动手写代码

重要:很多仓库要求你先在 Issue 下留言申请被 assign,再开始写代码。直接闷头写完才发现没人 assign 你——PR 可能白做。


场景 B:提出新 Issue

一个好的 Issue = 清晰表达 + 解决思路 + 结构思考

很多仓库的 Issue 都有模板。请你:

  • 按照模板逐项填写
  • 不要删除模板然后直接粘贴 AI 内容
  • gh 命令让 AI 按模板格式填写
  • 完成前置任务(看文档、跑测试、签 CLA 等)
  • 最后再创建 Issue

请你查看当前仓库的 Issue 模板,根据我要反馈的内容按照模板格式填写,

不要跳过任何必填项。填写完成后用 gh issue create 命令创建。


准备贡献,最关键的是 PR

PR = Pull Request(拉取请求),把你自己的代码变更提交给上游仓库、请求合并。

这是整个贡献流程的临门一脚,也是最容易翻车的地方。借助 AI 创建 PR 之前,以下关键点你必须亲自把关


1. 关联 Issue

PR 描述中加上 Closes #xxxFixes #xxx,合入后 Issue 自动关闭。

如果你的 PR 没有对应的 Issue——先反思一下:是不是跳过了上一章?


2. 填写 PR 模板

必填项说明
做了什么(What)变更的具体内容
为什么这样做(Why)动机和背景
如何测试(How to test)验证方法
关联的 IssueCloses #xxx

请你查看当前仓库的 PR 模板,根据我本次的代码变更按照模板格式填写

PR 描述,关联 Issue #xxx,然后用 gh pr create 命令创建 PR。


3. 自己先 Review 一遍

这是最重要的一步。 AI 生成的代码,你必须逐行看一遍

你不一定需要懂每一行逻辑,但至少要能回答这三个问题:

  1. 改了什么文件? 为什么是这些文件?
  2. 有没有改到不该改的地方?(AI 可能顺手”优化”了无关代码)
  3. 提交信息(commit message)是否清晰?

三个问题答不上来 = review 没到位 = 请不要提交


4. 保持 PR 小而聚焦

正确做法错误做法
一个 PR = 只修一个 bug一个 PR = 修 bug + 重构 + 改文档错字
多个功能拆成多个小 PR全部塞进一个 PR

总结:Issue -> 模板 -> 关联 -> Review -> 小步提交,串联起来才是一个正正好的 PR


题外话

虽是题外话,但这恰恰是软件工程之外最重要的常识——参与社区合作的隐性知识前提,或者说一种默契的社交礼仪。

每个人的容忍程度是有限的,大部分人可能一次机会也不会给犯错的人


你是来提意见的,不是来搞事情的

有些人在 Issue 里留言吐槽,不附带任何错误信息,只是一味地说”这个不好那个不好”。

Issue 是议事的地方Issue 不是发泄情绪的地方
附上复现步骤纯情绪输出
说明期望行为 vs 实际行为”这个真垃圾”
提供环境信息无凭无据

一个好的 Issue(哪怕只是提 bug)必须包含:复现步骤、期望行为、实际行为、环境信息。缺了这些,维护者想帮你也无从下手。而且社区是有记忆的——你在 A 仓库的不当言行,可能让你在 B 仓库也寸步难行。


不要胡乱 PR

场景建议
有明确 Issue 且被 assign放心提 PR
目的明确、表述充分可以直接 PR(不强制先 Issue)
新人、不确定、没把握先 Issue 后 PR,证明态度

“先 Issue 后 PR”不是金科玉律,但对于新人来说,遵守这条不成文的规矩至少能证明你是认真的——不至于一上来就被喷。


说人话

这一条看起来最简单,但 AI 时代下反而成了重灾区

很多新人把 AI 生成的回复——充斥着”很高兴收到您的反馈!我将深入分析……”之类的套话——原封不动地粘到 Issue 或 PR 里。

请记住:Issue 和 PR 是人与人之间的交流,你面对的是另一个真实的维护者,不是 AI。

你应当:

  • 删掉 AI 生成的废话套话,只保留实质内容
  • 用自己的话重新组织一遍——这个过程本身就是你是否真正理解了问题的试金石
  • 你自己都看不懂 AI 写的内容?就不要发出去

一句话总结:用 AI 辅助你思考,而不是让 AI 代替你思考。你才是那个发 PR 的人。


欢迎关注我

github:xingwangzhe

Metrics