슬래시 명령
명령은 게이트웨이에서 처리됩니다. 대부분의 명령은 /로 시작하는 독립 메시지로 전송되어야 합니다. 호스트 전용 bash 채팅 명령은 ! <cmd>를 사용합니다(/bash <cmd>가 별칭).
두 가지 관련 시스템이 있습니다:
- 명령: 독립 /... 메시지.
- 지시문: /think, /verbose, /reasoning, /elevated, /exec, /model, /queue.
- 지시문은 모델이 보기 전에 메시지에서 제거됩니다.
- 일반 채팅 메시지(지시문만 아님)에서는 "인라인 힌트"로 처리되며 세션 설정을 유지하지 않습니다.
- 지시문만 있는 메시지(메시지에 지시문만 포함)에서는 세션에 유지되고 확인으로 응답합니다.
- 지시문은 인증된 발신자(채널 allowlist/페어링 + commands.useAccessGroups)에게만 적용됩니다. 인증되지 않은 발신자는 지시문을 일반 텍스트로 취급합니다.
몇 가지 인라인 단축키도 있습니다(allowlist/인증된 발신자만): /help, /commands, /status, /whoami (/id). 즉시 실행되고 모델이 메시지를 보기 전에 제거되며 나머지 텍스트는 일반 흐름을 통해 계속됩니다.
구성
{
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")는 네이티브 명령을 등록합니다.
- Auto: Discord/Telegram에서 켜짐; Slack에서 꺼짐(슬래시 명령을 추가할 때까지); 네이티브 지원이 없는 제공자는 무시됨.
- channels.discord.commands.native, channels.telegram.commands.native, channels.slack.commands.native을 설정하여 제공자별로 재정의(bool 또는 "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을 설정하여 제공자별로 재정의(bool 또는 "auto").
- commands.bash (기본값 false)는 ! <cmd>를 활성화하여 호스트 쉘 명령을 실행합니다(/bash <cmd>는 별칭; tools.elevated allowlist 필요).
- commands.bashForegroundMs (기본값 2000)는 bash가 백그라운드 모드로 전환하기 전에 대기하는 시간을 제어합니다(0은 즉시 백그라운드).
- commands.config (기본값 false)는 /config를 활성화합니다(openclaw.json 읽기/쓰기).
- commands.debug (기본값 false)는 /debug를 활성화합니다(런타임 전용 재정의).
- commands.useAccessGroups (기본값 true)는 명령에 대한 allowlist/정책을 시행합니다.
명령 목록
텍스트 + 네이티브 (활성화된 경우):
- /help
- /commands
- /skill <name> [input] (이름으로 스킬 실행)
- /status (현재 상태 표시; 현재 모델 제공자에 대해 사용 가능한 경우 제공자 사용량/할당량 포함)
- /allowlist (allowlist 항목 나열/추가/제거)
- /approve <id> allow-once|allow-always|deny (exec 승인 프롬프트 해결)
- /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 참조)
- 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> (모델/제공자별 동적 선택; 별칭: /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> (plus options like debounce:2s cap:25 drop:summarize; /queue를 보내서 현재 설정 표시)
- /bash <command> (호스트 전용; ! <command>의 별칭; commands.bash: true + tools.elevated allowlist 필요)
텍스트 전용:
- /compact [instructions] (/concepts/compaction 참조)
- ! <command> (호스트 전용; 한 번에 하나; 장시간 실행 작업에는 !poll + !stop 사용)
- !poll (출력 / 상태 확인; 선택적 sessionId 허용; /bash poll도 작동)
- !stop (실행 중인 bash 작업 중지; 선택적 sessionId 허용; /bash stop도 작동)
참고:
- 명령은 명령과 args 사이에 선택적 :을 허용합니다(예: /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: true로 설정하세요.
- /verbose는 디버깅 및 추가 가시성을 위한 것입니다; 일반 사용에서는 꺼짐 상태로 유지하세요.
- /reasoning (및 /verbose)는 그룹 설정에서 위험합니다: 의도하지 않은 내부 추론 또는 도구 출력을 노출할 수 있습니다. 특히 그룹 채팅에서는 꺼진 상태로 두는 것을 선호하세요.
- 빠른 경로: allowlist에 있는 발신자의 명령 전용 메시지는 즉시 처리됩니다(대기열 + 모델 우회).
- 그룹 언급 게이팅: allowlist에 있는 발신자의 명령 전용 메시지는 언급 요구사항을 우회합니다.
- 인라인 단축키 (allowlist에 있는 발신자만): 특정 명령은 일반 메시지에 포함될 때도 작동하며 모델이 나머지 텍스트를 보기 전에 제거됩니다.
- 예: hey /status는 상태 응답을 트리거하고 나머지 텍스트는 일반 흐름을 통해 계속됩니다.
- 현재: /help, /commands, /status, /whoami (/id).
- 인증되지 않은 명령 전용 메시지는 자동으로 무시되고 인라인 /... 토큰은 일반 텍스트로 처리됩니다.
- 스킬 명령: user-invocable 스킬은 슬래시 명령으로 노출됩니다. 이름은 a-z0-9_로 정리됩니다(최대 32자); 충돌 시 숫자 접미사가 붙습니다(예: _2).
- /skill <name> [input]은 이름으로 스킬을 실행합니다(네이티브 명령 제한이 스킬별 명령을 방지하는 경우 유용).
- 기본적으로 스킬 명령은 일반 요청으로 모델에 전달됩니다.
- 스킬은 선택적으로 command-dispatch: tool을 선언하여 명령을 도구로 직접 라우팅할 수 있습니다(결정론적, 모델 없음).
- 예: /prose (OpenProse 플러그인) — OpenProse 참조.
- 네이티브 명령 인수: Discord는 동적 옵션에 자동 완성을 사용합니다(필수 args를 생략하면 버튼 메뉴 사용). Telegram 및 Slack은 명령이 선택 사항을 지원하고 arg를 생략하면 버튼 메뉴를 표시합니다.
사용 표면 (어디에 무엇이 표시되는가)
- 제공자 사용량/할당량 (예: "Claude 80% left")은 사용량 추적이 활성화된 경우 현재 모델 제공자에 대해 /status에 표시됩니다.
- 응답별 토큰/비용은 /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는 컴팩트한 번호가 매겨진 선택기(모델 패밀리 + 사용 가능한 제공자)를 표시합니다.
- /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를 통해 채팅 세션 대상 지정)
- **/stop**은 활성 채팅 세션을 대상으로 하므로 현재 실행을 중단할 수 있습니다.
- Slack: channels.slack.slashCommand는 단일 /openclaw 스타일 명령에 대해 여전히 지원됩니다. commands.native를 활성화하면 각 내장 명령에 대해 하나의 Slack 슬래시 명령을 생성해야 합니다(/help와 동일한 이름). Slack의 명령 인수 메뉴는 임시 Block Kit 버튼으로 전달됩니다.