# 斜杠命令 命令由网关处理。大多数命令必须作为以 `/` 开头的**独立**消息发送。 仅限主机的 bash 聊天命令使用 `! \`(`/bash \` 作为别名)。 有两个相关系统: - **命令**:独立的 `/...` 消息。 - **指令**:`/think`、`/verbose`、`/reasoning`、`/elevated`、`/exec`、`/model`、`/queue`。 - 在模型看到消息之前,指令会从消息中被剥离。 - 在普通聊天消息中(非仅指令),它们被视为"内联提示",并且**不会**保留会话设置。 - 在仅包含指令的消息中(消息只包含指令),它们会保留在会话中并回复确认信息。 还有几个**内联快捷方式**(仅限列入白名单/授权的发送者):`/help`、`/commands`、`/status`、`/whoami`(`/id`)。 它们立即运行,在模型看到消息之前被剥离,剩余文本继续通过正常流程。 ## 配置 ```json5 { 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"`)注册原生命令。 - 自动:Discord/Telegram 上开启;Slack 上关闭(直到您添加斜杠命令);对于不支持原生功能的提供商则忽略。 - 设置 `channels.discord.commands.native`、`channels.telegram.commands.native` 或 `channels.slack.commands.native` 以覆盖每个提供商(布尔值或 `"auto"`)。 - `false` 在启动时清除 Discord/Telegram 上先前注册的命令。Slack 命令在 Slack 应用中管理,不会自动删除。 - `commands.nativeSkills`(默认值 `"auto"`)在支持时以原生方式注册**技能**命令。 - 自动:Discord/Telegram 上开启;Slack 上关闭(Slack 需要为每个技能创建一个斜杠命令)。 - 设置 `channels.discord.commands.nativeSkills`、`channels.telegram.commands.nativeSkills` 或 `channels.slack.commands.nativeSkills` 以覆盖每个提供商(布尔值或 `"auto"`)。 - `commands.bash`(默认值 `false`)启用 `! \` 来运行主机 shell 命令(`/bash \` 是别名;需要 `tools.elevated` 白名单)。 - `commands.bashForegroundMs`(默认值 `2000`)控制 bash 在切换到后台模式之前的等待时间(`0` 立即进入后台)。 - `commands.config`(默认值 `false`)启用 `/config`(读取/写入 `openclaw.json`)。 - `commands.debug`(默认值 `false`)启用 `/debug`(仅运行时覆盖)。 - `commands.useAccessGroups`(默认值 `true`)强制执行命令的白名单/策略。 ## 命令列表 文本 + 原生(启用时): - `/help` - `/commands` - `/skill \ [input]`(按名称运行技能) - `/status`(显示当前状态;包括当前模型提供商的用量/配额(如果可用)) - `/allowlist`(列出/添加/删除白名单条目) - `/approve \ 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](/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 `(根据模型/提供商的动态选择;别名:`/thinking`,`/t`) - `/verbose on|full|off`(别名:`/v`) - `/reasoning on|off|stream`(别名:`/reason`;开启时,发送带有 `Reasoning:` 前缀的单独消息;`stream` = 仅 Telegram 草稿) - `/elevated on|off|ask|full`(别名:`/elev`;`full` 跳过执行批准) - `/exec host= security= ask= node=\`(发送 `/exec` 以显示当前设置) - `/model \`(别名:`/models`;或来自 `agents.defaults.models.*.alias` 的 `/\`) - `/queue \`(加上类似 `debounce:2s cap:25 drop:summarize` 的选项;发送 `/queue` 以查看当前设置) - `/bash \`(仅限主机;`! \` 的别名;需要 `commands.bash: true` + `tools.elevated` 白名单) 仅文本: - `/compact [instructions]`(参见 [/concepts/compaction](/concepts/compaction)) - `! \`(仅限主机;一次一个;长时间运行的作业使用 `!poll` + `!stop`) - `!poll`(检查输出/状态;接受可选的 `sessionId`;`/bash poll` 同样有效) - `!stop`(停止正在运行的 bash 作业;接受可选的 `sessionId`;`/bash stop` 同样有效) 注意事项: - 命令在命令和参数之间接受可选的 `:`(例如 `/think: high`、`/send: on`、`/help:`)。 - `/new \` 接受模型别名、`provider/model` 或提供商名称(模糊匹配);如果没有匹配项,则将文本视为消息正文。 - 要获取完整的提供商用量分解,请使用 `openclaw-cn 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 \ [input]` 按名称运行技能(当原生命令限制阻止每技能命令时很有用)。 - 默认情况下,技能命令作为普通请求转发给模型。 - 技能可以选择声明 `command-dispatch: tool` 以直接将命令路由到工具(确定性的,无需模型)。 - 示例:`/prose`(OpenProse 插件)— 参见 [OpenProse](/prose)。 - **原生命令参数:**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:claude-cli /model status ``` 注意事项: - `/model` 和 `/model list` 显示紧凑的编号选择器(模型系列 + 可用提供商)。 - `/model <#>` 从该选择器中选择(并在可能时首选当前提供商)。 - `/model status` 显示详细视图,包括配置的提供商端点(`baseUrl`)和 API 模式(`api`)(如果可用)。 ## 调试覆盖 `/debug` 让您可以设置**仅运行时**配置覆盖(内存,而非磁盘)。仅所有者。默认禁用;使用 `commands.debug: true` 启用。 示例: ``` /debug show /debug set messages.responsePrefix="[openclaw-cn]" /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-cn]" /config unset messages.responsePrefix ``` 注意事项: - 配置在写入前经过验证;无效更改被拒绝。 - `/config` 更新在重启后持续存在。 ## 表面注意事项 - **文本命令** 在正常聊天会话中运行(私信共享 `main`,群组有自己的会话)。 - **原生命令** 使用隔离会话: - Discord:`agent:\:discord:slash:\` - Slack:`agent:\:slack:slash:\`(前缀可通过 `channels.slack.slashCommand.sessionPrefix` 配置) - Telegram:`telegram:slash:\`(通过 `CommandTargetSessionKey` 定位聊天会话) - **`/stop`** 定位活跃聊天会话,以便它可以中止当前运行。 - **Slack:** `channels.slack.slashCommand` 仍支持单个 `/openclaw` 风格的命令。如果启用 `commands.native`,您必须为每个内置命令创建一个 Slack 斜杠命令(与 `/help` 相同名称)。Slack 的命令参数菜单以临时 Block Kit 按钮形式提供。