zip 묶음 — 카드+모듈+이미지 동봉 — 풀어서 개별 임포트
조회 2245 · 2026-05-19
RISUAI · DOCS · AUX
LUA · AXLLM · ASSET DELEGATION
Aux-Model
Asset Output
GUIDE
캐릭터 이미지 & 상태창 출력을 보조 모델에 위임하는
검증된 Lua 구현 패턴
—
메인 모델은 내러티브만, 보조 모델은 후처리 JSON Patch.
AUTHOR
CANISTER
VERSION
2.0
YEAR
MMXXVI
11
SECTIONS
05
PATTERNS
07
PITFALLS
14
CHECKLIST
FIRST READ
아래 내용 어려워보여도 OK
md 파일 넣고 "해줘" 하면 끝
아래 기술 설명은
LLM이 참고하는 내용
이에요. 당신이 이해할 필요 없습니다.
md 파일 다운받아 LLM에 첨부하고, 만들고 싶은 봇 정보만 자연어로 알려주면 됩니다.
STEP · 01
↓
DOWNLOAD
md 파일 받기
(↓ DOWNLOAD 섹션)
STEP · 02
ATTACH
Claude · GPT · Codex
아무거나 OK
STEP · 03
→
DESCRIBE
봇 정보 알려주고
"만들어줘" 한 마디
> EXAMPLE
"md 첨부했어. 우리 봇 캐릭터 A, B 있고
SFW emotion은 ... 야.
가이드대로 만들어줘.
"
↓ 더 자세한 사용법은
HOW TO USE
섹션에 있어요 (페이지 하단)
CONTENTS
목차
01
왜 두 모델 분리인가
02
전체 아키텍처
03
토글 레이아웃
04
Lua 트리거 구조
05
로어북 외부화 패턴
★
06
5가지 핵심 패턴
★
07
리롤 버튼 규칙
08
strip_thinking + Fallback
09
추론 레벨 대응
★
10
Inline 폴백
11
함정과 주의사항
12
최소 스켈레톤
13
체크리스트
CHAPTER 01 · OPENING
왜 두 모델 분리인가
메인 모델은 내러티브에 집중, 보조 모델은 후처리 태그 삽입. 두 역할을 분리하면 모델별 자유도를 제어하기 쉬워집니다.
캐릭터 봇이
<sometag="Character_emotion">
같은 이미지 태그를 출력해야 하는데, 메인 모델에 시키면 흔히 다음 문제가 생깁니다:
▷
잘못된 캐릭터 / 잘못된 emotion 출력
▷
아예 태그를 빼먹음
▷
asset list에 없는 hallucinated emotion 이름
▷
"태그 출력 방법" 가이드가 매 턴 프롬프트를 inflate
SOLUTION
메인 모델은
내러티브 + 대사만
쓰고, 보조 모델(
axLLM
)이 후처리 단계에서 태그 삽입. 보조 모델은 완성된 내러티브를 보고 "어느 줄에 어떤 태그?" 만 답하면 되므로 훨씬 제약하기 쉽습니다.
02
CHAPTER 02
전체 아키텍처
flow · main → onOutput → aux → apply
User prompt ——►
┌─────────────────────────────────────┐
│
MAIN MODEL
│
│
• 내러티브 & 대사
│
│
• (Main Mode) 태그도 직접 출력
│
└──────────────┬──────────────────────┘
▼
┌──────────────────────────────────────┐
│
onOutput(id)
— Lua hook
│
│
1. 마지막 char 메시지 읽기
│
│
2. build_prompt: rules + chars +
│
│
numbered narrative
│
│
3.
axLLM(id, msgs)
→ JSON patches
│
│
4. apply_patches → setChat
│
└──────────────────────────────────────┘
┌── 수동 리롤 버튼 ───────────────────────┐
│
listenEdit
("editDisplay") → 마지막 메시지 부착
│
│
onButtonClick
→ 같은 흐름 수동 실행
│
└────────────────────────────────────────────────┘
CHAPTER 03
▾
03_toggle_layout/
// namespace prefix · customModuleToggle 형식
네임스페이스 prefix 하나 정해서 (
MYBOT_
등) 일관 사용:
=
My Bot Asset System=group
MYBOT_ASSET_MODE
=
에셋 출력=select=꺼짐,
메인 모델,
보조모델
MYBOT_STATUS
=
상태창=select=꺼짐,
메인 모델,
보조모델
MYBOT_NSFW
=
NSFW(on/off)
MYBOT_LIMIT
=
태그 제한=select=무제한,1개,3개,5개
=
My Bot Asset System=groupEnd
MODE
VALUES
NOTE
3-state
0=꺼짐 · 1=메인 · 2=보조
모듈 silently disabled 가능
2-state
0=메인 · 1=보조
단순. OFF는 모듈 자체 비활성
WARNING
모드 값 의미가 모듈마다 다름.
mode == "0"
이 OFF인지 메인인지 컨벤션 확인 후 게이트 작성.
CHAPTER 04 · STRUCTURE
Lua 트리거 구조
single trigger · lowLevelAccess: true
모듈은
단일 trigger
(type:
start
,
lowLevelAccess: true
) 안에 모든 Lua 통합:
trigger.lua
LUA
-- ============ 봇별 Config (REPLACE) ============
local
SFW_EMOTIONS =
"smile, happy, sad, angry, ..."
local
NSFW_POSITIONS =
"kiss, embrace, ..."
local
CHARACTERS = {
{ prefix =
"Alice"
, emotions = SFW_EMOTIONS, ctype =
"main"
},
{ prefix =
"Bob"
, emotions = SFW_EMOTIONS, ctype =
"main"
},
}
local
KOR_TO_ENG = { [
"앨리스"
]=
"Alice"
, [
"밥"
]=
"Bob"
}
-- ============ Helpers ============
local function
number_lines
(content) ...
end
local function
strip_thinking
(raw) ...
end
local function
try_inline_fallback
(raw, original) ...
end
local function
apply_patches
(content, patches) ...
end
-- ============ Hooks ============
onOutput = async(
function
(id) ...
end
)
-- 자동 처리
onButtonClick = async(
function
(id, data) ...
end
)
-- 리롤
listenEdit
(
"editDisplay"
,
function
(id, data, meta) ...
end
)
05
CHAPTER 05 ·
MAINTAIN
로어북 외부화 패턴
kor mapping in lorebook · ensure on first call
인라인
local KOR_TO_ENG = {...}
테이블은 신규 캐릭/별칭 추가 때마다
Lua 재배포
가 필요합니다. 로어북 entry로 외부화하면 lorebook 한 줄만 수정해서 자동 반영.
EFFECT
신규 캐릭 추가 시 Lua 빌드/배포
불필요
. 로어북 JSON 한 줄 추가만으로 alias 매칭이 즉시 반영됩니다.
TRADE-OFF · INLINE vs EXTERNALIZE
이 가이드는
외부화 (인라인 삭제)
노선을 택합니다. 인라인 유지 vs 외부화 트레이드오프:
A. INLINE 유지
자급자족 단일 파일
▷
Lua 한 파일로 완결. 로어북 entry 누락 사고 0
▷
fetch_lore
RPC 호출 없음 → 초기 로드 미세하게 빠름
▷
모듈 export/import 시 자동 동봉
언제:
캐릭 추가 사실상 안 함, 단일 사용자, 빌드 환경 자유로움
B. INLINE 제거 (외부화) ★
유지보수 편의 우위
▷
신규 캐릭/별칭 추가 = lorebook JSON 한 줄. Lua 재배포 X
▷
다른 봇/모듈에서 매핑 entry 재사용 가능
▷
사용zip 455,441B · 원본 Download 2026-08-06T22-41-37-606Z.zip