Skip to content
FunCoding

Search

Search docs, Skills and MCP

自定义命令

创建可复用的 slash command,传入参数、文件和 shell 输出,并选择角色、模型与子任务。

This page has not been translated into English yet. The original Chinese version is shown below.

自定义命令把一段任务提示保存为 TUI 中的 /命令名。它们与内置命令并存,但同名时会覆盖内置命令,命名时应避免无意改变 /init、/undo 等行为。

Markdown 定义

全局目录为 ~/.config/opencode/commands/,项目目录为 .opencode/commands/。文件名决定命令名,例如 review-changes.md 对应 /review-changes。

---
description: Review the requested change
agent: plan
---

Review $ARGUMENTS and explain the affected behavior and verification steps.

frontmatter 保存属性,正文成为模板。未指定 agent 时使用当前角色;本例主动选择 Plan,但具体工具行为仍取决于 Plan 权限和当前批准模式。

JSON 定义

也可在 opencode.json 的 command 对象定义。template 必填,description 在 TUI 显示,agent 与 model 可选:

{
  "command": {
    "review-changes": {
      "template": "Review $ARGUMENTS and summarize actionable findings.",
      "description": "Review a scoped change",
      "agent": "plan"
    }
  }
}

模型覆盖必须使用实际可用 ID,不应沿用官方教程旧示例里的型号作为当前推荐。

参数展开

$ARGUMENTS 表示传入参数。例如 /review-changes src/parser.ts 会把该参数放入模板。需要分别使用参数时,使用 $1、$2、$3 等位置参数。

带空格或结构化内容的参数需要按命令输入方式正确引用。设计模板时明确每个位置参数的含义,避免把文件路径、目录和文本顺序混淆。

文件与 shell 输出

模板中的 @path/to/file 会把文件内容加入提示。shell 输出注入使用感叹号紧接反引号包裹命令,例如:

Recent commits:
!`git log --oneline -10`

Summarize the important changes.

这些 shell 命令会在项目根目录运行,输出成为提示内容。它会执行命令,不是给模型看的静态代码样例;采用共享模板前应检查其中实际运行了什么。

主角色与子任务

agent 指定为子智能体时,默认触发子智能体调用;设 subtask: false 可关闭这种默认行为。

反过来,subtask: true 会强制将该命令作为子智能体调用,即使角色的 mode 是 primary。这有助于把重复任务与主上下文分开,但不应据此推断权限或模型限制被绕过。

创建后用范围小的输入试用,核对参数、上下文、实际角色和结果,再加入日常工作流。