AI Coding工作流优化:Prompt工程与高效协作技巧

2026年4月20日 boss

AI Coding 实战指南系列(共7篇)

第1篇:全景指南 |
第2篇:AI代码编写 |
第3篇:AI代码重构 |
第4篇:AI调试实战 |
第5篇:AI架构设计 |
第6篇:工作流优化 |
第7篇:选型与未来

Prompt工程基础(编程场景)

Prompt工程——如何与AI有效沟通——是AI编程工具链中最被低估的技能。同一个需求,不同的Prompt描述方式,可能导致生成代码质量的天壤之别。

编程场景的Prompt工程有一个核心原则:AI理解的是上下文,不是指令。你不需要学习特殊的”AI语言”,而是要学会提供更好的上下文。

一个好的编程Prompt包含五个要素

1. 角色——你希望AI扮演什么角色?

"你是一个高级Laravel开发者,精通性能优化和安全最佳实践。"

这比直接说”帮我写代码”效果好得多。角色设定让AI知道该用什么深度和专业度来回答。

2. 上下文——你在做什么项目?用了什么技术栈?

"我在一个Laravel 11 + Vue 3的项目中,使用MySQL 8.0和Redis 7。"

上下文决定了AI生成的代码是否能直接在你的环境中使用。缺少上下文,AI可能生成过时版本的代码或使用你没有的依赖包。

3. 具体任务——你需要AI做什么?

"为UserController的index方法添加分页、过滤和排序功能。"

任务描述越具体,AI越不容易”理解偏差”。避免模糊的描述,如”优化这个接口”——优化什么?性能?代码结构?安全性?

4. 约束条件——有什么限制和要求?

"必须使用Eloquent ORM(不要原生SQL),必须添加缓存层,
每页不超过50条,只查询必要的字段。"

约束条件是防止AI”自由发挥”的关键。没有约束,AI可能生成技术上正确但不符合项目规范的代码。

5. 示例——如果能提供一个期望的输入输出示例。

"期望请求示例:GET /api/users?page=1&sort=created_at&order=desc&role=admin
期望响应格式:{ data: [...], meta: { current_page: 1, total: 100 } }"

示例是最有效的”规范”方式。看到具体的输入输出,AI能精确理解你的期望。

各产品的自定义配置技巧

主流AI编程工具都支持项目级的自定义配置——通过配置文件告诉AI你的项目规范、技术栈和编码约定。这是提升AI输出质量最高效的方式,一次配置,持续生效。

Cursor:.cursorrules文件

在项目根目录创建 .cursorrules 文件,Cursor每次生成代码时都会参考这个文件。

# 项目规范
技术栈:Laravel 11 + Vue 3 + TypeScript
PHP版本:8.4
数据库:MySQL 8.0
缓存:Redis 7

# 编码约定
- 所有方法必须有类型声明(参数和返回值)
- 使用Eloquent ORM,禁止原生SQL
- 使用FormRequest进行参数验证
- 所有数据库查询必须使用select()指定字段
- 使用Cache::remember()缓存频繁查询
- API响应使用API Resource格式化
- 错误处理使用try-catch + 日志记录

# 禁止事项
- 不要使用env()函数(除了配置文件中)
- 不要使用DB::raw()
- 不要在Controller中写业务逻辑
- 不要使用SELECT *

这个配置文件的效果立竿见影——Cursor生成的代码会自动遵循这些规范,你不再需要每次都在Prompt中重复这些约束。

Claude Code:CLAUDE.md文件

在项目根目录创建 CLAUDE.md 文件,Claude Code每次启动时会自动读取这个文件。

# 项目概览
这是一个Laravel 11电商项目,包含用户管理、商品管理、订单系统三个核心模块。

# 架构
- 前端:Vue 3 + TypeScript,位于resources/js/
- 后端:Laravel 11,PHP 8.4
- 数据库:MySQL 8.0,使用Eloquent ORM
- 缓存:Redis 7,端口6379
- 队列:Laravel Queue + Redis驱动

# 编码规范
- 命名:方法用camelCase,变量用camelCase,常量用UPPER_SNAKE_CASE
- 数据库:表名snake_case复数,字段名snake_case单数
- 路由:使用RESTful命名,必须命名每个路由
- 安全:所有输出必须转义,所有输入必须验证

# 重要约束
- 三服务器部署,修改后需验证所有服务器
- 本地必须使用localhost连接数据库(EIP限制)
- 配置变更后必须重启PHP-FPM

CLAUDE.md与.cursorrules的关键区别是:CLAUDE.md可以包含项目背景和架构描述,而.cursorrules更侧重编码规则。实际上,CLAUDE.md的内容更丰富,它能帮助Claude Code理解”为什么这样做”,而不仅仅是”要这样做”。

GitHub Copilot:.github/copilot-instructions.md

在项目的 .github/ 目录下创建 copilot-instructions.md 文件。

# Copilot Instructions

## 项目信息
Laravel 11 + Vue 3电商项目

## 编码规范
- 使用PHP 8.4语法特性(类型声明、match表达式、命名参数等)
- 遵循PSR-12编码标准
- 使用Eloquent ORM进行数据库操作
- 所有公开方法必须有PHPDoc注释

## 测试要求
- 使用PHPUnit进行单元测试
- 测试文件放在tests/目录下,镜像源码目录结构
- 使用数据库事务包裹测试,避免测试数据残留

Copilot Instructions的特点是简洁——它会在后台默默影响Copilot的补全和对话建议,但不会直接出现在UI中。

高效协作模式:人机配对编程

“人机配对编程”是2026年最高效的开发模式——人类负责思考和决策,AI负责执行和验证。以下是三种经过验证的协作模式。

模式1:指挥官模式(适合大型任务)

你作为”指挥官”发出高层指令,AI作为”执行者”自主完成。

你的指令:"给用户模块添加邮箱验证功能"
AI的执行:
  1. 分析现有用户注册流程
  2. 设计邮箱验证的数据结构
  3. 创建Migration和Model
  4. 实现发送验证邮件的逻辑
  5. 添加验证接口和路由
  6. 编写测试用例
你的审查:检查git diff,确认实现是否符合预期

这个模式的关键是审查。AI执行后你必须审查它的输出,不能盲目信任。

模式2:对话模式(适合复杂逻辑)

你和AI通过多轮对话,逐步细化需求并优化实现。

第1轮:
你:"我需要一个缓存策略来优化首页加载"
AI:"建议使用Redis缓存,TTL 5分钟,缓存用户数据和热门文章列表"

第2轮:
你:"数据更新时怎么办?用户看到的不是最新数据"
AI:"可以使用Cache::forget()在数据更新时清除缓存,
或者在数据变更时触发事件异步刷新缓存"

第3轮:
你:"用事件驱动的方式实现,缓存刷新失败怎么办?"
AI:"添加降级策略——如果缓存读取失败,直接查数据库。
可以在try-catch中处理,缓存异常不影响正常访问"

这个模式的关键是迭代。通过多轮对话逐步逼近最优方案。

模式3:审查模式(适合质量保障)

你写完代码后,让AI作为”审查者”帮你发现问题。

你的代码:
function getUserOrders($userId) {
    return DB::table('orders')
        ->where('user_id', $userId)
        ->get();
}

AI的审查反馈:
1. 使用了DB::table()而非Eloquent Model,不符合项目规范
2. 缺少select(),查询了所有字段
3. 没有排序,订单返回顺序不确定
4. 没有分页,用户订单多时可能内存溢出
5. 没有缓存,频繁查询浪费数据库资源

建议改为:
return Cache::remember("user_orders_{$userId}", 300, function () use ($userId) {
    return Order::where('user_id', $userId)
        ->select('id', 'order_no', 'amount', 'status', 'created_at')
        ->orderBy('created_at', 'desc')
        ->paginate(20);
});

这个模式的关键是培养习惯——把AI审查作为提交代码前的标准步骤。

常用Prompt模板合集

模板1:生成新功能模块

在{项目描述}项目中,创建一个{功能名称}模块。

技术栈:{框架+版本}
数据库:{数据库类型+版本}

要求:
1. 创建Migration(字段:{列出关键字段})
2. 创建Model(包含关联关系和Scope)
3. 创建Service类(业务逻辑层)
4. 创建Controller(使用Resource格式化响应)
5. 创建FormRequest(参数验证规则)
6. 添加路由(RESTful风格)

约束:
- 使用Eager Loading避免N+1查询
- 添加Redis缓存(TTL 5分钟)
- 只查询必要字段
- 所有方法添加类型声明

模板2:Bug修复

以下代码在{场景}下出现{错误描述}:

环境:{框架+版本},{PHP/Node版本},{数据库}
错误信息:{完整错误信息}

相关代码:
{代码}

请分析:
1. 错误的根本原因
2. 为什么只在{特定场景}下出现
3. 修复方案(最小改动原则)
4. 如何防止类似问题

模板3:性能优化

以下接口响应时间{当前值},需要优化到{目标值}:

接口:{路径}
框架:{框架+版本}
当前实现:{代码}

性能瓶颈(已确认):
{描述已知的瓶颈}

请提供:
1. 优化方案(优先级排序)
2. 每个方案的预期提升幅度
3. 实施风险
4. 监控指标建议

模板4:代码审查

请审查以下代码,重点关注:

1. 安全性(SQL注入、XSS、CSRF、认证授权)
2. 性能(N+1查询、内存泄漏、不必要的循环)
3. 可维护性(命名规范、代码结构、注释质量)
4. 错误处理(异常捕获、日志记录、用户提示)
5. 是否符合{框架}最佳实践

代码:
{粘贴代码}

模板5:测试用例生成

为以下方法生成PHPUnit测试用例:

方法:{方法名}
功能:{描述方法的功能}
框架:{框架+版本}

测试要求:
- 覆盖正常路径和所有边界条件
- 使用数据提供器(DataProvider)处理多组测试数据
- 使用数据库事务(不会污染数据库)
- Mock外部依赖(如API调用、邮件发送)
- 断言返回值类型和结构

核心观点:Prompt工程不是一门需要专门学习的”技术”,而是一种更好的沟通习惯。提供清晰的上下文、明确的约束和具体的示例——这些原则不仅适用于与AI沟通,也适用于与人类同事沟通。投资5分钟写一个好的Prompt,能节省30分钟的返工时间。

写在最后

工作流优化的核心不是找到”最好的工具”或”最强大的模型”,而是建立一套适合你自己的高效协作模式。配置文件(.cursorrules、CLAUDE.md、copilot-instructions.md)是”一次投入、持续收益”的投资;Prompt模板是”踩过的坑、总结的经验”;人机配对编程是”让AI做AI擅长的事,让人做人擅长的事”的分工哲学。

下一篇:我们将放眼未来,分析2026年AI Coding的行业格局,按场景、团队和预算给出选型决策树,并预测未来趋势——Agent化、多模态和垂直领域的深化。

关于作者

boss

发表评论