斜杠命令

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

有两个相关系统:

  • 命令:独立的 /... 消息
  • 指令/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,文本命令仍然有效?
  • commands.native(默?"auto")注册本机命令?
    • 自动:Discord/Telegram 开启;Slack 关闭(直到你添加斜杠命令);对没有本机支持的 provider 忽略?
    • 设置 channels.discord.commands.nativechannels.telegram.commands.native ?channels.slack.commands.native 覆盖每个 provider(布尔或 "auto")?
    • false 在启动时清除 Discord/Telegram 上先前注册的命令。Slack 命令?Slack 应用中管理,不会自动删除?
  • commands.nativeSkills(默?"auto")在支持时本机注?*技?*命令?
    • 自动:Discord/Telegram 开启;Slack 关闭(Slack 需要为每个技能创建斜杠命令)?
    • 设置 channels.discord.commands.nativeSkillschannels.telegram.commands.nativeSkills ?channels.slack.commands.nativeSkills 覆盖每个 provider(布尔或 "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(可选)为命令授权设置每?provider 的白名单。配置后,它是命令和指令的唯一授权来源(频道白名单/配对?commands.useAccessGroups 被忽略)。使?"*" 作为全局默认值;provider 特定的键覆盖它?
  • commands.useAccessGroups(默?true)当未设?commands.allowFrom 时对命令强制执行白名?策略?

命令列表

文本 + 本机(启用时):

  • /help
  • /commands
  • /skill <name> [input](按名称运行技能)
  • /status(显示当前状态;可用时包含当前模?provider 的使?配额?
  • /allowlist(列?添加/删除白名单条目)
  • /approve <id> allow-once|allow-always|deny(解?exec 批准提示?
  • /context [list|detail|json](解?上下?;detail 显示每个文件 + 每个工具 + 每个技?+ 系统提示大小?
  • /export-session [path](别名:/export)(导出当前会话为带完整系统提示?HTML?
  • /whoami(显示你的发送?id;别名:/id?
  • /session ttl <duration|off>(管理会话级设置,如 TTL?
  • /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 <id|#|all>(立即中止此会话的一个或所有运行中的子代理;无确认消息?
  • /steer <id|#> <message>(立即引导运行中的子代理:尽可能在运行中,否则中止当前工作并在引导消息上重启?
  • /tell <id|#> <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 <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(别名:/elevfull 跳过 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?
  • /usage 控制每个响应的使用页脚;/usage cost ?OpenClaw 会话日志打印本地成本摘要?
  • /restart 默认启用;设?commands.restart: false 禁用?
  • ?Discord 本机命令:/vc join|leave|status 控制语音频道(需?channels.discord.voice 和本机命令;不可用作文本)?
  • Discord 线程绑定命令(/focus/unfocus/agents/session ttl)需要有效启用线程绑定(session.threadBindings.enabled ??channels.discord.threadBindings.enabled)?
  • ACP 命令参考和运行时行为:ACP 代理?
  • /verbose 用于调试和额外可见性;在正常使用中保持关闭?
  • 工具失败摘要仍然在相关时显示,但详细失败文本仅在 /verbose ?on ?full 时包含?
  • /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 在命令支持选项且你省略参数时显示按钮菜单?

使用界面(什么显示在哪里?

  • Provider 使用/配额(示例:“Claude 80% left”)在 /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 更新在重启后持久化?

界面说明

  • 文本命令在正常聊天会话中运行(DM 共享 main,群组有自己的会话)?
  • 本机命令使用隔离会话?
    • Discord:agent:<agentId>:discord:slash:<userId>
    • Slack:agent:<agentId>:slack:slash:<userId>(可通过 channels.slack.slashCommand.sessionPrefix 配置前缀?
    • Telegram:telegram:slash:<userId>(通过 CommandTargetSessionKey 定位聊天会话?
  • /stop 定位活跃聊天会话以便中止当前运行?
  • *Slack? 仍然支持 channels.slack.slashCommand 用于单个 /openclaw 风格命令。如果你启用 commands.native,必须为每个内置命令创建一?Slack 斜杠命令(与 /help 名称相同)。Slack 的命令参数菜单作为临?Block Kit 按钮发送?