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 模型的能力边界很大程度上取决于上下文窗口内放入了什么。无关代码放得越多,输出质量越差。OpenCode 提供了几种精准的上下文控制手段:
1. 文件引用符号 @
请分析 @src/services/auth.ts 中的 login 函数,指出潜在的安全问题
@ 符号让 AI 只读取指定文件,避免加载整个项目。
2. 手动选择上下文文件
在 TUI 界面中,使用快捷键选择需要纳入上下文的文件,而不是让 AI 自动扫描全部代码。
3. 适时使用 /compact
对话进行多轮后,上下文会膨胀。/compact 命令会将对话历史压缩为摘要,释放上下文空间。建议在以下时机触发:
/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 先分析、再规划、最后执行,比一次性要求"写测试"效果好得多。
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 在每次文件修改前自动创建临时备份。
OpenCode 支持配置多个 Agent,不同 Agent 可以连接不同的模型、拥有不同的工具权限。合理分工能显著提升效率:
| Agent | 模型 | 职责 | 工具权限 |
|-------|------|------|---------|
| Architect | Claude Opus | 架构设计、技术方案 | 只读、搜索 |
| Coder | Claude Sonnet | 功能实现 | 读写文件、执行命令 |
| Reviewer | GPT-4o | 代码审查 | 只读 |
| Fixer | GLM-4.7 | 修复 lint/test 错误 | 读写文件、执行命令 |
工作流:Architect 出方案 → Coder 实现 → Reviewer 审查 → Fixer 修复问题。形成闭环。
当 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 的临时任务区,新会话会自动加载。
每隔一段时间(比如每周),花 5 分钟回顾 AI 的输出质量:
哪些指令 AI 理解得好? 提炼出可复用的提示词模板。
哪些任务 AI 反复出错? 考虑调整策略——换模型、拆解任务、补充上下文。
哪些操作可以自动化? 新增一个自定义命令或 hook。
同时关注 OpenCode 的更新日志和社区动态。作为一个快速迭代的开源项目,每个月都有新功能上线,持续优化你的配置是保持效率的关键。
OpenCode 的强大不仅在于功能本身,更在于如何组合这些功能形成高效工作流。总结这 12 个技巧的核心逻辑:
将这些技巧融入日常开发,你会发现——AI 编程助手不再是一个"偶尔好用的工具",而是一个真正融入工作流的高效搭档。