当前位置: 首页 > news >正文

08-OpenCode 独有技巧

08-OpenCode 独有技巧

掌握 OpenCode 特有的高级功能和进阶使用技巧,提升开发效率。


一、OpenCode 特色功能

1.1 多界面模式

OpenCode 提供多种使用界面,适应不同场景:

界面启动方式适用场景
TUI(终端界面)opencode日常开发,交互式对话
CLI(命令行)opencode run "消息"脚本自动化,快速查询
Webopencode web远程访问,浏览器操作
IDE 扩展安装对应插件在编辑器内使用
桌面应用下载桌面版独立窗口体验

1.2 独有特性

  • TUI 终端界面:专为终端设计的交互式界面,支持快捷键、主题、会话管理
  • @ 文件引用:在对话中用@模糊搜索并引用项目文件
  • ! Shell 命令:在消息前加!直接执行 Shell 命令
  • 自定义命令系统:通过.opencode/commands/*.md创建可复用的斜杠命令
  • Git 驱动的撤销/重做/undo/redo基于 Git 管理文件变更
  • 会话分享/share生成公开链接,与团队分享对话
  • Plan/Build 模式切换:用 Tab 键在规划模式和构建模式间切换
  • 子 Agent 会话:支持子 Agent 独立执行任务,不污染主上下文

二、TUI 交互技巧

2.1 文件引用(@)

在对话中使用@引用文件,OpenCode 会进行模糊搜索并自动将文件内容加入上下文:

@packages/functions/src/api/index.ts 中的认证逻辑是如何实现的? 对比 @src/models/User.ts 和 @src/models/Post.ts 的结构差异 参考 @src/components/Button.tsx 的设计风格,创建一个新的 Input 组件

2.2 Shell 命令(!)

在消息前加!可直接执行 Shell 命令,输出自动作为工具结果返回:

!ls -la !npm test !git log --oneline -5

2.3 Plan/Build 模式切换

OpenCode 支持两种工作模式,用Tab键切换:

# Plan 模式(右下角显示 Plan) - AI 只做规划,不修改文件 - 适合复杂功能,先讨论方案再动手 # Build 模式(右下角显示 Build) - AI 直接修改文件 - 适合明确的、具体的任务

使用流程:

  1. 按 Tab 切换到 Plan 模式
  2. 描述需求,让 AI 生成实现计划
  3. 审查并迭代计划
  4. 按 Tab 切回 Build 模式
  5. 让 AI 执行计划

2.4 思考过程可见性

对于支持扩展思考的模型,可以切换思考过程的可见性:

/thinking # 切换思考块显示/隐藏

注意:这只控制显示,不改变模型的推理能力。要切换模型变体,使用ctrl+t


三、自定义命令系统

3.1 创建自定义命令

.opencode/commands/目录下创建 Markdown 文件即可定义命令:

.opencode/commands/ ├── test.md # /test ├── review.md # /review ├── component.md # /component └── analyze-coverage.md # /analyze-coverage

3.2 命令格式

每个命令文件包含 YAML frontmatter 和 Markdown 内容:

--- description: 运行测试并分析覆盖率 agent: build model: anthropic/claude-sonnet-4-20250514 --- 运行完整测试套件并生成覆盖率报告。 关注失败的测试并建议修复方案。

3.3 参数化命令

使用$ARGUMENTS或位置参数$1,$2,$3

--- description: 创建新的 React 组件 --- 创建一个名为 $ARGUMENTS 的 React 组件,包含 TypeScript 类型定义和基本结构。

使用:

/test Button
--- description: 创建文件 --- 在目录 $2 中创建名为 $1 的文件,内容如下:$3

使用:

/create-file config.json src '{"key": "value"}'

3.4 注入 Shell 输出

使用!`命令`将 Shell 命令输出注入到提示词中:

--- description: 审查最近的代码变更 --- 最近的 Git 提交记录: !`git log --oneline -10` 审查这些变更并提出改进建议。

3.5 引用文件

在命令中使用@文件名自动包含文件内容:

--- description: 审查组件代码 --- 审查 @src/components/Button.tsx 组件。 检查性能问题并提出改进建议。

3.6 JSON 配置方式

也可以在opencode.json中配置命令:

{"$schema":"https://opencode.ai/config.json","command":{"test":{"template":"运行测试套件并分析覆盖率,关注失败的测试。","description":"运行测试并分析覆盖率","agent":"build","model":"anthropic/claude-sonnet-4-20250514"}}}

3.7 命令选项

选项说明
template发送给 LLM 的提示词(必需)
descriptionTUI 中显示的操作描述
agent指定执行该命令的 Agent
model为该命令指定默认模型
subtask强制以子 Agent 方式执行

四、会话管理

4.1 会话操作

命令快捷键说明
/newctrl+x n新建会话(别名/clear
/sessionsctrl+x l列出并切换会话(别名/resume,/continue
/compactctrl+x c压缩当前会话上下文(别名/summarize
/exportctrl+x x导出当前会话为 Markdown

4.2 撤销/重做

OpenCode 的撤销/重做基于 Git,会同时回退文件变更:

/undo # ctrl+x u 撤销最后一条消息及其文件变更 /redo # ctrl+x r 重做之前撤销的操作

注意:项目需要是 Git 仓库才能使用此功能。

4.3 子 Agent 会话

OpenCode 支持子 Agent 独立执行任务:

  • 子 Agent 在独立上下文中工作,不污染主会话
  • 可以在命令配置中设置subtask: true强制以子 Agent 执行
  • 使用方向键在父子会话间导航:
    • 上箭头:回到父会话
    • 下箭头:进入第一个子会话
    • 右箭头:切换到下一个子会话
    • 左箭头:切换到上一个子会话

4.4 CLI 会话管理

# 继续上次会话opencode--continueopencode-c# 指定会话 IDopencode--session<id>opencode-s<id># 列出所有会话opencode session list opencode session list-n5# 最近 5 个opencode session list--formatjson# Fork 会话opencode--continue--fork# 查看统计信息opencode stats opencode stats--days7# 最近 7 天opencode stats--models5# 显示前 5 个模型使用情况

五、模型切换

5.1 快速切换

操作快捷键说明
列出模型/modelsctrl+x m显示可用模型列表
切换变体ctrl+t在当前模型的不同变体间循环
最近模型F2在最近使用的模型间循环
最近模型(反向)Shift+F2反向循环

5.2 启动时指定模型

opencode--modelanthropic/claude-sonnet-4-20250514 opencode-mopenai/gpt-4o opencode run"解释闭包"--modelanthropic/claude-sonnet-4-20250514

5.3 查看可用模型

opencode models# 列出所有模型opencode models anthropic# 只看 Anthropic 的模型opencode models--refresh# 刷新模型缓存opencode models--verbose# 显示详细信息(含价格)

六、会话分享

6.1 分享对话

/share # ctrl+x s 生成公开链接并复制到剪贴板

生成的链接格式:opncd.ai/s/<share-id>

6.2 取消分享

/unshare # 停止分享,删除公开链接和相关数据

6.3 分享模式配置

opencode.json中配置:

{"$schema":"https://opencode.ai/config.json","share":"manual"}
模式说明
"manual"默认,手动分享
"auto"自动分享所有新对话
"disabled"完全禁用分享

6.4 自动分享

# 环境变量方式exportOPENCODE_AUTO_SHARE=true# 或在 opencode.json 中设置 "share": "auto"

6.5 CLI 分享

# 运行时分享opencode run"消息"--share# 导出会话opencodeexport<sessionID># 导入会话opencodeimportsession.json opencodeimporthttps://opncd.ai/s/abc123

七、快捷键系统

7.1 Leader 键

OpenCode 使用 leader 键机制避免终端快捷键冲突。默认 leader 键为ctrl+x

使用方式:先按ctrl+x,再按对应功能键。

7.2 常用快捷键

功能快捷键说明
新建会话ctrl+x n开始新对话
会话列表ctrl+x l列出并切换会话
压缩上下文ctrl+x c压缩历史节省 token
撤销ctrl+x u撤销最后一条消息
重做ctrl+x r重做撤销的操作
模型列表ctrl+x m列出可用模型
主题列表ctrl+x t列出可用主题
帮助ctrl+x h显示帮助对话框
外部编辑器ctrl+x e打开外部编辑器编写消息
导出会话ctrl+x x导出为 Markdown
工具详情ctrl+x d切换工具执行详情显示
初始化项目ctrl+x i创建/更新 AGENTS.md
退出ctrl+x q退出 OpenCode

7.3 导航快捷键

功能快捷键说明
上一页PageUp/ctrl+alt+b向上翻页
下一页PageDown/ctrl+alt+f向下翻页
到顶部ctrl+g/Home跳到第一条消息
到底部ctrl+alt+g/End跳到最后一条消息
复制消息ctrl+x y复制当前消息内容
隐藏/显示提示ctrl+x h切换提示可见性

7.4 自定义快捷键

tui.json中自定义:

{"$schema":"https://opencode.ai/tui.json","keybinds":{"leader":"ctrl+x","session_compact":"none"}}

设置为"none"可禁用某个快捷键。

7.5 输入编辑快捷键

快捷键操作
ctrl+a移到行首
ctrl+e移到行尾
ctrl+b/左箭头后退一个字符
ctrl+f/右箭头前进一个字符
alt+b/alt+左箭头后退一个单词
alt+f/alt+右箭头前进一个单词
ctrl+w/ctrl+backspace删除前一个单词
alt+d/alt+delete删除后一个单词
ctrl+k删除到行尾
ctrl+u删除到行首
ctrl+d/delete删除光标处字符
ctrl+-/super+z撤销输入
ctrl+./super+shift+z重做输入
ctrl+c清空输入框
shift+return换行

八、主题与界面

8.1 切换主题

/themes # ctrl+x t 列出并切换主题

8.2 TUI 配置

tui.json中配置界面行为:

{"$schema":"https://opencode.ai/tui.json","theme":"opencode","keybinds":{"leader":"ctrl+x"},"scroll_speed":3,"scroll_acceleration":{"enabled":true},"diff_style":"auto","mouse":true}
选项说明
theme设置主题
scroll_speed滚动速度(默认 3)
scroll_acceleration.enabled启用 macOS 风格滚动加速
diff_style"auto"自适应终端宽度,"stacked"单列布局
mouse启用/禁用鼠标捕获

九、CLI 进阶

9.1 非交互模式运行

# 快速查询opencode run"解释 JavaScript 中的闭包"# 多行消息opencode run"分析项目结构""给出架构建议"# 附加文件opencode run"审查这个组件"-fsrc/components/Button.tsx# JSON 格式输出(适合脚本解析)opencode run"列出所有 API 端点"--formatjson

9.2 附加到运行中的服务

# 终端 1:启动无头服务opencode serve--port4096# 终端 2:附加到服务(避免 MCP 冷启动)opencode run--attachhttp://localhost:4096"解释异步编程"

9.3 Web 界面

opencode web# 启动 Web 服务并打开浏览器opencode web--port4096# 指定端口opencode web--hostname0.0.0.0# 允许远程访问

设置密码保护:

exportOPENCODE_SERVER_PASSWORD=yourpassword opencode web

9.4 远程附加

# 远程机器上启动后端opencode web--port4096--hostname0.0.0.0# 本地附加 TUIopencode attach http://10.20.30.40:4096 opencode attach http://10.20.30.40:4096--dir/path/to/project

9.5 ACP 协议

opencode acp# 启动 ACP 服务器(stdin/stdout 通信)opencode acp--port4096# 或监听端口

9.6 统计信息

opencode stats# 显示 token 用量和费用opencode stats--days7# 最近 7 天opencode stats--tools10# 显示前 10 个工具使用opencode stats--models5# 显示前 5 个模型opencode stats--project"my-project"# 按项目过滤

十、项目初始化

10.1 /init 命令

/init

引导式创建或更新AGENTS.md文件,OpenCode 会分析项目结构并生成适合的项目说明。

建议将AGENTS.md提交到 Git,帮助 OpenCode 理解项目结构和编码规范。

10.2 AGENTS.md 的作用

AGENTS.md是项目级的 AI 指令文件,告诉 OpenCode:

  • 项目使用的技术栈和框架
  • 代码风格和命名规范
  • 项目目录结构
  • 测试和构建流程
  • 其他需要 AI 遵循的约定

十一、外部编辑器

11.1 打开外部编辑器

/editor # ctrl+x e 在外部编辑器中编写消息

使用EDITOR环境变量指定的编辑器。

11.2 配置编辑器

# Linux/macOSexportEDITOR="vim"exportEDITOR="code --wait"# Windows PowerShell$env:EDITOR="code --wait"

注意:VS Code 等 GUI 编辑器需要加--wait参数。


十二、实用技巧

12.1 压缩上下文

当对话过长、响应变慢时:

/compact # ctrl+x c 压缩会话上下文

OpenCode 会将历史对话压缩为摘要,节省 token 用量。

12.2 命令面板

ctrl+p # 打开命令面板,搜索所有可用命令

12.3 中断响应

escape # 中断正在生成的响应

12.4 环境变量

# 禁用自动压缩exportOPENCODE_DISABLE_AUTOCOMPACT=true# 禁用模型获取exportOPENCODE_DISABLE_MODELS_FETCH=true# 指定配置文件exportOPENCODE_CONFIG=/path/to/config.json# 禁用 Claude Code 兼容读取exportOPENCODE_DISABLE_CLAUDE_CODE=true# 启用实验性功能exportOPENCODE_EXPERIMENTAL=true

12.5 升级与卸载

# 升级到最新版本opencode upgrade# 升级到指定版本opencode upgrade v0.1.48# 卸载(保留配置)opencode uninstall --keep-config --keep-data# 卸载预览(不实际删除)opencode uninstall --dry-run

十三、下一步

掌握独有技巧后,建议学习:

  1. 09-实战:PythonWebAPI开发.md - 完整项目实战
  2. 10-多模型配置指南.md - 多模型配置
  3. 11-项目规划测试代码审查实战.md - 全流程实战

文档版本: 2.0 | 建议学习时长: 30分钟

http://www.cnnetsun.cn/news/1750370.html

相关文章:

  • 2026年4月重庆GEO优化公司推荐:七家口碑服务评测对比知名排名
  • FlashRAG项目实战:如何用BGE和Qwen3-0.6B模型定制你的中文Streamlit问答界面
  • 2025-2026年国内GEO排名优化推荐:TOP7服务商评测对比顶尖
  • LVGL移植避坑手册:基于野火指南者开发板的RAM/Flash优化配置详解
  • 【紧急预警】FastAPI <2.0.3存在StreamingResponse内存泄漏+JWT异步上下文污染双重0day(附2.0.4热修复patch及迁移checklist)
  • 编程之路的开始
  • 基于 ESP32 的多功能空气净化器设计与实现
  • 从零搭建一个虚拟ECU:手把手用Autosar CP模块模拟汽车灯控系统(基于Vector工具链)
  • 2025年大模型年度总结:Training Recipe与业务落地思考
  • 2025年大模型应用落地深度实践:Training Recipe、Omni与Agent技术栈全解析
  • 开源项目:如何选择、使用以及二次开发
  • OpenClaw+Qwen3.5-9B实战:30分钟搭建个人SEO分析机器人
  • MAX30100嵌入式驱动开发与PPG信号处理实战
  • AssetStudio高效掌握:Unity资源提取专业指南
  • 不止于裁剪:聊聊Vue3项目中头像处理的那些事儿(vue-cropper实战与优化思考)
  • OpenClaw+千问3.5-9B自动化测试数据生成
  • 告别多端适配折磨!HarmonyOS 6.0 ArkUI 响应式布局实战指南
  • 开关电源采购避坑指南:5 个低价陷阱 + 可抄 SOP,降本 15% 还不踩雷
  • 手把手教你理解Camera内外参矩阵:从理论到实践(附Python代码示例)
  • ADT74x0高精度数字温度传感器驱动开发与I²C嵌入式实践
  • 避坑指南:OpenClaw安装Qwen3.5-9B常见的5个配置错误
  • GraphRAG:知识图谱如何为GenAI注入新活力
  • 平板间二维稳态对流传热方程的软物理信息神经网络实现研究(Python代码实现)
  • 超越目标空间:多模态多目标优化算法的决策空间评价指标深度解析
  • 天主大学vs博卡青年:小组头名之争!赞佩德里能否率队主场掀翻
  • 从零开始:用Python和Gemini 3四步搭建你自己的AI Agent
  • 6款AI论文降重软件,智能改写与优化,显著提升原创度。
  • “量子霸权”模拟门槛已跌破——手把手带你用Clang 18+LLVM Pass重构量子电路IR,编译期展开超导量子门序列
  • XB1ControllerBatteryIndicator:Xbox手柄电量智能监控工具
  • OpenClaw模型微调:Qwen3.5-9B适配专属任务