risum 모듈 — RISU modules[] — 기능 확장
👍 37 · 조회 1932 · 2026-05-08
업데이트 노트 - 여러가지 찐빠 대폭 개선. 이제 출력물은 안정적인 구조를 유지함. - 상태창 옵션 중 '자체 상태창' 출력의 시간 타겟팅 기능은, 이제 24시간 체제가 아닌 상황도 감지함.(중세, 판타지 등 상황에서 24시간이 아니어도, 억지로 24시간으로 바꾸지 않고 그 조건 하에서 반영됨) - 상태창 옵션 중 '자체 상태창' 출력에 '소지품 저장' 공간이 추가됨. 모델은 이제 플레이어가 가지고 있는 소지품(물리적인 소지품이 아니라 정보, 상처와 질환까지)을 기억하고 전개에 계속해서 상향적으로 반영함. - 이제 아이네는 페르소나의 행동을 멋대로 판단하거나, 페르소나를 제어하려 하지 않고 유저가 대응할 만한 상황을 부여하는 식으로 작동함(RP모드, 시뮬 모드 한정. 소설 모드에서는 비활성화 되는 기능) - 각 인물이 알고 있는 정보, 알아선 안 되는 정보를 매 턴 체크하는 기능 강화. 인물들은 알려주지 않으면, 페르소나의 이름조차 모름(사실 페르소나 이름까지는 찐빠 가능성이 있긴 하지만, 기본적으로 몰라야하는 정보를 출력 전에 체크하는 기능이 강화됨) ---- 1. 이번 버전은 기능적 추가보다는 기존 기능의 안정화에 집중됨 2. 각종 출력 찐빠를 대폭 개선, 출력물 찐빠 문제가 대부분 해결됨 3. 아이네3 버전에 기획된 기능이 제대로 적용되진 않은 상황이라 사실상 아이네2의 최종 안정화 버전에 가까움 4. 안정화는 충분한 것 같으니, 다음은 베타가 아닌 핵심 기능이 추가된 찐아이네3 만들기에 집중할 예정 ※중요! 1. 딥식의 경우 추론 파라미터 'none'을 기준으로 테스트되었습니다. 물론 추론을 켜도 문제는 없을거라 생각함 아마도..? 2. '반복 부수기 활성화' 토글은 사실상 프롬의 핵심 기능에 복합적으로 엮여 있으니 켜는 걸 적극 권장. 만들다보니 다른 기능들이 이 기능에 엮여서 작동되는 식으로 구조가 되어버려서, 이걸 끄면 다른 의도된 기능들도 작동을 안할 수 있음.. 3. 딥시크 모델에서 간혹 COT만 출력되는 문제가 있는데, 이는 프롬으로 개선하기보다는 모델 자체의 문제 혹은 모델과 프롬 구조의 부분적 충돌인 것 같음. 자주 나오진 않아 큰 불편은 아니니 그냥 리롤 돌리면 됨 * 클로드에서도 작동하는 것 확인, 다만 프리필을 켜야할 가능성이 있고, 최적화되어있기보다는 그냥 '작동은 한다' 정도니 찍먹 정도 권장 소개 - 시간 흐름 정상화(시간 흐름을 타게팅하여 시뮬레이션) - 철저한 비밀 관리(캐릭터가 현재 보유한 제한적 정보 검증, 인물은 알아야 하는 것만 알고 있으며 몰라야 하는 것은 모름) - 적응형 응답 문단 길이, 서술 순서, 문단 구조 스타일, 이벤트의 강도와 발생 빈도를 매번 적절하게 판단, 반복적인 서사 구조 배제 - 유저는 실패할 수 있음. 모든 상황이 마냥 유저친화적으로 가는 무조건적인 긍정 전개 억제. 간단 사용법 1. 응답모드 내가 하고 있는 봇에 따라 적절하게 선택 2. 아이네? 나레이션의 개입 유무를 결정 ※기본적으로 생각하기 귀찮다 하면 '아이네에게 맡김'으로 전부 세팅하기. 해당 설정의 경우 매 상황에 맞춰서 응답 방식을 판단하는 적응형으로 구현됨 응답 언어 설정: 한국어, 영어, 일본어, 대사만 한글 지원 문단 수 설정: 응답의 총 문단 수 설정 문단당 문장 수: 문단 당 포함하는 문장 수. 이벤트 매콤 수준: 이벤트의 강도(격렬하거나, 일상적이거나) 결정 *빈도와는 관련 없어요 이벤트 빈도: 이벤트가 발생하는 빈도(잦거나, 아예 발생하지 않는 일상이 이어지거나) 결정. *각 이벤트의 강도와는 관련 없어요 장면 집중 모드: 현재 상황의 어떤 부분에 집중해야 하는지 수동으로 설정 가능. 적응형의 경우 아래 세 가지 중 현재 상황에 적절한 것을 판단하여 적용돼요 NPC의 리액션 강도: 인물의 리액션 스타일을 결정(현실적~과장된), 각 모델의 특성에 따라 대응하는 용도로 사용 가능해요 모듈 활성화 유무 설정 - 시뮬레이션에 적용되는 애드온/모듈의 활성화 유무를 설정하는 항목. - 모든 항목은 채팅 중간에 자유롭게 껐다가 켤 수 있음. (1) 챕터/에피소드 타이틀 활성화 - 챕터/에피소드/이벤트 타이틀을 끄고 켭니다. (2) 상태창 제어 - 상태창 없는 봇에 사용할 수 있는 기초적인 상태창 모듈을 제공합니다. - 상태창이 있는 봇의 경우, 상태창을 확정적으로 출력하는 기능을 제공합니다. (3) 아이네의 팁 활성화 - 아이네가 직접 제공하는 이 시뮬레이션 월드의 팁입니다! 언제든 끄고 켤 수 있으니 안심하고 써보세요 (4) 선택지 활성화 - 아이네가 제공하는 선택지입니다. 컨택 오염도 없고, 언제든지 끄고켤 수 있습니다 - 사용할 때는 번호보다는 선택지의 문구 자체를 입력하는 것을 추천합니다. (5) 이모지 지도 활성화 - 이모지로만 이루어진 지도입니다. (6) 이어쓰기 모드 활성화 - 딸깍딸깍 장면을 무한 이어보기 하고 싶을 때 쓰세요. !(7) 반복 부수기 활성화 - 사실 프롬의 핵심 기능이기에 켜는 걸 추천합니다 (8) 전투 퀄리티 강화(전투 보고서 생성) - 전투가 진행될 때 켜면 좋습니다. 전투 장면 자체를 재밌게 만들어줘요. - 전투의 시작과 끝 지점을 식별한 뒤, 전투 결과 보고서(전투 후 어떤 변화가 있었는지)를 정리해줍니다. (9) 프리필 활성화(OOC모드 중 off 권장) - 검열 해제를 강화해주는 프리필을 활성화 합니다. - OOC모드에서는 끄는 걸 추천합니다. 커스텀 스타일 1. 커스텀 스타일: 내가 원하는 작가를 입력, 중복 입력 가능 2. 2차 창작봇용 원작 제목: 원작에 대한 데이터에 집중시키는 기능 태그 모음 열어보고 원하는 거 체크하기! 다운로드: https://realm.risuai.net/character/33b1cabe-0875-4592-9802-6c97290ea6ba 전용 모듈(업데이트 필수): https://drive.proton.me/urls/6XJFJEGTCG#CmyaO7sQKWzC 하이파 세팅 참고: https://arca.live/b/characterai/170063842?p=1 ※ 영감을 준 게시물들 작가의 노트 사용 설명서 / 가이드 (for 뉴비) - 7/9 업뎃 - AI 채팅 채널 (영감을 받은 요소: 태그 구조) 서리 프롬프트 for Gemini Pro 2.5 v10 - AI 채팅 채널 (영감을 받은 요소: 내러티블 타이틀 구조) 소악마 프롬프트 v5-2 [for Gem2.5 Pro] - AI 채팅 채널 (영감을 받은 요소: 작가 스타일과 2차창작용 월드 태그) CC BY-NC-SA 4.0 국제 라이선스 적용 1. 이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스 에 따라 이용할 수 있습니다. 2. 이 저작물은 아카라이브 커뮤니티 - AI 채팅 채널을 위해 공개되었으며, 해당 커뮤니티 외 타 채널 혹은 커뮤니티, 기타 모든 경로를 통한 공유, 배포는 금지됩니다 . 3. 상업적 용도의 경우 어떠한 이유로도 이용할 수 없습니다. 4. 리믹스, 변형, 2차적 저작물을 작성하고 그 결과물을 공유할 경우에는 원 저작물과 동일한 조건의 CCL을 적용하여야 합니다. 5. 이 저작물은 리스 렐름( RisuRealm Standalone ) 플랫폼을 통해서만 배포됩니다. 6. 이 저작물의 원본 배포가 중지된 경우, 원작자의 명시적 허가 없는 원본 재배포는 금지됩니다. 7. 상단의 모든 항목은 저작물 고유의 프롬프트에 적용됩니다. 그 외 (저작물 구성 요소에서 저작자에게 권한이 없는 모든 부분) 의 권한은 해당 원작자에게 있습니다.
{
"name": "아이네 전용 모듈 V8",
"description": "",
"id": "a5faf7fe-c658-4609-bb64-9f81457b9208",
"hideIcon": false,
"lorebook": [],
"regex": [
{
"comment": "분석 response 디스플레이",
"in": "(## 분석[\\s\\S]*?## Response)",
"out": "",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "분석응답 디스플레이",
"in": "(## 분석[\\s\\S]*?## 응답)",
"out": "",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "(## 분석[\\s\\S]*?## Response) 리퀘스트",
"in": "(## 분석[\\s\\S]*?## Response)",
"out": "",
"type": "editprocess",
"ableFlag": false
},
{
"comment": "(## 분석[\\s\\S]*?## 응답) 리퀘스트",
"in": "(## 분석[\\s\\S]*?## 응답)",
"out": "",
"type": "editprocess",
"ableFlag": false
},
{
"comment": "(## Analysis[\\s\\S]*?## Response) 디스플레이",
"in": "(## Analysis[\\s\\S]*?## Response)",
"out": "",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "(## Analysis[\\s\\S]*?## Response) 리퀘스트",
"in": "(## Analysis[\\s\\S]*?## Response)",
"out": "",
"type": "editprocess",
"ableFlag": true,
"flag": "gs"
},
{
"comment": "(## 분석[\\s\\S]*?## 반응) 디스플레이",
"in": "(## 분석[\\s\\S]*?## 반응)",
"out": "",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "(## 분석[\\s\\S]*?## 반응)",
"in": "(## 분석[\\s\\S]*?## 반응)",
"out": "",
"type": "editprocess",
"ableFlag": false
},
{
"comment": "^<--AOS End-->$ 디스플레이",
"in": "^<--AOS End-->$",
"out": "",
"type": "editdisplay",
"ableFlag": true,
"flag": "gm"
},
{
"comment": "(### Map[\\s\\S]*?<--Map End-->) 리퀘스트",
"in": "(### Map[\\s\\S]*?<--Map End-->)",
"out": "{{#if {{greater_equal::{{chat_index}}::{{? {{lastmessageid}}-1}}}}}}\n$1\n{{/if}}",
"type": "editprocess",
"ableFlag": true,
"flag": "gsim"
},
{
"comment": "(### 지도[\\s\\S]*?<et>) 리퀘스트",
"in": "(### 지도[\\s\\S]*?<et>)",
"out": "{{#if {{greater_equal::{{chat_index}}::{{? {{lastmessageid}}-1}}}}}}\n$1\n{{/if}}",
"type": "editprocess",
"ableFlag": false
},
{
"comment": "### AOS <--AOS End-->리퀘스트",
"in": "(### AOS[\\s\\S]*?<--AOS End-->)",
"out": "",
"type": "editprocess",
"ableFlag": true,
"flag": "gs"
},
{
"comment": "생각의 사슬 삭제",
"in": "<Thoughts>(.*)</Thoughts>",
"out": "",
"type": "editprocess",
"ableFlag": true,
"flag": "gs"
},
{
"comment": "이어쓰기 토글(빈칸)",
"in": "",
"out": "(OOC: It looks like the output stopped in the middle. Please write the rest of the scene with the last paragraph of your previous response.)",
"type": "editinput",
"ableFlag": false
},
{
"comment": "이어쓰기 토글(/con)",
"in": "/con",
"out": "(OOC: It looks like the output stopped in the middle. Please write the rest of the scene with the last paragraph of your previous response.)",
"type": "editinput",
"ableFlag": false
},
{
"comment": "백스페이스 리퀘스트 데이터 수정",
"in": "(?:\\S+[ \\t]+){3}(?:BKSPC\\s{0,1}){3}|(?:\\S+[ \\t]+){2}(?:BKSPC\\s{0,1}){2}|(?:\\S+[ \\t]+){1}(?:BKSPC\\s{0,1}){1}",
"out": "",
"type": "editprocess",
"ableFlag": true,
"flag": "gi"
},
{
"comment": "백스페이스 디스플레이 수정",
"in": "(?:\\S+[ \\t]+){3}(?:BKSPC\\s{0,1}){3}|(?:\\S+[ \\t]+){2}(?:BKSPC\\s{0,1}){2}|(?:\\S+[ \\t]+){1}(?:BKSPC\\s{0,1}){1}",
"out": "",
"type": "editdisplay",
"ableFlag": true,
"flag": "gi"
},
{
"comment": "에피소드/챕터 타이틀 지우기/리퀘스트 데이터 수정(비활성화)",
"in": "^(###.*)",
"out": "",
"type": "disabled",
"ableFlag": true,
"flag": "gm"
},
{
"comment": "``` 쳐내기",
"in": "```",
"out": "",
"type": "editoutput",
"ableFlag": false,
"flag": "g"
},
{
"comment": "팁 제거/리퀘스트 데이터 수정",
"in": "\\s*\\*Tip: .*?\\*",
"out": "",
"type": "editprocess",
"ableFlag": true,
"flag": "gm"
},
{
"comment": "팁 제거/리퀘스트 데이터 수정(한글)",
"in": "\\s*\\*팁: .*?\\*",
"out": "",
"type": "editprocess",
"ableFlag": true,
"flag": "gm"
},
{
"comment": "<--Aine's turn Start-->/출력문 수정",
"in": "^<--Aine's turn Start-->$",
"out": "",
"type": "editoutput",
"ableFlag": true,
"flag": "gm"
},
{
"comment": "<--Aine's turn End-->/출력물 수정",
"in": "^<--Aine's turn End-->$",
"out": "",
"type": "editoutput",
"ableFlag": true,
"flag": "gm"
},
{
"comment": "User 상태창 - Location / Time",
"in": "<UserStatus>\\s*\\[\\s*(.*?)\\s*\\|\\s*Date:\\s*(.*?)\\s*\\|\\s*Time:\\s*(.*?)\\s*\\|\\s*(?:\\{\\{user\\}\\}|.+?)\\s*-\\s*Belongings:\\s*(.*?)\\s*\\]\\s*<\\/UserStatus>",
"out": "<body>\n <div class=\"compact-status-line\">\n <span class=\"status-text-group\">$2 <span class=\"separator\">|</span> $3</span>\n <span class=\"status-text-group\">$1</span>\n <span class=\"status-text-group\">$4</span>\n </div>\n</body>",
"type": "disabled",
"ableFlag": false
},
{
"comment": "User 상태창 - Time / Location",
"in": "<UserStatus>\\s*\\[\\s*([\\s\\S]*?)\\s*\\|\\s*Date\\s*:?\\s*([\\s\\S]*?)\\s*\\|\\s*Time\\s*:?\\s*([\\s\\S]*?)\\s*\\|[\\s\\S]*?Belongings\\s*:?\\s*([\\s\\S]*?)\\s*\\]\\s*<\\/UserStatus>",
"out": "<body>\n <div class=\"status-container\">\n <div class=\"status-header\">\n <span class=\"status-text-group date-time\">$2 <span class=\"separator\">|</span> $3</span>\n <span class=\"status-text-group location\">$1</span>\n </div>\n \n <div class=\"status-details\">\n <span class=\"status-text-group\">Belongings: $4</span>\n </div>\n </div>\n</body>",
"type": "editdisplay",
"ableFlag": true,
"flag": "gm<move_bottom>"
},
{
"comment": "User 상태창 - 숨기기 (Default: OFF)",
"in": "<UserStatus>\\s*\\[\\s*(.*?)\\s*\\|\\s*Date:\\s*(.*?)\\s*\\|\\s*Time:\\s*(.*?)\\s*\\|\\s*(?:\\{\\{user\\}\\}|.+?)\\s*-\\s*Belongings:\\s*(.*?)\\s*\\]\\s*<\\/UserStatus>",
"out": "",
"type": "disabled",
"ableFlag": false,
"flag": "g"
},
{
"comment": "User 상태창 - 리퀘 제거 (Attire 만)",
"in": "(\\s*\\|\\s*[^|]+\\s*-\\s*Belongings:\\s*[^\\]]+)",
"out": "{{#if {{greater_equal::{{chat_index}}::{{? {{lastmessageid}}-5}}}}}}\n$&\n{{/if}}",
"type": "editprocess",
"ableFlag": false
},
{
"comment": "찐빠 수정 1",
"in": "<\\/User(?!Status>).+?>",
"out": "</UserStatus>",
"type": "editoutput",
"ableFlag": false
},
{
"comment": "^<--Map End-->$ 디스플레이 ",
"in": "^<--Map End-->$",
"out": "",
"type": "editdisplay",
"ableFlag": true,
"flag": "gm"
},
{
"comment": "(## preThought[\\s\\S]*?## Response)",
"in": "(## preThought[\\s\\S]*?## Response)",
"out": "",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "(## preThought[\\s\\S]*?## Response)",
"in": "(## preThought[\\s\\S]*?## Response)",
"out": "",
"type": "editprocess",
"ableFlag": false
},
{
"comment": "json수정",
"in": "json\\s*\\{[\\s\\S]*?^\\}",
"out": "",
"type": "editprocess",
"ableFlag": true,
"flag": "gm"
},
{
"comment": "json수정",
"in": "json\\s*\\{[\\s\\S]*?^\\}",
"out": "",
"type": "editdisplay",
"ableFlag": true,
"flag": "gm"
},
{
"comment": "\"chapterTitle\"",
"in": "\"chapterTitle\"",
"out": "",
"type": "editdisplay",
"ableFlag": true,
"flag": "g"
},
{
"comment": "\"chapterTitle\"",
"in": "\"chapterTitle\"",
"out": "",
"type": "editprocess",
"ableFlag": false
},
{
"comment": "\"episodeTitle\"",
"in": "\"episodeTitle\"",
"out": "",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "\"episodeTitle\"",
"in": "\"episodeTitle\"",
"out": "",
"type": "editprocess",
"ableFlag": false
},
{
"comment": "\"eventControlInfo\"",
"in": "\"eventControlInfo\"",
"out": "",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "\"eventControlInfo\"",
"in": "\"eventControlInfo\"",
"out": "",
"type": "editprocess",
"ableFlag": false
},
{
"comment": "\"actualNarrative\"",
"in": "\"actualNarrative\"",
"out": "",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "\"actualNarrative\"",
"in": "\"actualNarrative\"",
"out": "",
"type": "editprocess",
"ableFlag": false
},
{
"comment": "\"tipContents\"",
"in": "\"tipContents\"",
"out": "",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "\"tipContents\"",
"in": "\"tipContents\"",
"out": "",
"type": "editprocess",
"ableFlag": false
},
{
"comment": "\"mapContents\"",
"in": "\"mapContents\"",
"out": "",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "\"mapContents\"",
"in": "\"mapContents\"",
"out": "",
"type": "editprocess",
"ableFlag": false
},
{
"comment": "\"activeOptionSystemContents\"",
"in": "\"activeOptionSystemContents\"",
"out": "",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "\"activeOptionSystemContents\"",
"in": "\"activeOptionSystemContents\"",
"out": "",
"type": "editprocess",
"ableFlag": false
},
{
"comment": "\"userStatus\"",
"in": "\"userStatus\"",
"out": "",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "\"userStatus\"",
"in": "\"userStatus\"",
"out": "",
"type": "editprocess",
"ableFlag": false
},
{
"comment": "---",
"in": "---",
"out": "",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "---",
"in": "---",
"out": "",
"type": "disabled",
"ableFlag": false
},
{
"comment": "actualNarrative",
"in": "actualNarrative",
"out": "",
"type": "editprocess",
"ableFlag": false
},
{
"comment": "actualNarrative",
"in": "actualNarrative",
"out": "",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "",
"in": "userStatus",
"out": "",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "",
"in": "userStatus",
"out": "",
"type": "editprocess",
"ableFlag": false
}
],
"backgroundEmbedding": "<style>\n.status-container {\n font-family: 'Inter', sans-serif;\n margin-top: 20px;\n padding: 18px 22px; /* 독립된 박스 형태를 위한 내부 여백 */\n \n /* 패널 디자인 */\n background-color: rgba(20, 24, 28, 0.6); /* 기존 배경과 자연스럽게 녹아드는 어두운 반투명 패널 */\n border: 1px solid rgba(255, 255, 255, 0.08); /* 얇고 은은한 전체 테두리 */\n border-radius: 8px; /* 부드러운 모서리 */\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.05); /* 약간 떠 있는 듯한 입체감 */\n border-left: 4px solid #5a7d9a; /* 좌측 포인트 컬러 (시스템 창 특유의 UI 감성) */\n \n display: flex;\n flex-direction: column;\n gap: 14px; /* 구역 간 간격 조금 더 확보 */\n width: 100%;\n box-sizing: border-box; /* 패딩이 너비를 초과하지 않도록 보호 */\n}\n\n.status-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 15px;\n}\n\n.status-text-group {\n font-size: 0.85em;\n line-height: 1.6;\n letter-spacing: 0.3px;\n word-break: keep-all;\n}\n\n.date-time {\n flex-shrink: 0;\n color: #b8b8b8; /* 날짜는 조금 더 밝고 정갈하게 */\n font-weight: 500;\n}\n\n.location {\n text-align: right;\n color: #d0e0ff; /* 장소는 시스템 강조 텍스트처럼 은은한 푸른빛 */\n}\n\n.status-details {\n padding-top: 14px;\n border-top: 1px solid rgba(255, 255, 255, 0.08); /* 점선 대신 깔끔한 실선으로 마감 */\n color: #9a9a9a; /* 소지품 목록은 메인 텍스트보다 살짝 어둡게 하여 위계 분리 */\n}\n\n.separator {\n color: #555555;\n margin: 0 0.6em;\n}\n</style>",
"trigger": [
{
"comment": "",
"type": "start",
"conditions": [],
"effect": [
{
"type": "triggerlua",
"code": ""
}
],
"lowLevelAccess": false
}
],
"lowLevelAccess": false,
"assets": [],
"customModuleToggle": "",
"namespace": "아이네"
}