글만든 이유와 원리
긴 AI 대화를 다른 AI에게 넘기는 법: 요약하지 않고 발췌한 인수인계 문서
AI Chat Exporter는 LLM 없이 규칙만으로 대화의 원문 문장을 골라 인수인계 문서를 만듭니다. 실제 대화 27개로 방법을 비교하고, 문서만 받은 AI의 정답률을 78.8%에서 97.6%로 올린 과정입니다.

ChatGPT나 Claude와 며칠씩 한 주제로 대화하다 보면 두 가지 일이 생깁니다. 대화가 너무 길어져 앞부분을 AI가 잘 기억하지 못하거나, 다른 AI로 옮겨서 이어 가고 싶어집니다. 이때 “지금까지 내용을 정리해 줘”라고 부탁해 새 대화에 붙여넣곤 합니다.
이 방법에는 문제가 있습니다. 요약하는 AI가 없던 내용을 만들거나, 중요한 결정을 빠뜨리거나, 내가 정한 금지 사항을 흐리게 옮깁니다. 요약이 맞는지 확인하려면 결국 원래 대화를 다시 읽어야 합니다.
Lucian AI Chat Exporter는 이 문제를 다르게 풀었습니다. 요약하지 않고 발췌합니다.
생성하지 않고 골라낸다
인수인계 문서를 만들 때 LLM, 임베딩, 외부 API를 쓰지 않습니다. 규칙 기반 TypeScript 코드가 대화의 원문 문장을 그대로 골라 정리합니다.
- 골라낸 문장마다 원문 위치가 붙습니다(
[#m12]는 12번째 메시지). 다음 AI나 내가 원문을 확인할 수 있습니다. - 원문을 고를 뿐이라 없던 사실이 끼어들 수 없습니다.
- 모든 처리가 내 브라우저 안에서 끝납니다. 대화를 외부 서버나 다른 AI로 보내지 않습니다.
문서는 정해진 순서로 구성됩니다. 맨 위에 문서를 읽을 AI를 위한 안내문, 이어서 기본 정보, 목표와 요청 흐름, 첨부 자료, 확정된 결정, 지시·제한·금지 사항, 완료한 작업, 현재 상태, 미완료 문제, 다음 작업, 실패 원인, 핵심 코드, 참고 링크, 최근 원문 순입니다. 내용이 없는 칸은 넣지 않습니다.
결정이 바뀐 경우에는 최신 결정을 앞에 두되, 이전 결정도 지우지 않습니다. 키워드만으로 바뀌었다고 단정하지 않고, 확신할 수 없는 항목은 표시해 둡니다.
얼마나 줄일까
인수인계 문서는 전체 대화를 그대로 내보낸 것의 약 12% 분량(8천~3만 2천 토큰)입니다. 어떤 대화든 전체의 3분의 2를 넘지 않습니다.
12%로 줄이면 무엇인가는 잃습니다. 그래서 같은 분량에 정보를 가장 많이 남기는 방법을 찾는 게 핵심이었습니다.
실제 대화로 방법을 비교했다
내 실제 ChatGPT 대화 중 1만 2천 토큰이 넘는 긴 대화 27개(원문 합계 약 152만 토큰)로 실험했습니다. 같은 분량 안에서 사실 문장, 핵심어, 사람·제품 이름 같은 개체, 사용자가 쓴 단어가 얼마나 남는지를 쟀습니다.
| 방법 | 종합 점수 | 사실 보존 | 핵심어 |
|---|---|---|---|
| 앞부분만 남기기 | 46.3 | 19.7% | 73.5% |
| TextRank | 46.1 | 26.6% | 87.4% |
| 최근 부분만 남기기 | 50.3 | 31.2% | 81.2% |
| MMR | 55.7 | 30.9% | 81.3% |
| 이전 버전(v1.1) | 55.5 | 24.6% | 81.7% |
| 채택한 버전(v1.2) | 58.8 | 29.3% | 88.4% |
가장 잘 맞은 선택 방식은 예산 제약 최대 커버리지였습니다. 문서에 아직 없는 개념(단어와 단어 쌍)을 토큰 하나당 가장 많이 새로 담는 문장부터 고르는 방식입니다. 이미 결정이나 요청 칸에 들어간 개념은 덮인 것으로 칩니다. 같은 내용을 두 번 넣지 않으면서 새 정보를 최대한 담게 됩니다.
임베딩 모델이나 문장 압축 모델 같은 최신 방법도 비교했지만, 같은 분량에서 더 나으면서 브라우저에서 가볍게 돌아가는 방법은 찾지 못했습니다.
가장 큰 손실은 알고리즘이 아니었다
실험에서 의외였던 점은, 정보를 가장 많이 잃는 원인이 고르는 방식이 아니라 아주 긴 메시지였다는 것입니다. 실제 대화는 메시지 수가 적고(중앙값 10개), 메시지 하나가 아주 긴 경우가 많았습니다. 메시지 1~3개에 17만 토큰이 넘는 대화도 있었습니다.
이전 버전은 이런 긴 메시지의 앞과 뒤만 남기고 가운데를 잘랐습니다. 그 가운데 있던 정보가 통째로 사라졌습니다. 새 버전은 잘린 가운데의 문장·표·목록도 다른 문장과 같은 조건으로 선택 후보에 넣습니다.
문서만 받은 AI가 질문에 답할 수 있는가
점수가 높아도 실제로 쓸모가 있는지는 다른 문제입니다. 그래서 세 번째 실험에서는 질문을 바꿨습니다. “이 문서만 받은 AI가 대화 내용에 관한 질문에 맞게 답하는가?”
합성 대화를 만들어 질문과 정답을 정해 두고 측정했더니, 이전 문서는 분량의 대부분을 구조 칸을 채우는 데 쓰고 있었습니다. 칸별 분량 배분과 결정 규칙을 다시 정한 뒤 정답률이 78.8%에서 97.6%로 올랐고, 문서는 오히려 짧아졌습니다. 실제 대화 31개에서는 개선 폭이 작아서, 사실 문장 보존이 29.7%에서 33.2%로, 출력은 7% 줄었습니다. 두 결과를 함께 적어 두는 이유는 합성 대화의 숫자만 보면 효과를 과대평가하기 쉽기 때문입니다.
사용자가 알려준 문제
실험만으로는 찾지 못한 문제도 있었습니다. 사용자가 “압축했다는 인수인계 파일이 전체 내보내기보다 크다”고 알려 왔습니다. 확인해 보니 짧은 대화에서는 원문 전체를 넣고 그 위에 안내문과 칸을 더 붙이고 있어서, 파일이 전체보다 29~38% 컸습니다.
고친 내용은 이렇습니다.
- 짧은 대화는 칸을 나누지 않고, 원문에서 핵심 문장만 순서대로 남깁니다. 생략한 곳은
…로 표시합니다. 같은 분량에서 칸을 나눈 형식보다 실제 대화 정보가 더 많이 남았습니다(보존 점수 59.5~81.3 → 85.3~88.0). - 토큰을 세는 방식도 바꿨습니다. 이전에는 “한글 1자 1토큰, 나머지 4자 1토큰”으로 셌는데,
[#m12]같은 표시나 표를 실제의 절반쯤으로 세서 문서가 실제보다 작게 보였습니다. 지금은 실제 토크나이저와 ±7% 안으로 맞춘 추정치를 씁니다.
속도와 한계
- 100만 토큰(메시지 4,514개)짜리 대화의 인수인계 문서를 만드는 데 1.16초가 걸렸습니다(M2 Pro, Chrome 155). 같은 대화를 다시 만들 때는 분석 결과를 재사용해 0.85초입니다.
- 긴 대화를 짧은 시간에 여러 번 내보내면 서비스가 잠시 요청을 막습니다. 예전에는 이때 화면을 스크롤하며 읽다가 메시지가 빠지는 일이 있었습니다(실제로 42개 중 16개만 남은 경우). 지금은 서비스가 알려 준 시간만큼 기다렸다가 다시 받고, 그래도 막히면 미리 받아 둔 사본으로 만들면서 그 사실을 알립니다.
- 실제 계정으로 전체 흐름(버튼 클릭부터 파일 저장까지)을 확인한 서비스는 ChatGPT와 Claude입니다. Gemini와 Grok은 실제 사이트에서 데이터 구조를 읽기 전용으로 확인했고, 전체 흐름은 모의 사이트로 검증했습니다.
- 각 서비스의 내부 구조는 예고 없이 바뀔 수 있습니다.
쓰는 법
Chrome 웹 스토어에서 설치한 뒤 ChatGPT·Claude·Gemini·Grok 대화 화면을 새로고침하면, 답변 아래에 Lucian 버튼이 생깁니다. 인수인계 Markdown 추출을 누르면 대화제목-lucian-handoff-날짜.md 파일이 저장됩니다. 이 파일을 다른 AI의 새 대화에 첨부하고 “이어서 진행해 줘”라고 하면 됩니다.
전체 대화를 PDF, Markdown, Word, 한글(HWPX)로 내보내는 기능도 있습니다. 자세한 기능과 개인정보 처리 방식은 소개 페이지에 있습니다.
요약을 AI에게 맡기면 편하지만, 그 요약이 맞는지 확인하는 비용은 다시 사람에게 돌아옵니다. 원문을 그대로 고르고 위치를 남기는 방식은 덜 매끄러워 보여도, 다음 사람이나 다음 AI가 확인할 수 있다는 점에서 인수인계에 더 맞다고 생각합니다.