斜杠命令
命令由网关处理。大多数命令必须作为以 / 开头的独立消息发送。
仅主机的bash聊天命令使用 ! <cmd>(其中 /bash <cmd> 是别名)。
有两个相关的系统:
- Commands: 独立的
/...消息。 - Directives:
/think,/verbose,/reasoning,/elevated,/exec,/model,/queue。- 在模型看到消息之前,指令会被移除。
- 在正常的聊天消息中(不是仅包含指令的消息),它们被视为“内联提示”,并且不会持久化会话设置。
- 在仅包含指令的消息中(消息仅包含指令),它们会持久化到会话,并回复确认信息。
- 指令仅适用于授权的发送者。如果设置了
commands.allowFrom,它就是唯一的 允许列表;否则授权来自频道允许列表/配对加上commands.useAccessGroups。 未经授权的发送者会看到指令被视为纯文本。
还有一些内联快捷方式(仅允许列表/授权的发送者可用):/help, /commands, /status, /whoami (/id)。
它们会立即运行,在模型看到消息之前被移除,剩余的文本继续通过正常流程。
配置
{
commands: {
native: "auto",
nativeSkills: "auto",
text: true,
bash: false,
bashForegroundMs: 2000,
config: false,
debug: false,
restart: false,
allowFrom: {
"*": ["user1"],
discord: ["user:123"],
},
useAccessGroups: true,
},
}
commands.text(默认true) 启用在聊天消息中解析/...。- 在不支持原生命令的平台上(WhatsApp/WebChat/Signal/iMessage/Google Chat/MS Teams),即使将此设置为
false,文本命令仍然有效。
- 在不支持原生命令的平台上(WhatsApp/WebChat/Signal/iMessage/Google Chat/MS Teams),即使将此设置为
commands.native(默认"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 命令。- 自动: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.allowFrom(可选) 为每个提供商设置命令授权允许列表。配置后,它是命令和指令的唯一授权源(频道允许列表/配对和commands.useAccessGroups被忽略)。使用"*"作为全局默认值;特定于提供商的密钥会覆盖它。commands.useAccessGroups(默认true) 当未设置commands.allowFrom时强制执行命令的允许列表/策略。
命令列表
文本 + 原生(当启用时):
/help/commands/skill <name> [input](按名称运行技能)/status(显示当前状态;包括当前模型提供商的使用情况/配额(如果可用))/allowlist(列出/添加/删除白名单条目)/approve <id> allow-once|allow-always|deny(解决执行批准提示)/context [list|detail|json](解释“上下文”;detail显示每个文件 + 每个工具 + 每个技能 + 系统提示大小)/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)。 - 未经授权的仅包含命令的消息会被静默忽略,内联
/...标记被视为纯文本。 - 技能命令:
user-invocable技能作为斜杠命令暴露。名称被清理为a-z0-9_(最多 32 个字符);冲突项会附加数字后缀(例如_2)。/skill <name> [input]按名称运行技能(当原生命令限制阻止按技能命令时很有用)。- 默认情况下,技能命令会被转发到模型作为正常请求。
- 技能可以选择声明
command-dispatch: tool以直接将命令路由到工具(确定性,无模型)。 - 示例:
/prose(OpenProse 插件)— 请参阅 OpenProse。
- 原生命令参数: Discord 使用自动完成功能动态选项(以及省略必需参数时的按钮菜单)。Telegram 和 Slack 在命令支持选择且省略参数时显示按钮菜单。
使用场景(什么显示在哪里)
- 提供者使用情况/配额(示例:“Claude 剩余 80%”)在启用使用情况跟踪时显示在当前模型提供者的
/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更新在重启之间持久化。
表面说明
- 文本命令 在正常的聊天会话中运行(DM 共享
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: 仍然支持单个
/openclaw样式的命令的channels.slack.slashCommand。如果您启用commands.native,必须为每个内置命令创建一个 Slack 斜杠命令(与/help中的名称相同)。Slack 的命令参数菜单以临时 Block Kit 按钮的形式提供。