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

快速答案
OpenCode 命令有三个实用层次
优先选择刚好能解决问题的层次,避免一个提示词快捷方式逐渐变成无法审查的自动化。
| 层次 | 作用 | 示例 |
|---|---|---|
| TUI 内置命令 | 控制当前会话或调用内置动作。 | /help、/undo |
| 自定义命令 | 从 Markdown 或 JSON 配置展开一段命名提示词。 | /review 与 $ARGUMENTS |
| Shell 命令 | 在终端执行,是独立的执行面。 | npm test、git 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,适合团队审阅,也能把提示词放在真正使用它的项目附近。
- 在项目根目录创建
.opencode/commands/review.md。 - 写一条简短的 frontmatter 描述,并让提示词只负责一件事。
- 在小分支中运行,检查提示词和 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 等占位符用于拆分位置参数。

---
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 权限策略约束。先做只读测试,再批准最小编辑,最后才考虑在可信仓库中自动化。
安全复用
让命令名、提示词和权限保持可预测
如果自定义命令与内置命令同名,它可能覆盖内置行为。除非确实需要并准备好回滚,不要使用 help、undo、share 等名字。像 review-tests 这样的名字更容易让协作者理解预期。
把命令文件当作代码进行 Git 审查:检查提示词 diff、生成结果、引用的文件和拟执行的 Shell。当命令指定 agent 或 model 时,结合Agents 指南检查工具边界;依赖 Skills 或 MCP 时,分别查看Skills 指南和MCP 指南。
| 现象 | 可能层次 | 第一检查 |
|---|---|---|
| 斜杠命令不显示 | 路径或命名 | 检查文件名、目录、frontmatter 和项目根目录。 |
| 模板运行但结果不对 | 提示词或参数 | 缩小请求,一次只测试一个参数。 |
| Shell 输出为空或有风险 | Shell 上下文 | 手动运行并检查工作目录和权限。 |
| 内置行为发生变化 | 名称冲突 | 重命名自定义命令并对照 /help。 |
验证流程
让命令成为团队基础设施前的六项检查
- 范围:用一句话写明输入和输出。
- 位置:选择项目目录或全局目录,并在 README 中说明。
- 输入:测试正常、缺失、带引号和路径型参数。
- 上下文:在请求编辑前检查文件引用和 Shell 输出。
- 权限:从 ask 或只读行为开始,再批准最小变更。
- 回滚:把命令放入 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 输出当作不可信上下文,避免覆盖内置命令,并用小而可回滚的任务验证每个新命令。