OpenCode + OhMyOpenCode 使用教程

面向宝贝的离线单页:基础到进阶,包含 / 指令与 @ 子智能体速查表、以及常见工作流。 这份页面以你本机环境为准(Windows / opencode v1.1.48 / 已启用插件)。

opencode: 1.1.48
oh-my-opencode: 3.2.1(本机缓存/安装)
示例项目目录: D:\+宝\AI编程文件\opencode学习

快速开始(Quick Start)

你现在的关键事实(本机已验证)
当前 opencode 版本
1.1.48
当前项目路径(示例)
D:\+宝\AI编程文件\opencode学习
配置目录(config)
C:\Users\27072\.config\opencode
数据目录(data)
C:\Users\27072\.local\share\opencode
缓存目录(cache)
C:\Users\27072\.cache\opencode
日志目录(log)
C:\Users\27072\.local\share\opencode\log

1) 检查版本 / 路径

opencode --version

opencode debug paths

2) 配置文件入口(你这台机器)

OpenCode 配置(opencode.json)

你已启用插件:opencode-antigravity-auth@latestoh-my-opencode@latest

文件
C:\Users\27072\.config\opencode\opencode.json

OhMyOpenCode 配置(oh-my-opencode.json)

用于指定各个智能体/类别的模型与变体(variant)。

文件
C:\Users\27072\.config\opencode\oh-my-opencode.json

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 为准)

opencode run 常见开关
  • --command:让 opencode 运行一个命令(message 当作参数)。
  • --continue / --session:继续上一次/指定会话。
  • --share:分享会话(会生成可导入的 share 链接/ID)。
  • --model:指定模型(格式 provider/model)。
  • --agent:指定智能体(例如 sisyphusplanbuild 等)。
  • --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)

MCP 是什么?

把外部能力(工具/服务)以标准协议接入 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 高收益小技巧(少打字,少跑偏)

3 个“确定性”入口
  • @path:在消息里引用文件(模糊搜索),自动把文件内容注入上下文。
  • !cmd:以 ! 开头运行命令,把输出注入上下文(例如 !git diff!npm test)。
  • ctrl+p:打开命令列表,快速发现“你本机到底有哪些 / 命令”。
/undo 和 /redo 的前提

官方机制里 /undo/redo 会回滚/恢复文件改动,但内部依赖 Git;项目不是 Git 仓库时,你可能会发现它无法工作或效果受限。

Skills 使用技巧(Agent Skills)

Skill 的本质:把一套高质量工作流固化成可复用指令(通常以 /skill-name 的形式调用)。它是否可用,取决于你本机的 skills 目录与权限配置。

1) Skill 放哪里才会被发现?

推荐目录(OpenCode 官方机制 + 你本机现状)
  • 全局(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 的“快捷流程指令”。不同安装/配置下可用项可能略有差异,请以你实际环境为准。

为什么你本机能看到 40+ 个 / 命令?
  • OpenCode 自带一组“动作类”命令(例如 /new/undo)。
  • OhMyOpenCode 额外注入了一组工作流命令(例如 /refactor)。
  • 每个 Skill 也会以 /skill-name 的形式可调用(再加上你自定义的 skills)。
  • 你自己写的自定义 commands(.opencode\commands\*.md 或配置里的 command 字段)也会出现在命令列表里。
  • MCP servers 如果提供 prompts,也会作为可调用命令出现。

最快验证:按 ctrl+p 打开命令列表,看到的就是你“此刻真实可用”的全集。

0
来源 命令 中文翻译 用途/解释 示例/备注
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 PDF 处理 抽取、填表、合并/拆分、生成。 /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 的一组编排/顾问型智能体。

0
@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 官方文档,可在配置中覆盖)

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"
  }
}
Windows Terminal:让 Shift+Enter 生效(换行)

如果你的终端默认不发送 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?

你这台机器上确实遇到过类似错误

例如:BunInstallFailedErrorENOENT reading ...\zod\index.js(来自 opencode 缓存目录)。

  • 先看日志文件:C:\Users\27072\.local\share\opencode\log\ 下对应时间戳的 .log
  • opencode debug paths 确认路径是否符合预期。
  • 确认插件配置:C:\Users\27072\.config\opencode\opencode.jsonplugin 数组。
风险提示(删除/清缓存)

清理 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 attachattach 到已运行 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)