Skip to content
广告 · 本站推荐广告

斜杠命令

命令由 Gateway 处理。大多数命令必须作为以 / 开头的独立消息发送。仅限宿主机使用的 bash 聊天命令使用 ! /bash 是其别名)。

有两个相关的系统:

  • 命令(Commands):独立的 /... 消息。
  • 指令(Directives)/think/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,
    debug: false,
    restart: false,
    allowFrom: {
      "*": ["user1"],
      discord: ["user:123"],
    },
    useAccessGroups: true,
  },
}
  • commands.text(默认 true)启用在聊天消息中解析 /...
    • 在没有原生命令的平台上(WhatsApp/WebChat/Signal/iMessage/Google Chat/MS Teams),即使你将其设为 false,文本命令仍然有效。
  • commands.native(默认 "auto")注册原生命令。
    • Auto:在 Discord/Telegram 上开启;在 Slack 上关闭(直到你添加斜杠命令);对不支持原生命令的提供商忽略。
    • 设置 channels.discord.commands.nativechannels.telegram.commands.nativechannels.slack.commands.native 可按提供商覆盖(布尔值或 "auto")。
    • false 会在启动时清除 Discord/Telegram 上先前注册的命令。Slack 命令在 Slack 应用中管理,不会自动删除。
  • commands.nativeSkills(默认 "auto")在支持时原生注册技能命令。
    • Auto:在 Discord/Telegram 上开启;在 Slack 上关闭(Slack 需要为每个技能创建一个斜杠命令)。
    • 设置 channels.discord.commands.nativeSkillschannels.telegram.commands.nativeSkillschannels.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.allowFrom(可选)设置按提供商的命令授权允许列表。配置后,它是命令和指令的唯一授权来源(频道允许列表/配对和 commands.useAccessGroups 将被忽略)。使用 "*" 作为全局默认;特定提供商的键会覆盖它。
  • commands.useAccessGroups(默认 true)在未设置 commands.allowFrom 时,对命令强制执行允许列表/策略。

命令列表

文本 + 原生命令(启用时):

  • /help
  • /commands
  • /skill [input](按名称运行技能)
  • /status(显示当前状态;包含当前模型提供商的用量/配额信息)
  • /allowlist(列出/添加/删除允许列表条目)
  • /approve allow-once|allow-always|deny(解决 exec 审批提示)
  • /context [list|detail|json](解释"上下文";detail 显示每个文件 + 每个工具 + 每个技能 + 系统提示词的大小)
  • /export-session [path](别名:/export)(将当前会话导出为包含完整系统提示词的 HTML)
  • /whoami(显示你的发送者 ID;别名:/id
  • /session idle <hours>(管理聚焦线程绑定的不活跃自动解除聚焦)
  • /session max-age <hours>(管理聚焦线程绑定的硬性最大时长自动解除聚焦)
  • /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(列出此会话的线程绑定代理)
  • /focus <target>(Discord:将此线程或新线程绑定到会话/子代理目标)
  • /unfocus(Discord:移除当前线程绑定)
  • /kill <target>(立即中止当前会话的一个或所有运行中的子代理;无确认消息)
  • /steer <target> <instruction>(立即引导运行中的子代理:在运行中尽可能直接引导,否则中止当前工作并在引导消息上重启)
  • /tell <target> <message>/steer 的别名)
  • /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 仍然有效。
  • /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 <level>(动态选项按模型/提供商确定;别名:/thinking/t
  • /verbose on|full|off(别名:/v
  • /reasoning on|off|stream(别名:/reason;开启时,发送带 Reasoning: 前缀的单独消息;stream = 仅限 Telegram 草稿)
  • /elevated on|off|ask|full(别名:/elevfull 跳过 exec 审批)
  • /exec host=<val> security=<val> ask=<val> node=<val>(发送 /exec 查看当前设置)
  • /model <model>(别名:/models;或从 agents.defaults.models.*.alias 使用 /<alias>
  • /queue <mode>(附加选项如 debounce:2s cap:25 drop:summarize;发送 /queue 查看当前设置)
  • /bash <cmd>(仅限宿主机;! <cmd> 的别名;需要 commands.bash: true + tools.elevated 允许列表)

仅文本命令:

  • /compact [instructions](详见 /concepts/compaction
  • ! <cmd>(仅限宿主机;一次一个;使用 !poll + !stop 处理长时间运行的任务)
  • !poll(检查输出/状态;接受可选 sessionId/bash poll 也可以)
  • !stop(停止运行中的 bash 任务;接受可选 sessionId/bash stop 也可以)

注意事项:

  • 命令在命令和参数之间接受可选的 :(例如 /think: high/send: on/help:)。
  • /new <hint> 接受模型别名、provider/model 或提供商名称(模糊匹配);如果没有匹配,文本将被视为消息正文。
  • 如需完整的提供商用量明细,使用 openclaw status --usage
  • /allowlist add|remove 需要 commands.config=true 并遵守频道的 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 用于调试和额外可见性;在正常使用中保持关闭
  • 工具失败摘要在相关时仍会显示,但详细的失败文本仅在 /verboseonfull 时包含。
  • /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% left")在当前模型提供商启用了用量跟踪时,会在 /status 中显示。
  • 每次响应的 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 显示紧凑的编号选择器(模型系列 + 可用提供商)。
  • 在 Discord 上,/model/models 会打开带有提供商和模型下拉菜单及提交步骤的交互式选择器。
  • /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 更新在重启后仍然保留。

平台说明

  • 文本命令在普通聊天会话中运行(私信共享 main,群组有自己的会话)。
  • 原生命令使用隔离的会话:
    • Discord:agent::<agentId>:discord:slash:<userId>
    • Slack:agent::<agentId>:slack:slash:<userId>(前缀可通过 channels.slack.slashCommand.sessionPrefix 配置)
    • Telegram:telegram:slash:<chatId>(通过 CommandTargetSessionKey 定位聊天会话)
  • /stop 定位活跃的聊天会话,以便中止当前运行。
  • Slack: channels.slack.slashCommand 仍然支持单个 /openclaw 式命令。如果启用 commands.native,你必须为每个内置命令创建一个 Slack 斜杠命令(与 /help 等相同的名称)。Slack 的命令参数菜单以临时 Block Kit 按钮的形式传递。
  • Slack 原生例外:注册 /agentstatus(而非 /status),因为 Slack 保留了 /status。文本 /status 在 Slack 消息中仍然有效。

基于MIT协议开源 | 内容翻译自 官方文档,同步更新