斜線命令
OpenClaw 閘道處理的斜線命令系統,包含命令、指令和內嵌捷徑。
命令由閘道處理。大多數命令必須作為以 / 開頭的獨立訊息傳送。僅限主機的 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,文字命令仍然有效。
- 在無原生命令的平台上(WhatsApp/WebChat/Signal/iMessage/Google Chat/MS Teams),即使設為
commands.native(預設"auto")註冊原生命令。- 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")在支援時原生註冊技能命令。- Auto:Discord/Telegram 啟用;Slack 關閉(Slack 需要為每個技能建立斜線命令)。
- 設定
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(解決 exec 核准提示)/context [list|detail|json](解釋「上下文」;detail顯示每個檔案 + 每個工具 + 每個技能 + 系統提示大小)/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(列出此工作階段的討論串綁定代理)/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仍然有效。
- 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 核准)/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](參閱 壓縮)! <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: 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用於除錯和額外可見性;正常使用時保持關閉。- 工具失敗摘要在相關時仍會顯示,但詳細的失敗文字僅在
/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以將命令直接路由到工具(確定性,無模型)。
- 原生命令引數: 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更新在重啟後持續有效。
平台注意事項
- 文字命令在正常聊天工作階段中執行(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相同的名稱)。命令引數選單以暫態性 Block Kit 按鈕的形式在 Slack 上傳遞。- Slack 原生例外:註冊
/agentstatus(不是/status),因為 Slack 保留了/status。文字/status在 Slack 訊息中仍然有效。
- Slack 原生例外:註冊