P
Prompt Master

Prompt 大师

掌握和 AI 对话的艺术

Coding Prompts

code generation prompts(overview)

这一节收集了 code generation 相关的 prompt。重点不是“让 AI 写完所有代码”,而是让 prompt 变成一种可重复的接口(清晰的 input + constraints + output format),从而提升可控性与复用性。

适用场景

  • 快速生成样板代码或脚手架
  • 把自然语言需求转成可执行代码
  • 修复 bug、补边界条件或加日志
  • 生成测试用例、对齐接口格式

核心结构(建议每次写清楚)

  1. 目标:要做什么功能
  2. 上下文:语言版本、框架、约束、已有代码
  3. 输入:数据结构、样例、边界
  4. 输出:格式、文件位置、函数签名
Prompt Lab

把这章的知识,直接变成实战能力

进入交互式实验室,用真实任务练 Prompt,10 分钟快速上手。

立即查看 →

Prompt 模板(通用版)

你是资深工程师,请实现以下功能:

目标:
- {{WHAT_TO_BUILD}}

上下文:
- Language: {{LANG_VERSION}}
- Framework: {{FRAMEWORK}}
- Style: {{STYLE_OR_GUIDE}}
- Constraints: {{CONSTRAINTS}}

输入:
{{INPUT_SPEC}}

输出:
- 只输出代码
- 必须包含 {{FUNCTION_NAME}}
- 保持现有 API 不变

示例 1:生成函数

你是资深前端工程师,用 TypeScript 实现一个函数。

目标:
- 把用户列表按年龄分组

上下文:
- Language: TypeScript 5
- Constraints: 纯函数,不修改原数组

输入:
type User = { id: string; name: string; age: number }
const users: User[] = [...]

输出:
- 函数名 groupByAge
- 返回 Record<number, User[]>
- 只输出代码

示例 2:修复 bug

你是资深后端工程师,请修复下面的代码问题并解释原因。

问题:
- 当 amount 为 0 时会抛错
- 精度出现 0.30000000000004

上下文:
- Node.js 20
- 不能引入新依赖

代码:
function calcTotal(items) {
  return items.reduce((sum, item) => sum + item.amount, 0);
}

输出:
- 修复后的代码
- 3 条以内说明

示例 3:生成测试用例

你是资深测试工程师,请为下面函数生成单元测试。

上下文:
- Testing: Jest
- 覆盖正常输入、空数组、异常输入

代码:
export function normalizeEmail(email: string) {
  return email.trim().toLowerCase();
}

输出:
- Jest 测试代码

常见问题与修复方式

  • 输出不稳定:加长度/格式约束,固定字段顺序
  • 忽略边界:明确列出 edge cases,并要求覆盖
  • 代码跑不通:提供更完整的上下文与依赖版本
  • 风格不一致:指定 lint 规则或已有风格

Index

📚 相关资源

❓ 常见问题

关于本章主题最常被搜索的问题,点击展开答案

让 AI 写代码,Prompt 应该写哪四件事?

目标(要做什么功能)、上下文(语言版本、框架、约束、已有代码)、输入(数据结构、样例、边界)、输出(格式、文件位置、函数签名)。这四块一缺,模型就开始臆测——TypeScript 5 的代码可能写成 ES5、Node.js 20 的写成 Node 14,编译直接报错。

为什么生成的代码经常跑不通?

本章列了四个常见原因:上下文不够(没说依赖版本)、边界没列(空数组、null、异常输入没覆盖)、风格不一致(lint 规则没给)、输出格式没钉(多了 markdown 代码块解释)。修法是把这些都写进 Prompt,比如「Node.js 20,不能引入新依赖,只输出代码」,本章修 bug 示例就是这个写法。

用 AI 写测试用例靠谱吗?要怎么 Prompt?

靠谱但要给约束。本章 Jest 示例是好模板:写明 testing 框架(Jest / Vitest / pytest)、覆盖范围(正常输入、空数组、异常输入)、目标函数代码完整粘贴。最容易翻车的点是模型只测 happy path——必须显式列 edge cases,否则边界 bug 全漏。

代码 Prompt 输出风格不一致怎么办?

把团队 lint 规则或一段已有代码作为 style anchor 放进 Prompt 上下文,例如「参考下方风格,使用同样的命名、缩进、import 顺序」,再粘一段团队代码。比单纯说「保持现有风格」精准得多。Cursor / Claude Code 这类 IDE agent 直接读代码库会更稳。

改 bug 用 AI 时,怎么避免它把无关代码也重写一遍?

Prompt 里写「保持现有 API 不变」「只修问题相关代码,其他保持原样」「输出 diff 而不是整个文件」。本章修 `calcTotal` 精度 bug 的示例就是这种做法——只列问题(amount=0 报错、精度异常)、给约束(不引入新依赖)、限制说明(3 条以内),模型不敢扩散修改。