APX에서 메시지를 붙여넣기(Paste)가 아닌 인용구(Quote)로 전달하도록 만든 이유
요약
APX에서 메시지를 단순 붙여넣기 대신 출처가 명시된 인용구(Quote) 형태로 전달하도록 변경한 이유를 설명합니다. 이는 복사-붙여넣기가 파괴하는 대화의 맥락과 소유권을 보존하기 위함입니다. 전달되는 모든 메시지는 소스 레이블, 화자, 타임스탬프 등 구조화된 메타데이터를 포함하여, 모델과 사용자 모두가 출처를 명확히 인지하도록 합니다.
핵심 포인트
- 단순 붙여넣기는 대화의 맥락과 소유권을 파괴합니다.
- 전달되는 메시지는 소스 레이블, 화자, 타임스탬프 등 구조화된 메타데이터를 가집니다.
- 인용구는 4,000자로 제한되며, 컨텍스트 전달에 초점을 맞춥니다.
- 메시지 출처(Provenance) 정보가 프로젝트와 스레드 수준에서 명확하게 기록됩니다.
APX를 구축하면서 계속해서 같은 작은 실패에 부딪혔습니다. 유용한 메시지는 존재했지만, 잘못된 대화 흐름 속에 놓여 있었습니다.
사람들은 한 스레드에서 세부 정보를 받고, 다른 에이전트 세션을 열어 텍스트를 복사한 다음 붙여넣었습니다. 새로운 에이전트는 단어는 읽을 수 있었지만, 그 맥락 속의 의미는 알지 못했습니다. 이것은 소유자가 방금 입력한 것일까요? 아니면 에이전트의 결론일까요? 어떤 프로젝트나 대화가 이를 생성했는지요? 다음 주에 누구나 원래의 교환 내용을 다시 열어볼 수 있을까요?
복사-붙여넣기는 빠르지만, 핸드오프(handoff)를 신뢰할 수 있게 만드는 사실들을 조용히 파괴합니다.
그래서 저는 APX에서 전달하는 기능을 편리한 붙여넣기가 아닌 출처가 명시된 인용구로 만들었습니다.
핵심 주장: 맥락에는 주소가 필요하다
이제 전달된 메시지는 어디서 왔는지, 누가 말했는지, 언제 말했는지를 담고 있습니다. 웹 인터페이스에서 메시지는 같은 프로젝트 내의 다른 세션이나 다른 프로젝트로 이동할 수 있습니다. 목적지에서는 익명의 단락 대신 인용 카드(quote card)를 받게 됩니다.
이는 의도적으로 절제된 방식입니다. 저는 새로운 메시지 채널, 별도의 전달 데이터베이스, 또는 불투명한 교차 프로젝트 동기화 계층을 추가하지 않았습니다. 전달된 항목은 여전히 평범한 사용자 턴(user turn)입니다. 다른 턴들이 저장되는 곳에 저장되므로, 기존의 대화 보기, 원장(ledger), 받은 편지함, 그리고 나중에 다시 읽는 과정에 특별한 대체 역사가 필요하지 않습니다.
이 턴의 메타데이터가 구조화된 출처 정보를 담고 있습니다. 모델에게 전달되는 텍스트에는 소스 레이블, 화자, 타임스탬프를 포함하는 명시적인 인용 표시자가 들어갑니다. 따라서 모델과 인간 모두 동일하게 중요한 구분을 얻게 됩니다. 이것은 새로운 지침이 아니라 인용된 단어라는 것입니다.
이중 표현(dual representation)이 중요합니다. 메타데이터는 UI가 읽기 쉬운 인용 카드를 렌더링하고 출처로 돌아갈 수 있도록 합니다. 명시적인 표식자는 에이전트가 어디서 왔는지 추측할 필요 없이 인용구에 대해 추론할 수 있게 합니다. 만약 제가 오직 메타데이터만 유지한다면, 모델은 경계를 잃을 것입니다. 만약 제가 오직 마법의 텍스트 접두사(magic text prefix)만 유지한다면, 모든 클라이언트가 산문에서 표현 세부 사항을 구문 분석해야 할 것입니다.
작은 디테일들이 핵심 기능이었습니다
가장 많은 작업은 '전달(forward)' 버튼 자체가 아니었습니다. 무엇을 전달할 수 있는지, 그리고 무엇인 척해서는 안 되는지를 결정하는 것이었습니다.
첫째, 인용구는 경계가 있습니다. APX는 전달되는 텍스트를 4,000자로 제한하고 필요할 때 잘렸음을 표시합니다. '전달'은 컨텍스트일 뿐이며, 거대한 전사본(transcript)이나 바이너리처럼 보이는 도구 출력을 다른 모델의 컨텍스트 창에 주입하기 위한 백도어가 아닙니다. 목적지에는 여전히 답변할 공간이 있습니다.
둘째, 출처는 실제 주소를 가집니다. 메시지가 어디서 시작했는지에 따라 APX는 스레드, 대화 또는 라이브 세션을 식별하기에 충분한 정보를 기록합니다. 또한 원본 프로젝트도 기록합니다. 이 마지막 부분은 전달이 프로젝트를 넘나들 때 필수적입니다. ID는 자신의 프로젝트 내부에서만 의미가 있기 때문입니다. 프로젝트 식별자 없이는 카드가 잘못된 대화를 가리키거나 아예 아무것도 가리키지 않을 수 있습니다.
셋째, 작성자 신원은 의도를 유지합니다
일반 사용자 턴(turn)에 추가적인 출처 정보(provenance)를 부여하는 것이 더 차분한 결과를 가져옵니다. 목적지 세션이 새로운 턴을 소유합니다. 원본은 변경되지 않습니다. 목적지는 자연스럽게 답장할 수 있습니다. 기존의 저장소와 메시지 형태 지정 기능들은 계속 제 역할을 수행합니다.
또한 이것은 중요한 잘못된 약속을 방지합니다. 즉, 전달(forwarding)이 공유 메모리(shared memory)가 아니라는 것입니다. 두 세션을 병합하거나, 그들의 기록을 동일하게 만들거나, 한 프로젝트가 다른 프로젝트의 전체 대화에 접근할 수 있게 하지는 않습니다. 대신, 사람이 의도적으로 넘겨주었기 때문에 시각적으로 레이블링된 하나의 제한된 인용구(bounded quotation)를 전달합니다.
이 경계는 일상 업무에서 유용합니다. 저는 한 세션의 에이전트 조사 내용을 다른 세션의 검토자에게 보내고 초점을 맞춘 질문을 할 수 있습니다. 채널 대화에서 고객 상세 정보를 프로젝트 세션으로 옮기면서, 그것이 제가 개인적으로 작성한 것처럼 제시할 필요가 없습니다. 나중에 목적지를 다시 방문하여 인용구와 그에 첨부된 지침(instruction) 둘 다를 볼 수 있습니다.
배운 점
에이전트 제품들은 종종 텍스트 이동을 사소해 보이게 만듭니다. 하지만 에이전트가 텍스트로 행동할 때, 출처 정보는 입력의 일부입니다. 이를 잃어버리는 것은 인계(handoff)의 의미를 변화시킵니다.
제가 지키고 있는 실질적인 규칙은 간단합니다. 즉, 컨텍스트가 대화 경계를 넘나들 때는 아티팩트 내에서 그 경계를 보존하는 것입니다. 인용구를 제한된 상태로 유지하고, 출처를 명시하며, 화자를 명시해야 합니다. 원본을 다시 열어볼 수 있도록 보관합니다. 단순히 조용한 복사(silent copy)로 만들지 않아야 합니다.
이것은 '크로스-에이전트 협업(cross-agent collaboration)'이라는 단어가 주는 느낌보다 더 작은 기능입니다. 또한 더 정직하기도 합니다. APX는 모든 대화가 거대한 하나의 메모리가 될 필요는 없습니다. 인간이 유용한 컨텍스트 조각 하나를 다음 공간으로 가져갈 수 있는 신뢰할 수 있는 방법만 있으면 됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기