OpenCode 命令指南

OpenCode 命令:自定义命令、参数与安全复用

先分清两层:内置斜杠命令控制当前 TUI 会话,自定义命令则把可重复的提示词变成一个有名字的工作流。最稳妥的起点是在项目的 .opencode/commands/ 中创建 Markdown 文件,只在输入确实变化时使用 $ARGUMENTS,并在允许修改文件或运行 Shell 之前检查生成的提示词。本页覆盖内置命令、Markdown 与 JSON 配置、位置参数、Shell 输出、文件引用、权限边界和命令不显示时的排查顺序。

主关键词
OpenCode 命令
文档核对
2026-08-19
阅读时间
约 14 分钟
OpenCode 终端分流到内置命令、自定义 Markdown 文件和 JSON 配置的示意图
OpenCode 命令分为 TUI 内置动作,以及项目或全局可复用的定义。

快速答案

OpenCode 命令有三个实用层次

优先选择刚好能解决问题的层次,避免一个提示词快捷方式逐渐变成无法审查的自动化。

层次作用示例
TUI 内置命令控制当前会话或调用内置动作。/help/undo
自定义命令从 Markdown 或 JSON 配置展开一段命名提示词。/review$ARGUMENTS
Shell 命令在终端执行,是独立的执行面。npm testgit status

自定义命令不会替代 CLI 安装、Provider 接入或权限策略。如果终端找不到 opencode,先看部署教程;如果模型无法选择,查看Provider 配置;如果命令可能写文件或执行代码,先阅读权限指南。命令相关的事实以官方 Commands 文档和已安装版本的 /help 输出为准。

内置命令

用斜杠命令控制当前 TUI 会话

OpenCode 提供 /init/undo/redo/share/help 等内置 TUI 命令。它们不是 Shell 别名,也不是应该写进项目 package.json 的脚本。请在 OpenCode 接收提示词的位置输入,并在继续前阅读确认信息或结果。

不确定当前版本支持哪些命令时,先用 /help/undo/redo 影响会话中的变更历史,不能取代 Git 提交;/share 可能创建可分享的会话状态,涉及私有仓库或客户代码时要先检查公开范围。内置命令会随版本变化,静态页面不应假设列表永久不变。

Markdown 示例

先创建一个项目级自定义命令

Markdown 文件可以进入 Git,适合团队审阅,也能把提示词放在真正使用它的项目附近。

  1. 在项目根目录创建 .opencode/commands/review.md
  2. 写一条简短的 frontmatter 描述,并让提示词只负责一件事。
  3. 在小分支中运行,检查提示词和 diff 后再交给团队使用。

.opencode/commands/review.md

这个示例只要求生成审查计划,不自动授予写入路径。

---
description: Review the current changes
---
Review the current Git changes. Explain risky behavior,
missing tests, and the smallest safe follow-up.
Do not edit files until I approve the plan.

文件名会成为命令名,上面的文件通过 /review 调用。全局目录 ~/.config/opencode/commands/ 适合跨项目复用的个人流程,项目目录适合包含本地路径、测试约定和团队规范的命令。提示词应明确输入、输出和边界;“审查变更并给出计划”比“修复一切”更容易验证。

JSON 配置

需要和项目设置放在一起时使用 command 对象

OpenCode 也支持在 JSON 或 JSONC 配置的 command 对象中定义自定义命令。需要指定 agent 或 model,或希望命令和其他项目设置一起审查时,这种方式更紧凑。配置优先级、Schema 和路径仍属于opencode.jsonc 配置指南的范围。

{
  "$schema": "https://opencode.ai/config.json",
  "command": {
    "test-review": {
      "template": "Review the latest test output and list the first three fixes.",
      "description": "Review test output",
      "agent": "plan"
    }
  }
}
选项用途共享前检查
template命令运行时发送给模型的提示词。字段存在且任务边界清晰。
description发现命令时显示的短说明。说明结果,不写内部编号。
agent为工作流选择命名 agent。工具与权限符合任务。
model覆盖该命令的默认模型。Provider 确实提供对应 ID。

配置文件不是密钥存储。API key、token 和私有 endpoint 应放在 Provider 支持的凭据路径中。即使命令只有几行,只要它会引用文件或运行 Shell,就应像脚本一样审查。

参数与上下文

只在工作流真的变化时使用变量

$ARGUMENTS 接收完整参数串;$1$2 等占位符用于拆分位置参数。

OpenCode 命令参数从终端流入 Markdown 模板、JSON 文件和 Shell 输出的示意图
参数应进入小而明确的模板,并产生可审查的结果。
---
description: Create a file with supplied values
---
Create a file named $1 in directory $2.
Use this content: $3
Show the proposed path before writing.

/create-file config.json src "{ \"key\": \"value\" }" 会传入三个值。模板需要说明每个值的用途,并要求在写入前显示目标路径。只需要一段自由文本时,$ARGUMENTS 比位置参数更简单。

官方文档还支持用 @ 加文件名引用文件,例如 @src/components/Button.tsx;用 !`npm test`!`git log --oneline -10` 把 Shell 输出注入提示词。命令从项目根目录运行,输出会成为上下文,所以不要把破坏性或可能泄露秘密的命令写进可复用模板。

参数是输入,不是权限。包含路径、Shell 片段或 JSON 的命令仍受 OpenCode 权限策略约束。先做只读测试,再批准最小编辑,最后才考虑在可信仓库中自动化。

安全复用

让命令名、提示词和权限保持可预测

如果自定义命令与内置命令同名,它可能覆盖内置行为。除非确实需要并准备好回滚,不要使用 helpundoshare 等名字。像 review-tests 这样的名字更容易让协作者理解预期。

把命令文件当作代码进行 Git 审查:检查提示词 diff、生成结果、引用的文件和拟执行的 Shell。当命令指定 agent 或 model 时,结合Agents 指南检查工具边界;依赖 Skills 或 MCP 时,分别查看Skills 指南MCP 指南

现象可能层次第一检查
斜杠命令不显示路径或命名检查文件名、目录、frontmatter 和项目根目录。
模板运行但结果不对提示词或参数缩小请求,一次只测试一个参数。
Shell 输出为空或有风险Shell 上下文手动运行并检查工作目录和权限。
内置行为发生变化名称冲突重命名自定义命令并对照 /help

验证流程

让命令成为团队基础设施前的六项检查

  1. 范围:用一句话写明输入和输出。
  2. 位置:选择项目目录或全局目录,并在 README 中说明。
  3. 输入:测试正常、缺失、带引号和路径型参数。
  4. 上下文:在请求编辑前检查文件引用和 Shell 输出。
  5. 权限:从 ask 或只读行为开始,再批准最小变更。
  6. 回滚:把命令放入 Git,并记录如何停用或重命名。

这比临时粘贴一大段提示词慢一点,但下次运行会拥有相同的命名、上下文和审查边界。失败也更容易定位:命令缺失通常是路径问题,结果错误通常是模板或参数问题,编辑被拒绝通常是权限问题,模型失败则回到 Provider 配置。

常见问题

OpenCode 命令常见问题

OpenCode 命令有什么用?

内置命令控制 TUI,会话外的自定义命令则把重复提示词包装为命名工作流,可用于代码审查、测试摘要和文件脚手架。

OpenCode 自定义命令目录在哪里?

项目命令放在 .opencode/commands/,全局命令放在 ~/.config/opencode/commands/。Markdown 文件名就是命令名。

如何给 OpenCode 命令传参数?

完整字符串使用 $ARGUMENTS,单个值使用 $1$2 等。包含空格或 JSON 时要加引号。

OpenCode 命令可以运行测试吗?

可以,官方记录的 !`command` 形式会把 Shell 输出放入提示词。请在可信仓库中使用并检查输出是否包含敏感数据。

为什么 OpenCode 命令没有出现?

依次检查目录、项目根目录、文件名、frontmatter 和名称冲突,再用已安装版本的 /help 与官方文档核对。

官方来源

核对会随版本变化的命令细节

本页于 2026-08-19 对照官方 OpenCode 文档。命令名、路径、选项和内置行为可能变化,团队发布工作流前应再次核对安装版本。

小结

用内置命令控制当前 TUI,用 Markdown 文件保存可审查的项目工作流,用 JSON 配置承载需要和项目设置放在一起的命令。保持参数明确,把 Shell 输出当作不可信上下文,避免覆盖内置命令,并用小而可回滚的任务验证每个新命令。