斜杠命令
命令由 Gateway 处理。多数命令必须作为 独立 消息发送,并以/ 开头。
仅宿主机 bash 聊天命令使用 ! <cmd>(/bash <cmd> 为别名)。
有两个相关系统:
- Commands:独立的
/...消息。 - Directives:
/think、/verbose、/reasoning、/elevated、/exec、/model、/queue。- 指令会在模型看到消息前被剥离。
- 在普通聊天消息中(非仅指令),它们作为“行内提示”,不会 持久化会话设置。
- 在仅指令消息中(消息只包含指令),它们会持久化到会话,并回复确认。
- 指令仅对 授权发送者 生效(频道 allowlist/配对 +
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 关闭(直到你创建斜杠命令);对不支持原生命令的 provider 忽略。
- 可用
channels.discord.commands.native、channels.telegram.commands.native或channels.slack.commands.native覆盖每个 provider(bool 或"auto")。 false会在启动时清除 Discord/Telegram 上已注册的命令。Slack 命令在 Slack 应用中管理,不能自动移除。
commands.nativeSkills(默认"auto")在支持的平台原生注册 技能 命令。- Auto:Discord/Telegram 开启;Slack 关闭(Slack 需为每个技能创建斜杠命令)。
- 可用
channels.discord.commands.nativeSkills、channels.telegram.commands.nativeSkills或channels.slack.commands.nativeSkills覆盖(bool 或"auto")。
commands.bash(默认false)启用! <cmd>执行宿主机 shell 命令(/bash <cmd>为别名;需要tools.elevatedallowlist)。commands.bashForegroundMs(默认2000)控制 bash 等待多长时间后切到后台(0表示立即后台)。commands.config(默认false)启用/config(读写openclaw.json)。commands.debug(默认false)启用/debug(仅运行时覆盖)。commands.useAccessGroups(默认true)对命令执行 allowlist/策略。
命令列表
文本 + 原生(启用时):/help/commands/skill <name> [input](按名称运行技能)/status(显示当前状态;可用时包含当前模型 provider 的用量/配额)/allowlist(列出/新增/移除 allowlist)/approve <id> allow-once|allow-always|deny(处理 exec 审批提示)/context [list|detail|json](解释“上下文”;detail展示按文件/工具/技能/系统提示的大小)/whoami(显示发送者 id;别名:/id)/subagents list|stop|log|info|send(查看、停止、日志或发送子 agent 运行)/config show|get|set|unset(写入磁盘,owner-only;需commands.config: true)/debug show|set|unset|reset(运行时覆盖,owner-only;需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(owner-only)/reset或/new [model](可选模型提示;剩余文本继续处理)/think <off|minimal|low|medium|high|xhigh>(动态取决于模型/provider;别名:/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;或/<alias>来自agents.defaults.models.*.alias)/queue <mode>(可带选项如debounce:2s cap:25 drop:summarize;发送/queue查看当前设置)/bash <command>(仅宿主机;! <command>别名;需commands.bash: true+tools.elevatedallowlist)
/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或 provider 名(模糊匹配);若无匹配则把文本视为消息体。- 若要查看完整 provider 用量拆解,使用
openclaw status --usage。 /allowlist add|remove需要commands.config=true并遵守频道configWrites。/usage控制每条回复的 usage 脚注;/usage cost会从 OpenClaw 会话日志输出本地成本摘要。/restart默认禁用;设置commands.restart: true启用。/verbose仅用于调试与增强可见性;正常使用请 保持关闭。/reasoning(及/verbose)在群组中有风险:可能暴露内部推理或工具输出。建议关闭,尤其在群聊中。- 快速路径: allowlist 发送者的仅命令消息会立即处理(绕过队列 + 模型)。
- 群组提及门控: allowlist 发送者的仅命令消息会绕过提及要求。
- 行内快捷方式(仅 allowlist 发送者): 某些命令嵌入普通消息时也可生效,且会在模型看到之前剥离。
- 示例:
hey /status会触发状态回复,其余文本继续正常流程。
- 示例:
- 当前支持:
/help、/commands、/status、/whoami(/id)。 - 未授权的仅命令消息会被静默忽略,行内
/...会当作普通文本。 - 技能命令:
user-invocable技能会以斜杠命令形式暴露。名称会清理为a-z0-9_(最长 32 字符);冲突会追加数字后缀(如_2)。/skill <name> [input]按名称运行技能(原生命令限制时很有用)。- 默认情况下,技能命令会作为普通请求转发给模型。
- 技能可选声明
command-dispatch: tool,把命令直接路由到工具(确定性、无需模型)。 - 示例:
/prose(OpenProse 插件)— 见 OpenProse。
- 原生命令参数: Discord 使用自动补全动态选项(省略必需参数时也显示按钮菜单)。Telegram 与 Slack 在命令支持选项且你省略参数时显示按钮菜单。
使用面(哪里显示什么)
- Provider 用量/配额(如“Claude 80% left”)在启用用量跟踪时,会显示在
/status中(当前模型 provider)。 - 每条回复 tokens/cost 由
/usage off|tokens|full控制(附加在正常回复后)。 /model status关注 模型/认证/端点,不是用量。
模型选择(/model)
/model 作为指令实现。
示例:
/model与/model list显示紧凑编号选择器(模型家族 + 可用 providers)。/model <#>从该选择器选择(尽可能优先当前 provider)。/model status显示详细视图,包括已配置 provider 端点(baseUrl)与 API 模式(api)。
Debug 覆盖
/debug 允许设置 仅运行时 配置覆盖(内存,不写磁盘)。仅 owner。默认禁用,需 commands.debug: true。
示例:
- 覆盖会立即生效,但 不会 写入
openclaw.json。 - 使用
/debug reset清除所有覆盖并恢复磁盘配置。
配置更新
/config 写入磁盘配置(openclaw.json)。仅 owner。默认禁用,需 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 的命令参数菜单通过 ephemeral Block Kit 按钮呈现。