MonkeyCode 提示词工程:写出高效 AI 编程指令的 30 个核心技巧
引言
"好的提示词是 AI 编程助手发挥威力的关键。" 同样的 MonkeyCode,有人觉得它只是简单的代码补全工具,有人却能用它完成复杂的架构设计、自动化重构和全栈开发。
差距在哪里?提示词工程(Prompt Engineering)。
本文将系统分享 30 个经过实战验证的 MonkeyCode 提示词技巧——从基础语法到高级策略,从单行补全到多文件协作,帮助你把 MonkeyCode 的能力发挥到极致。
🎯 核心信息
- GitHub 仓库: https://github.com/monkeycode-ai/monkeycode
- 开源协议: Apache License 2.0
- 欢迎提交 Issue: 分享你的提示词技巧!
基础篇:提示词的核心原则(技巧 1-8)
技巧 1:明确指定编程语言和框架
❌ 模糊提示:
"写一个用户登录功能"
✅ 精确提示:
"用 TypeScript + Express + TypeORM + JWT 写一个用户登录 API,
包括邮箱密码验证、token 生成、密码 bcrypt 哈希(cost=12),
遵循 RESTful 规范,返回 JSON 格式"
为什么有效:明确语言和框架后,AI 可以直接使用对应的惯用法、库函数和最佳实践,减少猜测。
技巧 2:提供上下文而非孤立请求
// ❌ 孤立请求
"修复这个 bug"
// ✅ 提供完整上下文
/*
当前问题:用户登录后 session 在 5 分钟内过期,
预期应该是 24 小时。
相关代码位置:src/auth/session.ts
当前配置:{ maxAge: 300 } (单位:秒)
需求:将过期时间改为 24 小时,
同时实现滑动续期(每次操作自动延长)
*/
原则:上下文越充分,AI 的回答越精准。至少包含:
- 你在做什么
- 当前行为是什么
- 期望行为是什么
- 相关代码/配置
技巧 3:使用结构化输出格式
请按以下格式输出:
## 实现方案
[简要描述方案]
## 代码变更
### 新增文件
- `path/to/file`: [说明]
### 修改文件
- `path/to/file`: [具体改动]
### 删除文件
- `path/to/file`: [原因]
## 注意事项
- [潜在风险]
- [需要手动确认的事项]
效果:结构化输出让 AI 的回答更有条理,也方便你逐项检查和执行。
技巧 4:给出示例(Few-Shot Learning)
// 请按照以下风格编写 API 错误响应:
// 示例 1:参数缺失
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Email is required",
"details": [{ "field": "email", "issue": "required" }]
}
}
// 示例 2:未授权
{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or expired token",
"details": []
}
}
// 现在,请为"余额不足"场景编写错误响应
原理:通过 1-3 个示例,AI 能快速理解你的编码风格和期望格式,大幅提高输出一致性。
技巧 5:分步骤描述复杂任务
请帮我完成以下任务,每一步都先确认再继续:
**Step 1**: 分析现有的 User 模型定义(src/models/User.ts),
列出所有字段及其类型
**Step 2**: 基于 Step 1 的分析,设计一个 UserProfile 扩展模型,
包含头像、简介、偏好设置等字段
**Step 3**: 编写数据库迁移脚本
**Step 4**: 创建对应的 Repository 层代码
请在每个 Step 完成后暂停,等我确认后再进行下一步。
适用场景:复杂重构、新功能开发、架构迁移。避免一步到位导致偏差累积。
技巧 6:告诉 AI 你的约束条件
// ✅ 明确约束的提示词
/*
请优化以下函数的性能:
约束条件:
1. 不能引入新的外部依赖
2. 需要保持向后兼容(API 签名不变)
3. 必须处理空值/边界情况
4. 时间复杂度要求 O(n)
5. 需要添加 JSDoc 注释
6. 遵循项目现有的 ESLint 规则
7. 不能使用 async/await(同步函数)
*/
关键:提前声明"不能做什么"和"必须满足什么",避免返工。
技巧 7:利用角色设定(Persona)
你是一位拥有 15 年经验的资深后端架构师,
专精于高并发分布式系统设计。
你熟悉微服务架构、事件驱动设计、DDD 领域驱动设计,
对性能优化有深入理解。
请审查以下代码,从架构合理性、可扩展性、
可维护性和性能四个维度给出专业意见。
语气要直接但建设性,像 Code Review 一样。
可用角色:
| 角色 | 适用场景 |
|---|---|
| 资深架构师 | 架构评审、技术选型 |
| 安全专家 | 安全审计、漏洞排查 |
| 性能工程师 | 性能优化、瓶颈分析 |
| 测试工程师 | 测试用例生成、覆盖率提升 |
| 技术文档 writer | 文档生成、注释完善 |
| 初学者导师 | 学习引导、概念解释 |
技巧 8:使用否定式排除法
请为我生成一个 React 表格组件,
❌ 不要使用:
- class 组件(必须用函数组件 + Hooks)
- any 类型(需要完整的 TypeScript 类型)
- 内联样式(使用 CSS Modules 或 Tailwind)
- 第三方表格库(纯手写)
- useEffect 做数据获取(使用 React Query)
✅ 要求:
- 支持排序、筛选、分页
- 虚拟滚动(处理万级数据)
- 可访问性(ARIA 属性)
- 单元测试友好
效果:明确排除项比只说"要什么"更有效,能避免 AI 使用你不想要的技术方案。
进阶篇:高级提示策略(技巧 9-18)
技巧 9:链式推理(Chain of Thought)
请按以下思路分析这个性能问题:
1️⃣ **现象描述**: API 响应时间从 200ms 恶化到 5s
2️⃣ **可能原因分析**:
- 数据库查询变慢?(索引失效?数据量增长?)
- 外部服务调用超时?
- 内存泄漏导致 GC 频繁?
- 锁竞争?
- 网络延迟?
3️⃣ **排查优先级**: 按可能性从高到低排列
4️⃣ **诊断方法**: 每种原因对应的具体排查手段
5️⃣ **解决方案**: 最可能的 2-3 种修复方案
请逐步展开你的思考过程,不要跳步。
适用场景:Debug、架构决策、复杂问题分析。让 AI 展示推理过程,便于你判断其结论是否可靠。
技巧 10:自检与反思(Self-Reflection)
请完成以下代码编写后,进行自我审查:
📋 自检清单:
1. 是否有潜在的 null/undefined 引用?
2. 是否有资源泄漏风险(连接、句柄、订阅)?
3. 边界情况是否覆盖(空数组、超大输入、特殊字符)?
4. 错误处理是否完善?
5. 是否有安全风险(注入、XSS、敏感信息泄露)?
6. 命名是否清晰表达意图?
7. 是否有可以简化的冗余逻辑?
如果发现任何问题,请直接修正并标注修改原因。
效果:强制 AI 进行二次思考,能发现并修复 30-50% 的初级错误。
技巧 11:对比式提示
请对比以下两种方案实现用户权限管理:
**方案 A: RBAC (基于角色的访问控制)**
- 角色:admin, editor, viewer
- 权限绑定到角色
**方案 B: ABAC (基于属性的访问控制)**
- 基于用户属性、资源属性、环境属性动态决策
请从以下维度逐一对比:
1. 实现复杂度
2. 运行时性能
3. 灵活性
4. 可维护性
5. 审计便利性
6. 对我们团队(10 人后端团队,50+ 权限点)的适配度
最终给出推荐及理由。
技巧 12:思维导图式输出
请为以下项目生成架构思维导图(用 Markdown 格式):
电商后台管理系统
要求涵盖:
- 前端模块划分
- 后端服务拆分
- 数据库设计概要
- 第三方集成点
- 核心业务流程
格式示例:
# 项目名称
## 模块A
### 子模块A1
#### 功能点
#### 技术栈
### 子模块A2
...
技巧 13:测试驱动提示(TDD Style)
请按照 TDD 流程完成以下功能开发:
**需求**:实现一个 URL 短链服务的生成算法
**Red 阶段**:先写测试用例
- 正常 URL 生成短链
- 相同 URL 返回相同短链
- 空输入处理
- 超长 URL 处理
- 特殊字符转义
**Green 阶段**:写最少代码使测试通过
**Refactor 阶段**:优化代码质量
请依次输出三个阶段的代码。
技巧 14:增量式迭代
// 第一轮:基础版本
"写一个快速排序函数"
// 第二轮:基于第一轮改进
"很好,现在请增加以下功能:
1. 支持自定义比较函数
2. 处理重复元素(稳定排序)
3.对小数组(< 10)切换为插入排序"
// 第三轮:进一步优化
"现在请优化:
1. 三数取中选 pivot
2. 尾递归优化
3. 添加类型泛型支持"
优势:每轮迭代都有基础,比一次性要求完美更容易得到好结果。
技巧 15:引用权威资料
请参考以下资料来实现我们的 API 设计:
📚 参考资料:
1. Google API Design Guide (https://google.github.io/styleguide/json/api_style_guide.html)
→ 字段命名规范、错误格式、分页设计
2. RFC 7807 (Problem Details for HTTP APIs)
→ 标准化的错误响应格式
3. OWASP API Security Top 10
→ 安全相关的最佳实践
请确保我们的 API 符合以上规范,
任何偏离的地方请特别说明理由。
技巧 16:代码审查专用提示模板
## 📋 Code Review Request
**PR 目标**: [简要描述]
**涉及文件**: [文件列表]
**变更规模**: [+xxx / -yyy 行]
**Review 重点**:
- [ ] 逻辑正确性
- [ ] 性能影响
- [ ] 安全风险
- [ ] 可读性与命名
- [ ] 测试覆盖
**背景信息**:
[相关的设计文档链接或架构说明]
**已知限制**:
[已知的 trade-off 或临时方案]
请以严格的 Reviewer 视角审查,
发现问题请标明严重程度:🔴 Must Fix / ⚠️ Should Fix / 💡 Nice to Have
技巧 17:文档生成增强
请为以下函数生成完整的 JSDoc 文档:
/**
* [一行摘要]
*
* [详细描述:做什么、为什么、注意事项]
*
* @param {Type} paramName - [参数说明,含取值范围/默认值]
* @param {Type} param2 - [同上]
* @returns {ReturnType} [返回值说明,含各种可能的情况]
* @throws {ErrorType} [什么情况下抛出]
*
* @example
* ```ts
* // 示例 1:正常情况
* const result = functionName(arg1, arg2)
* // result: ...
*
* // 示例 2:边界情况
* const edge = functionName(null, arg2)
* // throws: ...
* ```
*
* @see [相关函数或文档链接]
* @since v1.0.0
* @author [作者]
*/
技巧 18:重构引导提示
请对以下代码进行重构,遵循以下原则:
🎯 重构目标:
1. **单一职责**: 每个函数只做一件事
2. **开放封闭**: 对扩展开放,对修改封闭
3. **依赖倒序**: 依赖抽象而非具体实现
4. **迪米特法则**: 最少知识原则
⚠️ 重构约束:
- 保持外部行为完全一致(所有现有测试必须通过)
- 不改变公共 API 签名
- 逐步重构,每步都可验证
📊 重构前指标:
- 圈复杂度: 23
- 函数长度: 180 行
- 重复代码率: 15%
🔄 请输出:
1. 重构计划(分几步,每步做什么)
2. 每步的具体代码变更
3. 重构后的预期指标改善
专家篇:高阶技巧(技巧 19-26)
技巧 19:多文件协作提示
我正在开发一个用户认证模块,涉及以下文件:
📁 项目结构:
src/
├── auth/
│ ├── types.ts # 类型定义
│ ├── strategy.ts # 认证策略接口
│ ├── jwt.strategy.ts # JWT 具体实现
│ ├── session.ts # Session 管理
│ └── middleware.ts # Express 中间件
├── models/
│ └── user.ts # 用户模型
└── config/
└── auth.ts # 认证配置
请按依赖顺序(types → models → config → auth)逐文件生成代码,
并在每个文件中标注与其他文件的依赖关系。
跨文件的引用要使用正确的 import 路径。
技巧 20:模式识别与复用
我在项目中反复遇到以下模式:
[粘贴 3-5 个类似的代码片段]
请分析这些代码的共同模式,
然后:
1. 提炼出通用的抽象层/工具函数
2. 用提炼出的通用方案重写这些代码片段
3. 给出未来类似场景的使用指南
技巧 21:性能基准对比
请为以下三种实现方式编写性能对比测试:
方案 A: for 循环 + push
方案 B: Array.map + filter
方案 C: Array.reduce
测试维度:
1. 小数据集 (n=100)
2. 中等数据集 (n=10,000)
3. 大数据集 (n=1,000,000)
测量指标:
- 执行时间 (ms)
- 内存占用 (MB)
- GC 压力 (GC 暂停次数)
请输出完整的 benchmark 脚本(使用 Node.js performance API)
以及预期结果分析。
技巧 22:安全审计提示
请对以下代码进行安全审计:
[粘贴代码]
按照 OWASP Top 10 和 CWE Top 25 检查清单逐一审查:
🔴 注入类:
- SQL Injection
- NoSQL Injection
- Command Injection
- LDAP Injection
🔴 XSS 类:
- Reflected XSS
- Stored XSS
- DOM-based XSS
🔴 其他:
- SSRF
- Path Traversal
- IDOR (不安全的直接对象引用)
- 敏感数据暴露
- 认证/授权缺陷
对每个发现的漏洞,请给出:
- 严重程度 (Critical/High/Medium/Low)
- CVE/CWE 编号(如有)
- 利用场景描述
- 修复建议代码
技巧 23:国际化/本地化提示
请将以下代码改造为支持国际化的版本:
当前:硬编码中文文案
目标:
1. 提取所有用户可见字符串到 i18n 资源文件
2. 支持 zh-CN / en-US / ja-JP 三种语言
3. 使用 react-i18next 或类似库
4. 处理插值变量、复数形式、日期/数字格式化
5. 保持类型安全(key 不允许拼写错误)
请输出:
- i18n 资源文件结构
- 改造后的组件代码
- 语言切换的实现方案
技巧 24:遗留代码理解
请帮我理解这段 legacy 代码:
[粘贴难以理解的代码]
请按以下格式输出:
## 📖 代码解读
### 整体功能
[一句话概括]
### 核心逻辑流程
[逐步解释执行流程,用自然语言]
### 关键变量含义
| 变量名 | 类型 | 含义 | 生命周期 |
### 设计意图推测
[作者为什么要这样写?有什么历史原因?]
### 潜在风险
[哪些地方容易出 bug?]
### 改进建议
[如果要重构,应该从哪里入手?]
技巧 25:Git Commit Message 生成
请根据以下 diff 生成规范的 Git Commit Message:
[粘贴 git diff 输出]
要求:
1. 遵循 Conventional Commits 规范
2. type: feat/fix/docs/refactor/test/chore/style
3. scope: 影响的模块
4. subject: 不超过 50 字符,中文可接受
5. body: 详细说明变更内容和原因
6. 如果关联 Issue,加上 closes #xxx
同时生成对应的 GitHub PR Description。
技巧 26:技术选型决策辅助
我们需要为新项目选择状态管理方案,候选者:
A. Zustand
B. Jotai
C. Redux Toolkit
D. Signal (来自 Solid.js 理念)
请从以下维度打分(1-10 分)并给出加权总分:
| 维度 | 权重 | A | B | C | D |
|-----|------|---|---|---|---|
| 学习曲线 | 20% | | | | |
| Bundle Size | 15% | | | | |
| TypeScript 支持 | 15% | | | | |
| DevTools 体验 | 10% | | | | |
| 中间件生态 | 10% | | | | |
| 性能 | 15% | | | | |
| 团队熟悉度 | 15% | | | | |
我们的团队背景:5 个中级前端开发者,
项目规模:中型 SaaS 应用,
预计开发周期:6 个月。
团队协作篇(技巧 27-30)
技巧 27:团队编码规范注入
以下是我们团队的编码规范,请在所有后续代码生成中严格遵守:
## 强制规则
1. 函数不超过 30 行
2. 嵌套层级不超过 3 层
3. 禁止使用 var
4. 禁止 any(除非有明确注释说明原因)
5. 所有 public 方法必须有 JSDoc
6. 错误必须使用自定义 Error 类
7. 异步函数必须有 try-catch 或 .catch()
## 命名规范
- 变量: camelCase
- 常量: UPPER_SNAKE_CASE
- 类: PascalCase
- 接口: PascalCase + I 前缀
- 类型别名: PascalCase + T 后缀
- 文件名: kebab-case
## Git 工作流
- feature 分支从 main 创建
- commit message 用英文
- PR 必须有 reviewer approval
请确认你已理解以上规范,回复 "OK" 后我将开始提问。
技巧 28:Onboarding 导师模式
我是团队的新成员,刚加入这个项目一周。
请作为我的技术导师,帮助我理解以下内容:
1. **项目概述**: 这个项目是做什么的?技术栈是什么?
2. **目录结构**: 每个主要目录的职责是什么?
3. **入门路径**: 如果我要修改 X 功能,应该从哪个文件开始看起?
4. **常见陷阱**: 新人最容易踩的坑有哪些?
5. **开发环境搭建**: 从零跑起来需要几步?
6. **调试技巧**: 出问题时怎么排查?
请用友好的、循序渐进的方式讲解,
假设我有 3 年的开发经验但不熟悉本项目的技术栈。
技巧 29:知识库构建提示
请将以下对话中有价值的知识提取出来,
整理成团队知识库条目:
[粘贴一次有用的 AI 对话]
输出格式:
---
## 知识条目
**标题**: [简洁标题]
**分类**: [API/架构/调试/最佳实践/陷阱]
**标签**: [tag1, tag2, tag3]
**内容**: [详细描述]
**适用场景**: [什么时候会用到这个知识]
**相关代码位置**: [涉及的文件/函数]
**来源**: [原始讨论链接或 PR 编号]
**置信度**: [高/中/低] — 这个知识的可靠性如何
---
技巧 30:提示词版本管理
# MonkeyCode 提示词模板库
## 📝 常用提示词模板
### template-01: 功能开发
```prompt
用 {language} + {framework} 实现 {feature},
要求:{constraints},
参考:{references},
输出格式:{format}
template-02: Bug 修复
修复以下 bug:{description}
现象:{symptom}
期望:{expected}
环境:{environment}
已尝试:{attempted}
template-03: 代码审查
审查以下代码,重点关注:{focus_areas}
严格程度:{strictness_level}
输出格式:🔴 P0 / ⚠️ P1 / 💡 P2
template-04: 重构
重构以下代码,
目标:{goal}
约束:{constraints}
保持:{invariants}
建议: 将团队常用的提示词保存为模板,
在 IDE 中设置 snippet 快速调用,
保证团队输出的一致性。
---
## 总结:提示词效能金字塔
╱╲
╱ ╲ Level 5: 策略层
╱ 🧠 ╲ 系统思维 + 多轮迭代
╱──────╲
╱ 🎯 ╲ Level 4: 上下文层
╱ 结构化 ╲ 完整约束 + 角色设定
╱────────────╲
╱ 📋 精确 ╲ Level 3: 明确层
╱ 语言+框架+格式 ╲ 无歧义的需求描述
╱──────────────────╲
╱ ✅ 具体 ╲ Level 2: 清晰层
╱ 不是"写个功能" ╲ 有具体的输入输出
╱───────────────────────╲
╱ 💬 自然语言 ╲ Level 1: 基础层
╱ 能让人理解的请求
**记住**:每一层提升都能带来显著的输出质量改善。不必追求完美的 Level 5,从 Level 2-3 开始就能看到明显效果。
---
## 下一步行动
1. **收藏本文** 作为日常参考手册
2. **挑选 3 个技巧** 在今天的开发中试用
3. **建立团队的提示词模板库** 分享给同事
4. **在 GitHub 分享你的发现** 👉 [提交 Issue](https://github.com/monkeycode-ai/monkeycode/issues)
> **最好的提示词不是一次写成的,而是不断迭代优化的产物。**
**现在就打开 MonkeyCode,试试这些技巧吧!** 🚀
---
*本文由 MonkeyCode 团队原创,采用 Apache 2.0 许可证发布。*
**关键词**: `MonkeyCode` `提示词工程` `Prompt Engineering` `AI编程` `效率技巧` `开源` `GitHub` `Issue`
浙公网安备 33010602011771号