OpenCode + OhMyOpenCode 使用教程
面向宝贝的离线单页:基础到进阶,包含 / 指令与 @ 子智能体速查表、以及常见工作流。 这份页面以你本机环境为准(Windows / opencode v1.1.48 / 已启用插件)。
快速开始(Quick Start)
1) 检查版本 / 路径
opencode --version
opencode debug paths
2) 配置文件入口(你这台机器)
OpenCode 配置(opencode.json)
你已启用插件:opencode-antigravity-auth@latest、oh-my-opencode@latest
OhMyOpenCode 配置(oh-my-opencode.json)
用于指定各个智能体/类别的模型与变体(variant)。
3) 最小启动方式
# 进入项目目录(示例)
cd "D:\+宝\AI编程文件\opencode学习"
# 启动 TUI(默认命令)
opencode
基础用法(Basics)
启动模式速览
| 命令 | 中文解释 | 何时用 |
|---|---|---|
| opencode | 启动交互式 TUI(Terminal UI) | 日常主要入口:对话、工具调用、写代码、跑命令 |
| opencode run <message...> | 非交互模式发送一次消息(可脚本化) | 自动化/脚本/CI 里快速问一句或跑一次任务 |
| opencode serve | 启动 headless server(无 UI) | 希望长期驻留一个服务、让其他客户端 attach |
| opencode web | 启动 server 并打开 Web 界面 | 你想用浏览器驱动 OpenCode(本机) |
| opencode attach <url> | 附加到已运行的 opencode server | 你已经 serve 了一个服务,想从别处接入 |
常用参数(以 opencode v1.1.48 为准)
- --command:让 opencode 运行一个命令(message 当作参数)。
- --continue / --session:继续上一次/指定会话。
- --share:分享会话(会生成可导入的 share 链接/ID)。
- --model:指定模型(格式 provider/model)。
- --agent:指定智能体(例如 sisyphus、plan、build 等)。
- --variant:模型变体(各 provider 含义不同,例如 reasoning effort)。
- --file:附加文件到消息(相当于把文件内容作为上下文输入)。
会话管理(session/export/import)
# 列出会话
opencode session list
# 导出会话为 JSON(把 <sessionID> 替换成真实值)
opencode export <sessionID> > session.json
# 导入会话(支持 JSON 文件路径 或 share URL)
opencode import .\session.json
MCP(Model Context Protocol)
把外部能力(工具/服务)以标准协议接入 OpenCode:列出、添加、OAuth 登录、调试连接。
# 查看 MCP 列表及状态
opencode mcp list
# 添加 MCP server(交互式)
opencode mcp add
# OAuth 登录/退出
opencode mcp auth <name>
opencode mcp logout <name>
# 调试 OAuth
opencode mcp debug <name>
Auth(凭据管理)
opencode auth list
opencode auth login
opencode auth logout
进阶技巧(Advanced)
1) 多智能体心法:把你当“技术负责人”
用 @ 子智能体分工(Subagents)
例如:代码库探索交给 @explore,外部资料交给 @librarian,难题请 @oracle。
用 / 指令复用高频流程(Slash Commands)
例如:/refactor(更确定性的重构流程),/start-work(从计划切入执行)。
2) “脚本化”工作:opencode run
你可以把“提问 + 上下文”塞进 opencode run,并通过 --session/--continue 控制连续对话。
# 发送一句话(非交互)
opencode run "在这个项目里搜索所有 TODO 并汇总"
# 指定 agent / model
opencode run --agent sisyphus --model openai/gpt-5.2 "给我一个修复方案,并说明验证步骤"
# 分享会话(用于复盘或跨设备导入)
opencode run --share "把本次对话整理成可复制的 checklist"
3) LSP / AST-grep:把“找改查”变成确定性
- LSP:按语义找引用、重命名、诊断,避免误替换。
- AST-grep:按语法树匹配和替换,适合跨文件批量改造。
4) 会话复用与导出:把“好一次”变成“好很多次”
- 复用:--continue 或 --session 继续讨论(适合多天任务)。
- 导出:opencode export 将会话变成 JSON,便于归档、分享、审计。
- 导入:opencode import 把别人的经验迁移到你这里(或跨机器恢复)。
5) TUI 高收益小技巧(少打字,少跑偏)
- @path:在消息里引用文件(模糊搜索),自动把文件内容注入上下文。
- !cmd:以 ! 开头运行命令,把输出注入上下文(例如 !git diff、!npm test)。
- ctrl+p:打开命令列表,快速发现“你本机到底有哪些 / 命令”。
官方机制里 /undo 与 /redo 会回滚/恢复文件改动,但内部依赖 Git;项目不是 Git 仓库时,你可能会发现它无法工作或效果受限。
Skills 使用技巧(Agent Skills)
Skill 的本质:把一套高质量工作流固化成可复用指令(通常以 /skill-name 的形式调用)。它是否可用,取决于你本机的 skills 目录与权限配置。
1) Skill 放哪里才会被发现?
- 全局(global):C:\Users\27072\.config\opencode\skills\<name>\SKILL.md
- 项目级(project):.opencode\skills\<name>\SKILL.md
注意:文件名必须是全大写 SKILL.md。你本机有一个嵌套在别的目录里的 .claude\skills\...,默认不会被 OpenCode 的 skills 扫描命中;想生效需要把它移动/复制到上面目录结构里。
2) SKILL.md 该怎么写(最小可用模板)
---
name: my-skill
description: When to use me (Recommended). Do X safely and repeatably.
---
Rules:
- Ask 1-2 clarifying questions only if blocked.
- Provide a verification step.
Workflow:
1) ...
2) ...
3) 实战心法:让模型“更愿意正确选 skill”
- 把 description 写得像“触发条件”:例如“浏览器交互必须用 Playwright”。描述越具体,越容易被正确匹配。
- Skill 不是魔法:它通常只是给智能体一段更严格的系统提示。真正的能力来自工具(例如 Playwright、git、LSP、MCP)。
- 权限要配对:例如你把 permission.edit 设为 deny,那么任何写文件的 skill 都会被限制。
4) 常见排错(Skill 没出现 / 不生效)
| 现象 | 优先检查 | 说明 |
|---|---|---|
| 找不到 /skill-name | SKILL.md | 必须全大写;路径必须在 ...\skills\<name>\SKILL.md |
| 能看到 skill,但执行不了 | permission / tools | 检查 opencode.json 的权限:edit/bash/webfetch 是否被 deny/ask。 |
| skill 执行但效果“跑偏” | description | 把“何时用/不该用”写进 description,并给出 1-2 个短例子。 |
/ 指令命令列表(Slash Commands)
说明:/xxx 属于 OpenCode/OhMyOpenCode 的“快捷流程指令”。不同安装/配置下可用项可能略有差异,请以你实际环境为准。
- OpenCode 自带一组“动作类”命令(例如 /new、/undo)。
- OhMyOpenCode 额外注入了一组工作流命令(例如 /refactor)。
- 每个 Skill 也会以 /skill-name 的形式可调用(再加上你自定义的 skills)。
- 你自己写的自定义 commands(.opencode\commands\*.md 或配置里的 command 字段)也会出现在命令列表里。
- MCP servers 如果提供 prompts,也会作为可调用命令出现。
最快验证:按 ctrl+p 打开命令列表,看到的就是你“此刻真实可用”的全集。
| 来源 | 命令 | 中文翻译 | 用途/解释 | 示例/备注 |
|---|---|---|---|---|
| OpenCode(TUI) | /connect | 连接/配置 Provider | 在 TUI 里添加/选择 LLM provider(例如 OpenAI/Anthropic/Google 等),并完成 key 配置。 | /connect |
| OpenCode(TUI) | /init | 初始化项目 AGENTS.md | 分析当前项目并生成/更新 AGENTS.md,让智能体更懂你的工程结构与规范。 | /init |
| OpenCode(TUI) | /help | 帮助面板/命令面板 | 查看可用命令与帮助信息(具体快捷键可在 keybinds 配置)。 | /help |
| OpenCode(TUI) | /compact | 压缩会话(摘要) | 把当前长对话压缩成摘要/新会话,减少上下文占用。别名:/summarize。 | /compact |
| OpenCode(TUI) | /summarize | (别名)摘要/压缩 | /compact 的别名。 | /summarize |
| OpenCode(TUI) | /details | 显示/隐藏工具详情 | 切换是否显示工具执行细节(便于排错/审计)。 | /details |
| OpenCode(TUI) | /editor | 打开外部编辑器 | 用你的 EDITOR 编辑器写长提示(适合写规范/长文/多段)。 | /editor |
| OpenCode(TUI) | /export | 导出对话为 Markdown | 把当前对话导出为 Markdown 并在默认编辑器打开。注意:这不是 opencode export(CLI 导出 JSON)。 | /export |
| OpenCode(TUI) | /models | 列出模型 | 查看可用模型列表(也可用 CLI:opencode models)。 | /models |
| OpenCode(TUI) | /theme | 主题列表 | 切换界面主题(如你使用主题系统)。 | /theme |
| OpenCode(TUI) | /new | 新建会话 | 开始一个新会话(相当于清空上下文)。别名:/clear。 | /new |
| OpenCode(TUI) | /clear | (别名)新建会话 | /new 的别名。 | /clear |
| OpenCode(TUI) | /sessions | 会话列表/切换会话 | 列出会话并切换。别名:/resume、/continue。 | /sessions |
| OpenCode(TUI) | /resume | (别名)恢复会话 | /sessions 的别名。 | /resume |
| OpenCode(TUI) | /continue | (别名)继续会话 | /sessions 的别名。 | /continue |
| OpenCode(TUI) | /share | 分享会话 | 生成分享链接并复制(也可用 CLI:opencode run --share)。 | /share |
| OpenCode(TUI) | /unshare | 取消分享 | 取消当前会话分享。 | /unshare |
| OpenCode(TUI) | /undo | 撤销最后一次消息/改动 | 撤销最近一次用户消息及后续响应,并回滚相关文件改动(依赖 Git)。 | /undo |
| OpenCode(TUI) | /redo | 重做撤销 | 恢复刚才用 /undo 撤销的改动(依赖 Git)。 | /redo |
| OpenCode(TUI) | /thinking | 显示/隐藏思考块 | 切换“是否显示”模型的 thinking/reasoning 文本;不是切换推理能力本身。 | /thinking |
| OpenCode(TUI) | /exit | 退出 | 退出 OpenCode。别名:/quit、/q。 | /exit |
| OpenCode(TUI) | /quit | (别名)退出 | /exit 的别名。 | /quit |
| OpenCode(TUI) | /q | (别名)退出 | /exit 的别名。 | /q |
| OhMyOpenCode | /init-deep | 初始化“深度记忆/知识库” | 生成/更新更强的分层记忆结构(适合大型仓库/长周期项目)。 | /init-deep |
| OhMyOpenCode | /ralph-loop | 启动 Ralph 循环 | 持续推进直到完成(更自动驾驶),典型用于“任务很长、需要不断续作”。 | /ralph-loop |
| OhMyOpenCode | /ulw-loop | 启动 ultrawork 循环 | 偏“并行探索 + 深挖 + 持续执行”的循环模式(强推进)。 | /ulw-loop |
| OhMyOpenCode | /cancel-ralph | 取消循环 | 停止 ralph/ulw 循环。 | /cancel-ralph |
| OhMyOpenCode | /refactor | 智能重构流程 | LSP + AST-grep + 计划/验证的组合流程,避免“盲改”。 | /refactor <target> |
| OhMyOpenCode | /start-work | 开始执行(从计划出发) | 通常先让规划型智能体产出计划,然后进入执行并按 todo 推进。 | /start-work |
| OhMyOpenCode | /stop-continuation | 停止所有续作机制 | 停止 todo continuation / loop 等自动续作钩子。 | /stop-continuation |
| Skill | /playwright | 浏览器自动化 | 网页操作/截图/抓数据/验收 UI(必须用 Playwright)。 | /playwright |
| Skill | /dev-browser | 持久化浏览器工作流 | 需要登录/保持页面状态/多步流程的浏览器自动化。 | /dev-browser |
| Skill | /git-master | Git 专家 | commit/rebase/squash/blame/bisect 等,强调安全与原子提交。 | /git-master |
| Skill | /frontend-ui-ux | UI/UX 工程师(偏体验) | 没有设计稿也要做出“像人做的”界面。 | /frontend-ui-ux |
| Skill | /frontend-design | 前端设计与实现 | 落地页面/组件/动效;避免模板化。 | /frontend-design |
| Skill | /webapp-testing | 本地 Web 测试 | 用 Playwright 写验收脚本(优先用自带 helper)。 | /webapp-testing |
| Skill | /web-artifacts-builder | 复杂前端 Artifact 打包 | React/Tailwind/shadcn 产物打包成单 HTML(适合分享/交付)。 | /web-artifacts-builder |
| Skill | /mcp-builder | MCP 构建 | 写 MCP server 把外部服务接入 OpenCode。 | /mcp-builder |
| Skill | PDF 处理 | 抽取、填表、合并/拆分、生成。 | ||
| Skill | /docx | DOCX 处理 | 编辑 Word 文档(修订/批注/格式保持)。 | /docx |
| Skill | /pptx | PPTX 处理 | 生成/编辑演示文稿。 | /pptx |
| Skill | /xlsx | XLSX 处理 | 表格分析/写入/公式/格式(强调零公式错误)。 | /xlsx |
| Skill | /internal-comms | 内部沟通写作 | 状态汇报/复盘/FAQ/公告。 | /internal-comms |
| Skill | /doc-coauthoring | 文档共创 | 先澄清大纲,再写全文(避免一上来就写跑题)。 | /doc-coauthoring |
| Skill | /skill-creator | 创建/更新 Skill | 把工作流固化成可复用“技能”。 | /skill-creator |
| Skill | /wechat-article-generator | 公众号文章生成 | 交互式采访 → 大纲确认 → 正文 + 配图任务。 | /wechat-article-generator |
| Skill | /theme-factory | 主题工厂 | 给文档/页面/幻灯片统一配色与字体。 | /theme-factory |
| Skill | /brand-guidelines | 品牌规范 | 按品牌色/字体输出物料。 | /brand-guidelines |
| Skill | /canvas-design | 画布设计 | 生成 PNG/PDF 静态设计稿(原创)。 | /canvas-design |
| Skill | /algorithmic-art | 算法艺术 | p5.js 生成艺术(可调参/可交互)。 | /algorithmic-art |
| Skill | /slack-gif-creator | Slack GIF | 制作适配 Slack 的 GIF(尺寸/帧率/色盘优化),并提供校验与压缩策略。 | /slack-gif-creator |
@ 子智能体/代理列表(Subagents / Agents)
说明:@name 用来把一部分工作交给更合适的“专家”。你这套环境里还启用了 oh-my-opencode 的一组编排/顾问型智能体。
| @name | 中文解释 | 何时用(Use when) | 注意事项 |
|---|---|---|---|
| @build | 默认执行型智能体(能改代码/跑命令) | 实际“干活”的主力:实现、修 bug、跑测试、改文件。 | 适合推进具体落地;注意保持改动最小、可验证。 |
| @plan | 规划型智能体(偏只读/做方案) | 需求不清/任务大:先做计划、拆分步骤、定义验收。 | 通常不直接写代码;配合 /start-work 进入执行。 |
| @general | 通用多步智能体 | 跨模块、多步、需要综合工具的任务。 | 比 explore 更“会做事”,但成本也更高。 |
| @explore | 代码库探索(Contextual grep) | “我不知道在哪”:找实现、找模式、找文件结构。 | 适合并行发起多个探索问题。 |
| @librarian | 外部资料/文档/开源例子检索 | 涉及外部库/框架、需要找官方文档/最佳实践/开源示例。 | 如果你不想访问外网,就不要让它做 webfetch;只用本地资料也行。 |
| @oracle | 高智商顾问(架构/调试/难题) | 复杂 trade-off、性能/安全疑虑、连续失败后需要“高级脑”。 | 昂贵但靠谱:用在关键决策点。 |
| @prometheus | 规划顾问(只做 plan,不做实现) | 你想要一个严谨可执行的工作计划文档。 | 它会拒绝实现;你要执行就走 /start-work。 |
| @metis | 预规划审查(挖坑专家) | 需求模糊/复杂:帮你找缺失信息、潜在失败点。 | 适合在写计划前调用一次。 |
| @momus | 计划/产物严格评审 | 你要“高精度”检查(计划是否可执行、是否有遗漏)。 | 可能会多轮驳回,直到 OK。 |
| @multimodal-looker | 多模态读图/读 PDF | 你有图片/截图/PDF 要提取信息、总结、对照。 | 适合做“读取/提取”,不是写代码。 |
| @sisyphus-junior | 执行型小工(聚焦任务) | 小范围执行、强纪律、少扯皮的任务。 | 更适合做“明确、单点”的改动。 |
通常用 @ 选“谁来做”,用 / 选“走哪套流程”。例如:先 @plan 做计划,再 /start-work 进入执行。
当子智能体开启了子会话:用 ctrl+x right/left 在父/子会话间切换,用 ctrl+x up 回到父会话(默认 keybind)。
快捷键(Keyboard Shortcuts)
OpenCode 使用 leader 键减少终端冲突:默认 ctrl+x。 例如:新建会话通常是 ctrl+x 然后按 n。
高频快捷键速查(默认值)
| 动作 | 默认按键 | 说明 |
|---|---|---|
| 打开命令列表(Command list) | ctrl+p | 列出所有可用命令(含 / 命令、自定义 command、skills、MCP prompts 等)。 |
| 切换主智能体(Build/Plan) | tab | 在 Build 和 Plan 之间切换(也可配置)。 |
| 切换模型变体(Variant) | ctrl+t | 循环切换模型 variant(例如不同 thinking level)。 |
| 中断当前会话输出 | escape | 打断正在生成的响应。 |
| 帮助/命令面板 | ctrl+x h | 等价于 /help。 |
| 新建会话 | ctrl+x n | 等价于 /new。 |
| 会话列表 | ctrl+x l | 等价于 /sessions。 |
| 压缩会话(摘要) | ctrl+x c | 等价于 /compact。 |
| 分享会话 | ctrl+x s | 等价于 /share。 |
| 导出会话到编辑器(Markdown) | ctrl+x x | 等价于 /export(注意不同于 CLI 的 opencode export)。 |
| 撤销 / 重做 | ctrl+x u / ctrl+x r | 等价于 /undo / /redo(依赖 Git)。 |
| 打开外部编辑器写输入 | ctrl+x e | 等价于 /editor(使用 EDITOR 环境变量)。 |
| 模型列表 / Agent 列表 | ctrl+x m / ctrl+x a | 快速切换模型与智能体。 |
如何自定义快捷键(opencode.json)
你可以在 C:\Users\27072\.config\opencode\opencode.json 里添加/覆盖 keybinds 字段。
{
"$schema": "https://opencode.ai/config.json",
"keybinds": {
"leader": "ctrl+x",
"command_list": "ctrl+p",
"agent_cycle": "tab",
"variant_cycle": "ctrl+t"
}
}
如果你的终端默认不发送 Shift+Enter,可以按官方文档在 Windows Terminal 配置 escape sequence。
// %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
"actions": [
{
"command": { "action": "sendInput", "input": "\\u001b[13;2u" },
"id": "User.sendInput.ShiftEnterCustom"
}
],
"keybindings": [
{ "keys": "shift+enter", "id": "User.sendInput.ShiftEnterCustom" }
]
常见工作流示例(Playbooks)
1) 修一个 bug(最小修复 + 验证)
# 在 TUI 里:
@explore
“帮我定位 bug 相关代码:错误信息/函数名/关键词…(给出你知道的线索)”
@build
“按最小改动修复,并给出可运行的验证命令(测试/运行步骤)”
2) 加一个小功能(不确定范围时先 plan)
@plan
“我想加功能 X。请先问我 2-3 个关键问题,并输出一个可执行的工作计划(含验收步骤)。”
/start-work
3) 写文档/教程(你正在做的事)
@general
“基于本机 opencode 的 help 输出和配置文件,生成一份离线 HTML 教程(含 / 与 @ 列表、工作流示例)。”
4) 重构(用 /refactor 提升确定性)
/refactor <要重构的目标>
(如果遇到复杂 trade-off)
@oracle
“这个重构的风险点和最佳策略是什么?如何最小化破坏?”
5) 写测试(或补测试)
@explore
“找出项目当前测试框架/测试模式,并给我 2-3 个类似测试文件作为参考。”
@build
“新增/补齐测试:先写 failing test,再实现,再跑测试到全绿。”
6) 生成一个前端页面(避免 AI 模板化)
@frontend-design
“做一个单页 HTML(或 React 组件),要求:有明确视觉方向、排版有性格、配色不紫、带少量动效。”
7) 做一个 PR(如果你在 GitHub 项目里)
@build
“按仓库 commit 风格拆分原子提交,并用 gh 创建 PR(不要 force push)。
如果本地没装 gh,就告诉我安装/替代步骤。”
FAQ / 排错
Q1:为什么有时工具输出里出现 BunInstallFailedError?
例如:BunInstallFailedError 或 ENOENT reading ...\zod\index.js(来自 opencode 缓存目录)。
- 先看日志文件:C:\Users\27072\.local\share\opencode\log\ 下对应时间戳的 .log。
- 用 opencode debug paths 确认路径是否符合预期。
- 确认插件配置:C:\Users\27072\.config\opencode\opencode.json 的 plugin 数组。
清理 C:\Users\27072\.cache\opencode 可能会让 opencode 重新下载依赖,属于“有风险的删除操作”。 如果你要把“清缓存”写进教程里,建议标注:先备份/先确认。
Q2:我怎么确认 oh-my-opencode 是否生效?
- 确认配置里已启用:C:\Users\27072\.config\opencode\opencode.json。
- 确认存在配置文件:C:\Users\27072\.config\opencode\oh-my-opencode.json。
- 在对话里尝试使用 /start-work、/refactor 或 @oracle 等(如果可用,会被识别)。
Q3:为什么本页没有列出所有 TUI 快捷键?
- 为了不误导:快捷键可能随版本变化,且 TUI/Web/Desktop 可能不同。
- 你把 TUI 里帮助面板的快捷键列表截图/抄一份给我,我可以把本页“快捷键表”补成最终版。
附录:CLI 命令速查(opencode v1.1.48)
以下来自你本机 opencode --help(只列顶层)。
| 命令 | 说明 |
|---|---|
| opencode completion | 生成 shell 自动补全脚本 |
| opencode acp | 启动 ACP(Agent Client Protocol)server |
| opencode mcp | 管理 MCP servers(add/list/auth/logout/debug) |
| opencode [project] | 启动 TUI(默认),可指定项目路径 |
| opencode attach | attach 到已运行 server |
| opencode run | 非交互运行并发送消息 |
| opencode debug | 调试工具(config/lsp/rg/file/scrap/skill/snapshot/agent/paths/wait) |
| opencode auth | 管理凭据(login/logout/list) |
| opencode agent | 管理 agents(create/list) |
| opencode upgrade | 升级 opencode(method: curl/npm/pnpm/bun/brew/choco/scoop) |
| opencode uninstall | 卸载 opencode(支持 dry-run / keep-config / keep-data) |
| opencode serve | 启动 headless server |
| opencode web | 启动 server 并打开 web UI |
| opencode models | 列出可用模型(可按 provider 过滤) |
| opencode stats | 统计 token/cost(按天/工具/模型/项目过滤) |
| opencode export | 导出会话 JSON |
| opencode import | 导入会话(JSON 或 share URL) |
| opencode github | 管理 GitHub agent(install/run) |
| opencode pr | 拉取并 checkout 某个 PR 分支后运行 opencode |
| opencode session | 会话管理(list) |