Slash commands

Các lệnh được xử lý bởi Gateway. Hầu hết các lệnh phải được gửi dưới dạng tin nhắn độc lập bắt đầu bằng /. Lệnh bash chat chỉ dành cho host sử dụng cú pháp ! <cmd> (với /bash <cmd> là alias).

Có hai hệ thống liên quan:

  • Commands: tin nhắn độc lập dạng /....
  • Directives: /think, /verbose, /reasoning, /elevated, /exec, /model, /queue.
    • Directives được loại bỏ khỏi tin nhắn trước khi model nhìn thấy.
    • Trong tin nhắn chat thông thường (không chỉ có directive), chúng được xử lý như “inline hints” và không lưu cài đặt session.
    • Trong tin nhắn chỉ có directive (tin nhắn chỉ chứa directives), chúng được lưu vào session và trả về xác nhận.
    • Directives chỉ được áp dụng cho người gửi được ủy quyền (channel allowlists/pairing cộng với commands.useAccessGroups). Người gửi không được ủy quyền sẽ thấy directives được xử lý như văn bản thông thường.

Ngoài ra còn có một số inline shortcuts (chỉ dành cho người gửi được allowlist/ủy quyền): /help, /commands, /status, /whoami (/id). Chúng chạy ngay lập tức, được loại bỏ trước khi model nhìn thấy tin nhắn, và phần văn bản còn lại tiếp tục qua luồng xử lý bình thường.

Config

{
  commands: {
    native: "auto",
    nativeSkills: "auto",
    text: true,
    bash: false,
    bashForegroundMs: 2000,
    config: false,
    debug: false,
    restart: false,
    useAccessGroups: true,
  },
}
  • commands.text (mặc định true) bật phân tích cú pháp /... trong tin nhắn chat.
    • Trên các nền tảng không có native commands (WhatsApp/WebChat/Signal/iMessage/Google Chat/MS Teams), text commands vẫn hoạt động ngay cả khi các bạn đặt giá trị này thành false.
  • commands.native (mặc định "auto") đăng ký native commands.
    • Auto: bật cho Discord/Telegram; tắt cho Slack (cho đến khi các bạn thêm slash commands); bỏ qua cho các provider không hỗ trợ native.
    • Đặt channels.discord.commands.native, channels.telegram.commands.native, hoặc channels.slack.commands.native để ghi đè cho từng provider (bool hoặc "auto").
    • false xóa các lệnh đã đăng ký trước đó trên Discord/Telegram khi khởi động. Slack commands được quản lý trong Slack app và không tự động xóa.
  • commands.nativeSkills (mặc định "auto") đăng ký skill commands dưới dạng native khi được hỗ trợ.
    • Auto: bật cho Discord/Telegram; tắt cho Slack (Slack yêu cầu tạo một slash command cho mỗi skill).
    • Đặt channels.discord.commands.nativeSkills, channels.telegram.commands.nativeSkills, hoặc channels.slack.commands.nativeSkills để ghi đè cho từng provider (bool hoặc "auto").
  • commands.bash (mặc định false) bật ! <cmd> để chạy lệnh shell trên host (/bash <cmd> là alias; yêu cầu tools.elevated allowlists).
  • commands.bashForegroundMs (mặc định 2000) kiểm soát thời gian bash chờ trước khi chuyển sang chế độ background (0 chuyển background ngay lập tức).
  • commands.config (mặc định false) bật /config (đọc/ghi openclaw.json).
  • commands.debug (mặc định false) bật /debug (ghi đè chỉ trong runtime).
  • commands.useAccessGroups (mặc định true) áp dụng allowlists/policies cho các lệnh.

Danh sách lệnh

Text + native (khi được bật):

  • /help
  • /commands
  • /skill <name> [input] (chạy một skill theo tên)
  • /status (hiển thị trạng thái hiện tại; bao gồm provider usage/quota cho model provider hiện tại khi có sẵn)
  • /allowlist (liệt kê/thêm/xóa các mục allowlist)
  • /approve <id> allow-once|allow-always|deny (giải quyết các prompt phê duyệt exec)
  • /context [list|detail|json] (giải thích “context”; detail hiển thị kích thước per-file + per-tool + per-skill + system prompt)
  • /whoami (hiển thị sender id của bạn; alias: /id)
  • /subagents list|stop|log|info|send (kiểm tra, dừng, log, hoặc gửi tin nhắn đến các sub-agent runs cho session hiện tại)
  • /config show|get|set|unset (lưu config vào disk, chỉ owner; yêu cầu commands.config: true)
  • /debug show|set|unset|reset (ghi đè runtime, chỉ owner; yêu cầu commands.debug: true)
  • /usage off|tokens|full|cost (footer usage cho mỗi response hoặc tóm tắt chi phí local)
  • /tts off|always|inbound|tagged|status|provider|limit|summary|audio (điều khiển TTS; xem /tts)
    • Discord: native command là /voice (Discord dành riêng /tts); text /tts vẫn hoạt động.
  • /stop
  • /restart
  • /dock-telegram (alias: /dock_telegram) (chuyển replies sang Telegram)
  • /dock-discord (alias: /dock_discord) (chuyển replies sang Discord)
  • /dock-slack (alias: /dock_slack) (chuyển replies sang Slack)
  • /activation mention|always (chỉ groups)
  • /send on|off|inherit (chỉ owner)
  • /reset hoặc /new [model] (gợi ý model tùy chọn; phần còn lại được truyền qua)
  • /think <off|minimal|low|medium|high|xhigh> (lựa chọn động theo model/provider; aliases: /thinking, /t)
  • /verbose on|full|off (alias: /v)
  • /reasoning on|off|stream (alias: /reason; khi bật, gửi một tin nhắn riêng có tiền tố Reasoning:; stream = chỉ Telegram draft)
  • /elevated on|off|ask|full (alias: /elev; full bỏ qua exec approvals)
  • /exec host=<sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id> (gửi /exec để hiển thị hiện tại)
  • /model <name> (alias: /models; hoặc /<alias> từ agents.defaults.models.*.alias)
  • /queue <mode> (cộng với các tùy chọn như debounce:2s cap:25 drop:summarize; gửi /queue để xem cài đặt hiện tại)
  • /bash <command> (chỉ host; alias cho ! <command>; yêu cầu commands.bash: true + tools.elevated allowlists)

Chỉ text:

  • /compact [instructions] (xem /concepts/compaction)
  • ! <command> (chỉ host; một lần một lệnh; dùng !poll + !stop cho các job chạy lâu)
  • !poll (kiểm tra output / status; chấp nhận sessionId tùy chọn; /bash poll cũng hoạt động)
  • !stop (dừng bash job đang chạy; chấp nhận sessionId tùy chọn; /bash stop cũng hoạt động)

Lưu ý:

  • Các lệnh chấp nhận dấu : tùy chọn giữa lệnh và args (ví dụ: /think: high, /send: on, /help:).
  • /new <model> chấp nhận model alias, provider/model, hoặc tên provider (fuzzy match); nếu không khớp, văn bản được xử lý như nội dung tin nhắn.
  • Để xem chi tiết provider usage breakdown, dùng openclaw status --usage.
  • /allowlist add|remove yêu cầu commands.config=true và tuân theo channel configWrites.
  • /usage điều khiển footer usage cho mỗi response; /usage cost in tóm tắt chi phí local từ OpenClaw session logs.
  • /restart bị tắt mặc định; đặt commands.restart: true để bật.
  • /verbose dùng để debug và tăng khả năng hiển thị; giữ tắt trong sử dụng bình thường.
  • /reasoning (và /verbose) có rủi ro trong cài đặt group: chúng có thể tiết lộ reasoning nội bộ hoặc tool output mà các bạn không có ý định để lộ. Nên để tắt, đặc biệt trong group chats.
  • Fast path: tin nhắn chỉ có lệnh từ người gửi được allowlist được xử lý ngay lập tức (bypass queue + model).
  • Group mention gating: tin nhắn chỉ có lệnh từ người gửi được allowlist bypass yêu cầu mention.
  • Inline shortcuts (chỉ người gửi được allowlist): một số lệnh nhất định cũng hoạt động khi được nhúng trong tin nhắn thông thường và được loại bỏ trước khi model nhìn thấy văn bản còn lại.
    • Ví dụ: hey /status kích hoạt status reply, và văn bản còn lại tiếp tục qua luồng xử lý bình thường.
  • Hiện tại: /help, /commands, /status, /whoami (/id).
  • Tin nhắn chỉ có lệnh không được ủy quyền bị bỏ qua im lặng, và các token inline /... được xử lý như văn bản thông thường.
  • Skill commands: các skills user-invocable được hiển thị dưới dạng slash commands. Tên được làm sạch thành a-z0-9_ (tối đa 32 ký tự); xung đột nhận hậu tố số (ví dụ: _2).
    • /skill <name> [input] chạy một skill theo tên (hữu ích khi giới hạn native command ngăn các lệnh per-skill).
    • Mặc định, skill commands được chuyển tiếp đến model như một request bình thường.
    • Skills có thể tùy chọn khai báo command-dispatch: tool để định tuyến lệnh trực tiếp đến một tool (deterministic, không có model).
    • Ví dụ: /prose (OpenProse plugin) — xem OpenProse.
  • Native command arguments: Discord sử dụng autocomplete cho các tùy chọn động (và button menus khi các bạn bỏ qua args bắt buộc). Telegram và Slack hiển thị button menu khi một lệnh hỗ trợ lựa chọn và các bạn bỏ qua arg.

Usage surfaces (hiển thị ở đâu)

  • Provider usage/quota (ví dụ: “Claude 80% left”) hiển thị trong /status cho model provider hiện tại khi usage tracking được bật.
  • Per-response tokens/cost được điều khiển bởi /usage off|tokens|full (được thêm vào các replies bình thường).
  • /model status là về models/auth/endpoints, không phải usage.

Chọn model (/model)

/model được triển khai như một directive.

Ví dụ:

/model
/model list
/model 3
/model openai/gpt-5.2
/model opus@anthropic:default
/model status

Lưu ý:

  • /model/model list hiển thị một picker nhỏ gọn, được đánh số (model family + các providers có sẵn).
  • /model <#> chọn từ picker đó (và ưu tiên provider hiện tại khi có thể).
  • /model status hiển thị chế độ xem chi tiết, bao gồm provider endpoint đã cấu hình (baseUrl) và API mode (api) khi có sẵn.

Debug overrides

/debug cho phép các bạn đặt các ghi đè config chỉ trong runtime (memory, không phải disk). Chỉ owner. Bị tắt mặc định; bật với commands.debug: true.

Ví dụ:

/debug show
/debug set messages.responsePrefix="[openclaw]"
/debug set channels.whatsapp.allowFrom=["+1555","+4477"]
/debug unset messages.responsePrefix
/debug reset

Lưu ý:

  • Các ghi đè áp dụng ngay lập tức cho các lần đọc config mới, nhưng không ghi vào openclaw.json.
  • Dùng /debug reset để xóa tất cả các ghi đè và quay lại config trên disk.

Cập nhật config

/config ghi vào config trên disk của các bạn (openclaw.json). Chỉ owner. Bị tắt mặc định; bật với commands.config: true.

Ví dụ:

/config show
/config show messages.responsePrefix
/config get messages.responsePrefix
/config set messages.responsePrefix="[openclaw]"
/config unset messages.responsePrefix

Lưu ý:

  • Config được xác thực trước khi ghi; các thay đổi không hợp lệ bị từ chối.
  • Các cập nhật /config được lưu qua các lần khởi động lại.

Ghi chú về Surface

  • Text commands chạy trong session chat bình thường (DMs chia sẻ main, groups có session riêng).
  • Native commands sử dụng các sessions riêng biệt:
    • Discord: agent:<agentId>:discord:slash:<userId>
    • Slack: agent:<agentId>:slack:slash:<userId> (prefix có thể cấu hình qua channels.slack.slashCommand.sessionPrefix)
    • Telegram: telegram:slash:<userId> (nhắm đến chat session qua CommandTargetSessionKey)
  • /stop nhắm đến active chat session để có thể hủy run hiện tại.
  • Slack: channels.slack.slashCommand vẫn được hỗ trợ cho một lệnh kiểu /openclaw duy nhất. Nếu các bạn bật commands.native, các bạn phải tạo một Slack slash command cho mỗi lệnh built-in (cùng tên với /help). Command argument menus cho Slack được gửi dưới dạng các nút Block Kit ephemeral.