컨텍스트 압축(Context compaction)은 어둠 속에서 일어납니다. 저는 이를 지도 위에서 구현했습니다.
요약
컨텍스트 윈도우 제한 문제를 해결하기 위해 대화 과정을 그래프 구조로 관리하는 ThoughtDAG를 소개합니다. 기존의 불투명한 자동 압축 방식 대신, 사용자가 직접 압축할 노드를 선택하고 시각적으로 확인할 수 있는 투명한 응축 프로세스를 제안합니다.
핵심 포인트
- 대화 세션을 그래프(Graph) 구조로 관리하여 컨텍스트 제어력 강화
- 기존의 불투명한 자동 압축 방식의 한계 지적
- 사용자가 직접 압축 대상을 선택할 수 있는 시각적 응축 인터페이스 제공
- 원본 데이터를 보존하며 새로운 증류 트리(Distill tree)를 구축하는 방식
모든 긴 AI 세션은 똑같은 방식으로 끝납니다. 컨텍스트 윈도우(Context window)가 가득 차면, 무언가는 포기되어야만 합니다.
대부분의 도구는 이 순간을 대신 처리해 줍니다. 요약기(Summarizer)가 깨어나 당신의 대화 기록을 당신이 결코 볼 수 없는 한 단락으로 다시 쓰고, 대화는 아무 일도 없었던 것처럼 계속됩니다. 코딩 에이전트(Coding agents)는 이를 자동 압축(auto-compact)이라고 부릅니다. 에이전트 프레임워크(Agent frameworks)는 이를 응축기(condenser)라고 부릅니다. 이름은 다르지만 형태는 같습니다. 당신의 세션에서 가장 중대한 편집이 기계에 의해, 어둠 속에서 이루어지며, 당신은 그 자리에 없었다는 점입니다.
무엇을 남겼을까요? 무엇을 버렸을까요? 당신이 20분 동안 내린 결정이 보존되었을까요, 아니면 "사용자가 여러 옵션을 탐색함"이라는 문구로 평탄화되었을까요? 당신은 이 질문들에 답할 수 없습니다. 왜냐하면 살펴볼 수 있는 것이 아무것도 없기 때문입니다.
저는 이것을 용납할 수 없게 만드는 한 가지 규칙을 바탕으로 ThoughtDAG를 구축해 왔습니다: 와이어(wire)가 곧 컨텍스트(context)다. 당신의 대화는 무한한 캔버스 위의 그래프(graph)로 존재합니다. 모든 답변은 노드(node)이며, 노드 사이의 와이어(wires)가 다음 질문에서 모델이 정확히 무엇을 볼지를 결정합니다. 엣지(edge) 하나를 삭제하면 다른 답변을 얻게 됩니다. 저는 이 규칙에 대해 여기서 작성했습니다.
이 포스트는 지도 자체가 너무 무거워질 때 그 규칙이 당신에게 무엇을 강요하는지에 관한 것입니다. 압축(Compaction)은 어딘가에서 일어나야만 합니다. 문제는 그것이 당신이 볼 수 있는 곳에서 일어나는가 하는 점입니다.
당신이 지켜볼 수 있는 곳에서의 응축
ThoughtDAG에서 응축(condensing)은 당신의 대화에 '일어나는' 무언가가 아닙니다. 그것은 대화 '옆에서' 일어나는 것을 당신이 지켜보는 것입니다.
응축(condense)을 누르면, 앱은 제가 **런(runs)**이라고 부르는 것을 찾기 위해 그래프를 스캔합니다. 이는 대화가 그저 앞으로 나아간 Q&A의 직선 통로를 의미합니다. 세 번 이상의 턴(turn), 들어오는 길 하나, 나가는 길 하나, 그리고 중간에 결정적인 내용이 없는 상태입니다. 이것들은 모든 실제 작업 세션이 축적하게 되는 "좋아요, 이제 이런 식으로 해보세요"와 같은 광활한 영역들입니다. 스캔은 순수한 그래프 워크(graph walk)입니다. 어떤 모델도 무엇이 압축 가능한지에 대해 투표할 수 없습니다. 구조(structure)가 결정합니다.
각 후보 실행(candidate run)은 기본적으로 체크된 상태로 목록에 나타나며, 그 옆에는 토큰 절약량이 표시됩니다. 실행 항목을 클릭하면 캔버스가 해당 위치로 이동하여, 접기(fold)를 수행하기 전에 무엇을 접으려 하는지 미리 확인할 수 있습니다. 온전하게 유지하고 싶은 항목은 체크를 해제하세요.
그다음 빌드(build)가 시작되는데, 이 부분이 제가 가장 중요하게 생각하는 지점입니다. 여러분의 원본 트리(original tree)는 절대 건드리지 않습니다. 응축(Condensing) 과정은 첫 번째 트리 옆에 두 번째 트리를 구축합니다. 체크된 실행들은 증류 노드(distill nodes)로 축소되며, 나머지 모든 노드는 있는 그대로 복사되고, 모든 와이어(wire)는 다시 구축됩니다. 두 트리는 동일한 캔버스 위에 나란히 놓입니다. 아무것도 수정되지 않았습니다. 무언가 새로운 것이 만들어졌을 뿐입니다.
절대 압축되지 않는 것들
증류기(distiller)는 프롬프트(prompt)가 아닌 구조(structure)에 의해 강제되는 충실도 규칙(fidelity rules)에 따라 작동합니다.
- 결정(Decisions)과 전환점(pivots)은 절대 축소되지 않습니다. 제외 대상, 결정, 또는 방향 전환으로 표시한 모든 전환점은 랜드마크(landmark)입니다. 랜드마크는 응축된 트리에서도 항상 완전한 노드로 생존합니다.
- 여러분의 하이라이트(highlights)는 그대로 유지됩니다. 기계가 작성한 산문은 요약됩니다. 하지만 사람이 중요하다고 표시한 텍스트는 단어 하나 틀리지 않고 그대로 전달됩니다. 이 원칙을 한 줄로 요약하면 다음과 같습니다: 기계가 말한 것은 압축될 수 있지만, 사람이 표시한 것은 작성된 그대로 생존해야 합니다.
- 작업 프런티어(working frontier)는 접근 금지 구역입니다. 모든 리프(leaf) 노드 상단의 마지막 세 단계는 여러분이 현재 사고하고 있는 지점입니다. 스캐너(scanner)는 모델이 무엇을 "오래된 것"으로 간주하든 상관없이 이 단계들을 제안하지 않습니다.
- 모든 증류 노드는 자신의 출처를 알고 있습니다. 각 증류 노드에 있는 출처 칩(provenance chip)을 클릭하면 원본 트리의 해당 노드가 대체했던 정확한 실행 지점으로 되돌아갑니다. 감사 추적(audit trail)은 믿음에 의존하는 것이 아니라 클릭 한 번으로 이루어집니다.
실험이 되는 지점
블랙박스(black box)는 제공할 수 없는, 가시적인 복사본이 주는 이점은 바로 이것입니다: 압축을 테스트할 수 있다는 것입니다.
두 트리 모두에 동일한 질문을 연결하십시오. 질문을 두 번 던집니다. 하나는 전체 히스토리(full history)에서 실행되고, 다른 하나는 증류된 버전(distilled version)에서 실행됩니다. 만약 두 답변이 일치한다면, 당신의 압축된 트리는 중요한 정보를 그대로 담고 있음을 증명한 것이며, 이제 희망 사항이 아닌 실제적인 근거를 바탕으로 원본을 아카이브(archive)할 수 있습니다. 만약 두 답변이 갈라진다면, 그 차이(diff)는 요약 과정에서 무엇을 놓쳤는지를 정확히 가리키고 있으며, 칩(chip)은 더 면밀한 검토가 필요한 실행 단계로 당신을 안내합니다.
압축(Compaction)은 더 이상 요약기에 대한 신뢰의 행위가 아닙니다. 그것은 당신이 직접 실행할 수 있는 비교가 됩니다.
왜 "자율적이지 않고 편집 가능한 것"이 핵심인가
첫 번째 포스트의 독자가 남긴 댓글 중 제가 계속 되새기는 내용이 있습니다: 편집 권한을 인간의 손에 두는 것은 기능적 제한이 아니라, 신뢰 메커니즘(trust mechanism)이라는 점입니다. 저는 여기서 한 걸음 더 나아가고 싶습니다. 당신이 편집 권한을 가지고 있기 때문에, 통제된 비교를 수행할 수 있습니다. 비교를 수행할 수 있기 때문에, 도구에 대한 신뢰는 기본적으로 가정되는 것이 아니라 증거에 의해 획득됩니다. 가시성(Visible)은 편집 가능성(editable)으로 이어지고, 편집 가능성은 테스트 가능성(testable)으로 이어집니다. 그 연쇄가 바로 제품입니다.
컨텍스트 압축(Context compaction)은 그 연쇄를 온전하게 유지하기 가장 어려운 지점이었습니다. 왜냐하면 모든 유인책(incentive)이 "그냥 조용히 요약해라, 어차피 아무도 안 본다"라고 말하기 때문입니다. 랜드마크(landmarks)를 고정하고 출처(provenance)를 연결한 상태로, 나란히 배치된 복사본(side-by-side copy) 형태로 구축하는 것이 제가 방어할 수 있는 버전이었습니다.
직접 시도해보세요
데모는 브라우저에서 실행됩니다: 설치도, 가입도 필요 없습니다. 예시 캔버스(canvas)를 불러오거나, PDF를 드롭하여 읽기를 시작하세요. 그래프에 어느 정도 통로(corridors)가 형성되면 도구 모음에서 압축(Condense) 기능을 사용할 수 있습니다.
엣지(edge) 하나를 삭제해 보세요. 다른 답변을 얻게 될 것입니다. 그리고 지도가 무거워지면, 누구나 접힌 부분을 볼 수 있도록 그곳을 접으십시오.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기