无论你用的是 OpenCode、Cursor 还是 GitHub Copilot,有一个铁律始终成立:垃圾入,垃圾出。AI 编程助手的能力上限,往往不取决于模型本身有多强,而取决于你给它下达的指令有多清晰。
OpenCode 作为一款开源的终端 AI 编程助手,提供了思考模式、并行 Agent、Skills 系统等一系列高级能力。但这些工具只有在搭配高质量的 Prompt 时,才能发挥出最大的威力。
本文将从实战角度出发,总结十条经过反复验证的 Prompt 编写与任务拆解技巧,帮助你把 OpenCode 从一个"会写代码的聊天机器人"变成"真正能独立交付任务的 AI 工程师"。
很多开发者习惯把自己当成技术 Leader,给 AI 下指令时写得像伪代码:
# 错误的写法 把 users 表的数据查出来,循环遍历,对每个用户判断是否过期, 如果过期就更新 status 字段为 0,然后记录日志。
这种指令混杂了"需求"和"实现方案",限制了 AI 的发挥空间。更好的写法是:
# 正确的写法 实现一个用户过期状态批量更新功能: - 输入:无 - 输出:将 is_expired=1 的用户 status 更新为 0 - 要求:更新过程中记录每次操作的日志,包含用户 ID、原状态、新状态、时间戳 - 边界条件:单次更新失败不影响其他用户
把"怎么做"留给 AI,它会给出你可能没想到的更优方案——比如它可能会建议用批量 SQL 而非逐行循环。
没有边界的需求是噩梦。一个好的 Prompt 必须包含三类边界:
请为订单模块编写退款接口: 【正常路径】 - 订单状态为"已支付"时,用户可申请退款 - 退款金额原路返回支付渠道 【边界条件】 - 已发货的订单不可在线退款,需走售后流程 - 部分退款需要重新计算优惠分摊 - 退款金额不得超过实付金额 【异常处理】 - 支付渠道回调超时时,标记为"退款处理中"而非"退款失败" - 并发退款请求需幂等
OpenCode 在阅读这类结构化 Prompt 时,会更有针对性地查找代码上下文、生成防御性代码,而不是只写一个 Happy Path。
OpenCode 支持同时启动多个 Agent 并行工作。面对大任务时,不要试图用一条 Prompt 解决所有问题。
错误做法:一条 Prompt 描述整个电商系统后台。
正确做法:
# 在 OpenCode 中分别发起多个 Agent "设计数据库 ER 图,输出 users/orders/products 三张表的 DDL" "实现用户注册登录模块,包含 JWT 认证和邮箱验证" "实现商品 CRUD 接口,支持分页和多条件筛选" "实现订单创建流程,包含库存锁定和超时取消"
每个 Agent 聚焦一个独立模块,互相不干扰。完成后,OpenCode 会自动合并结果。这种并行拆解方式比串行逐一执行效率高出数倍。
抽象描述不如一个具体示例。比如你想让 OpenCode 生成数据迁移脚本:
# 模糊描述
把旧格式的用户地址数据迁移到新格式
# 带示例的描述
将 address 字段从逗号分隔的字符串迁移为 JSON 对象:
旧格式:
"广东省,深圳市,南山区,科技园路1号"
新格式:
{
"province": "广东省",
"city": "深圳市",
"district": "南山区",
"detail": "科技园路1号"
}
处理缺失字段时用空字符串填充,不要抛异常。
AI 看到一个具体例子,理解的准确度远高于听一百句描述。这条规则适用于代码生成、测试用例编写、文档撰写等所有场景。
OpenCode 的思考模式允许 AI 先进行深度推理再动手。但你还可以更进一步——在 Prompt 中显式要求两步走:
请为这个项目添加 Redis 缓存层。先分析现有代码的数据流, 给出缓存方案(包括哪些接口适合缓存、缓存键设计、过期策略), 等我确认后再动手实现。
这个技巧对于以下场景尤其有用:
分步确认可以避免 AI 在一开始就走错方向,浪费大量 token 还得回滚重来。
当你一次性提出多个需求时,OpenCode 会自动生成 todo 列表。你可以直接在 Prompt 中预定义任务优先级,引导任务排序:
我需要完成以下工作,请按我标注的优先级依次执行: [P0] 修复登录页面的 CSRF token 失效问题 [P1] 为 UserController 的五个方法补充参数校验 [P2] 将旧的 mysqli 查询全部改为 PDO 预处理语句 [P3] 添加 PHPStan 静态分析到 CI 流程 P0 和 P1 完成后向我汇报,再继续 P2 和 P3。
显式指定优先级让 OpenCode 的 todo 管理器与你的真实预期对齐,避免它在次要任务上花费过多时间。
OpenCode 的一个核心优势是它对工作目录有完整的文件感知能力。你不需要在每次 Prompt 中重复描述项目结构,只需精准引用:
# 啰嗦的写法 这个项目用的是 Laravel 10,Eloquent ORM,数据库是 MySQL 8.0。 User 模型在 app/Models/User.php 里,表名是 users…… 请帮我写一个查询最近 7 天注册用户的接口。 # 精简的写法 参考 app/Models/User.php,新增一个查询最近 7 天注册用户的接口。
OpenCode 会自动读取引用路径的文件,推断框架、ORM、命名空间等上下文信息。养成"引用文件路径"的习惯,能大幅节省上下文窗口的消耗。
软件开发中最耗时的是什么?不是写代码,而是来来回回的修改。在 Prompt 末尾加上验收标准,让 AI 自检后再输出:
实现用户密码重置接口: 功能: 1. 接受邮箱参数,生成 6 位验证码,有效期 10 分钟 2. 验证码通过后,允许设置新密码(至少 8 位,含大小写字母和数字) 验收标准: - [ ] 验证码在 Redis 中的 key 以 `reset:` 为前缀 - [ ] 同一邮箱 1 分钟内不可重复发送验证码 - [ ] 新密码不能与旧密码相同 - [ ] 重置成功后,该用户的所有旧 token 全部失效 - [ ] 每个分支都有对应的单元测试
这条技巧的价值在于:它让 AI 在生成代码时有了自我检查的意识,输出质量明显提升。
虽然 OpenCode 默认就是编程角色,但你可以在 Prompt 中进一步细化角色,激活模型更精准的领域知识:
# 通用 Prompt 帮我写一条复杂的 SQL 查询 # 角色化 Prompt 你是一名 DBA,正在审查一条慢查询。请将以下 ORM 代码改写为 原生 SQL,并给出三种优化方案,标注每种方案的适用场景和 潜在风险: [粘贴代码]
角色切换会让 AI 在响应时调用更专业的思维框架。试试这些角色:
新手最容易犯的错误是把 AI 当成一次性代码生成器。正确的姿势是迭代式对话:
# 第一轮:出方案 "这个支付回调接口需要考虑哪些异常场景?给我枚举出来" # 第二轮:写主体 "好,按你列的场景,先实现正常回调处理逻辑" # 第三轮:补边缘 "现在补充支付超时和重复通知两种场景的处理" # 第四轮:加测试 "针对以上三种场景,各写两个测试用例" # 第五轮:做优化 "审视刚才的代码,有没有可以提取出来的公共逻辑?帮我重构"
这种对话方式模拟了真实的结对编程节奏——每一轮聚焦一个小目标,步步为营。相比一次性把需求全倒给 AI,迭代式对话的错误率更低、代码质量更高。
这十条技巧可以归纳为一个核心原则:把 AI 当成一个有超强执行力但需要清晰指引的高级工程师。你提供的上下文越精准、边界越明确、验收标准越具体,它交付的代码就越符合预期。
一个实用的记忆框架:
| 阶段 | 关键动作 |
|------|---------|
| 拆解 | 大任务拆成小任务,能并行就不串行 |
| 描述 | 说清楚"是什么",附上示例数据 |
| 约束 | 标注边界条件、异常处理、验收标准 |
| 执行 | 先计划后实现,迭代式推进 |
| 验收 | 让 AI 按标准自检后再交付 |
OpenCode 提供了思考模式、多 Agent 并行、文件上下文感知等强大能力,配合本文的技巧使用,你会发现它的产出质量跃升不止一个档次。从今天开始,尝试用这些技巧重构你的 Prompt,看看 AI 能给你带来怎样的惊喜。