Appearance
斜杠命令(Slash Commands)
命令由 Gateway 处理。大多数命令必须作为独立消息发送,且消息以 / 开头。 宿主专用 bash 聊天命令使用 ! <cmd>(/bash <cmd> 是别名)。
这里有两套关联系统:
- Commands(命令):独立的
/...消息。 - Directives(指令):
/think、/fast、/verbose、/reasoning、/elevated、/exec、/model、/queue。- 指令在模型看到消息之前会被剥离。
- 在普通聊天消息中(非仅指令消息),它们被视为"内联提示",不持久化会话设置。
- 在仅指令消息(消息只包含指令)中,它们持久化到会话并回复确认。
- 指令只对已授权的发送者生效。如果设置了
commands.allowFrom,它是唯一使用的白名单;否则授权来自频道白名单/配对加commands.useAccessGroups。未授权的发送者看到指令会被当作普通文本。
还有一些内联快捷方式(仅限白名单/授权发送者):/help、/commands、/status、/whoami(/id)。 它们立即执行,在模型看到消息之前被剥离,剩余文本继续正常流程。
配置
json5
{
commands: {
native: "auto",
nativeSkills: "auto",
text: true,
bash: false,
bashForegroundMs: 2000,
config: false,
mcp: false,
plugins: false,
debug: false,
restart: false,
allowFrom: {
"*": ["user1"],
discord: ["user:123"],
},
useAccessGroups: true,
},
}commands.text(默认true):启用解析聊天消息中的/...。- 在不支持原生命令的平台(WhatsApp/WebChat/Signal/iMessage/Google Chat/Microsoft Teams)上,即使设置为
false,文本命令仍然有效。
- 在不支持原生命令的平台(WhatsApp/WebChat/Signal/iMessage/Google Chat/Microsoft 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来按 Provider 覆盖(bool 或"auto")。
commands.bash(默认false):启用! <cmd>运行宿主 shell 命令(/bash <cmd>是别名;需要tools.elevated白名单)。commands.bashForegroundMs(默认2000):bash 等待多长时间后切换到后台模式(0立即后台化)。commands.config(默认false):启用/config(读写openclaw.json)。commands.mcp(默认false):启用/mcp(读写 OpenClaw 管理的 MCP 配置,在mcp.servers下)。commands.plugins(默认false):启用/plugins(插件发现/状态,以及安装 + 启用/禁用控制)。commands.debug(默认false):启用/debug(运行时覆盖)。commands.allowFrom(可选):设置命令授权的按 Provider 白名单。配置后,它是命令和指令的唯一授权来源(频道白名单/配对和commands.useAccessGroups被忽略)。用"*"表示全局默认;特定 Provider 的 key 会覆盖它。commands.useAccessGroups(默认true):未设置commands.allowFrom时,对命令执行白名单/策略。
命令列表
文本 + 原生(启用时):
/help/commands/tools [compact|verbose](显示当前 Agent 现在可以使用的工具;verbose添加描述)/skill <name> [input](按名称运行技能)/status(显示当前状态;有 Provider 用量追踪时包含当前模型 Provider 的用量/配额)/allowlist(列出/添加/移除白名单条目)/approve <id> allow-once|allow-always|deny(解决 exec 审批提示)/context [list|detail|json](解释"上下文";detail显示每文件 + 每工具 + 每技能 + 系统提示词大小)/btw <question>(关于当前会话的临时问题,不改变未来会话上下文;参见 /tools/btw)/export-session [path](别名:/export)(导出当前会话为含完整系统提示词的 HTML)/whoami(显示你的发送者 ID;别名:/id)/session idle <duration|off>(管理已聚焦线程绑定的非活动自动取消聚焦)/session max-age <duration|off>(管理已聚焦线程绑定的硬性最大年龄自动取消聚焦)/subagents list|kill|log|info|send|steer|spawn(检查、控制或生成当前会话的子代理运行)/acp spawn|cancel|steer|close|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|sessions(检查和控制 ACP 运行时会话)/agents(列出此会话的线程绑定 Agent)/focus <target>(Discord:将此线程或新线程绑定到会话/子代理目标)/unfocus(Discord:移除当前线程绑定)/kill <id|#|all>(立即中止此会话的一个或所有子代理;不发确认消息)/steer <id|#> <message>(立即引导运行中的子代理:运行中时就地引导,否则中止当前工作并在引导消息上重新启动)/tell <id|#> <message>(/steer的别名)/config show|get|set|unset(将配置持久化到磁盘,仅限所有者;需要commands.config: true)/mcp show|get|set|unset(管理 OpenClaw MCP 服务器配置,仅限所有者;需要commands.mcp: true)/plugins list|show|get|install|enable|disable(检查已发现的插件、安装新插件、切换启用状态;写操作仅限所有者;需要commands.plugins: true)/plugin是/plugins的别名。/plugin install <spec>接受与openclaw plugins install相同的插件规格:本地路径/压缩包、npm 包,或clawhub:<pkg>。- 启用/禁用写操作仍会回复重启提示。在受监视的前台 Gateway 上,OpenClaw 可能在写入后立即自动重启。
/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>(按模型/Provider 动态选项;别名:/thinking、/t)/fast status|on|off(省略参数时显示当前有效的快速模式状态)/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)! <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。- 在多账号频道中,针对配置的
/allowlist --account <id>和/config set channels.<provider>.accounts.<id>...也遵循目标账号的configWrites。 /usage控制每次回复的用量页脚;/usage cost从 OpenClaw 会话日志打印本地费用摘要。/restart默认启用;设置commands.restart: false可禁用。- Discord 专属原生命令:
/vc join|leave|status控制语音频道(需要channels.discord.voice和原生命令;不支持文本方式)。 - Discord 线程绑定命令(
/focus、/unfocus、/agents、/session idle、/session max-age)需要有效的线程绑定启用(session.threadBindings.enabled和/或channels.discord.threadBindings.enabled)。 - ACP 命令参考和运行时行为:ACP Agents。
/verbose用于调试和额外可见性;正常使用时保持关闭。/fast on|off持久化会话覆盖。使用 Sessions UI 的inherit选项清除它并回退到配置默认值。- 工具失败摘要在相关时仍会显示,但详细失败文本只在
/verbose为on或full时包含。 /reasoning(以及/verbose)在群组设置中有风险:可能暴露你本不打算公开的内部推理或工具输出。建议关闭,尤其是在群聊中。- 快速路径: 白名单发送者的仅命令消息立即处理(绕过队列 + 模型)。
- 群组提及门控: 白名单发送者的仅命令消息绕过提及要求。
- 内联快捷方式(仅限白名单发送者): 某些命令也可嵌入普通消息中,在模型看到剩余文本之前被剥离。
- 示例:
hey /status触发状态回复,剩余文本继续正常流程。
- 示例:
- 目前:
/help、/commands、/status、/whoami(/id)。 - 未授权的仅命令消息被静默忽略,内联
/...token 被视为普通文本。 - 技能命令:
user-invocable技能作为斜杠命令暴露。名称被清理为a-z0-9_(最多 32 字符);冲突时添加数字后缀(如_2)。/skill <name> [input]按名称运行技能(当原生命令限制阻止按技能创建命令时有用)。- 默认情况下,技能命令作为普通请求转发给模型。
- 技能可以选择声明
command-dispatch: tool来直接路由命令到工具(确定性,不经过模型)。 - 示例:
/prose(OpenProse 插件)— 参见 OpenProse。
- 原生命令参数: Discord 使用自动补全显示动态选项(省略必填参数时显示按钮菜单)。Telegram 和 Slack 在命令支持选项且省略参数时显示按钮菜单。
/tools
/tools 回答的是运行时问题,而不是配置问题:这个 Agent 现在在这次对话中可以使用什么工具。
- 默认
/tools紧凑,适合快速浏览。 /tools verbose添加简短描述。- 支持参数的原生命令平台暴露相同的
compact|verbose模式切换。 - 结果是会话作用域的,因此更改 Agent、频道、线程、发送者授权或模型都可能改变输出。
/tools包含运行时实际可达的工具,包括核心工具、已连接的插件工具和频道拥有的工具。
如需编辑配置文件和覆盖,使用 Control UI 工具面板或配置/目录平面,而不是把 /tools 当作静态目录来用。
用量显示(在哪里显示什么)
- Provider 用量/配额(例如:"Claude 剩余 80%"):在
/status中显示当前模型 Provider 的用量,前提是启用了用量追踪。 - 每次回复的 token/费用:由
/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显示紧凑的编号选择器(模型系列 + 可用 Provider)。- 在 Discord 上,
/model和/models打开带 Provider 和模型下拉框以及提交步骤的交互式选择器。 /model <#>从该选择器中选择(尽可能选择当前 Provider)。/model status显示详细视图,包括配置的 Provider 端点(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更新在重启后持久化。
MCP 更新
/mcp 在 mcp.servers 下写入 OpenClaw 管理的 MCP 服务器定义。仅限所有者。默认禁用;用 commands.mcp: true 启用。
示例:
text
/mcp show
/mcp show context7
/mcp set context7={"command":"uvx","args":["context7-mcp"]}
/mcp unset context7注意:
/mcp将配置存储在 OpenClaw 配置中,而不是 Pi 拥有的项目设置中。- 运行时适配器决定哪些传输实际上可以执行。
插件更新
/plugins 让操作员检查已发现的插件并在配置中切换启用状态。只读流程可以使用 /plugin 作为别名。默认禁用;用 commands.plugins: true 启用。
示例:
text
/plugins
/plugins list
/plugin show context7
/plugins enable context7
/plugins disable context7注意:
/plugins list和/plugins show使用真实的插件发现,针对当前工作区加上磁盘上的配置。/plugins enable|disable只更新插件配置;不安装或卸载插件。- 启用/禁用更改后,重启 Gateway 使其生效。
平台注意事项
- 文本命令在普通聊天会话中运行(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:
channels.slack.slashCommand仍支持单个/openclaw风格的命令。如果你启用commands.native,必须为每个内置命令创建一个 Slack 斜杠命令(名称与/help等相同)。Slack 的命令参数菜单以临时 Block Kit 按钮的形式提供。- Slack 原生例外:注册
/agentstatus(而不是/status),因为 Slack 保留了/status。文本/status在 Slack 消息中仍然有效。
- Slack 原生例外:注册
BTW 临时问题
/btw 是关于当前会话的快速临时问题。
与普通聊天不同:
- 以当前会话为背景上下文,
- 作为独立的无工具一次性调用运行,
- 不改变未来的会话上下文,
- 不写入记录历史,
- 以实时临时结果(而不是普通助理消息)的形式交付。
这让 /btw 在你希望主任务继续进行时获取临时说明时非常有用。
示例:
text
/btw 我们现在在做什么?完整行为和客户端 UX 详情参见 BTW Side Questions。
养龙虾小贴士:
/model和/fast是最常用的两个命令。前者让你快速在不同 AI 模型间切换,后者让你的龙虾进入省钱快速模式——日常聊天时开 fast,需要深度思考时关掉即可。