zip 묶음 — 카드+모듈+이미지 동봉 — 풀어서 개별 임포트
조회 978 · 2026-07-30
RISUAI API V3 · EXTERNAL MEMORY SYSTEM
Archive Nexus
기억하고, 찾아내고, 감독해서 다음 응답 직전에 넣어 주는 외부 기억 백엔드
대화가 길어져도 사건·관계·세계 규칙·인물 상태·비밀 경계를 SQLite에 남기고, 현재 장면과 가까운 기억과 로어북만 임베딩으로 찾아 메인 모델의 컨텍스트에 다시 조립합니다. 단순 요약 플러그인이 아니라
기억 저장 → 검색 → 연속성 감독 → 패킷 주입 → 응답 확정
을 한 사이클로 묶은 시스템입니다.
VERSION
0.2
STATUS
LOCAL BACKEND
TARGET
RISUAI V3
먼저 알아둘 점
이 플러그인은 호출 비용 절약보다
최대 성능과 연속성
을 우선합니다. Organizer, 역할별 Supervisor, 감독 MD, 출력 개선, 서포트 에이전트를 설정하면 한 턴에 여러 LLM 호출이 발생할 수 있습니다. 가볍고 저렴한 구성이 목적이라면 맞지 않을 수 있습니다.
01 · WHAT IT DOES
대화 바깥에 기억 장치를 하나 더 둡니다
RisuAI의 기본 프롬프트를 무작정 늘리는 방식이 아닙니다. 완료된 응답은 백엔드가 비동기로 정리하고, 다음 요청이 시작될 때 현재 입력과 가까운 자료를 다시 검색합니다. 메인 모델에는 그 순간 필요한 기억, 선택된 로어북, 감독 지침과 금지 조건만 구조화해서 넣습니다.
기억 계층
사건, 관계, 사실, 약속, 조건, 아이템·장소 상태, 비밀, 주관적 기억을 서로 다른 종류로 저장합니다.
연속성 계층
세계 규칙, 인물 상태, 미해결 스레드, 비밀·화자·동의 경계를 현재 상태로 관리합니다.
02 · REQUEST PIPELINE
다음 응답이 만들어지기 직전의 처리 순서
1
RisuAI 문맥 수집
현재 사용자 입력, 최근 메시지, 캐릭터 설명·성격·시나리오와 원본 로어북 엔트리를 모읍니다.
2
임베딩 검색
현재 장면과 가까운 장기 기억 및 로어북 엔트리를 벡터 유사도와 키워드 근거로 선별합니다.
3
Supervisor 병렬 감독
연속성, 행동·전개, 금지 행동 전담 모델이 각자의 프롬프트와 JSON 스키마로 동시에 판단합니다.
4
컨텍스트 패킷 조립
권한 규칙, 잠금, 상태, 회상, 요약, 감독 결과를 하나의 유효한 JSON 패킷으로 만듭니다.
5
메인 모델 직전 주입
마지막 사용자 메시지 바로 앞에 패킷, 검색 로어북, 감독 MD, 서포트 보고서를 시스템 메시지로 삽입합니다.
03 · TECHNICAL DETAILS
내부 동작 상세
임베딩은 무엇을 하는가
상세 보기
임베딩은 문장을 숫자 벡터로 바꾸고, 현재 입력과 과거 기록 사이의 의미적 거리를 계산합니다. 이름이나 키워드가 정확히 반복되지 않아도 비슷한 상황과 표현을 찾기 위한 장치입니다.
기억 검색은 현재 입력뿐 아니라 최근 메시지 일부도 보조 질의로 함께 임베딩합니다. 짧은 입력이나 대명사 위주의 후속 입력에서도 직전 장면과 연결되는 기억을 끌어올리기 위해서입니다. 의미 유사도, 어휘 겹침, 중요도, 시간 가중치와 활성 인물 일치도를 합산한 뒤, MMR로 서로 지나치게 비슷한 기억이 상위 칸을 독점하지 못하게 합니다.
기본값 기준으로 후보 80개를 평가하고 최종 10개를 고르며, 같은 기억 종류는 최대 3개, 같은 턴에서 나온 기억은 최대 2개까지 선택합니다. 의미 임베딩 API가 실패해도 로컬 해시 임베딩 레인이 남아 있어 검색 자체는 계속됩니다. 최고 성능이 목적이라면 별도의 의미 임베딩 모델 설정을 권장합니다.
로어북 상한 제거와 선별 주입
LOREBOOK
로어북은 개수나 전체 글자 수를 먼저 잘라 버리지 않습니다. RisuAI API V3의 현재 로어북 엔트리를 원문 그대로 받아 SQLite에 동기화하고, 기본 3,500자 단위와 350자 겹침으로 검색용 청크를 만듭니다. 원문과 검색 청크는 별도로 보존되므로 검색을 위해 로어북 내용이 축약되지는 않습니다.
바뀐 엔트리만 콘텐츠 해시로 감지해 다시 임베딩하며, 임베딩 모델이나 차원이 바뀌면 전체 인덱스를 다시 맞춥니다. 검색 점수는 의미 유사도 78%, 어휘 겹침 17%, 로어북 키 직접 적중 보너스로 계산됩니다. constant 엔트리는 항상 포함하고, 나머지는 현재 입력과 가까운 엔트리를 기본 4개에서 최대 32개까지 고릅니다.
선택 기준은 청크 단위지만 실제 메인 모델에 넣는 것은 해당 엔트리의
전체 원문
입니다. 즉 “전부 주입”은 하지 않되, 선택된 로어북은 중간에서 잘라 넣지 않습니다.
기억 저장, 요약과 노화 처리
MEMORY
화면에 실제로 확정된 assistant 응답만 완료 턴으로 커밋합니다. 스트리밍 중간 조각이나 임시 후보는 기억으로 확정하지 않습니다. 확정된 턴은 백그라운드 Organizer가 읽고 장기 기억, 세계 규칙, 인물 상태, 연속성 잠금, 기억 간 관계로 분해합니다. LLM 정리가 실패해도 assistant 원문 기반의 에피소드 증거는 남깁니다.
기본 8턴마다 구간 요약을 만들고, 기억은 시간에 따라 fresh → settling → fossilized → deep 단계로 이동합니다. 기본 경계는 12턴, 40턴, 120턴입니다. 오래된 기억을 삭제하는 방식이 아니라 최신성 점수의 영향만 낮춰, 의미적으로 정말 가까운 오래된 기억은 다시 떠오를 수 있게 합니다.
기억 관계 그래프도 한 단계 확장합니다. 예를 들어 “목걸이”가 검색되면 연결된 “어머니”와 “화재 사건” 기록을 함께 가져와 고립된 사실보다 사건의 연결을 유지합니다.
비밀과 관점 권한
BOUNDARY
기억은 public, owner_private, secret 가시성을 갖고 소유 인물을 기록할 수 있습니다. 현재 요청에서 허가된 인물이 아니면 보호 기억은 검색 결과에서 제외됩니다. 메인 모델에는 숨겨진 보호 기록이 “몇 개 존재한다”는 경계 정보만 전달하며, 그 숫자로 내용을 추측하지 말라는 지침이 함께 들어갑니다.
보호 기억이 허용된 경우에도 “회상했으니 공개해도 된다”로 취급하지 않습니다. 소유자의 말투와 망설임 같은 서브텍스트 또는 자기 관점 장면의 일관성에만 사용할 수 있고, 비소유 인물의 지식으로 넘어가면 금지 행동 Supervisor가 차단 조건을 만듭니다.
Supervisor 3분할 구조
PARALLEL
Supervisor는 같은 프롬프트를 세 번 호출하지 않습니다. 세 역할은 관찰 자료만 공유하고 시스템 프롬프트, 입력의 출력 규칙, 반환 JSON 스키마가 완전히 분리되어 있습니다.
연속성 감독
은 장면이 지켜야 할 조건과 pressure_level만 반환합니다.
행동·전개 감독
은 필수 결과, 가까운 서사 목표, 선택 가능한 다음 비트만 반환합니다.
금지 행동 감독
은 사용자 행동 대행, 동의 침해, 비밀 누출, 확정 상태 위반처럼 하지 말아야 할 행동만 반환합니다.
세 역할에 각각 다른 모델을 지정할 수 있습니다. 역할 모델이 비어 있으면 공통 Supervisor 모델을 실행 엔진으로 사용할 수 있지만, 그 경우에도 세 역할의 전용 프롬프트는 합쳐지지 않습니다.
컨텍스트 패킷의 구성과 상한 처리
PACKET V1
패킷에는 현재 사용자 입력이 최우선이라는 권한 순서, 활성 잠금, 세계 규칙, 인물 상태, 공개·보호 회상, 구간 요약, 감독 MD와 Supervisor 결과가 들어갑니다. 기본 패킷 상한은 7,000자이며 설정에서 조정할 수 있습니다.
상한을 넘으면 문자열을 중간에서 잘라 깨진 JSON을 만드는 대신 정해진 순서로 정보를 덜어 냅니다. 먼저 원문 발췌를 빼고, 낮은 우선순위 회상, 오래된 요약, 상태, 선택 비트와 일부 규칙을 줄입니다. 그래도 크면 최소 패킷으로 재구성합니다.
사용자 주도권 규칙과 활성 연속성 잠금은 끝까지 보존
되며 JSON 구조는 항상 닫힌 상태를 유지합니다.
archive_nexus_packet_v1
STRUCTURE
{
"authority": { "order": [...], "rules": [...] },
"continuity": {
"locks": [...],
"world_rules": [...],
"entity_states": [...],
"knowledge_boundaries": {...}
},
"reczip 126,309B · 원본 Archive-Nexus-0.2.zip