AI 编程常用 Prompt 模板:读项目 / 修 bug / 加功能 / 重构

第 3 篇 · 4 个 Prompt 模板合集


1. 一个普通的早上

上周一早上,我给 Claude Code 提了 4 次需求:让它读懂一段隔了两周没碰的模块代码、修一个偶发的 JSON 解析 bug、给一张用户表加联系方式字段、重构一个写到几百行的拼接函数。

4 次需求,4 个 Prompt,全是临场打字。质量参差不齐——第二个没写约束,AI 顺手重构了一堆无关代码;第三个忘了说 migration 要单独提交,改动塞进了同一个 commit。

那天傍晚我才意识到:我每天用 AI 处理的需求其实就那几类,但我每次都在从零打字——想结构、写约束、列验收。


2. 写代码会抽象,写 Prompt 却不会

写代码的时候,同样的逻辑出现第二次,我们就有"该抽个函数了"的冲动。

但写 Prompt,几乎从来没这个习惯。Prompt 像一次性消耗品——用完就丢,下次同样任务再从零打。质量全靠当时状态:精神好的时候三要素齐全,累的时候只剩一句"帮我加个字段",然后 AI 给你 5 分钟省下的代码,你花 20 分钟回滚。

真正的转变是把 Prompt 当成可复用的代码资产:同一类任务用同一个骨架,每次只填变量。

我后来梳理过,我日常用 AI 协作的任务其实只有 4 类:读项目、修 bug、加功能、重构。这 4 类覆盖了我 80% 以上的 AI 协作场景。把这 4 类各沉淀一个模板,就够用了。


3. 4 个模板的共同骨架

贴模板之前先说 3 个共同设计原则——4 个模板都是这 3 个钉子的具体化。

原则 1:方案先行。 4 个模板的第一步都不是动手——是让 AI 先输出方案:读项目先出结构、修 bug 先出根因、加功能先列文件、重构先列问题。反例:直接说"把 X 改成 Y",错了你都不知道为什么。

原则 2:验收明确。 沿用第 1 篇的"验收"概念——必须可机械判断。模板里把通用验收预填好(“测试通过 / migration 单独提交”),不用每次临场想。

原则 3:改动可逆。 默认"分步提交 + diff 可审",不让 AI 一次性改 10 个文件。反例:让 AI"一口气做完"——回滚成本指数级上升。

照模板用,原则自动跟上。先打个预防针:模板是脚手架,不是答案——具体项目要微调,不要照搬。


4. 4 个模板拆解

模板 A:读项目

使用场景:第一次接手一个仓库 / 时隔半个月回来 / 接手别人写了一半的模块。让 AI 给你一份"3 分钟版本"的项目认知。

模板原文

目标:帮我快速理解 [项目/模块名] 的结构和关键逻辑。

请按以下顺序输出:
1. 项目的核心目的(1-2 句)
2. 目录结构和每个目录的职责(不超过 10 行)
3. 数据流:从用户请求到响应的完整路径
4. 关键数据模型(最多 5 个)+ 它们之间的关系
5. 当前你看到的潜在风险或不清晰的地方(不超过 3 条)

约束:
- 只读不改任何文件
- 不猜测,看不懂的地方直接说"不清楚"
- 不输出你的优化建议(这一步只做理解)

验收:
- 我读完你的输出,能在 3 分钟内向同事讲清这个项目在干什么

真实使用案例:前阵子我重启 ScoreMe billing 模块——隔了 10 天没碰,UserQuota 和 ManualOrder 的关系我已经忘了。我没硬看代码,先丢这个模板给 Claude Code。

AI 给我列了:数据流(用户调评分 → billing 检查 quota → 不足返回 402 → 管理员手动加 paid_count)、关键模型(UserQuota / ManualOrder)。最后第 5 条风险列了一句:“last_reset_date 的过零点重置目前是被动触发,没主动 cron。”

这条"没主动 cron"是我真没注意到的——这个 bug 我记下来,恰好成了下面模板 B 的例子。

常见踩坑

  1. 不加"只读不改"会出事:AI 会顺手"优化"代码,文件被改了你都不知道。
  2. 不要让 AI 边读边给建议:理解会被"我觉得应该这样"污染。理解和建议必须分两步。

模板 B:修 bug

使用场景:复现了一个 bug,想让 AI 帮你定位 + 修。注意是"定位 + 修",不是"直接修"——这个区分是核心。

模板原文

目标:定位并修复以下 bug。

bug 描述:[完整复现路径 + 期望行为 + 实际行为]
报错信息 / 日志:[贴原始错误,不要总结]

请按以下顺序回答:
1. 这个 bug 的根因在哪一行 / 哪个函数?(先定位,不要先修)
2. 至少给出 2 个可能的 fix 方案,标注每个方案的副作用
3. 等我选定方案后,再给出最小改动的 diff

约束:
- 不修改未涉及的代码(不顺手重构)
- 不引入新依赖
- 单元测试 / 现有测试必须仍能通过

验收:
- 给出 diff 前,必须先获得我对方案的确认
- diff 范围只覆盖这个 bug 相关的文件

真实使用案例:接着上面那个例子。free_count_today 的过零点重置只在用户当天首次访问时被动触发,没有定时任务。我把它填进模板。

AI 先回 2 个根因假设:(1) 当初只设计了 lazy reset;(2) last_reset_date 语义是"上次被动重置时间",不是"主动重置时间"。

然后给 3 个 fix 方案:A management command + crontab;B Celery beat(要 Redis);C 保留 lazy 但把逻辑写得更显式。B 要新依赖、违反约束直接 pass;C 最快但字段语义别扭。

我选 A。AI 才给 diff,只动了 billing 里两个文件 + 一个 management command。

常见踩坑

  1. 不让 AI 先定位会被反噬:bug 过两周换个形式再回来,你不知道之前修了啥。
  2. 不显式说"先给方案、等确认再 diff",AI 会一步到底:方案讨论环节就没了。

模板 C:加功能

使用场景:在现有代码里加一个新功能 / 新字段 / 新接口。重点是"不打扰现有逻辑"。

模板原文

目标:在 [模块/文件] 中新增 [功能描述]。

需求细节:
- 输入:[什么形式的输入]
- 输出:[期望的输出]
- 业务规则:[关键规则 1-3 条]

请按以下顺序产出:
1. 现有代码里哪些地方需要改动?(列文件 + 行数范围)
2. 改动方案:新增文件还是改现有文件?为什么?
3. 等我确认方案后,再给出代码

约束:
- 不修改与本功能无关的代码
- 不改公开 API 的签名(除非显式要求)
- 数据模型变更必须配 migration,且 migration 单独提交
- 不引入新依赖

验收:
- 给出代码前先得到方案确认
- 代码 + 测试 + migration(如有)分文件给出,方便我分 commit

真实使用案例:还是同一个项目。Visitor 表只有 visitor_id 和 ip/ua,没联系方式——我决定加一个 contact 字段,给用户留入口加微信。

模板填了:目标加字段、输入微信号或手机号、规则非必填。

AI 第一步列了要改的文件:models.pyserializers.pyviews.pyadmin.py。因为模板里有"数据模型变更必须配 migration"这条,AI 顺势问了 backfill 策略——我说不需要,默认空字符串。

方案过了我才放行——它给了 4 个文件 diff + 1 个 migration,建议"分 2 个 commit:先 migration,再业务代码"——帮我省了一次潜在的 review 噩梦。

常见踩坑

  1. 不写"先列文件、等确认",AI 会偷偷塞改动:默认 AI "顺手"动它觉得该重构的地方。
  2. 不显式说"migration 单独提交",AI 会塞一个 commit:早期翻过的坑——回滚业务代码就把 migration 也回滚了。

模板 D:重构

使用场景:现有代码逻辑没坏,但读起来乱 / 难扩展 / 重复多。想让 AI 帮你重构,保证行为完全等价。

模板原文

目标:重构 [文件/函数名],目标是 [可读性 / 可扩展性 / 去重 / 性能],行为必须完全等价。

请按以下顺序产出:
1. 先指出当前代码的 3 个最大问题
2. 给出重构方案:拆成几个函数 / 引入什么抽象 / 删除什么重复
3. 等我确认方案后,再给出 diff

约束:
- 对外接口 / 函数签名 / 返回值结构必须完全不变
- 不引入新依赖
- 不改测试(如果改了说明行为变了,必须停下来跟我确认)
- 一次只重构一个文件 / 一个函数

验收:
- 重构前后的现有测试全部通过
- diff 给出后,我能在 5 分钟内看完并理解每个改动
- 如果改动超过 100 行,主动拆成 2 次 PR

真实使用案例:copyright_agent 是我之前做的一个软著文档生成工具——把代码片段、模块说明、用户输入塞进模板,输出 60 页符合规范的文档。

早期那段拼接逻辑边写边加——加一个章节就多一个 if。3 个月后函数 280 行、14 个 if,可读性归零。

模板填上扔给 Claude,约束"对外接口不变、测试不改"。

AI 列了 3 个最大问题:章节顺序硬编码、拼接和格式化混在一起、占位符散落各处。给方案:抽出 SectionBuilder 类、拼接和格式化分两步、占位符走统一 render

方案我没改动,让它直接做。diff 出来,280 行变成 3 个文件共 190 行。跑了 3 个软著样本,输出 diff 为空——行为完全等价。

常见踩坑

  1. 不写"对外接口不变"会被静默改签名:AI 容易"顺手"把参数从 list 改成 set——调用方全炸。
  2. 不写"测试改了必须停下来",AI 会自己调测试:测试改到通过为止,等于丢了行为等价的兜底。

5. 4 个模板的速查卡

把 4 个模板做成了一份在线速查卡,托管在 GitHub Gist:[Gist 链接 — 发布前补]

用法有 3 种,按你的工具栈挑:

  1. 复制粘贴到对话框:Claude / ChatGPT / Cursor / 通义灵码都吃,零成本上手
  2. 存成编辑器的斜杠命令:Cursor 写进 Rules、Claude Code 放进 .claude/commands/、Copilot 建 prompt 文件,下次直接打斜杠
  3. 塞进项目级协作规则文件:Cursor 的 .cursorrules、Claude Code 的 CLAUDE.md,让 AI 在这个项目里自动按结构工作

我自己用的时候会持续打磨,更新同步到 Gist。如果你跑出了新版本,欢迎在评论里贴——后面可能整理一个"社区版"。


6. 收尾

像前面打的预防针:模板是脚手架,不是答案。但有了模板,每次微调都是在稳定的骨架上做,不是从零拍脑袋。

如果你在练面试或销售话术,我自己做了个工具叫 ScoreMe——输入一段回答,AI 给 5 维度评分 + 优化版本。ScoreMe(每天 3 次免费)。

下一篇会写 CLAUDE.md 该写什么——节选一份真实产品的 CLAUDE.md 做范本。下一篇见。


关于作者

AI + 工程落地工程师,15 年系统工程经验,做过架构师 / Tech Lead / 独立 builder 三种角色。现在专注用 AI 协作把想法快速变成可运行的付费产品。本系列分享我在这条路上沉淀的方法论与踩坑复盘。


标签#PromptEngineering #ClaudeCode #AICoding #Cursor

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐