斜杠命令
命令由 Gateway网关处理。大多数命令必须作为以/ 开头的独立消息发送。
仅限主机使用的 bash 聊天命令使用 ! <cmd>(/bash <cmd> 为别名)。
有两个相关系统:
- 命令:独立的
/...消息。 - 指令:
/think、/verbose、/reasoning、/elevated、/exec、/model、/queue。- 指令在模型看到消息之前会被移除。
- 在普通聊天消息(非纯指令消息)中,它们被视为”内联提示”,不会持久化会话设置。
- 在纯指令消息(消息仅包含指令)中,它们会持久化到会话并回复确认信息。
- 指令仅对已授权的发送者(渠道允许列表/配对加上
commands.useAccessGroups)生效。 未授权的发送者看到的指令会被当作纯文本处理。
/help、/commands、/status、/whoami(/id)。
它们会立即执行,在模型看到消息之前被移除,剩余文本继续通过正常流程处理。
配置
commands.text(默认true)启用解析聊天消息中的/...。- 在没有原生命令支持的平台上(WhatsApp/WebChat/Signal/iMessage/Google Chat/MS Teams),即使将此项设为
false,文本命令仍然有效。
- 在没有原生命令支持的平台上(WhatsApp/WebChat/Signal/iMessage/Google Chat/MS Teams),即使将此项设为
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")在支持的平台上将Skills命令注册为原生命令。- Auto:Discord/Telegram 启用;Slack 关闭(Slack 需要为每个 Skills 创建一个斜杠命令)。
- 设置
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](按名称运行 Skills)/status(显示当前状态;在可用时包含当前模型提供商的用量/配额信息)/allowlist(列出/添加/移除允许列表条目)/approve <id> allow-once|allow-always|deny(处理执行审批提示)/context [list|detail|json](解释”上下文”;detail显示每个文件 + 每个工具 + 每个 Skills + 系统提示的大小)/whoami(显示你的发送者 ID;别名:/id)/subagents list|stop|log|info|send(检查、停止、查看日志或向当前会话的子智能体运行发送消息)/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)- Discord:原生命令为
/voice(Discord 保留了/tts);文本命令/tts仍然有效。
- Discord:原生命令为
/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 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)! <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)。 - 未授权的纯命令消息会被静默忽略,内联的
/...标记会被当作纯文本处理。 - Skills 命令:
user-invocableSkills 会作为斜杠命令暴露。名称会被规范化为a-z0-9_(最多 32 个字符);冲突时会添加数字后缀(例如_2)。/skill <name> [input]按名称运行 Skills(在原生命令限制阻止创建逐 Skills 命令时很有用)。- 默认情况下,Skills 命令会作为普通请求转发给模型。
- Skills 可以选择性地声明
command-dispatch: tool将命令直接路由到工具(确定性执行,无需模型)。 - 示例:
/prose(OpenProse 插件)——参见 OpenProse。
- **原生命令参数:**Discord 使用自动补全来处理动态选项(省略必需参数时使用按钮菜单)。Telegram 和 Slack 在命令支持选项且省略参数时显示按钮菜单。
用量显示界面(在哪里显示什么)
- 提供商用量/配额(示例:“Claude 剩余 80%“)在启用用量跟踪时显示在
/status中,针对当前模型提供商。 - 每次响应的令牌数/费用由
/usage off|tokens|full控制(附加在普通回复后面)。 /model status关于的是模型/认证/端点,而非用量。
模型选择(/model)
/model 作为指令实现。
示例:
/model和/model list显示紧凑的编号选择器(模型系列 + 可用提供商)。/model <#>从该选择器中选择(尽可能优先使用当前提供商)。/model status显示详细视图,包括已配置的提供商端点(baseUrl)和 API 模式(api)(如可用)。
调试覆盖
/debug 允许你设置仅运行时的配置覆盖(内存中,不写入磁盘)。仅所有者可用。默认禁用;通过 commands.debug: true 启用。
示例:
- 覆盖会立即应用于新的配置读取,但不会写入
openclaw.json。 - 使用
/debug reset清除所有覆盖并恢复到磁盘上的配置。
配置更新
/config 写入你的磁盘配置(openclaw.json)。仅所有者可用。默认禁用;通过 commands.config: true 启用。
示例:
- 配置在写入前会进行验证;无效的更改会被拒绝。
/config更新在重启后仍然保留。
平台说明
- 文本命令在普通聊天会话中运行(私信共享
main,群组有各自的会话)。 - 原生命令使用隔离的会话:
- Discord:
agent:<agentId>:discord:slash:<userId> - Slack:
agent:<agentId>:slack:slash:<userId>(前缀可通过channels.slack.slashCommand.sessionPrefix配置) - Telegram:
telegram:slash:<userId>(通过CommandTargetSessionKey定位聊天会话)
- Discord:
/stop定位活跃的聊天会话,以便中止当前运行。- **Slack:**仍然支持
channels.slack.slashCommand用于单个/openclaw风格的命令。如果你启用了commands.native,则必须为每个内置命令创建一个 Slack 斜杠命令(名称与/help相同)。Slack 的命令参数菜单以临时 Block Kit 按钮形式呈现。