OpenCode 中文教程
首页
教程
生态
FAQ
对比
文章
  • 官方网站
  • 官方下载
  • 官方文档
  • 关于我们
  • 联系我们
  • 隐私政策
  • 服务协议
  • 免责声明
  • 商标声明
  • 简体中文
  • English
  • Deutsch
首页
教程
生态
FAQ
对比
文章
  • 官方网站
  • 官方下载
  • 官方文档
  • 关于我们
  • 联系我们
  • 隐私政策
  • 服务协议
  • 免责声明
  • 商标声明
  • 简体中文
  • English
  • Deutsch
  • 教程目录

    • Opencode 教程中心 - 从入门到精通
    • Opencode 快速入门 - 5分钟开启 AI 编程之旅
    • Opencode 核心模式:Plan 与 Build 详解
    • 智能体 (Agents) 与 Big Pickle - Opencode 核心概念
    • Opencode 进阶配置 - 打造最适合你的 AI 编程环境
    • Opencode 常用快捷键指南 - 提升开发效率

Prompt 工程指南

在 AI 辅助编程的时代,Prompt 工程(提示词工程) 是一项核心技能。编写高质量的提示词,可以帮助 Opencode 更准确地理解你的意图,生成更符合需求的代码。

什么是 Prompt 工程?

Prompt 工程是指通过设计和优化输入给 AI 模型的文本(即"提示词"),以引导模型生成特定输出的过程。

在 Opencode 中,这意味着如何用自然语言描述你的编程任务,让 AI 能够:

  • 准确理解你的需求
  • 生成符合规范的代码
  • 考虑边界条件和错误处理
  • 遵循项目的编码风格

基本原则

1. 清晰明确(Be Clear)

避免模棱两可的描述,提供具体的细节。

❌ 不好的提示词:

写个函数处理数据

✅ 好的提示词:

编写一个 Python 函数 process_csv_data,功能:
- 接收一个 CSV 文件路径作为参数
- 读取文件内容
- 过滤掉空行
- 返回一个包含所有数据行的列表
- 如果文件不存在,抛出 FileNotFoundError

2. 提供上下文(Context is Key)

告诉 AI 你正在做什么项目,使用了什么技术栈。

❌ 不好的提示词:

创建一个登录组件

✅ 好的提示词:

这是一个使用 React 18 + TypeScript + Tailwind CSS 的项目。
请创建一个登录组件,要求:
- 使用函数组件和 Hooks
- 包含邮箱和密码输入框
- 使用 Tailwind CSS 样式
- 添加表单验证
- 使用 React Hook Form 管理表单状态

3. 指定输出格式(Specify Output)

如果你需要特定的格式,请明确指出。

✅ 指定格式的提示词:

分析这段代码的时间复杂度,以 Markdown 表格的形式列出:
- 操作名称
- 时间复杂度
- 说明

✅ 只要代码:

实现一个二分查找算法。
只返回代码,不需要解释。

4. 分步指导(Step by Step)

对于复杂任务,将其拆分为多个简单的步骤。

✅ 分步提示词:

帮我重构这个用户认证模块,按以下步骤:

1. 首先分析现有代码的问题
2. 提出改进方案
3. 将认证逻辑提取到单独的服务类
4. 添加单元测试
5. 更新相关文档

每完成一步,等待我确认后再继续下一步。

5. 提供示例(Few-Shot Learning)

给出几个输入输出的例子,让 AI 模仿。

✅ 提供示例的提示词:

编写一个函数,将驼峰命名转换为下划线命名。

示例:
- camelCase → camel_case
- myVariableName → my_variable_name
- HTTPSConnection → https_connection

请实现这个函数。

常用场景示例

代码生成

基础代码生成:

使用 Python 实现一个 LRU 缓存,要求:
- 支持 get 和 put 操作
- 时间复杂度 O(1)
- 使用字典和双向链表实现
- 包含完整的类型注解

组件生成:

创建一个 Vue 3 的分页组件,功能:
- 显示当前页码和总页数
- 上一页、下一页按钮
- 页码跳转输入框
- 每页显示数量选择器
- 使用 Composition API
- 使用 TypeScript
- 样式使用 Tailwind CSS

API 接口生成:

使用 Express.js 创建一个 RESTful API,管理用户信息:
- GET /api/users - 获取所有用户
- GET /api/users/:id - 获取单个用户
- POST /api/users - 创建用户
- PUT /api/users/:id - 更新用户
- DELETE /api/users/:id - 删除用户

要求:
- 使用 TypeScript
- 添加输入验证
- 添加错误处理
- 使用 async/await

代码解释

解释复杂逻辑:

解释这段代码的工作原理,特别是:
1. 递归的终止条件
2. 状态如何传递
3. 为什么使用 memo 优化

[粘贴代码]

解释设计模式:

这段代码使用了什么设计模式?
请说明:
- 模式名称
- 为什么使用这个模式
- 有什么优缺点
- 是否有更好的替代方案

[粘贴代码]

代码重构

提高可读性:

重构这个函数,使其更具可读性:
- 提取重复的逻辑为辅助函数
- 使用有意义的变量名
- 添加注释说明关键步骤
- 简化嵌套的 if 语句

[粘贴代码]

性能优化:

优化这段代码的性能:
- 分析当前的时间复杂度
- 找出性能瓶颈
- 提出优化方案
- 实现优化后的代码
- 说明优化后的时间复杂度

[粘贴代码]

错误修复

调试错误:

我遇到了这个错误:
[粘贴错误信息]

相关代码:
[粘贴代码]

请帮我:
1. 分析错误原因
2. 找出问题所在
3. 提供修复方案
4. 解释如何避免类似问题

修复 Bug:

这段代码有 Bug,在某些情况下会返回错误的结果:
[粘贴代码]

测试用例:
- 输入:[示例输入]
- 期望输出:[期望结果]
- 实际输出:[实际结果]

请找出并修复 Bug。

测试生成

单元测试:

为这个函数编写单元测试:
[粘贴代码]

要求:
- 使用 Jest 框架
- 覆盖正常情况
- 覆盖边界条件
- 覆盖异常情况
- 测试覆盖率达到 100%

集成测试:

为这个 API 端点编写集成测试:
[粘贴代码]

要求:
- 使用 Supertest
- 测试成功场景
- 测试失败场景
- 测试输入验证
- 测试权限控制

文档生成

API 文档:

为这个 API 生成文档,使用 OpenAPI 3.0 格式:
[粘贴代码]

包含:
- 端点描述
- 请求参数
- 响应格式
- 错误码说明
- 使用示例

代码注释:

为这段代码添加详细的注释:
- 函数功能说明
- 参数说明
- 返回值说明
- 使用示例
- 注意事项

[粘贴代码]

进阶技巧

1. 角色扮演(Role Playing)

让 AI 扮演特定的角色,会得到更专业的回答。

✅ 使用角色扮演:

你是一位资深的前端架构师,精通 React 和性能优化。

请审查这个组件的代码,从以下角度分析:
1. 性能问题
2. 可维护性
3. 可访问性
4. 最佳实践

[粘贴代码]

2. 约束条件(Constraints)

明确指出限制条件,让 AI 在约束内工作。

✅ 指定约束:

实现一个排序算法,约束条件:
- 不能使用内置的 sort 方法
- 空间复杂度必须是 O(1)
- 必须是稳定排序
- 代码行数不超过 50 行

3. 思维链(Chain of Thought)

引导 AI 展示思考过程。

✅ 使用思维链:

解决这个算法问题,请展示你的思考过程:

1. 首先分析问题的本质
2. 列出可能的解决方案
3. 比较各方案的优劣
4. 选择最优方案并说明理由
5. 实现代码
6. 分析时间和空间复杂度

问题:[描述问题]

4. 迭代改进(Iterative Refinement)

通过多轮对话逐步完善。

✅ 迭代改进流程:

第一轮:
"创建一个基础的用户管理系统"

第二轮:
"添加用户角色和权限管理"

第三轮:
"添加用户活动日志记录"

第四轮:
"优化数据库查询性能"

5. 对比分析(Comparison)

让 AI 比较不同的方案。

✅ 对比分析:

比较以下三种状态管理方案在 React 项目中的应用:
1. Redux
2. MobX
3. Zustand

从以下维度对比:
- 学习曲线
- 性能表现
- 代码量
- 适用场景
- 生态系统

以表格形式呈现,并给出推荐。

使用 AGENTS.md 增强上下文

在项目根目录创建 AGENTS.md,让 AI 记住项目规范:

# 项目规范

## 技术栈
- 前端:React 18 + TypeScript + Vite
- 后端:Node.js + Express + PostgreSQL
- 样式:Tailwind CSS
- 测试:Jest + React Testing Library

## 编码规范
- 使用 ESLint + Prettier
- 组件使用函数式 + Hooks
- 使用 TypeScript 严格模式
- 所有函数必须有类型注解

## 命名规范
- 组件:PascalCase (UserProfile.tsx)
- 函数:camelCase (getUserData)
- 常量:UPPER_SNAKE_CASE (API_BASE_URL)
- 文件:kebab-case (user-profile.tsx)

## 目录结构
- `/src/components` - 可复用组件
- `/src/features` - 功能模块
- `/src/hooks` - 自定义 Hooks
- `/src/utils` - 工具函数
- `/src/types` - TypeScript 类型定义

## API 规范
- 使用 RESTful 风格
- 统一使用 `/api/v1` 前缀
- 错误使用标准 HTTP 状态码
- 响应格式:`{ success: boolean, data: any, error?: string }`

## 提交规范
- feat: 新功能
- fix: Bug 修复
- refactor: 重构
- docs: 文档更新
- test: 测试相关
- chore: 构建/工具相关

有了 AGENTS.md,你只需要说:

创建一个用户列表组件

AI 会自动:

  • 使用 React + TypeScript
  • 遵循项目的命名规范
  • 放在正确的目录
  • 使用 Tailwind CSS 样式
  • 添加类型注解

详细了解:智能体与 AGENTS.md

常见错误与改进

错误 1:描述过于简单

❌ 错误:

写个登录功能

✅ 改进:

实现用户登录功能,要求:
- 使用 JWT 认证
- 支持邮箱和密码登录
- 密码使用 bcrypt 加密
- 登录失败 3 次后锁定账号 15 分钟
- 返回用户信息和 token

错误 2:没有指定技术栈

❌ 错误:

创建一个 API 接口

✅ 改进:

使用 Express.js + TypeScript 创建一个 API 接口,
获取用户列表,支持分页和搜索

错误 3:没有说明边界条件

❌ 错误:

写个函数计算平均值

✅ 改进:

写一个函数计算数组的平均值,要求:
- 如果数组为空,返回 0
- 如果数组包含非数字,抛出错误
- 保留两位小数
- 添加类型注解

错误 4:一次要求太多

❌ 错误:

创建一个完整的电商系统,包括用户管理、商品管理、
订单管理、支付系统、物流跟踪、评论系统...

✅ 改进:

第一步:创建用户管理模块的数据库表结构

完成后,我会继续下一步。

实用模板

功能开发模板

功能:[功能名称]

需求:
1. [需求 1]
2. [需求 2]
3. [需求 3]

技术要求:
- 语言/框架:[具体技术]
- 设计模式:[如果有]
- 性能要求:[如果有]

约束条件:
- [约束 1]
- [约束 2]

请先给出设计方案,确认后再实现。

Bug 修复模板

Bug 描述:[简要描述]

复现步骤:
1. [步骤 1]
2. [步骤 2]
3. [步骤 3]

期望结果:[期望的行为]

实际结果:[实际的行为]

相关代码:
[粘贴代码]

错误信息:
[粘贴错误]

请分析原因并提供修复方案。

代码审查模板

请审查以下代码:

[粘贴代码]

审查重点:
1. 代码质量和可读性
2. 性能问题
3. 安全漏洞
4. 最佳实践
5. 潜在 Bug

请给出详细的审查报告和改进建议。

总结

好的 Prompt 应该:

  1. ✅ 清晰明确 - 避免歧义
  2. ✅ 提供上下文 - 说明项目背景
  3. ✅ 指定格式 - 明确输出要求
  4. ✅ 分步指导 - 复杂任务拆分
  5. ✅ 提供示例 - 让 AI 模仿
  6. ✅ 说明约束 - 明确限制条件
  7. ✅ 迭代改进 - 逐步完善

下一步

  • 工作流最佳实践 - 学习高效的开发流程
  • Agent 配置指南 - 配置 AI 团队
  • 智能体与 AGENTS.md - 让 AI 记住项目规范

掌握 Prompt 工程,让 AI 成为你最得力的编程助手!

最近更新: 2026/2/28 14:48