슬래시 명령
명령은 게이트웨이에서 처리됩니다. 대부분의 명령은 /로 시작하는 독립 메시지로 보내야 합니다.
호스트 전용 bash 채팅 명령은 ! <cmd>를 사용합니다(/bash <cmd>가 별칭).
관련된 두 가지 체계가 있습니다:
- 명령: 독립적인
/...메시지. - 디렉티브:
/think,/fast,/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로 프로바이더별 재정의(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허용 목록 필요).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(실행 승인 프롬프트 해결)/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)/fast status|on|off(인수 생략 시 현재 유효 fast-mode 상태 표시)/verbose on|full|off(별칭:/v)/reasoning on|off|stream(별칭:/reason; 활성화 시Reasoning:접두사가 붙은 별도 메시지 전송;stream은 Telegram 초안 전용)/elevated on|off|ask|full(별칭:/elev;full은 실행 승인 건너뜀)/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, 프로바이더 이름(퍼지 매치)을 허용합니다. 매치가 없으면 텍스트가 메시지 본문으로 처리됩니다.- 전체 프로바이더 사용량 분석은
openclaw status --usage를 사용하세요. /allowlist add|remove는commands.config=true가 필요하며 채널configWrites를 준수합니다.- 멀티 계정 채널에서 설정 대상
/allowlist --account <id>및/config set channels.<provider>.accounts.<id>...도 대상 계정의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 에이전트.
/verbose는 디버깅과 추가 가시성을 위한 것입니다. 일반 사용 시에는 꺼두세요./fast on|off는 세션 재정의를 유지합니다. Sessions UI의inherit옵션을 사용하여 이를 해제하고 설정 기본값으로 폴백하세요.- 도구 실패 요약은 관련될 때 여전히 표시되지만, 상세한 실패 텍스트는
/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은 명령에 선택지가 있고 인수를 생략하면 버튼 메뉴를 표시합니다.
사용 화면 (어디에 무엇이 표시되는가)
- 프로바이더 사용량/할당량 (예: “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는 간결한 번호가 매겨진 선택기를 표시합니다(모델 패밀리 + 사용 가능한 프로바이더).- Discord에서
/model과/models는 프로바이더 및 모델 드롭다운과 Submit 단계가 있는 대화형 선택기를 엽니다. /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와 동일한 이름). Slack의 명령 인수 메뉴는 임시 Block Kit 버튼으로 전달됩니다.- Slack 네이티브 예외: Slack이
/status를 예약하므로/agentstatus를 등록하세요(텍스트/status는 Slack 메시지에서 여전히 작동).
- Slack 네이티브 예외: Slack이