청소부 메모리 최적화 + Nadia - 그녀의 피부 아래 숨겨진 비밀

영어에서 번역됨

Janitor Memory Optimizer + Nadia - The Secret Under Her Skin

76

1.5천

나디아 — 그녀의 피부 아래 감춰진 비밀

고등학교 때부터 함께한 고스펑크 절친이 방금 당신을 흡혈귀로부터 구해냈다. 문제는? 그러기 위해 늑대인간이 되어야 했다는 것.

음악축제, 너무 많은 맥주, 너무 많은 버거, 사방에서 터지는 시끄러운 음악—그리고 잘못된 취객을 물어버린 한 포식자. 나디아는 수년간 자신의 진짜 정체를 {{user}}에게 숨겨왔다. 오늘 밤, 그 비밀은 보도 위의 재가 되어버렸다.


예상할 수 있는 것

  • 친구 사이에서의 초자연적 정체 공개 RP.

  • 게임, 만화, IT, 하이킹, 캠핑에 관심이 있는 보이시한 고스펑크 늑대인간.

  • 우정이 우선; 로맨스는 선택 사항이며 절대 전제되지 않음.

  • 흡혈귀, 비밀, 위협, 그리고 나디아의 정체 공개가 불러오는 결과를 다루는 도시 초자연 미스터리 루트.

  • Janitor Memory Optimizer v1.0.0의 실시간 장기 대화 테스트 캐릭터로 설계됨.

플레이 방법

그냥 자연스럽게 반응하면 된다. 나디아에게 질문하고, 거부하고, 받아들이고, 흡혈귀를 조사하고, 사적인 장소로 이동하거나, 이 밤이 더 이상 기이해지지 않도록 막아보라. 기억 명령어나 설정 메뉴는 없다.

콘텐츠 주의

음주, 흡연, 흡혈귀의 습격, 초자연적 폭력, 피/송곳니, 거친 언어, 저속한 유머, 거부에 대한 두려움. {{user}}의 감정과 선택은 절대 미리 정해지지 않는다.


테스트 출시: 2026-08-18


Janitor Memory Optimizer v1.0.0

최종 패시브 메모리 엔진

JanitorAI용 장기 롤플레이 기억 시스템 — 완전 수동적이고, 플러그 앤 플레이이며, 사용자에게 보이지 않음.

Janitor Memory Optimizer는 JanitorAI Scripts Beta용으로 설계된 고급 ES5 기억 엔진이다. 목표는 간단하다: 끝없이 커지는 원본 채팅 기록에 의존하지 않고도 캐릭터가 중요한 정보, 관계, 사건, 약속, 장소, 물건, 퀘스트, 갈등, 장기 스토리 아크를 보존하도록 돕는 것.

배워야 할 명령어도, 눌러야 할 버튼도, 관리할 기억 메뉴도, 신경 써야 할 설정도 없다. 스크립트를 설치하고, 캐릭터에 연결하고, 평소처럼 대화하면 된다.

엔진은 조용히 대화를 읽고, 무엇이 중요한지 판단하고, 여러 계층의 기억으로 정리한 뒤, 유용한 결과만 캐릭터의 런타임 Scenario 정의에 기록하여 LLM이 이후 턴에서 다시 읽을 수 있게 한다.

대화에 가짜 메시지를 절대 주입하지 않는다.


모두를 위해: 실제로 무엇을 하는가?

수백 개의 메시지 전에 이런 일이 있었던 장기 롤플레이를 상상해 보라:

  • 나디아가 당신에게 자신이 당신의 여동생이라고 말했다.

  • 당신은 버려진 기록보관소에서 놋쇠 열쇠를 발견했다.

  • 사미라가 나디아를 배신했다.

  • 그 배신 때문에 나디아는 사미라를 믿지 않게 되었다.

  • 당신은 나중에 중앙역에서 누군가를 만나기로 약속했다.

  • 여러 다른 장면에 걸쳐 미스터리가 서서히 발전했다.

일반적으로 대화가 길어질수록 오래된 정보는 결국 언어 모델이 유지하기 어려워진다.

Janitor Memory Optimizer는 대화의 중요한 부분을 지속적으로 압축된 구조화 기억 시스템으로 바꾼다.

나중에 대화가 다시 나디아와 관련되면, 엔진은 수백 개의 오래된 메시지를 컨텍스트에 다시 쏟아붓지 않고도 나디아에 관한 중요한 내용을 떠올릴 수 있다.

만약 당신이 다음과 같은 포괄적인 질문을 하면:

나디아와의 내 관계는 어떻게 변했지?

그것은 압축된 장기 관계 아크를 떠올릴 수 있다.

만약 당신이 이렇게 묻는다면:

나디아는 정확히 언제 사미라를 믿지 않게 되었지?

그것은 장기 스토리 아크에서 관련 에피소드로, 그리고 필요할 경우 원래의 원자적 증거로 자동으로 파고들 수 있다.

당신은 기억 엔진에게 이 모든 것을 어떻게 하라고 알려주지 않는다. 당신은 그저 롤플레이를 할 뿐이다.


설치하고 & 플레이

전체 시스템은 사용자 상호작용을 최대한 적게 요구하도록 특별히 설계되었다.

  1. JanitorAI에서 Scripts Beta를 연다.

  2. Advanced 스크립트를 생성한다.

  3. Janitor Memory Optimizer v1.0.0 스크립트 전체를 붙여넣는다.

  4. 저장한다.

  5. 캐릭터에 연결한다.

  6. 끝이다.

설정 마법사도 없다. 필수 명령어도 없다. 롤플레이어를 위한 디버그 인터페이스도 없다. 수동으로 유지할 토큰 예산도 없다.

의도된 경험은 이것이다: 한 번 설치하고, 기억 엔진이 존재한다는 사실을 잊어버려라.


100% 수동적 자연어 기억

옵티마이저는 평범한 대화를 관찰하고 정보를 자동으로 평가한다.

명시적인 자연어 요청으로 기억을 강화하거나 제거할 수도 있다:

나디아가 내 여동생이라는 걸 기억해.
기록보관소 열쇠는 사미라의 것이라는 걸 잊지 마.
나디아에 관한 모든 걸 잊어.
놋쇠 열쇠에 대해 내가 말한 걸 잊어.

이것들은 평범한 문장이지 명령어가 아니다.

스크립트는 "기억 저장됨" 또는 "기억 삭제됨" 같은 메시지로 응답하지 않는다. 캐릭터는 그저 롤플레이를 계속할 뿐이다.

평범한 서사적 변화는 잊는 것과 다르게 취급된다. 예를 들어:

나는 더 이상 나디아를 믿지 않아.

이것은 과거를 지우지 않는다. 옵티마이저는 이전 관계 상태를 역사로 보존하고 더 새로운 상태를 변화로 추적할 수 있다.


채팅 주입 없음

이것은 전체 프로젝트에서 가장 중요한 설계 규칙 중 하나다.

대화 자체는 읽기 전용이다.

스크립트는 다음과 같은 사용 가능한 대화 표면을 읽을 수 있다:

  • context.chat.last_message

  • context.chat.last_messages

  • context.chat.message_count

그것은 합성 사용자 메시지, 어시스턴트 메시지 또는 시스템 메시지를 추가하지 않는다.

그것은 다음을 사용하지 않는다:

  • script_output을 기억용으로;

  • example_dialogs을 기억용으로;

  • 가짜 대화 항목;

  • 숨겨진 의사 채팅 명령어.

LLM에 보이는 유일한 활성 기억 표면은 다음과 같다:

context.character.scenario

context.chat.jai_memory_optimizer_v10 아래의 비공개 런타임 보관소는 기술적 상태이지 대화 메시지가 아니다.


기억 엔진의 작동 방식

내부적으로 Janitor Memory Optimizer는 점점 더 추상적인 여러 계층을 사용한다:

채팅 읽기 전용 → 원자적 사실 → 해시된 샤드 → 의미론적 도시에 → 시간적 그래프 → 엔티티 인텔리전스 → 에피소드 기억 → 서사 스레드 → 계층적 회상 → 시나리오

1. 원자적 사실

중요한 정보는 먼저 추적 가능한 원자적 사실로 보존된다. 사실은 유형, 출처, 중요도, 턴, 관련성 적중, 연관 엔티티, 증거 ID 등의 정보를 담을 수 있다.

이 원자적 기억은 엔진 내부에서 진실의 원천에 가장 가까운 것으로 남는다. 상위 수준의 요약이 이들을 조용히 대체하지 않는다.

2. 콘텐츠 주소 지정 해시 보관소

사실들은 비공개 런타임 상태에 저장된 주제 지향 샤드로 정리된다.

샤드는 콘텐츠 해시를 사용하여 변경되지 않은 기억을 끊임없이 다시 쓰는 대신 재사용할 수 있게 한다.

해시는 주소이자 무결성 검사이며 암호화가 아니다.

3. 의미론적 도시에

관련 기억들은 파생된 의미론적 프로필로 묶인다.

도시에는 다음을 구분할 수 있다:

  • 안정적인 정보;

  • 현재 정보;

  • 역사적 정보.

이를 통해 모델은 모든 개별 기억을 한꺼번에 받지 않고도 사람이나 주제에 대한 유용한 개요를 받을 수 있다.

4. 시간적 기억 그래프

옵티마이저는 사람, 장소, 물건, 퀘스트, 사건 사이의 관계를 구축할 수 있다.

시간적 엣지는 의도적으로 다음을 구분한다:

  • 원인 — 출처가 인과관계를 명시적으로 뒷받침할 때만;

  • 선행 — 인과관계를 주장하지 않는 시간 순서;

  • 대체 — 더 새로운 상태가 더 오래된 상태를 대체하거나 모순됨.

다시 말해, 엔진은 사건 B가 사건 A 이후에 일어났다는 이유로 사건 A가 사건 B를 일으켰다고 가정하지 않는다.

5. 엔티티 인텔리전스

엔진은 다음에 대해 보수적인 엔티티 해석을 수행한다:

  • 명시적 별칭;

  • 애칭;

  • 일부 이름 / 성(姓) 관계;

  • 명확한 단기 범위 대명사;

  • "내 여동생" 같은 일부 명확한 관계 지칭.

지칭이 모호하면 옵티마이저는 확신을 갖고 잘못된 연결을 만들어내기보다 정체성을 병합하지 않는 것을 선호한다.

6. 적응형 기억 온도

기억은 동적으로 뜨거움, 따뜻함 또는 차가움으로 취급된다.

온도는 나이 외에도 영향을 받는다. 엔진은 관찰된 유용성, 중요도, 최근성, 안정성, 반복적 관련성을 고려한다.

반복적으로 유용해지는 오래된 기억은 중요하게 남을 수 있다. 차가운 기억이 자동으로 거짓으로 간주되지 않으며 단지 차갑다는 이유로 지워지지도 않는다; 주로 우선순위가 낮아질 뿐이다.

7. 에피소드 통합

관련 사건들의 오래된 클러스터는 압축된 에피소드 기억이 될 수 있다.

활성 회상에서 열 개의 상세한 사건을 영구적으로 유지하는 대신, 옵티마이저는 무슨 일이 있었는지의 핵심 비트를 담은 발췌형 에피소드를 보존할 수 있다.

기저의 원자적 증거는 그 에피소드에 계속 연결되어, 나중에 정확한 세부 사항이 필요할 때 파고들 수 있게 한다.

8. 서사 스레드

여러 에피소드는 그 자체로 장기 서사 아크가 될 수 있다.

지원되는 스레드 계열은 다음과 같다:

  • entity:*

  • relationship:*

  • quest:*

  • location:*

  • mystery:*

  • conflict:*

  • topic:*

단일 에피소드는 원본 증거를 복제하지 않고도 여러 서사 스레드에 참여할 수 있다.

즉, 나디아, 기록보관소 미스터리, Silver Thread 퀘스트가 관련된 한 장면은 하나의 기저 역사로 남으면서 세 가지 스토리 아크 모두에 기여할 수 있다.

9. 계층적 회상

옵티마이저는 가장 저렴한 유용한 계층을 사용하여 기억 요구를 해결하려고 한다.

포괄적인 질문은 서사 스레드만 필요할 수 있다.

더 정확한 질문은 자동으로 다음을 거슬러 내려갈 수 있다:

스레드 → 에피소드 → 원자적 증거

이는 모든 세부 사항을 모든 프롬프트에 밀어넣지 않고도 세부 사항을 보존하는 데 도움이 된다.


가역적 복구: JMO10 에스크로

Scenario는 또한 경계가 정해진 복구 체크포인트를 지닌다.

복구 계층은 다음을 사용한다:

압축 직렬화 → LZW12 → Base64 → 체크섬

이전 Scenario 체크포인트가 남아 있는 동안 비공개 런타임 상태가 사라지면, 옵티마이저는 그 체크포인트에서 기억을 재구축할 수 있다.

개념적으로:

Scenario → JMO10 에스크로 → 원자적 사실 / 보관된 에피소드 → 의미론적 도시에 → 시간적 그래프 → 서사 스레드

손상된 에스크로 데이터는 조작된 기억으로 변환되지 않고 거부된다.

JMO10은 마이그레이션 및 복구를 위해 이전 JMO3–JMO9 에스크로 형식도 읽을 수 있다.


자동 컨텍스트 관리

목표는 기억 보관소 전체를 모든 생성에 쏟아붓는 것이 아니다.

저장과 회상은 의도적으로 분리된다.

엔진은 사용 가능한 공간과 현재 필요한 정보의 종류에 따라 회상 및 복구 예산을 자동으로 조정한다.

단순한 이어가기는 인과관계, 시간 순서 또는 수백 개의 메시지에 걸친 관계에 대한 상세한 질문보다 기억을 덜 필요로 한다.

필요하다면 옵티마이저는 내부 작업 범위를 넘치기 전에 세부 사항을 줄인다.


내부 가드레일

이것들은 프로젝트 휴리스틱이며 공식 JanitorAI 한도라고 주장하는 것이 아니다.

  • 추정 결합 Personality + Scenario 소프트 한도: 4,000 토큰

  • 최대 주제 샤드: 512

  • 시간적 그래프: 384 노드 / 768 엣지

  • 에피소드 아카이브: 160

  • 서사 스레드: 192

  • 회상 및 에스크로 예산: 자동 적응형

이것들은 기억 시스템을 통제 불능으로 성장하게 두지 않고 경계가 정해지고 예측 가능하게 유지하기 위해 존재한다.


장기 롤플레이 안전성 & 기억 위생

엔진은 프로젝트 전반에 걸쳐 개발된 여러 보수적 안전장치를 포함한다:

  • 정확한 중복 통합;

  • 적절한 경우 거의 중복인 것의 합성;

  • 유용한 역사를 무작정 파괴하지 않는 현재 상태 대체;

  • 질문이 자동으로 확립된 사실이 되지 않도록 하는 질문 필터링;

  • 보수적 인과관계 감지;

  • 모호성을 인식하는 엔티티 해석;

  • 표적화된 자연어 망각;

  • 손상된 복구 체크포인트 거부;

  • 관련성을 인식하는 역사적 회상;

  • 일반적인 "응."이 관련 없는 아카이브를 컨텍스트로 끌어들이지 않도록 하는 필러 격리;

  • 상위 수준 요약 뒤에 원자적 증거 보존;

  • 경계가 정해진 기억 및 그래프 정리;

  • 사용 가능한 경우 이전 옵티마이저 상태의 자동 마이그레이션.


장기 실행 롤플레이를 위해 설계됨

Janitor Memory Optimizer는 다음과 관련된 롤플레이에 특히 유용하다:

  • 느린 발전의 관계;

  • 다중 캐릭터 출연진;

  • 미스터리와 수사;

  • 퀘스트와 목표;

  • 변화하는 동맹;

  • 장기 갈등;

  • 지속적인 인벤토리 또는 중요한 물건;

  • 반복되는 장소;

  • 캐릭터 발전;

  • 수백 또는 수천 턴에 걸친 이야기.


검증 & 스트레스 테스트

v1.0.0은 단순한 구문 검사 후 출시된 것이 아니다. 전용 회귀, 강화, 복구 및 장기 지평 스트레스 테스트 모음을 거쳤다.

정적 / 크리에이터 팩 검증

  • 노드 구문 검사: 통과

  • 보수적 ES5 검증기: 통과

  • 오류: 0

  • 경고: 0

  • 런타임 크기: 191,418 / 400,000 바이트

출력 표면 불변 테스트

  • script_output 없음: 통과

  • 채팅 기록 쓰기 없음: 통과

  • last_message 변경 없음: 통과

  • message_count 변경 없음: 통과

  • example_dialogs에 기억 쓰기 없음: 통과

  • Personality에 활성 기억 블록 추가 없음: 통과

  • 정확히 하나의 LLM 가시 기억 대상 — Scenario: 통과

  • 사용자 명령 구문 요구 또는 노출 없음: 통과

회귀 스위트

21개의 표적화된 어설션: 통과

커버리지 포함:

  • 109턴 시나리오;

  • 에피소드 통합;

  • 서사 스레드;

  • 광범위한 스레드 회상;

  • 정확/역사 파고들기;

  • 필러 격리;

  • 상태 손실 복구;

  • 이전 버전 마이그레이션 호환성.

최종 강화 스위트

23개의 추가 어설션: 통과

이 스위트는 특히 다음을 커버했다:

  • Scenario 전용 아키텍처;

  • v0.9 라이브 상태에서 v1.0으로의 마이그레이션;

  • 레거시 JMO9 에스크로 복구;

  • 레거시 복구 후에도 살아남는 원자적 증거;

  • 손상된 에스크로의 안전한 거부;

  • 표적화된 자연어 망각;

  • 표적화된 망각 중 관련 없는 의미론적 기억의 보존.

500턴 스트레스 테스트

테스트 코퍼스:

500개의 채우기 턴 + 60개의 자연어 기억 쿼리 + 3번의 완전한 비공개 상태 손실 복구.

  • 복구 전 사실: 42

  • 3번의 복구 후 사실: 42

  • 전 / 후 에피소드: 10 / 10

  • 전 / 후 서사 스레드: 5 / 5

  • 완전한 상태 손실 복구: 3 / 3 통과

2,000턴 장기 지평 스트레스 테스트

훨씬 더 큰 테스트도 실행되었다:

2,000개의 채우기 턴 + 60개의 자연 쿼리 + 3번의 완전한 상태 손실 복구.

  • 복구 전 / 후 사실: 61 / 61

  • 전 / 후 에피소드: 40 / 40

  • 전 / 후 서사 스레드: 5 / 5

  • 완전한 상태 손실 복구: 3 / 3 통과

  • 스레드 빌드: 195

  • 스레드 서명 재사용: 1,927

  • 그래프 빌드: 201

  • 그래프 재사용: 1,860

이는 파생 구조가 매 턴 무작정 재구축되는 것이 아니라 크게 재사용됨을 보여준다.

성능 최적화

동일한 로컬 500+60 Node 하네스에서:

  • v0.9 기준선: 약 6.49초

  • v1.0 최적화: 약 3.87초

  • 상대적 감소: 약 39%

이 벤치마크는 로컬 Node VM 테스트 하네스에서 스크립트를 측정한다. 이는 스크립트 자체에 대한 상대적 회귀/성능 측정이며 JanitorAI 서버 지연에 대한 주장이 아니다.


호환성 & 마이그레이션

v1.0.0은 현재 JMO10 복구 형식을 쓴다.

레거시 JMO3부터 JMO9 에스크로 체크포인트를 읽을 수 있다.

필요한 이전 상태가 여전히 사용 가능한 경우 이전 Janitor Memory Optimizer 상태로부터의 마이그레이션이 지원된다.

새로 설치하는 경우 v1.0.0을 그냥 사용하면 된다.


ChatGPT 5.6으로 바이브 코딩됨

그렇다, 이 프로젝트는 ChatGPT 5.6으로 바이브 코딩되었다.

엔진은 인간이 주도한 설계, 테스트, 디버깅, 스트레스 테스트, 그리고 ChatGPT 5.6의 코드 지원을 통한 반복적인 아키텍처 수정을 통해 반복적으로 개발되었다.

그것은 여러 프로토타입을 거쳐 진화했다: 기본 선택적 기억 주입기에서 콘텐츠 주소 지정 보관소, 가역적 복구 시스템, 의미론적 기억 계층, 시간적 그래프, 엔티티 해석기, 에피소드 아카이브, 서사 스레드 엔진으로.

최종 릴리스는 생성된 코드가 그저 "맞아 보인다"는 이유로 게시된 것이 아니라 자동 회귀 및 스트레스 스위트를 거쳤다.

이것은 독립적인 커뮤니티 프로젝트다. 공식 OpenAI 또는 JanitorAI 제품이 아니며, ChatGPT 5.6을 언급하는 것은 공식 인증이나 보증이 아니라 개발 과정을 설명하는 것이다.


왜 사용해야 하는가?

기억이 롤플레이어가 관리해야 하는 또 다른 게임 메커니즘이 되어서는 안 되기 때문이다.

장면을 멈추고 다음과 같이 입력할 필요가 없어야 한다:

/save_memory relationship Nadia trust -1

그냥 이렇게 쓸 수 있어야 한다:

나디아가 한 짓을 보고 나니, 더는 그녀를 믿을 수 없을 것 같아.

그리고 이야기를 계속한다.

그것이 Janitor Memory Optimizer 뒤에 있는 설계 철학이다.

기억 처리는 배경에서 일어나야 한다. 채팅은 채팅으로 남아야 한다. 캐릭터 정의가 작업 기억을 담아야 한다. LLM은 현재 순간에 필요한 가장 작은 유용한 양의 컨텍스트를 받아야 한다.


요약하면

  • 설치하고 & 플레이.

  • 완전히 수동적.

  • 명령어 없음.

  • 기억 UI 없음.

  • 가짜 채팅 메시지 없음.

  • Scenario 전용 LLM 가시 기억.

  • 자연어 기억/망각.

  • 원자적 증거.

  • 해시된 기억 보관소.

  • 의미론적 도시에.

  • 시간적 및 인과적 그래프.

  • 보수적 엔티티 인텔리전스.

  • 적응형 뜨거움 / 따뜻함 / 차가움 기억.

  • 에피소드 장기 통합.

  • 지속적 서사 스레드.

  • 증거 파고들기를 통한 계층적 회상.

  • 가역적 JMO10 복구 에스크로.

  • 레거시 복구 지원.

  • 자동 컨텍스트 예산 책정.

  • 2,000+ 턴 스트레스 테스트 완료.

  • 두 주요 스트레스 스위트 모두에서 3/3 완전한 상태 손실 복구.

  • ES5 검증 오류 0개.

  • ES5 검증 경고 0개.

붙여넣어라. 연결해라. 평소처럼 롤플레이하라.
캐릭터가 기억하게 하라.

생성됨 8월 18일

업데이트됨 8월 18일

게시됨 8월 18일

프록시 허용됨

공개된 채팅