문서 검색...

문서를 검색하려면 입력을 시작하세요

채팅 가이드

매크로(CBS)

어떤 프롬프트 텍스트에서든 쓰는 중괄호 스크립팅.

문법

매크로는 요청 시점에 확장되는 이중 중괄호 토큰입니다. 캐릭터 필드, 로어북 항목, 프리셋, 인사말, 일반 채팅 텍스트에서 동작하며 중첩도 됩니다.

text
{{char}} smiles at {{user}}.
{{random::sunny::rainy::foggy}}
{{calc::1+2*3}}

인자는 이중 콜론으로 구분합니다. 모르는 매크로는 오류 대신 빈 값으로 풀리므로 오타가 요청을 깨뜨리는 일은 없습니다.

핵심 매크로

매크로확장 결과
{{char}}현재 캐릭터 이름(그룹 채팅에서는 현재 화자).
{{user}}내 페르소나 이름.
{{persona}}내 페르소나 설명.
{{description}}현재 캐릭터의 설명 필드.
{{lastmessage}}가장 최근 메시지의 본문.
{{time}} / {{date}}내 로캘과 시간대 기준의 현재 시각/날짜.

랜덤

random은 확장할 때마다 새로 고르고, pick은 대화 동안 고정된 선택을 하며, roll은 d 표기법으로 주사위를 굴립니다.

text
{{random::a::b::c}}   {{pick::a::b::c}}   {{roll::d20}}

굴림과 랜덤은 턴마다 시드됩니다. 재생성은 같은 값을 재사용하므로 스와이프해도 주사위가 다시 굴려지지 않습니다.

변수

채팅 변수는 대화 분기별로, 전역 변수는 모든 채팅에 걸쳐 유지됩니다. 매크로가 되는 어떤 텍스트에서든, 혹은 트리거 스크립트에서 설정하세요.

text
{{setvar::mood::happy}}
{{getvar::mood}}
{{setglobalvar::visits::1}}

분기 범위 저장이라 다른 분기로 스와이프하면 그 분기의 변수 상태가 복원됩니다. 형제 분기끼리 값이 새는 일은 없습니다.

블록 형식

블록은 내용을 감쌉니다. if는 조건이 참일 때만 본문을 그리고, each는 슬롯 치환으로 배열을 돌고, when은 줄 단위 else 분기를 더합니다.

text
{{#if {{equal::{{getvar::mood}}::happy}}}}
{{char}} is in a great mood.
{{/if}}

{{#each {{array::red::green::blue}} item}}
Color: {{slot::item}}
{{/each}}

pure와 escape는 리터럴 중괄호를 확장에서 보호합니다. 닫는 태그는 무엇이든 가장 안쪽의 열린 블록을 닫습니다.

주석과 리터럴

주석 매크로는 모델이 보기 전에 사라져 카드 필드 속 메모로 안성맞춤입니다. 매크로 문법을 그대로 보여줘야 할 땐 pure 블록을 쓰세요.

text
{{// note to self, never sent to the model}}
{{#pure}}{{char}} stays literal here{{/pure}}
UnoRouter의 CBS 매크로