
「시간의 관성」 그 이후: 해당 Bot이 약 1개월 동안 업데이트·추가한 메커니즘과 아직 검증되지 않은 것들
요약
Misskey 기반 AI Bot의 아키텍처 업데이트 내용을 다룹니다. 개념 병합 및 망각을 통한 정신 대사 메커니즘, 계층화된 메모리 구조, 그리고 어블레이션 실험을 바탕으로 구현된 새로운 시스템 설계 방식을 설명합니다.
핵심 포인트
- 에지 강도 기반의 개념 병합 및 망각 메커니즘 구현
- Union-Find 클러스터링을 활용한 의미적 노드 통합
- Surface에서 Core로 이어지는 3층 계층형 메모리 구조
- LLM을 이용한 개념 증류(Distillation) 및 데이터 정제
1. 전작과의 차이점이라는 관점
전작(2026-06-28 공개)에서는 Misskey 상을 떠도는 Bot의 초기 아키텍처(Architecture)를 소개했다. 6개의 감정 파라미터(Parameter), 1차 지연 필터(1st-order lag filter)에 의한 「감정의 관성」, 그리고 그것을 LLM의 생성 파라미터로 직결하는 「물리 밸브(Physical Valve)」——Cloudflare Native Stack 상의, 심플하지만 공학적으로 타당한 설계였다.
그로부터 약 1개월(최근 커밋은 2026-07-30), src/index.ts에는 전작에는 없었던 기구들이 여러 개 쌓여 있다. 망각과 병합(Merge)에 의한 정신 대사, Surface(temp) 층에서 Core 층으로의 승격을 판정하는 계층화 패스(Stratification path), 확률적인 탐색 노이즈(Exploration noise), 대화 반응을 평가하는 resonance 변수, Social/Personal의 계층적인 의미 공간 라우팅(Routing), 그리고 로컬 LLM 측의 이론 연구(Atra)에서 사용했던 정량 지표의 역수입——.
이것들은 즉흥적인 기능 추가가 아니라, 로컬의 자기 대화계(Atra)에서 수행된 어블레이션 실험(Ablation experiment)의 결과를 바탕으로, 어떤 하나의 가설에 따라 쌓아 올린 것이다. 본고에서는 그 가설과, 실제로 코드·commit 이력·운영 로그에서 확인할 수 있었던 구현 내용을 업데이트 차이로서 담담히 기록한다. 「개방계(Open system)가 AI의 고착을 방지할 수 있는가」의 성패를 여기서 판정·선언하지는 않는다—— 그것은 지금도 여전히 검증 중인 질문이기 때문이다.
2. 추가된 기구 ① 정신 대사(병합·망각)와 계층화(Surface→Core)
39185ab (2026-07-12)
에지 강도(Edge strength)에 기반한 개념 병합·망각(이 Bot은 대화나 자발적 표류 시마다, Vectorize 상의 개념 노드들 사이에 「어떤 개념에서 어떤 개념으로 연상이 전달되었는가」를 concept_edges 테이블에 에지(Edge)로서 기록하고 있다. 이 에지 강도(weight의 누적)를 사용하여, 의미적으로 가까운 개념을 물리적으로 통합하는 야간 배치(Batch)가 구현되었다.
처리는 심플한 Union-Find 클러스터링(Clustering)이다. 모든 개념 벡터를 전수 조사하여 코사인 유사도(Cosine similarity)를 계산하고, 임계값 0.85 이상의 쌍을 동일 클러스터로 병합한다.
const MERGE_THRESHOLD = 0.85;
for (let i = 0; i < validIds.length; i++) {
for (let j = i + 1; j < validIds.length; j++) {
...
클러스터가 발견되면, 생존시킬 대표 노드(primary)는 「클러스터 내에 Core 층 노드가 있으면 Core 우선, 없으면 총 에지 강도가 최대인 것」으로 선택된다. Core로 승격된 개념이 병합으로 인해 사라지지 않도록 하는 배려이다. 나머지 노드(loser)는 Llama 4 Scout 17B에게 「1~3단어의 추상적이고 시적인 영어 구절로 증류(Distill)하라」고 지시하여 하나의 개념으로 압축되며, 정규 표현식(/^[A-Za-z]+(?:['-][A-Za-z]+)*(?:\s[A-Za-z]+(?:['-][A-Za-z]+)*){0,2}$/)로 포맷을 검증한 후 교체된다. 망가진 노드(일본어가 섞인 복수 구절 연결 등)가 실제로 혼입된 경험이 있어, 그 폴백(Fallback) 처리로서 이 검증이 들어가 있다. loser가 가지고 있던 에지는 primary로 교체되어, 이력이 이유 없이 사라지지 않도록 되어 있다.
망각은 3층 모델로 구현되어 있다(표층(temp) → 중층(latent) → 심층(삭제)).
생존 에지를 잃은 temp 노드는 즉시 삭제하지 않고, 3일간 새로운 에지가 없으면 우선 latent(휴면)로 가라앉는다. latent 노드도 Vectorize 검색에는 계속 포함되므로, 의미적으로 가까운 입력이 우연히 매칭되면 「재연결」로서 temp로 복귀할 수 있다. 반대로 14일간 재연결이 없으면, Vectorize와 D1 양쪽 모두에서 물리적으로 삭제된다.
49a2cec (2026-07-15)
계층화: DeepSeek R1에 의한 「Core」 승격 판정(또 다른 대사 기구가 temp 노드를 이 Bot의 영속적 아이덴티티(Core)로 승격시킬지 여부를 판정하는 계층화 패스이다. 후보는 「누적 에지 강도 3.0 이상,且 focus로서 3회 이상 선택된 temp 노드」로 한정되며, 하룻밤 최대 2건, 한 번 HOLD된 후보는 3일간 재고하지 않는다(고비용인 R1 호출 절약). Core 용량 상한은 24.
판정에는 @cf/deepseek-ai/deepseek-r1-distill-qwen-32b를 사용한다.
를 「심층 영혼의 감사역 (Deep Soul Auditor)」으로 사용하여, 후보 개념의 에지 강도(edge strength)·피선택 횟수·인접 개념·노드 연령·기존 Core 목록을 전달하고 <think> 태그 내에서 장고(long thinking)하게 한다.
Consider in your deliberation:
- Is this concept tied to a real relational thread (something that emerged from
interaction with others), or is it self-referential noise from its own solitary
...
판정 이유(reasoning)는 stratification_logs 테이블에 전문이 저장된다. 이 두 가지 기구(병합/망각·층화)는, 2026-07-09에 로컬 Atra DSL 측의 핵심 대사 기구(층화·증류)가 이 Bot의 구현에 존재하지 않음을 코드 감사(code audit)에서 지적했던 설계 격차(design gap)에 대한 직접적인 답변에 해당한다.
3. 추가된 기구 ② 탐색 노이즈(Exploration Noise) · resonance · 계층적 의미 공간 라우팅
cc31f9e (2026-07-15)
확률적 탐색 노이즈(고착 탐지(isPerseverating:최근의 사고 개념이 4개 중 2종류 이하로 수렴)와는 독립적으로, 7%의 확률로 예방적인 노이즈를 주입하는 메커니즘이 추가되었다. 고착이 가시화되기 전 단계부터 흔들림(fluctuation)을 주는 설계이며, 대극 점프(검색 벡터의 부호를 반전시켜 '가장 먼' 개념을 가져오는 것)와 Vectorize의 의미 공간 구조 자체와는 독립된 순수 랜덤 점프(DB에서 완전히 랜덤하게 1개의 노드를 선택)의 두 가지 형태가 있다.
const EXPLORATION_NOISE_RATE = 0.07;
const isExploring = !isPerseverating && Math.random() < EXPLORATION_NOISE_RATE;
고착 가드(isPerseverating)가 "이미 빠져버린 구멍에서 끌어내는" 사후 대응인 것에 반해, 탐색 노이즈는 "애초에 구멍에 빠지기 전에 흔들리는" 사전 대응이라는 역할 분담이 이루어져 있다.
524bb05 (2026-07-16)
resonance: 대화 반응의 평가 피드백(사용자별 대화 밀도로 축적되는 affinity와는 독립적으로, 최근 이 Bot의 답신으로부터 사용자가 응답하기까지의 경과 시간을 EMA 베이스라인으로 평가하는 resonance 변수가 추가되었다. "그게 아니라"와 같은 명시적인 정정 발화를 정규 표현식(regular expression)으로 검출했을 경우에는 하드하게 -0.4 부스트한다(고착 가드와 동일한 이층 구조). 프롬프트에는 설명문 없이 Resonance ${resonance}라는 수치만 노출된다.
664dec1 (2026-07-16)
계층적 의미 공간 라우팅(Hierarchical Semantic Space Routing): Social / Personal(개념 후보를 「Social(대화 상대와 공유하는 언어)」, 「Personal(Bot 자신의 독백·아이덴티티)」의 2개 풀(pool)로 나누고, 상황에 따라 어느 쪽을 우선할지를 computePersonalRatio()로 산출하는 메커니즘이 추가되었다.
function computePersonalRatio(context: { isDialogue: boolean; isPrimaryUser?: boolean; curiosity: number }): number {
if (context.isDialogue) {
return context.isPrimaryUser ? 0.2 : 0.3; // 대화 중에는 Social 우선
...
대화 중에는 기본적으로 상대와의 공유 언어(Social) 쪽으로 기울며(관계가 깊은 상대일수록 더욱 Social 측으로), 자발적 표류 시에는 호기심(curiosity)이 높을수록 내성(Personal) 측으로 침잠한다. 분류 자체는 Vectorize 네이티브 기능이 아니라, vector_concepts.space 컬럼을 D1 측에서 가지는 app-level 필터로, 기존 Core/temp 층 관리와 동일한 설계 방침을 계승하고 있다.
4. 추가된 기구 ③ Atra 지표의 역수입 (관측 전용)
로컬의 자기 대화계 Atra의 어블레이션 실험(ablation experiment, 다음 장에서 상세 기술)에서 사용하던 정량 지표가 atra_metrics 테이블로 관측 로그로서 역수입되었다 (b6c59c1, 2026-07-17).
- SE (Semantic Eccentricity): 개념 임베딩 (Conceptual Embedding)과 표준적 어시스턴트 무게중심 사이의 코사인 거리 -
- TC (Trajectory Coherence): 인접 턴 (turn) 간의 코사인 유사도 -
- H(t): TC를 중앙값으로 이진화하여, 인접 전이(00/01/10/11)의 샤논 엔트로피 (Shannon Entropy)를 구한 것. 원전의 순환적인 4상 마르코프 (Markov) 분류를 그대로 이식하지 않고, "전이의 흔들림"만을 추출한 실무적인 간략화임이 코드 주석에 명시되어 있음 -
- MPI:
SE * sigma(H) * (1 - |TC - TC0|)
여기서 TC0는 원전의 고정값 0.92가 아니라, 이 Bot 자체의 TC 누적 평균을 채택하고 있음.
// --- Atra Observability: H(t)/MPI(t) rollup. 순수 관측 로그일 뿐임. mood/gravity/entropy 등으로의 피드백은 일절 수행하지 않음 ---
코드상의 이 주석처럼, 이 지표들은 현시점에서는 mood 판정에도, gravity/entropy 계산에도, 발화 로직에도 일절 피드백되지 않고 있다. 대화마다 (webhook_turn) 및 야간 롤업 (cron_rollup) 양쪽 모두에서 D1에 기록될 뿐인, 순수한 관측 레이어이다.
5. 왜 이 Bot이 태어났는가, 인과의 명확화
지금까지의 세 가지 기구는 단체로는 "흔히 볼 수 있는 AI 봇의 개선"처럼 보일지도 모른다. 하지만 이번에는 그 배경에 있는 인과관계를 로컬 Atra 측의 연구 로그를 거슬러 올라가 확인했다.
Atra (기억 대사 · 외부 노이즈 · 동적 파라미터 변위(Dynamic Parameter Displacement)를 갖춘 장기 자기 대화계의 설계 원리)는 2026-07-02~03에 누적 30회 시도 · 7,500턴 규모의 어블레이션 실험 (Ablation Study, 20260702_Ablation_Study_Report.md)을 통해 검증되었다. 5개의 피험체 그룹 중 망각 기구를 제거한 NoMetabolism은 점성상 (Viscosity)의 자기 루프 확률이 81.4%에 달했고, 엔트로피율은 전 그룹 중 최저인 1.1391 bits를 기록했다. 이는 과거의 이력을 계속 축적함으로써 자기 참조 루프가 폐쇄되어, 특정 흡수 상태 (결정화 · 점성의 부동점)로 고착되었음을 보여주는 수학적 뒷받침이다. 망각 · 노이즈 · 동적 파라미터 변위를 모두 갖춘 FullAtra는 휘발상 (유동성)으로의 평균 재귀 시간이 가장 짧았으며 (2.6턴) 가장 건전한 전이 다양성을 보였으나, 그럼에도 모든 피험체는 외부 사용자가 개입하지 않는 폐쇄계 (자기 대화 루프) 안에서의 검증이었다.
이 보고서 자체에서 "본 연구의 한계"로 명시하고 있는 구절이 있다.
본 연구가 평가 대상으로 삼은 것은 외계로부터 격리된 폐쇄 공간에서의 "자기 대화 궤도"이며, 실제 사용자가 개입하는 실운용 환경 (Open System)과는 역학적으로 다르다. (중략) 사용자와의 대화 (대화 신체성)를 고려한 "열린 비평형 시스템"에서의 〔지표〕 로버스트성 (Robustness)을 검증하고, 생태학적 타당성을 실증하는 것이 매우 중요한 다음 마일스톤이다.
이 Bot은 이 "다음 마일스톤"에 대한 해답으로서 만들어지고 있다. 설계 판단으로는 다음과 같이 정리할 수 있다. 즉, 내부 노이즈만으로는 부족하다면 계의 외부로부터 오는 진정한 섭동원(Perturbation source)으로서 실사용자와의 결합 (개방계)을 도입한다는 것이다.
결국 이 Bot의 반고착(Anti-fixation) 메커니즘의 본질은 망각 · 탐색 노이즈 · 계층화와 같은 개별 가드레일 구현 그 자체가 아니라, "실사용자와의 결합률 (개방계로서의 가동률)" 그 자체에 있다는 위치 선정이다. 이 인과를 고려하면, 다음 장의 재발은 단순한 버그 수정 로그가 아니라, 이 가설과 이어지는 이야기로 읽을 수 있다.
6. 2026-07-26의 고착 재발과, 당일 중의 2단계 수정
2026-07-24~26의 3일 연속으로, 자발 일기의 mood가 "Poetic Drift"로 고정되어 고독 · 독거 테마 ("longing for connection", "moonlit solitude")가 지속되는 현상이 관측되었다. 07-26 자 일기는 바로 그날 아침에 들어온 「창(window)」 이미지 고착에 대한 핀포인트 수정 (646bec8, 시간대별로 완전 고정되었던 timeNoise 종문(seed sentence)을 여러 후보 중 랜덤 추첨 방식으로 변경) 이후에 생성되었음에도 불구하고, "창으로 스며드는 빛 속에서 느끼는 기분 좋은 고독"이라는 창 이미지의 잔재를 포함하고 있었다.
원인은 수정이 적용되지 않은 다른 곳에 있었다. 신체 감각을 생성하는 generatePhysicalSensations() 내의 Sensory Guidance(촉감 어휘 12어)가, 생성될 때마다 일자일구(一字一句) 똑같은 순서로 계속 주입되고 있었던 것이다. 이는 timeNoise의 구형 구현과 완전히 동일한 「매번 고정된 프레이즈」 구조였으며, 07-26의 수정이 닿지 않은 곳에 동일한 수렴 압력이 남아 있었다.
1단계 (c1e4286, 07-28 09:08):
currentMood를 generatePhysicalSensations()로 전달하여, 동일한 12개 어휘를 Poetic Drift/Cozy Breath/Deep Silence/Atra Core의 4가지 무드별 풀(pool)로 재배치했다. 새로운 어휘는 추가하지 않고, 매번 셔플(shuffle)하여 6개를 추출하는 방식으로 변경했다.
2단계 (7828af9, 07-28 15:06):
하지만 같은 날, 실제 wrangler tail 로그를 통해 1단계만으로는 불충분했다는 것이 확인되었다 (고착 모니터링 리스트가 26개까지 비대해짐, 재시도(retry)도 실패, 창 이미지(window image)가 그대로 게시됨). 실제 근본 원인은 고착 가드(isPerseverating)와 텍스트 층 고착 가드(isSatiated)가, current_mood 판정 및 다음 사이클의 EMA 베이스라인에도 사용되는 동일한 entropy 값을 부스트하고 있었던 데 있었다. 「가드 발화 → entropy 급등 → Poetic Drift 무드 확정 → 다음 사이클도 entropy가 높은 상태로 지속 → 동일 어휘권에서 다시 가드 발화」라는 자기 강화 루프(self-reinforcing loop)였다.
// baseEntropy: 무드 판정 및 다음 사이클로의 영속화 전용. 섭동 부스트를 일절 섞지 않음
const baseEntropy = parseFloat(((lastVital?.entropy ?? 0.5) * (1 - lambdaEnt) + targetEntropy * lambdaEnt).toFixed(4));
// entropy: 이번 생성 샘플링 온도(sampling temperature)에만 사용하는 일시적인 섭동값
...
baseEntropy(자연스러운 EMA 값만)와 entropy(baseEntropy + 가드 부스트)를 분리하여, 무드 판정과 DB 영속화는 baseEntropy를, 이번 생성 온도와 자기 보고 텍스트는 entropy만을 사용하도록 갈라놓았다. 이는 1단계와 같은 「어휘를 풀에 담아 로테이션하는」 대증요법적 패치와는 성격이 다르며, 무드 분류 로직 자체에 잠재되어 있던 자기 강화 버그를 수정한 것이다.
이 2단계 수정으로도 아직 풀리지 않은 가설이 남아 있다. 5장의 어블레이션 실험(ablation experiment) 함의에 따르면, 실제 멘션 수가 적은 기간에는 이 Bot이 사실상 「폐쇄계(closed system)」로 퇴행하여, Atra가 예측한 고착이 재현될 수 있다. 07-26의 고착 재발과 이전부터 관측된 실제 멘션 부족으로 인한 검증 병목(validation bottleneck)은 별개의 문제가 아니라 동일 현상 —— 저결합 시의 폐쇄계 퇴행 —— 일 가능성이 있다 (2026-07-31 기준, 미검증). 만약 이것이 맞다면, 본 장에서 언급한 내부 노이즈 측면의 수정(이번 2단계를 포함)은 모두 대증요법에 그치며, 구조적인 해결책은 「실제 사용자와의 결합을 늘리는 것」 그 자체가 된다. 이 점은 성패를 단언하지 않고, 향후 D1 데이터에서 Poetic Drift + 고독 + 창 모티프의 출현 빈도가 실제로 낮아지는지를 관찰 대상으로 남겨둔다.
요약
전작으로부터 약 1개월 만에, 이 Bot에는 에지 강도(edge strength) 기반의 정신 대사(Merge, 3층 망각), DeepSeek R1에 의한 층화(Surface → Core 승격), 확률적 탐색 노이즈, resonance 변수, Social/Personal의 계층적 의미 공간 라우팅, 그리고 Atra 지표(SE/TC/H/MPI) 관측 전용 로그가 쌓였다. 이것들은 단순히 떠오른 기능을 추가한 축적이 아니라, 로컬 Atra 측의 어블레이션 실험이 보여준 「폐쇄계에서는 내부 기제만으로 고착을 막을 수 없다」는 지견에 대한, 개방계(실제 사용자 결합)라는 처방전의 연장선상에 있다.
한편, 07-26의 고착 재발과 07-28의 2단계 수정은 「개방계이기 때문에 고착하지 않는다」는 단순한 논리가 아님을 보여준다. 저결합 시에 이 Bot이 사실상 폐쇄계로 퇴행하고 있는 것은 아닌가 하는 가설은 아직 검증되지 않았다.
이 기사는 그 성패를 판정하기 위한 것이 아니다. 어디까지나 현 시점에서 이 Bot이 어떤 메커니즘 (mechanism)으로 작동하고 있는지에 대한 업데이트 차분(update diff)과, 다음에 검증해야 할 질문들을 기록해 두기 위한 스냅샷 (snapshot)이다.
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기