文档
斜杠命令
命令由 Gateway 网关处理。大多数命令必须作为以 / 开头的独立消息发送。
仅主机的 bash 聊天命令使用 ! <cmd>(/bash <cmd> 是别名)。
有两个相关系统:
- 命令:独立的
/...消息。 - 指令:
/think、/verbose、/reasoning、/elevated、/exec、/model、/queue。 - 指令在模型看到消息之前被剥离。
- 在普通聊天消息中(不是仅指令消息),它们被视为”内联提示”,不会持久化会话设置。
- 在仅指令消息中(消息只包含指令),它们会持久化到会话并回复确认。
- 指令仅对授权发送者生效(渠道白名单/配对加上
commands.useAccessGroups)。
未授权发送者的指令被视为纯文本。
还有一些内联快捷方式(仅限白名单/授权发送者):/help、/commands、/status、/whoami(/id)。
它们立即运行,在模型看到消息之前被剥离,剩余文本继续通过正常流程。
配置
“`json5 theme={“theme”:{“light”:”min-light”,”dark”:”min-dark”}}
{
commands: {
native: “auto”,
nativeSkills: “auto”,
text: true,
bash: false,
bashForegroundMs: 2000,
config: false,
debug: false,
restart: false,
useAccessGroups: true,
},
}
* `commands.text`(默认 `true`)启用解析聊天消息中的 `/...`。
* 在没有原生命令的平台上(WhatsApp/WebChat/Signal/iMessage/Google Chat/MS Teams),即使你将此设置为 `false`,文本命令仍然有效。
* `commands.native`(默认 `"auto"`)注册原生命令。
* Auto:在 Discord/Telegram 上启用;在 Slack 上禁用(直到你添加斜杠命令);在不支持原生命令的提供商上忽略。
* 设置 `channels.discord.commands.native`、`channels.telegram.commands.native` 或 `channels.slack.commands.native` 以按提供商覆盖(布尔值或 `"auto"`)。
* `false` 在启动时清除 Discord/Telegram 上之前注册的命令。Slack 命令在 Slack 应用中管理,不会自动删除。
* `commands.nativeSkills`(默认 `"auto"`)在支持时原生注册 **Skill** 命令。
* Auto:在 Discord/Telegram 上启用;在 Slack 上禁用(Slack 需要为每个 Skill 创建一个斜杠命令)。
* 设置 `channels.discord.commands.nativeSkills`、`channels.telegram.commands.nativeSkills` 或 `channels.slack.commands.nativeSkills` 以按提供商覆盖(布尔值或 `"auto"`)。
* `commands.bash`(默认 `false`)启用 `! <cmd>` 来运行主机 shell 命令(`/bash <cmd>` 是别名;需要 `tools.elevated` 白名单)。
* `commands.bashForegroundMs`(默认 `2000`)控制 bash 切换到后台模式之前等待多长时间(`0` 立即后台运行)。
* `commands.config`(默认 `false`)启用 `/config`(读写 `openclaw.json`)。
* `commands.debug`(默认 `false`)启用 `/debug`(仅运行时覆盖)。
* `commands.useAccessGroups`(默认 `true`)对命令强制执行白名单/策略。
## 命令列表
文本 + 原生(启用时):
* `/help`
* `/commands`
* `/skill <name> [input]`(按名称运行 Skill)
* `/status`(显示当前状态;在可用时包含当前模型提供商的提供商使用量/配额)
* `/allowlist`(列出/添加/删除白名单条目)
* `/approve <id> allow-once|allow-always|deny`(解决 exec 审批提示)
* `/context [list|detail|json]`(解释"上下文";`detail` 显示每个文件 + 每个工具 + 每个 Skill + 系统提示词大小)
* `/whoami`(显示你的发送者 ID;别名:`/id`)
* `/subagents list|kill|log|info|send|steer|spawn`(检查、控制或创建当前会话的子智能体运行)
* `/config show|get|set|unset`(将配置持久化到磁盘,仅所有者;需要 `commands.config: true`)
* `/debug show|set|unset|reset`(运行时覆盖,仅所有者;需要 `commands.debug: true`)
* `/usage off|tokens|full|cost`(每响应使用量页脚或本地成本摘要)
* `/tts off|always|inbound|tagged|status|provider|limit|summary|audio`(控制 TTS;参见 [/tts](/tts))
* Discord:原生命令是 `/voice`(Discord 保留了 `/tts`);文本 `/tts` 仍然有效。
* `/stop`
* `/restart`
* `/dock-telegram`(别名:`/dock_telegram`)(将回复切换到 Telegram)
* `/dock-discord`(别名:`/dock_discord`)(将回复切换到 Discord)
* `/dock-slack`(别名:`/dock_slack`)(将回复切换到 Slack)
* `/activation mention|always`(仅限群组)
* `/send on|off|inherit`(仅所有者)
* `/reset` 或 `/new [model]`(可选模型提示;其余部分传递)
* `/think <off|minimal|low|medium|high|xhigh>`(按模型/提供商动态选择;别名:`/thinking`、`/t`)
* `/verbose on|full|off`(别名:`/v`)
* `/reasoning on|off|stream`(别名:`/reason`;启用时,发送带有 `Reasoning:` 前缀的单独消息;`stream` = 仅 Telegram 草稿)
* `/elevated on|off|ask|full`(别名:`/elev`;`full` 跳过 exec 审批)
* `/exec host=<sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>`(发送 `/exec` 显示当前设置)
* `/model <name>`(别名:`/models`;或 `agents.defaults.models.*.alias` 中的 `/<alias>`)
* `/queue <mode>`(加上选项如 `debounce:2s cap:25 drop:summarize`;发送 `/queue` 查看当前设置)
* `/bash <command>`(仅主机;`! <command>` 的别名;需要 `commands.bash: true` + `tools.elevated` 白名单)
仅文本:
* `/compact [instructions]`(参见 [/concepts/compaction](/concepts/compaction))
* `! <command>`(仅主机;一次一个;对长时间运行的任务使用 `!poll` + `!stop`)
* `!poll`(检查输出/状态;接受可选的 `sessionId`;`/bash poll` 也可用)
* `!stop`(停止正在运行的 bash 任务;接受可选的 `sessionId`;`/bash stop` 也可用)
注意事项:
* 命令接受命令和参数之间的可选 `:`(例如 `/think: high`、`/send: on`、`/help:`)。
* `/new <model>` 接受模型别名、`provider/model` 或提供商名称(模糊匹配);如果没有匹配,文本被视为消息正文。
* 要获取完整的提供商使用量分解,使用 `openclaw status --usage`。
* `/allowlist add|remove` 需要 `commands.config=true` 并遵循渠道 `configWrites`。
* `/usage` 控制每响应使用量页脚;`/usage cost` 从 OpenClaw 会话日志打印本地成本摘要。
* `/restart` 默认禁用;设置 `commands.restart: true` 启用它。
* `/verbose` 用于调试和额外可见性;在正常使用中保持**关闭**。
* `/reasoning`(和 `/verbose`)在群组设置中有风险:它们可能会暴露你不打算公开的内部推理或工具输出。最好保持关闭,尤其是在群聊中。
* **快速路径:** 来自白名单发送者的仅命令消息会立即处理(绕过队列 + 模型)。
* **群组提及门控:** 来自白名单发送者的仅命令消息绕过提及要求。
* **内联快捷方式(仅限白名单发送者):** 某些命令在嵌入普通消息时也能工作,并在模型看到剩余文本之前被剥离。
* 示例:`hey /status` 触发状态回复,剩余文本继续通过正常流程。
* 目前:`/help`、`/commands`、`/status`、`/whoami`(`/id`)。
* 未授权的仅命令消息被静默忽略,内联 `/...` 令牌被视为纯文本。
* **Skill 命令:** `user-invocable` Skills 作为斜杠命令公开。名称被清理为 `a-z0-9_`(最多 32 个字符);冲突获得数字后缀(例如 `_2`)。
* `/skill <name> [input]` 按名称运行 Skill(当原生命令限制阻止每个 Skill 命令时有用)。
* 默认情况下,Skill 命令作为普通请求转发给模型。
* Skills 可以选择声明 `command-dispatch: tool` 将命令直接路由到工具(确定性,无模型)。
* 示例:`/prose`(OpenProse 插件)— 参见 [OpenProse](/prose)。
* **原生命令参数:** Discord 使用自动完成进行动态选项(以及当你省略必需参数时的按钮菜单)。当命令支持选择且你省略参数时,Telegram 和 Slack 显示按钮菜单。
## 使用量显示(什么显示在哪里)
* **提供商使用量/配额**(示例:"Claude 80% left")在启用使用量跟踪时显示在 `/status` 中,针对当前模型提供商。
* **每响应令牌/成本**由 `/usage off|tokens|full` 控制(附加到普通回复)。
* `/model status` 是关于**模型/认证/端点**的,不是使用量。
## 模型选择(`/model`)
`/model` 作为指令实现。
示例:
/model
/model list
/model 3
/model openai/gpt-5.2
/model opus@anthropic:default
/model status
注意事项:
* `/model` 和 `/model list` 显示紧凑的编号选择器(模型系列 + 可用提供商)。
* `/model <#>` 从该选择器中选择(并在可能时优先选择当前提供商)。
* `/model status` 显示详细视图,包括在可用时配置的提供商端点(`baseUrl`)和 API 模式(`api`)。
## 调试覆盖
`/debug` 让你设置**仅运行时**的配置覆盖(内存,不写磁盘)。仅所有者。默认禁用;使用 `commands.debug: true` 启用。
示例:
/debug show
/debug set messages.responsePrefix=”[openclaw]”
/debug set channels.whatsapp.allowFrom=[“+1555″,”+4477”]
/debug unset messages.responsePrefix
/debug reset
注意事项:
* 覆盖立即应用于新的配置读取,但**不会**写入 `openclaw.json`。
* 使用 `/debug reset` 清除所有覆盖并返回到磁盘上的配置。
## 配置更新
`/config` 写入你的磁盘配置(`openclaw.json`)。仅所有者。默认禁用;使用 `commands.config: true` 启用。
示例:
/config show
/config show messages.responsePrefix
/config get messages.responsePrefix
/config set messages.responsePrefix=”[openclaw]”
/config unset messages.responsePrefix
“`
注意事项:
- 配置在写入前会验证;无效更改会被拒绝。
/config更新在重启后持久化。
平台注意事项
- 文本命令在普通聊天会话中运行(私信共享
main,群组有自己的会话)。 - 原生命令使用隔离的会话:
- Discord:
agent:<agentId>:discord:slash:<userId> - Slack:
agent:<agentId>:slack:slash:<userId>(前缀可通过channels.slack.slashCommand.sessionPrefix配置) - Telegram:
telegram:slash:<userId>(通过CommandTargetSessionKey定向到聊天会话) /stop定向到活动聊天会话,因此可以中止当前运行。- Slack:
channels.slack.slashCommand仍然支持单个/openclaw风格的命令。如果你启用commands.native,你必须为每个内置命令创建一个 Slack 斜杠命令(与/help相同的名称)。Slack 的命令参数菜单以临时 Block Kit 按钮形式发送。