目标:掌握提问 → 计划 → 构建 → 审查 → 迭代的完整开发流程
工作流总览
场景一:添加回收站功能(完整工作流)
步骤 1:提问(明确需求)
切换到计划模式(按 Tab),描述需求:
当用户删除笔记时,希望将其标记为已删除而不是永久删除。
然后创建一个页面展示最近删除的笔记。
在这个页面,用户可以恢复笔记或永久删除。
需求描述技巧:
| 要素 | 示例 |
|---|---|
| 功能描述 | 删除 → 软删除 → 回收站展示 |
| 业务规则 | 30 天后自动清理、恢复后回到原位置 |
| 参考示例 | 参考 Gmail 回收站或 macOS 废纸篓 |
| 边界条件 | 已删除笔记的搜索、权限处理 |
步骤 2:计划(AI 分析)
AI 输出执行计划:
你可以反馈:
"第 3 步,恢复接口需要验证用户权限""先做 1-4 步,定时任务后续再加""UI 参考 @src/components/Trash/ 目录下的现有组件风格"
步骤 3:构建(执行修改)
确认计划后按 Tab 切换构建模式:
Sounds good! Go ahead and make the changes.
AI 执行过程可视化:
步骤 4:审查(验收结果)
检查维度:
| 检查项 | 通过标准 |
|---|---|
| 代码质量 | 符合 TypeScript 严格模式 |
| 功能正确性 | 删除后可在回收站看到 |
| 无副作用 | 未影响正常笔记列表 |
| 测试覆盖 | 新增单元测试通过 |
✅ 满意
git add -A
git commit -m "feat: add trash/recycle bin feature"❌ 不满意 — 撤销与重做
/undo
撤销机制详解:
多次撤销:
/undo ← 撤销第 3 次修改
/undo ← 撤销第 2 次修改
/redo ← 重做第 2 次修改(如果撤销多了)
场景二:直接修改(简单任务)
对于简单修改,跳过计划模式:
给 /settings 路由添加认证检查,参考 /notes 路由的实现。
文件: @src/app/settings/page.tsx 和 @src/app/notes/page.tsx
适用直接修改的场景:
| 场景 | 示例 |
|---|---|
| 简单重构 | 回调改 async/await |
| 添加注释 | 为复杂函数添加 JSDoc |
| 样式调整 | 修改按钮颜色、间距 |
| 复制模式 | 已有类似实现,直接复用 |
场景三:代码解释与学习
遇到不熟悉的代码?
请详细解释 @src/lib/auth.ts 中 verifyToken 函数的:
1. 整体逻辑流程
2. 每个条件分支的意图
3. 潜在的安全问题
4. 如何改进
AI 会返回结构化分析:
## 逻辑流程
1. 提取 Bearer token
2. 使用 jwt.verify 解码
3. 检查过期时间
4. 查询数据库验证用户存在
## 安全问题
- ❌ 未处理 jwt malformed 错误
- ❌ 缺少速率限制
## 改进建议
...Git 集成工作流
实用 Git 命令配合
# 开发前创建分支
git checkout -b feature/opencode-trash
# 每个功能点提交一次(方便撤销)
git add src/lib/db.ts
git commit -m "db: add deletedAt field to Note model"
# OpenCode 修改后查看 diff
git diff
# 不满意时回退到上次提交
git reset --hard HEAD~1最佳实践速查表
DO ✅
| 实践 | 说明 |
|---|---|
| 小步快跑 | 每次一个功能点,不要一次性要求太多 |
| 明确上下文 | 引用相关文件(@文件名) |
| 迭代优化 | 不满意就 /undo 重来 |
| 及时提交 | 满意的修改及时 git commit |
| 使用计划模式 | 复杂任务先规划再执行 |
| 提供示例 | "参考 X 文件的做法" |
DON'T ❌
| 反模式 | 后果 |
|---|---|
| 模糊描述 | "帮我优化代码" → AI 不知道优化什么 |
| 忽视 diff | 可能引入意料之外的修改 |
| 生产环境直接运行 | 可能造成线上事故 |
| 一次要求过多 | AI 容易遗漏或出错 |
| 不验证结果 | 功能可能不符合预期 |
练习任务
- 解释代码 — 让 AI 解释项目中任意一个你不熟悉的函数,要求它画出执行流程
- 添加注释 — 让 AI 给某个复杂文件添加 JSDoc 注释,审查是否符合规范
- 小重构 — 让 AI 将某个回调函数改为 async/await,观察 diff
- 添加功能 — 用计划模式设计一个新功能,体验完整工作流
- 撤销重做 — 故意让 AI 做一个错误修改,练习
/undo和/redo
FAQ
Q: 计划模式和构建模式有什么区别?
计划模式只分析不修改,输出方案;构建模式直接执行文件修改。复杂任务先用计划,简单任务直接构建。
Q: /undo 能撤销多少次?
理论上无限次,直到回到会话开始状态。
Q: 如何让 AI 更好地理解我的需求?
- 提供具体文件引用
@file.ts2) 给出业务背景 3) 提供参考示例 4) 说明验收标准
Q: AI 修改的文件需要手动保存吗?
不需要,OpenCode 直接编辑文件系统。但建议及时
git commit。
下一篇:06. 常用内置命令