OpenCode 实用技巧与最佳实践:12 个提升 AI 编程效率的关键方法

OpenCode 实用技巧与最佳实践:12 个提升 AI 编程效率的关键方法

引言

OpenCode 作为一款开源 AI 编程终端,拥有丰富的功能模块——从项目配置、自定义命令到 MCP 集成、Agent 协同。但掌握功能配置只是第一步,真正拉开效率差距的,是如何将这些功能组合成高效的工作流。本文将分享 12 个经过实战验证的技巧,涵盖模型选择策略、上下文管理、提示词工程和自动化质检等关键环节,帮助你在日常开发中将 AI 编程效率提升一个台阶。

一、模型选择策略:用对的模型做对的事

很多开发者习惯"一把梭"——所有任务都用同一个模型。实际上,不同模型在代码生成、架构分析、快速检索等场景下的表现差异巨大。

推荐的分层策略:

| 任务类型 | 推荐模型 | 原因 |
|---------|---------|------|
| 复杂重构与架构设计 | Claude Opus / Sonnet | 推理能力强,输出质量高 |
| 功能实现(中等复杂度) | GPT-4o / GLM-4.7 | 性价比均衡,响应快 |
| 代码搜索、文件导航 | Gemini Flash / GPT-4o-mini | 上下文窗口大,成本低 |
| 敏感代码处理 | 本地 Ollama 模型 | 代码不出本地环境 |

实践示例: 当你需要理解一个大型开源项目的结构时,先切换到 Gemini Flash(支持 100 万 token 上下文),让它通读整个项目并产出摘要;然后切回 Claude Sonnet 执行具体的修改任务。这种"快模型探索 + 强模型执行"的组合,能节省大量 token 消耗。

# 在 OpenCode 中使用 /models 切换模型
/models                    # 查看可用模型列表
/models gemini-flash       # 切换至轻量模型做探索
# ... 探索代码 ...
/models claude-sonnet      # 切回强模型做实现

二、上下文管理:精准控制 AI "所见"的代码范围

AI 模型的能力边界很大程度上取决于上下文窗口内放入了什么。无关代码放得越多,输出质量越差。OpenCode 提供了几种精准的上下文控制手段:

1. 文件引用符号 @

请分析 @src/services/auth.ts 中的 login 函数,指出潜在的安全问题

@ 符号让 AI 只读取指定文件,避免加载整个项目。

2. 手动选择上下文文件

在 TUI 界面中,使用快捷键选择需要纳入上下文的文件,而不是让 AI 自动扫描全部代码。

3. 适时使用 /compact

对话进行多轮后,上下文会膨胀。/compact 命令会将对话历史压缩为摘要,释放上下文空间。建议在以下时机触发:

  • 对话超过 10 轮
  • 开始一个与前面无关的新任务
  • AI 开始"忘记"之前说过的话
/compact    # 压缩当前对话上下文,保留关键信息摘要

4. 适时开启新会话

如果一个会话已经处理了 3 个以上独立任务,不妨 /exit 后重新进入项目,开启一个干净的新会话。比 /compact 更彻底。

三、提示词工程:用结构化指令提升输出质量

AI 的输出质量,一半取决于模型本身,一半取决于你的指令。

原则一:说清楚"要什么",而不是"不要什么"

# 差
不要写 O(n²) 的算法,不要用递归

# 好
请实现时间复杂度为 O(n log n) 的排序算法,使用迭代而非递归,附上复杂度分析注释

原则二:给AI一个"角色"和"产出格式"

你是一名资深 TypeScript 开发者,请审查以下代码的异常处理逻辑。
输出格式:
1. 问题描述
2. 严重程度(高/中/低)
3. 改进建议及示例代码

原则三:复杂任务分步给指令

第一步:列出 src/services/payment.ts 中所有需要单元测试的函数
第二步:为 calculateTax 函数生成测试用例(包含正常、边界、异常情况)
第三步:将测试代码写入 __tests__/payment.test.ts

让 AI 先分析、再规划、最后执行,比一次性要求"写测试"效果好得多。

四、Plan 模式与 Build 模式的黄金配合

OpenCode 的双模式设计(Tab 键切换)是其核心效率特性。

最佳配合流程:

Plan 模式(建议阶段):向 AI 描述需求,让它分析代码、规划方案。Plan 模式下 AI 只读不写,你可以安全地审视方案是否合理。

审查方案:确认 AI 的理解与你的意图一致,必要时调整方向。

Build 模式(执行阶段):切换到 Build 模式,让 AI 实际修改文件。

[Plan 模式]
请分析当前项目的认证模块,如果要添加 JWT 刷新令牌机制,需要修改哪些文件?

[审查方案后]
方案可行。请先修改 auth.middleware.ts 添加刷新逻辑。

[切换到 Build 模式]
继续执行

这个流程避免了"AI 瞎改一通然后你需要 revert" 的常见问题。

五、分而治之:复杂任务拆解为可执行步骤

面对"重构整个支付模块"这样的大任务,一次性抛出所有需求几乎必然导致混乱。正确做法是将其拆解为独立的小步骤:

# 不要这样
请重构支付模块,包括微信支付、支付宝、银行卡支付三种方式

# 而是这样
## 阶段 1:重构支付接口定义
提取 IPaymentProvider 接口,定义统一的 pay、refund、query 方法签名

## 阶段 2:微信支付适配
让 WechatPayService 实现 IPaymentProvider 接口

## 阶段 3:支付宝适配(同上)

## 阶段 4:银行卡支付适配(同上)

## 阶段 5:更新调用方
将所有直接依赖具体支付类的代码改为依赖接口

## 阶段 6:移除旧代码

每个阶段完成后运行测试,确保不引入回归。

六、善用 /init 与 AGENTS.md 建立项目"记忆"

/init 是 OpenCode 最被低估的功能之一。它分析你的项目结构后生成 AGENTS.md,这个文件在后续每一次对话中都会被自动加载到 AI 的上下文中。

手动增强 AGENTS.md 的价值:

除了 /init 自动生成的内容,你还可以手动补充:

# AGENTS.md(项目根目录)

## 项目约定
- 所有 API 返回值使用统一的 ApiResponse<T> 包装
- 数据库查询必须使用参数化查询,严禁拼接 SQL
- 新增接口后必须在 src/router.ts 中注册

## 常用命令
- 开发环境启动:npm run dev
- 运行测试:npm test
- 类型检查:npm run typecheck
- 代码格式化:npm run format

## 架构说明
- src/services/  业务逻辑层
- src/routes/    路由层(薄层,不写业务逻辑)
- src/models/    数据模型层

这样每次开启新会话,AI 都能自动获得这些关键信息,无需反复解释。

七、自定义命令批量化操作

通过 opencode.json 中配置的自定义命令,你可以一键触发常用工作流:

{
  "commands": [
    {
      "name": "fix-lint",
      "description": "自动修复所有 lint 错误",
      "prompt": "运行 npm run lint,读取所有报错,逐文件修复。修复后再次运行 lint 确认无误"
    },
    {
      "name": "gen-docs",
      "description": "为当前分支的改动生成变更文档",
      "prompt": "查看 git diff main...HEAD 的变更内容,生成一份简洁的 CHANGELOG 条目,按 feat/fix/refactor 分类"
    },
    {
      "name": "pr-review",
      "description": "对当前分支进行 PR 级别的代码审查",
      "prompt": "对比当前分支与 main 分支的差异,以代码审查视角指出:1) 潜在 bug 2) 性能隐患 3) 可读性问题 4) 安全风险。按优先级排列"
    }
  ]
}

使用时只需输入 /fix-lint/gen-docs/pr-review,省去每次手写相同指令的麻烦。

八、版本控制安全网

"让 AI 改代码" 最大的不安全感来自不可逆操作。解决方案很简单:每次让 AI 执行改动前,先做一次 git 提交

# 让 AI 改动前的标准操作
git add -A && git commit -m "checkpoint: 重构前的安全点"

# AI 执行改动...

# 如果不满意
git reset --hard HEAD~1

# 如果满意
git add -A && git commit -m "feat: AI 辅助重构支付模块"

更进一步,你可以配置 PreToolUse hook,让 OpenCode 在每次文件修改前自动创建临时备份。

九、多 Agent 协同分工

OpenCode 支持配置多个 Agent,不同 Agent 可以连接不同的模型、拥有不同的工具权限。合理分工能显著提升效率:

| Agent | 模型 | 职责 | 工具权限 |
|-------|------|------|---------|
| Architect | Claude Opus | 架构设计、技术方案 | 只读、搜索 |
| Coder | Claude Sonnet | 功能实现 | 读写文件、执行命令 |
| Reviewer | GPT-4o | 代码审查 | 只读 |
| Fixer | GLM-4.7 | 修复 lint/test 错误 | 读写文件、执行命令 |

工作流:Architect 出方案 → Coder 实现 → Reviewer 审查 → Fixer 修复问题。形成闭环。

十、利用 Hooks 自动化质检流程

当 Agent 完成一次文件修改后,自动触发 lint 和类型检查,避免错误积累:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "command": "npx eslint --fix ${OPENCODE_FILEPATH} && echo '✅ Lint passed' || echo '❌ Lint failed'"
      }
    ]
  }
}

这样每次 AI 写入文件后,lint 会自动运行。如果出错,AI 能立即看到错误信息并修复——无需你手动介入。

十一、会话恢复与任务接力

长时间的大型任务不能在一个会话中完成时,使用"任务摘要"实现会话接力:

# 会话结束前
/compact
请为当前已完成的工作生成一个简要摘要,包括:
1. 已完成的部分
2. 当前进度
3. 下一步做什么
4. 需要重点关注的文件列表

将这段摘要粘贴到新会话的开头,AI 就能快速接手。你也可以将其写入 AGENTS.md 的临时任务区,新会话会自动加载。

十二、定期复盘 AI 输出质量

每隔一段时间(比如每周),花 5 分钟回顾 AI 的输出质量:

哪些指令 AI 理解得好? 提炼出可复用的提示词模板。

哪些任务 AI 反复出错? 考虑调整策略——换模型、拆解任务、补充上下文。

哪些操作可以自动化? 新增一个自定义命令或 hook。

同时关注 OpenCode 的更新日志和社区动态。作为一个快速迭代的开源项目,每个月都有新功能上线,持续优化你的配置是保持效率的关键。

总结

OpenCode 的强大不仅在于功能本身,更在于如何组合这些功能形成高效工作流。总结这 12 个技巧的核心逻辑:

  • 选对模型:不让大材小用,也不让小材大用
  • 管好上下文:AI 看到什么,决定了它输出什么
  • 写好指令:结构化、分步骤、给格式
  • Plan 先行:先规划后执行,少做无用功
  • 拆解任务:把大象放进冰箱只需要三步
  • 建立记忆:AGENTS.md 是 AI 的项目速查手册
  • 自动化质检:hooks 让质量检查不依赖人力
  • 版本保护:commit 是最好的后悔药
  • 持续优化:复盘、学习、迭代

将这些技巧融入日常开发,你会发现——AI 编程助手不再是一个"偶尔好用的工具",而是一个真正融入工作流的高效搭档。