news 2026/6/13 4:37:51

MonkeyCode 提示词工程:如何写出让AI生成高质量代码的Prompt

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MonkeyCode 提示词工程:如何写出让AI生成高质量代码的Prompt

MonkeyCode 提示词工程:如何写出让AI生成高质量代码的Prompt

AI编程的效果很大程度上取决于你如何描述需求。好的Prompt让AI一次就生成正确的代码,差的Prompt则需要反复修改。本文总结MonkeyCode社区中最高效的Prompt编写技巧。

好Prompt vs 坏Prompt

反例:模糊的描述

❌ "写一个用户管理功能"\n\nAI的理解可能有无数种:\n- 后台管理页面?\n- REST API?\n- 命令行工具?\n- 数据库CRUD?\n\n结果: AI猜测着写,大概率不是你要的

正例:精确的描述

✅ "在backend-service项目中,为用户模块添加搜索API:\n\n1. 接口: GET /api/users/search\n2. 参数: keyword(必填), page(默认1), size(默认20)\n3. 返回: { code: 0, data: { list: User[], total: number } }\n4. 逻辑: 在username和email字段中模糊匹配keyword\n5. 使用现有的User model和Prisma ORM\n6. 添加分页和缓存(Redis, 5分钟TTL)\n7. 编写对应的单元测试"\n\n结果: AI精确理解需求,一次生成正确代码

Prompt编写框架:CRISP

C - Context (上下文)\n 告诉AI在什么项目中、什么模块下工作\n "在backend-service的notification模块中"\n\nR - Requirement (需求)\n 精确描述要实现什么功能\n "添加邮件通知发送功能"\n\nI - Interface (接口)\n 定义输入输出的格式\n "输入: { to, subject, body },输出: { success, messageId }"\n\nS - Standard (标准)\n 指定技术标准和约束\n "使用项目现有的EmailService,遵循ESLint规范"\n\nP - Proof (验证)\n 说明如何验证功能正确\n "添加单元测试,覆盖正常发送和发送失败两种场景"

实战案例

案例一:数据库迁移

Prompt:\n"为用户表添加积分字段:\n\n1. 使用Prisma migration\n2. 新增字段: points (Int, 默认0, 非负)\n3. 新增字段: points_level (Enum: BRONZE/SILVER/GOLD/PLATINUM)\n4. 已有10000+用户数据,需要安全迁移\n5. 添加索引到points字段(用于排行榜查询)\n6. 创建数据库种子脚本更新已有用户等级\n7. 验证迁移脚本在测试环境可执行"\n\n关键点:\n- 指定了ORM工具 (Prisma)\n- 考虑了数据迁移安全性\n- 考虑了性能 (索引)\n- 包含验证步骤

案例二:Bug修复

Prompt:\n"修复用户登录偶发500错误:\n\nBug描述: 用户在弱网环境下登录时,约5%概率返回500\n错误日志: [附件或粘贴错误堆栈]\n\n分析方向:\n1. 可能是数据库连接超时\n2. 可能是Redis连接池耗尽\n3. 可能是JWT签名异步操作竞态\n\n约束:\n- 不改变现有API接口\n- 不降低登录性能\n- 添加超时和重试机制\n- 添加对应场景的测试用例"

案例三:性能优化

Prompt:\n"优化用户列表查询API的性能:\n\n当前状态:\n- API: GET /api/users\n- 响应时间: P95 = 2.3秒 (目标 < 500ms)\n- 数据量: 50000用户\n- 当前实现: 全量查询 + 内存分页\n\n优化方案:\n1. 改为数据库层分页 (cursor-based)\n2. 添加Redis缓存 (首页数据,10秒TTL)\n3. 添加字段选择 (只查询需要的列)\n4. 添加查询性能测试\n5. 验证优化后P95 < 500ms\n\n不要:\n- 不要改变API响应格式\n- 不要删除任何现有字段\n- 不要引入新依赖"

高级技巧

技巧一:提供示例

"按照以下风格编写代码:\n\n参考代码:\n[粘贴一段你满意的现有代码]\n\n请保持相同的:\n- 错误处理方式\n- 日志格式\n- 命名风格"\n\n效果: AI会模仿现有代码的风格

技巧二:分步骤

"分3步完成:\nStep 1: 先写数据模型\nStep 2: 再写业务逻辑\nStep 3: 最后写API接口和测试\n\n每完成一步暂停,等我确认后再继续"\n\n效果: 每步可以验证,避免一步错步步错

技巧三:反向约束

"不要使用以下方法:\n- 不要用eval()\n- 不要用any类型\n- 不要忽略异常\n- 不要硬编码配置值\n- 不要使用已弃用的API"\n\n效果: 排除常见错误做法

MonkeyCode的Prompt增强

MonkeyCode会自动增强用户的Prompt:

用户输入: "添加搜索功能"\n\nMonkeyCode自动增强:\n1. 添加项目上下文 (语言、框架、目录结构)\n2. 添加编码规范 (团队配置的Lint规则)\n3. 添加相关代码 (现有搜索相关文件)\n4. 添加数据库Schema\n5. 添加API规范 (RESTful风格)\n6. 添加测试要求 (覆盖率 ≥ 80%)\n\n增强后的Prompt发给AI → 更高质量的输出

总结

Prompt工程是AI编程中最被低估的技能。好的Prompt可以节省50%以上的AI交互时间。CRISP框架(上下文+需求+接口+标准+验证)是一个实用的编写模板。在MonkeyCode中,系统会自动增强你的Prompt,但清晰的描述仍然是获得高质量AI输出的基础。

Prompt模板库:github.com/chaitin/MonkeyCode/tree/main/docs/prompt-templates

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/13 4:36:52

告别杂乱布线:用AD20的这几个隐藏功能,让你的PCB布局效率翻倍

告别杂乱布线&#xff1a;用AD20的这几个隐藏功能&#xff0c;让你的PCB布局效率翻倍作为一名PCB工程师&#xff0c;你是否经常面对这样的场景&#xff1a;项目进度紧张&#xff0c;板上元器件密密麻麻&#xff0c;连接关系错综复杂&#xff0c;而老板还在不断催促交付时间&…

作者头像 李华
网站建设 2026/6/13 4:32:50

别再乱打孔了!PCB上给MOS管加散热孔的3个关键尺寸与避坑指南

别再乱打孔了&#xff01;PCB上给MOS管加散热孔的3个关键尺寸与避坑指南当你在设计一块需要处理大电流的PCB板时&#xff0c;功率MOSFET的散热问题总是如影随形。很多工程师的第一反应是在MOS管下方打一堆散热孔&#xff0c;但往往发现效果不尽如人意——板子依然烫手&#xff…

作者头像 李华
网站建设 2026/6/13 4:29:51

NLP新闻语料处理流水线:轻量级可复现新闻文本清洗与结构化方案

1. 项目概述&#xff1a;这不是一个新闻阅读器&#xff0c;而是一套面向NLP研究者的“新闻语料活体实验室” “NLP News Cypher | 02.23.20”这个标题乍看像某条旧闻的存档编号&#xff0c;但实际它代表一个我持续打磨了三年多的轻量级NLP工程实践模板——不是模型、不是API、更…

作者头像 李华
网站建设 2026/6/13 4:27:53

手把手教你用DSP28335的EPWM模块驱动LED呼吸灯(含死区配置详解)

用DSP28335打造智能呼吸灯&#xff1a;EPWM模块与死区控制实战解析从闪烁到呼吸&#xff1a;PWM调光背后的工程美学第一次看到LED灯从暗到亮再到暗的渐变过程时&#xff0c;我被这种被称为"呼吸灯"的效果深深吸引。不同于简单的闪烁&#xff0c;呼吸灯模拟了生命体的…

作者头像 李华