zip 묶음 — 카드+모듈+이미지 동봉 — 풀어서 개별 임포트
조회 1911 · 2026-07-21
RISUAI MEMORY BACKEND · RELEASE 0.1 Archive Nexus 기억은 저장하고, 연속성은 감독한다 확정된 대화를 외부 백엔드에 보관하고, 임베딩으로 지금 필요한 기억을 찾아낸 뒤, 세계 상태와 감독 지침을 하나의 안전한 컨텍스트 패킷으로 조립해 다음 응답에 주입하는 RisuAI용 장기기억 플러그인입니다. VERSION 0.1 RUNTIME RisuAI + Python DEFAULT Hash Ready WHAT IT DOES 채팅창 밖에서 기억을 정리하고, 채팅 직전에 필요한 것만 되돌려줍니다. RisuAI 안에는 가벼운 프론트엔드 플러그인이 있고, 실제 저장·요약·임베딩·검색·감독 작업은 별도의 Python 백엔드가 맡습니다. 대화 전체를 매번 프롬프트에 밀어 넣는 대신, 현재 장면과 관련된 기억·규칙·인물 상태만 선별하므로 장기 채팅에서도 컨텍스트를 통제하기 쉽습니다. 01 · TURN PIPELINE 한 턴이 지나가는 전체 흐름 저장과 검색이 같은 순간에 뒤섞이지 않도록, 요청 전 준비와 응답 후 확정을 분리했습니다. 1 요청 전 · Prepare 현재 사용자 입력, 최근 대화, 캐릭터 설명, 성격, 시나리오, 로어북을 백엔드에 보냅니다. 2 검색 · Recall 임베딩·어휘·중요도·최신성·인물 일치도를 합쳐 관련 기억을 찾고, 관계 그래프를 따라 보조 기억을 확장합니다. 3 감독 · Supervise 세계 규칙, 상태, 잠금, 요약과 Director 메모를 읽고 이번 응답이 지켜야 할 목표와 금지선을 만듭니다. 4 주입 · Packet 선별된 정보를 구조화된 시스템 메시지로 조립해 RisuAI의 실제 생성 요청에 삽입합니다. 5 응답 후 · Commit 스트리밍 중간 문장이 아닌 최종 확정 응답만 사용자 메시지와 한 쌍으로 저장하고 Organizer 작업을 시작합니다. 02 · 임베딩으로 정확히 무엇을 하나요? 상세 보기 문장의 뜻을 좌표로 바꾸고, 지금 질문과 가까운 기억을 찾습니다. 임베딩 모델은 기억 문장과 현재 질의를 숫자 벡터로 바꿉니다. 표현이 완전히 같지 않아도 의미가 비슷하면 벡터 사이의 코사인 유사도가 높아집니다. 예를 들어 과거에 “지하 기록실에서 은색 열쇠를 받았다”라고 저장됐고 현재 입력이 “전에 받은 열쇠가 어디서 왔지?”라면, 단순 문자열 일치보다 의미 기반 검색이 유리합니다. 질의 구성 현재 사용자 입력을 중심으로 최근 메시지 최대 3개를 보조 질의로 사용합니다. 항상 있는 레인 로컬 Hash 벡터는 항상 저장됩니다. 외부 임베딩 API가 없거나 실패해도 최소한의 검색이 계속됩니다. 선택 레인 외부 Semantic 벡터를 추가하면 표현이 달라도 의미가 가까운 기억을 더 잘 찾을 수 있습니다. 모델 호환성 저장된 벡터와 현재 모델·차원이 일치할 때만 Semantic 레인을 사용합니다. 모델을 바꾸면 기존 벡터를 자동으로 다른 차원으로 해석하지 않습니다. 검색 점수 임베딩 유사도 62% + 어휘 유사도 18% + 중요도 12% + 최신성 8%, 그리고 활성 인물이 일치하면 추가 보너스를 줍니다. 점수만 높은 기억을 무작정 늘어놓지는 않습니다. 최소 근거 기준을 넘지 못한 후보를 먼저 제거하고, MMR로 서로 비슷한 기억이 한꺼번에 몰리는 것을 줄입니다. 같은 기억 종류는 기본 3개, 같은 원본 턴은 기본 2개까지만 허용하며, 기본 80개 후보 중 상위 10개를 선택합니다. 선택된 기억에는 관련됨·원인·모순·일부·선행·폭로 관계가 붙을 수 있습니다. 기본 1홉, 최대 3홉까지 연결 기억을 확장하지만, 확장된 기억도 다시 비밀·소유자 접근 권한 검사를 통과해야 합니다. 03 · 컨텍스트는 어떻게 주입되나요? 패킷 구조 검색 결과는 그대로 대화창에 던져지지 않습니다. 백엔드가 먼저 구조화된 Supervisor 입력을 만들고, 현재 요청에 필요한 제약과 목표를 추린 다음 하나의 JSON 패킷으로 조립합니다. prepare_packet.json SYSTEM CONTEXT 1. mission 현재 입력 + 최근 보이는 대화 2. reference_data 캐릭터 설명 + 성격 + 시나리오 + 로어북 3. recalled_memory 공개 범위 + 소유자 + 근거가 붙은 회상 4. continuity_context 세계 규칙 + 인물 상태 + 잠금 + 요약 5. director_guidance Writer + Chat + Atlas 메모 6. output_rules 필수 결과 + 금지 행동 + 사용자 권한 보호 Supervisor는 여기서 장면 임무, 필수 결과, 금지 행동, 압박 수준, 서사 목표, 다음 진행 후보를 만듭니다. 그 결과와 원본 연속성 자료를 합친 패킷이 RisuAI 생성 요청의 시스템 메시지로 들어갑니다. Support가 켜져 있으면 별도의 지원 보고서도 병렬 지침으로 추가됩니다. 패킷이 너무 클 때 근거 발췌 → 낮은 우선순위 기억 → 요약 → 상태 → 다음 진행 후보 순으로 줄입니다. 권한 순서와 핵심 연속성 잠금은 마지막까지 남기며, JSON을 문자열 중간에서 잘라 망가뜨리지 않습니다. 비밀과 owner-private 기억은 노골적인 공개 사실로 승격하지 않고 내면 정보나 암시로만 취급합니다. 특정 인물의 믿음 역시 객관적 사실로 바꾸지 않습니다. 사용자 캐릭터의 행동·감정·동의는 기억에 있다는 이유만으로 강제하지 않습니다. 04 · MEMORY ORGANIZATION 무엇이 기억으로 저장되나요? Organizer LLM은 확정된 사용자·assistant 한 턴과 최근 문맥을 읽고, 검색 가능한 기억과 연속성 상태를 분리해 저장합니다. 일반 기억 사건, 관계 변화, 사실, 선호, 약속, 조건, 아이템 상태, 위치, 비밀, 주관적 기억 연속성 상태 세계 규칙, 객관 상태, 인물의 믿음, 상태 전이, 열린 사건, 해결되지 않은 약속 연속성 잠금 아직 해결하지 말 것, 비밀 경계, 화자 경계, 동의 경계, 세계관 제약, 열린 스레드 원문 근거 LLM이 실패해도 확정된 assistant 응답 원문은 Flashback식 durable evidence로 보존됩니다. 근거 검증 Organizer가 evidence라고 제출한 문장이 실제 완료 턴 안에 존재하는지 검사합니다. 만들어낸 인용문이나 시스템 프롬프트, 숨은 추론을 기억으로 저장하지 않도록 제한합니다. 05 · 요약과 기억 노화 8 / 12 / 40 / 120 기본 설정에서는 8턴마다 구간 요약을 만듭니다. Organizer가 정상 작동하면 구조화된 턴 정보를 바탕으로 요약하고, 실패하면 최근 assistant 원문을 이용한 대체 경로를 사용합니다. FRESH SETTLING FOSSILIZED DEEP 최근 12턴 이후 40턴 이후 120턴 이후 단계가 오래될수록 최신성 가중치는 낮아지지만, 중요도와 질의 유사도가 충분하면 다시 검색될 수 있습니다. 오래됐다는 이유만으로 삭제하지 않고 검색 우선순위를 조절하는 방식입니다. 현재 범위: compressed-summary 저장 구조는 있으나, 여러 세대의 요약을 자동으로 계속 재압축하는 완전한 다단계 압축기는 아직 아닙니다. 06 · MULTI-AGENT SUPERVISION 각 LLM은 서로 다른 일을 합니다. ORGANIZER 완료된 턴을 기억·규칙·상태·잠금·관계로 정리합니다. SUPERVISOR 이번 응답의 목표, 필수 결과, 금지 행동과 서사 압력을 결정합니다. DIRECTOR Chat 4턴, Writer 8턴, Atlas 12턴 주기로 장면·문체·세계 정보를 갱신합니다. REFINE 선택 기능. 사건은 바꾸지 않고 반복 표현, 전형화, 과잉 설명, 비밀 누출을 제한적으로 교정합니다. SUPPORT 최근 대화와 기억을 읽고 ok·warn·block 보고서, 경고, 제안, 주입 문장을 만듭니다. Director는 한 턴에 여러 번 중복 호출하지 않습니다. Chat·Writer·Atlas 주기가 겹치면 Atlas → Writer → Chat 순으로 가장 높은 단계 하나만 실행합니다. Support는 화면에서 즉시 실행하거나 N턴 주기로 예약할 수 있으며, 실패해도 메인 채팅은 계속됩니다. 07 · 모델과 프로바이더 설정 설정 화면
zip 105,532B · 원본 Archive-Nexus-0.1-Windows.zip