<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Pull Request on AI 观察</title><link>https://ai.wujiong.cc/tags/pull-request/</link><description>Recent content in Pull Request on AI 观察</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Sun, 18 Oct 2026 11:40:00 +0800</lastBuildDate><atom:link href="https://ai.wujiong.cc/tags/pull-request/index.xml" rel="self" type="application/rss+xml"/><item><title>用 AI 根据 diff 写 PR 描述：变更说明、测试方式与风险点一次写清</title><link>https://ai.wujiong.cc/posts/2026-10-18-ai-coding-pr-description-from-diff/</link><pubDate>Sun, 18 Oct 2026 11:40:00 +0800</pubDate><guid>https://ai.wujiong.cc/posts/2026-10-18-ai-coding-pr-description-from-diff/</guid><description>&lt;p&gt;评审者最需要知道三件事：改了什么、为什么改、怎么验证。&lt;strong&gt;把 &lt;code&gt;git diff&lt;/code&gt; 和你对动机的一两句说明一起交给 AI，让它按固定模板生成 PR 描述，再由你补上它不可能知道的背景（需求来源、讨论结论），能明显缩短写描述的时间。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="准备输入"&gt;准备输入&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git diff main...HEAD --stat &amp;gt; /tmp/stat.txt
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git diff main...HEAD &amp;gt; /tmp/diff.txt
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git log main..HEAD --oneline &amp;gt; /tmp/log.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--stat&lt;/code&gt; 帮助 AI 了解改动范围；&lt;/li&gt;
&lt;li&gt;提交记录提供变更顺序；&lt;/li&gt;
&lt;li&gt;粘贴前检查 diff 里有没有密钥、内部地址等敏感内容。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="提示词模板"&gt;提示词模板&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;请根据以下信息写一份 Pull Request 描述（Markdown）。
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;动机（我写的）：【例如：修复导出 CSV 时中文乱码，用户反馈】
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;提交记录：【粘贴 log】
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;改动统计：【粘贴 stat】
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;diff：【粘贴 diff】
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;格式：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;## 变更摘要（3–5 条，按重要性排序）
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;## 动机
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;## 实现说明（只写评审需要知道的关键决策）
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;## 测试方式（列出可以复现的步骤；diff 中新增的测试单独列出）
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;## 风险与回滚
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;要求：只描述 diff 中真实存在的改动；无法从 diff 判断的写“【待作者补充】”；不要夸大影响范围。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="处理大-diff"&gt;处理大 diff&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;先只给 &lt;code&gt;--stat&lt;/code&gt;，让 AI 按模块分组；&lt;/li&gt;
&lt;li&gt;再逐个模块贴 diff，生成各自的说明；&lt;/li&gt;
&lt;li&gt;最后合并成一份描述。&lt;/li&gt;
&lt;li&gt;如果 diff 过大，本身就是信号：考虑拆成多个 PR。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="需要人工把关的部分"&gt;需要人工把关的部分&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;动机和背景&lt;/strong&gt;：AI 只能从代码推测，需求来源和取舍要你写；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;测试方式&lt;/strong&gt;：确认列出的步骤真的跑过；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;风险判断&lt;/strong&gt;：数据库迁移、配置变更、权限相关的改动，务必人工补充影响范围；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;措辞&lt;/strong&gt;：把“优化了性能”这类空话改成具体说明，或删掉。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="示例输出示意"&gt;示例输出（示意）&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#79c0ff"&gt;## 变更摘要
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#79c0ff"&gt;&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;-&lt;/span&gt; 导出 CSV 时写入 UTF-8 BOM，修复 Excel 打开中文乱码
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;-&lt;/span&gt; 新增导出编码的单元测试
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#79c0ff"&gt;## 风险与回滚
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#79c0ff"&gt;&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;-&lt;/span&gt; 依赖 CSV 首行字段名的下游脚本可能受 BOM 影响【待作者补充：是否有此类脚本】
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;-&lt;/span&gt; 回滚：还原 export.py 即可，无数据迁移
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="搭配使用"&gt;搭配使用&lt;/h2&gt;
&lt;p&gt;提交信息也可以用类似方式检查，参考 &lt;a href="https://ai.wujiong.cc/posts/2026-10-18-ai-coding-commit-message-review-guide/"&gt;AI 辅助写提交信息&lt;/a&gt;；涉及安全的改动，评审时可对照 &lt;a href="https://ai.wujiong.cc/posts/2026-08-30-ai-coding-security/"&gt;AI 编程安全注意事项&lt;/a&gt;。日常场景示例见 &lt;a href="https://ai.wujiong.cc/posts/2026-10-16-programmer-debug-error/"&gt;程序员用 AI 排查报错&lt;/a&gt;。&lt;/p&gt;</description></item></channel></rss>