에이전트 컨텍스트 거버넌스, 첫 입력부터 장기 기억까지
첫 입력과 시스템 프롬프트, 기억, 결과 재조회, 컨텍스트 압축까지 한 연구 과제를 따라가며 컨텍스트 거버넌스의 실제 적용을 설명한다.
중국어 원문을 AI로 번역했습니다. 고유명사와 수치는 원문 표기를 우선하며, 중요한 판단에는 아래 출처 원문을 함께 확인하세요.
전경 시리즈 · 원칙편 · 실행편
하나의 Agent는 목표, 현재 근거, 행동 경계, 과거로의 진입점, 미지 정보의 획득 경로, 그리고 완료까지 무엇이 남았는지를 알아야 한다. 그러나 이런 요구 사항이 저절로 좋은 모델 입력이 되지는 않는다.
실제로 구현할 때는 더 구체적인 질문에 답해야 한다. 시스템 프롬프트에는 무엇을 쓸까? 기억은 언제 읽는가? 도구가 커다란 표 하나를 반환했는데, 매 라운드마다 들고 가야 할까? 사용자가 조건을 갱신했을 때 어떤 자료가 계속 유효한가? 모델이 “기억했다”고 말할 때, 우리는 그것이 정말 저장되었는지 어떻게 아는가?
구현의 주된 흐름은 모델을 호출할 때마다 유효한 작업, 승인된 자료, 실제 실행 기록으로부터 현재 작업 뷰를 구성하고, 행동한 뒤에는 새로운 관찰과 변경을 다음 라운드로 들여보내는 것이다. 시스템 프롬프트는 안정적인 지침을 제공하고, 기억은 과제를 넘나드는 축적을 형성하며, 도구 결과와 진행 상황은 현재의 추진을 뒷받침한다. 이들은 계속 길어지는 하나의 문자열이 아니다.
아래에서는 하나의 교수 학습 과제를 따라 전개한다. 사용자는 펀드 A, B의 비용과 보유 중복을 비교하고, 업로드한 개인 보유 내역을 결합하여 근거가 포함된 보고서를 생성하도록 요구하며, 리밸런싱은 실행하지 않는다. 연구 도중에 새 보유 내역을 업로드하고, 앞으로 펀드 연구 보고서를 기본적으로 짧은 답변으로 압축하지 말라고 명확히 요구한다. 시나리오, 입력 별칭, 코드 예시는 모두 교육용이며, 생산 인터페이스나 실제로 실행된 하나의 기록이 아니다. 프로젝트 경험은 ETF Agent의 기존 구현과 글에서 나온 것이며, 전문을 공개 교육 저장소의 완전한 기능 목록으로 간주해서는 안 된다.
이 글은 반드시 항목별로 켜야 하는 메커니즘 목록이 아니다. 펀드 비용 용어 하나를 설명할 때는 직접 답하는 것으로 충분할 수 있다. 구체적인 펀드의 비용과 보유를 비교할 때에야 필요에 따라 약관, 공시를 읽고 계산한다. 여러 차례 수정, 자료 과다, 또는 중단 후 복구가 실제 요구가 될 때에만 지속 작업 상태, 압축, 하위 에이전트를 고려한다. 먼저 과제를 완수할 수 있는 최소 경로를 선택하고, 그다음 관찰 가능한 실패에 따라 메커니즘 추가 여부를 결정한다.
一. 먼저 과제 자체를 보존하고, 그다음 첫 라운드에 무엇을 줄지 결정한다
그림 1: 이것은 논리적 구획이며, 하나의 system 메시지가 아니다. 전송 전에 실제 요청을 확인하고, 템플릿만 보지 않는다. 확대해서 보기
과제가 막 시작되었을 때 서둘러 검색하지 말고, 사용자 요구를 먼저 요약하지도 말라. 먼저 원래 요청, 명확한 제한, 사용자가 제출한 자료, 과제 정체성에 되돌아갈 수 있는 기록을 남겨야 한다. 간결한 과제 설명이 필요할 때는 이런 원본에서 구성할 수 있지만, 설명이 원본을 대체하게 해서는 안 된다.
교수 학습 과제의 유효한 요구는 다음과 같이 표현할 수 있다.
과제: 펀드 A, B의 비용과 보유 중복을 비교한다. 개인 입력: 사용자가 이번에 업로드한 보유 스냅샷 P1. 산출물: 출처, 기준, 제한을 검증할 수 있는 보고서. 제한: 연구만 하고 리밸런싱은 실행하지 않는다. 현재 결손: 지분, 적용 비용, 비교 가능한 보유 공시는 아직 검증이 필요하다.
이것은 사전 설정된 도구 실행 계획이 아니다. 비용을 확인한 뒤에는 먼저 해당 결론을 형성할 수 있고, 보유 내역이 완전하지 않을 때는 검색을 확대할 수도 있으며, 답변 범위를 한정할 수도 있다. 사용자 원문에서 확정할 수 없는 부분은 의문으로 남겨 두어야 하며, 과제 설명을 생성할 때 몰래 기본 사실로 보충해서는 안 된다.
그런 다음에야 첫 라운드 입력을 선택한다. 실용적인 구분은 다음과 같다.
입력 | 초기 처리 | 이후 어떻게 변하는가 시스템 프롬프트 | 필요한 안정적 지침 제공 | 심사된 버전에 따라 갱신되며, 각 웹페이지와 기억에 따라 재작성되지 않음 현재 사용자 요구 | 목표, 제약 및 접근 가능한 원문 보존 | 명확한 수정은 후속 요청으로 들어가고, 이전 버전은 출처로 보존 관련 장기 기억 | 승인이 허용할 때만 현재 유효한 소량의 배경 선택 | 이번 과제 관련성에 따라 선택되며, 정정과 망각은 후속 자격에 영향 방법과 도구 | 이 단계에 필요한 방법 또는 발견 진입점, 실제 사용 가능한 도구 계약 제시 | 이미 승인된 능력, 선택한 방법, 실제 사용 가능 상태에 따라 조정 문서와 결과 | 우선 탐색에 충분한 목차와 필요한 발췌 제시 | 질문에 따라 읽고, 버전과 범위를 저장 작업 진행 | 초기 질문 또는 명확한 아직 시작하지 않음 상태 | 실제 결과와 모델의 수정 가능한 판단에 의해 함께 갱신
여기서 구분하는 것은 책임이며, 새로운 여섯 개의 표나 하나의 컨텍스트 총괄 관리자를 요구하지 않는다. 기존 세션, 도구, 기억, 결과, 실행 기록은 계속 각자의 책임을 지키고, 요청 조립 지점에서 일관된 하나의 뷰를 형성할 수 있다.
二. 시스템 프롬프트 작성: 안정적 지침과 동적 자료를 분리한다
구체적 신호가 있으면서도 연구 경로를 하드코딩하지 않는 프롬프트
시스템 프롬프트는 어떻게 일할지를 설명해야 하지만, 모델을 대신해 매 문제의 전체 단계를 미리 써서는 안 된다. 아래는 압축된 교수 학습 템플릿으로, 네 개 블록이 각각 배경, 행동 원칙, 도구 안내, 출력 요구를 표현한다.
< background_information > 당신은 사용자가 근거 있는 연구를 완수하도록 돕는다. 현재 목표, 자료, 능력은 이번 라운드 입력에서 제공된다. 당신의 임무는 문제를 이해하고, 연구 경로를 선택하고, 증거를 비교하고, 결과를 조직하는 것이다. </ background_information > < instructions > 사용자의 현재 목표를 중심으로 추진하고, 목표, 제약, 수정 가능한 계획을 구분한다. 원자료, 계산 결과, 역사적 기억, 작업 가설, 이전 답변을 구분한다. 자료가 불완전하거나 충돌할 때는 구체적 결손과 그 영향을 식별하고, 사실을 꾸며내지 않는다. 사용자가 조건을 수정한 뒤에는 영향을 받는 작업을 다시 판단하고, 여전히 적용되는 근거를 보존한다. </ instructions > < tool_guidance > 실제로 제공된 도구 계약에 따라 행동을 선택하고, 존재하지 않는 능력을 가정하지 않는다. 이전에 획득한 자료가 필요할 때는 통제된 재읽기를 사용하고, 새 사실이 필요할 때 다시 획득하거나 새로 고친다. 부족한 것이 사용자의 선택일 때는 질문을 제기하고, 무관한 검색으로 대체하지 않는다. 저장, 수정, 망각 등의 작업은 실제 도구 영수증을 기준으로 하며, 결과가 알려지지 않았으면 미지로 남긴다. </ tool_guidance > < output_description > 사용자 요구에 따라 산출하고, 핵심 판단에는 적용 조건과 검증 가능한 근거를 붙인다. 이미 답한 부분, 아직 해결되지 않은 문제, 다음 단계에 필요한 정보를 구분한다. 형식은 과제에 맞게 조정할 수 있으며, 이 영역은 도구 매개변수의 공식 출력 프로토콜을 대체하지 않는다. </ output_description >
XML은 여기서 구획에 사용되며, 권한 메커니즘이 아니고 반드시 사용해야 하는 형식도 아니다. Markdown 제목을 사용해도 된다. 애플리케이션은 여전히 신뢰할 수 있는 지침, 사용자 메시지, 도구 자료를 각각 올바른 매체에 두어야 하며, 단지 태그 한 겹만으로 외부 텍스트를 시스템 명령으로 승격시켜서는 안 된다.
제품의 현재 능력, 사용자 이름, 보유 데이터, 오늘 날짜, 오래된 기억은 이 안정적 템플릿에 직접 고정해서는 안 된다. 이들은 서로 다른 출처에서 오며, 과제에 따라 조립된다. 펀드 비교의 지분과 공시 기준은 영역 방법에 속하므로 관련 Skill에 넣을 수 있고, 매개변수 형태와 도구 용도는 도구 계약이 명확히 표현해야 한다.
ETF Agent는 진입 판단과 지속 연구 지침을 분리하고, 연구 방법도 기존 진입점 또는 필요에 따른 읽기 경로를 통해 컨텍스트에 들어간다. Skill 본문을 일반적으로 읽는다고 해서 본문이 자동으로 시스템 지침으로 재주입되지는 않는다. 이 선택의 핵심은 출처와 역할을 명확히 유지하는 것이지, 모든 종류의 텍스트를 최고 우선순위로 승격하는 것이 아니다.[3]
소량의 예시로 선택을 표현하고, 주변 목록으로 판단을 대체하지 않는다
그림 2: 판단을 지도할 만큼 구체적이되, 모든 경로를 미리 쓰지 않는다. 사용자, 날짜, 보유, 기억은 라운드별로 조립된다. 확대해서 보기
방법 설명에 전형적인 예시를 하나 넣을 수 있다. A는 완전한 보유 내역이 있고 B는 상위 10대 공시만 있을 때, 알려진 공통 보유는 설명할 수 있지만 완전한 중복률이라고 부를 수는 없다. 비용 조항이 완전한 경우에는 비용 부분을 여전히 독립적으로 답할 수 있다. 예시는 '부분적으로 답할 수 있음'을 구체적으로 만들어 주며, 모델이 수십 개의 고정 분기를 매칭하도록 요구하지 않는다.
예시 속의 펀드와 수치는 반드시 시범용으로 표시해야 하며, 현재 사용자 분석에는 참여하지 않는다. 몇 가지 대표적인 작업과 반례가 매번의 실패를 영구 금지 조항 한 줄로 덧붙이는 것보다 유지할 가치가 있다. Anthropic의 원문도 최소 충분 프롬프트에서 출발해, 실제 실패에 근거하여 명확한 지시와 대표 예시를 보충할 것을 권장하며, 모든 변두리 상황을 쌓아 두라고 하지 않는다.[1]
수정할 때는 먼저 실패가 어디에 있는지 찾는다. 내용이 애초에 모델에 전달되지 않았다면 입력을 고친다. 도구 책임이 불명확하다면 도구 설명을 고친다. 본 영역의 방법 문제라면 관련 Skill을 우선 고친다. 여러 작업에 걸쳐 성립하는 행동 격차에만 안정적인 시스템 프롬프트에 들어갈 가치가 있다. 유지보수할 때는 수정 전후의 실제 요청을 대조하여 지도가 중복되는지, 올바른 단계에 나타나는지 확인하고, 같은 종류의 작업으로 효과를 비교할 수 있다. 텍스트가 짧아졌다거나 구조 검사를 통과했다는 것이 실제 효과의 비교를 대체할 수는 없다.
三、첫 번째 라운드 요청 준비: 먼저 기억 접근을 처리하고, 그다음 실제 사용 가능한 역량을 장착
기억은 먼저 읽을 수 있는지 확인한 뒤, 무엇을 읽을지 결정
사용자가 이전에 '답변은 기본적으로 짧게'를 저장해 두었다고 가정하자. 이번에 심층 비교를 요구할 때는 모든 이력을 무차별적으로 주입해서는 안 되며, 더욱이 이 오래된 선호가 현재 요구를 덮어쓰게 해서도 안 된다.
첫 라운드에서는 현재 유효한 소수의 선호나 답변 제약을 먼저 읽고, 작업 필요에 따라 관련 이력을 조회할 수 있다. 임시 모드는 어떤 기억 저장소의 읽기보다도 먼저 발효되어야 한다. 즉 회수하지도, 저장하거나 자동 학습하지도 않으며, 먼저 다 읽은 뒤 모델에게 쓰지 않겠다고 약속하게 해서도 안 된다. 권한 부여 실패, 읽기 불가, 저장소가 실제로 비어 있음 또한 서로 다른 결과로 보존해야 한다.[4]
후보 선택에서는 현재 범위에 속하지 않거나 이미 무효화되었거나 잊힌 기록을 먼저 제외한 뒤, 현재 문제와의 관련성, 적용 시점과 용량을 고려한다. 키워드나 벡터 검색은 후보 발견 방법일 뿐이며, 기록이 여전히 유효하다는 증명이 아니다. 소수의 명확한 선호는 앞에 둘 수 있고, 긴 이력 논의는 필요에 따라 조회하는 편이 더 적합하다.
모델에 들어가는 기억 단편은 적어도 그것이 어떤 배경인지 설명할 수 있어야 한다. 예를 들어:
기억 배경: 사용자는 과거에 보통 결론을 먼저 제시하고 근거를 설명하기를 원했다. 출처: 사용자가 명시적으로 제기한 장기 답변 선호. 용도: 표현 구성을 보조하며, 이번의 명확한 심층 요구가 우선 적용된다. 이번에 적재하지 않음: 펀드 비교와 무관한 기타 이력 논의.
이것은 모델을 위한 의미 설명이며, 모든 저장 메타데이터를 집어넣으라는 요구는 아니다. 백엔드에서는 여전히 정확한 신원, 개정, 출처와 유효 상태를 보존하여, 내용이 바뀌거나 복원될 때 다시 위치를 잡을 수 있어야 한다.
도구 표시는 권한을 확장해서도, 여전히 갈 수 있는 길을 숨겨서도 안 된다
도 3: 임시 모드는 기억 저장소 접근 전에 발효된다. 검색 적중 ≠ 전송됨 ≠ 올바르게 채택됨. 확대 보기
도구 실행 측은 현재 호출이 승인되었는지 검증하고, 모델이 볼 수 있는 도구 세트는 이번 라운드의 실제 역량을 반영해야 한다. 둘은 일치해야 하며, 한쪽에서는 이미 사용할 수 없는 도구를 보여 주면서 다른 쪽에서는 모델이 반복해서 벽에 부딪히게 해서는 안 된다. 검색이 작동하지 않는다고 해서 저장된 결과를 읽는 합법적인 입구를 제거해서도 안 된다.
도구 이름, 용도, 매개변수와 반환 의미를 명확하게 유지하고, 책임 중복을 우선 해결하며, 기계적으로 최소 개수를 추구할 필요는 없다. 역량이 많을 때는 통제된 발견 입구를 제공할 수 있으나, 발견 후에도 정상적으로 접근 승인을 받아야 한다. 도구 설명의 '조회할 수 있다'는 새로운 권한 부여가 아니며, 카탈로그의 파일명 역시 이미 읽었다는 증거가 아니다.[3]
Prompt 파일만이 아니라 첫 라운드의 작업 뷰를 보라
교수 작업의 경우, 첫 라운드에서 보이는 내용은 대략 다음과 같다. 이것은 논리적 구획이며, 모든 내용을 하나의 system 메시지에 이어 붙이라는 요구가 아니다:
안정 지도: 현재 버전의 시스템 프롬프트. 현재 작업: A, B 비교; P1 채택; 보고서 전달; 포지션 조정 안 함. 유효 기억: 결론 먼저, 근거 다음; 이번 상세 분석 요구를 덮지 않음. 방법 입구: 펀드 비교 방법의 짧은 설명, 필요 시 본문 읽기. 자료 입구: 업로드된 스냅샷 P1, A/B 파일 디렉토리 및 그 시점; 디렉토리는 본문을 이미 읽었다는 뜻이 아님. 도구: 이번에 승인되고 사용 가능한 읽기, 검색, 계산, 전달 및 필요한 기억 작업. 작업 상태: 비용과 비교 가능 보유 문제는 아직 확인 대기 중.
전송 전에는 처음 조립한 객체만이 아니라 실제 요청을 확인해야 한다. 이후의 용량 처리, 확장 콜백과 모델 적응이 도구, 자료와 메시지 표현을 바꿀 수 있다. 핵심 질문은 이것이다: 원래 작업과 수정이 여전히 있는가, 도구 계약이 일관되는가, 새로 읽은 내용이 다시 빈 참조로 바뀌지 않았는가, 기억이 여전히 승인되어 사용 중인 현재 기록인가.
四、정보가 부족할 때마다 먼저 과거를 다시 읽어야 할지, 새로운 관측을 얻어야 할지를 판단
자료에는 발견과 심층 읽기 두 가지 입구를 남겨 둔다
모델이 격차를 발견한 뒤에는 다음 단계로 어디를 찾아야 하는지 이해할 수 있어야 한다. 문서 디렉토리는 먼저 제품, 버전, 공시 시기, 장과 페이지를 반환할 수 있고, 검색 결과는 후보 출처를 제공하며, 추가로 읽어야만 필요한 본문을 얻을 수 있다. 제목 적중을 '보고서 전문을 이미 확인했다'고 적어서는 안 된다.
비용을 조회하는 과정은 매우 짧을 수 있다: 지분 확인, 비용 장 절 위치 파악, 적용 조항 읽기, 필요 시 각주 확인. 보유 중복은 더 많은 범위와 구조화 데이터가 필요할 수 있다. 도구는 문제에 따라 읽기를 확대할 수 있게 허용해야 하며, '앞 세 페이지만 읽기'로 고정하거나 매번 책 전체를 반환해서는 안 된다.
여기서 문제 유형도 구분해야 한다. 사용자가 '지난번에 왜 그렇게 판단했는지'를 물으면 당시의 보고서, 자료와 계산으로 돌아가고, 새 시기 공시가 필요하면 새 버전을 가져오고, 기존 데이터로 계산할 수 있는 지표가 빠졌으면 계산을 호출하고, 사용자 선택이 빠졌으면 질문한다.
결과를 다시 읽을 수 있는 버전으로 저장하여, 모든 것이 모델을 거쳐 운반되는 일을 피한다
ETF Agent의 결과 읽기 경로는 승인된 결과 버전을 보존하며, resultRef와 read_tool_result를 통해 이후 재읽기를 지원한다. 아래에서는 직접 호출 가능한 실제 참조를 보여 주는 대신 교수용 별칭으로 설명한다:
{ "resultAlias" : "R_B_1" , "source" : "펀드 B의 특정 시기 보유 공시" , "dataAsOf" : "2026-06-30" , "representation" : "top-10-holdings" , "readStatus" : "excerpt-read" , "selection" : { "fields" : [ "instrumentId" , "weight" ] , "offset" : 0 , "limit" : 10 } , "coverage" : "출처가 공시한 상위 10대 보유만 포괄하며, 완전한 펀드 보유가 아님" }
실제 참조는 호스트가 생성하고 원래 결과 신원에 바인딩되며, 재읽기 시에는 범위, 버전과 가독성을 확인해야 한다. 새로고침은 R_B_1이 가리키는 자료를 조용히 덮어쓰는 것이 아니라 새 버전을 형성해야 한다. 같은 이름의 조회 매개변수가 같더라도 새로운 외부 결과를 원래 스냅샷으로 간주해서는 안 된다.[2]
큰 표는 승인된 계산 도구에 직접 맡길 수 있다. 모델은 결과의 인용과 선택 영역을 지정하고, 계산 측은 원본 데이터를 읽어 결과, 산출 기준, 입력 신원과 제한을 반환한다. 모델이 이상 기록을 확인해야 할 때는 특정 범위를 다시 읽는다. 줄어드는 것은 무의미한 복사이며, 계산 근거를 삭제하는 것이 아니다.
커버리지 정보가 최종 입력까지 계속 따라가게 하라
그림 4: resultRef는 재조회 명령이 아니라 저장된 버전을 가리킨다. R1을 다시 읽을 때 몰래 R2로 바꿔서는 안 된다. 확대해서 보기
한번은 통제된 점검에서 50건의 기록 중 20건만 실제 모델 요청에 들어갔다.[2] 이는 '도구 호출 성공'으로는 부족하다는 것을 보여준다. 가져온 수량, 필터링과 페이지 나누기, 바이트 잘림, 대상 기록의 신원, 그리고 최종 요청에서의 표현이 모두 커버리지를 바꿀 수 있다.
만약 B의 상위 10개만 얻었다면, 모델은 현재 계산할 수 있는 것이 알려진 공통 보유분이지 완전한 중복률이 아니라는 점을 알아야 한다. 부분 공시를 완전히 읽은 것 역시 여전히 대상 전체를 커버한 것과 같지 않다. 개방형 인터넷 검색에서는 더욱이 몇 건의 결과가 반환되었다고 해서 '관련 자료를 다 찾았다'고 여겨서는 안 된다.
지금 막 읽은 핵심 내용은 조립 시점에 소리 없이 빠져서는 안 된다. 더 이른 결과는 정확히 다시 읽을 수 있는 인용으로 축약할 수 있지만, 선택 영역, 출처와 커버리지는 유지해야 한다. 획득했다, 저장했다, 인용이 사용 가능하다, 본문이 전달되었다는 것은 서로 다른 단계다. 어느 한 단계도 다른 단계를 대신해 증명할 수 없다.
5. 새로운 증거와 사용자 수정이 들어오면, 갱신되는 것은 채팅 기록만이 아니다
연구가 이미 비용 조항을 확보하고 보유분 P1에 따라 개인 노출 계산을 생성했다고 가정하자. 사용자가 이제 P2를 업로드하며 "이전 보유분은 오래되었으니 이걸로 계산하라"고 말한다.
이 문장을 끝에 덧붙이는 것만으로는 정보 저장을 마쳤을 뿐, 다음 단계에서 무엇을 써야 하는지 아직 설명하지 못한다. 더 유용한 갱신은 다음과 같다. 사용자 수정과 P2의 신원을 보존하고, 현재 뷰에서 개인 입력이 바뀌었음을 밝힌다. 원래 계산은 여전히 P1을 채택했다는 사실을 보존한다. 영향받은 연구 문제를 다시 대기 상태로 가져온다.
대상 | 변화 전 | 사용자 수정 후 개인 보유분 | P1 | 현재 작업은 P2로 전환, P1은 이력으로 보존 비용 조항 | 대응하는 확인된 지분의 출처 F1, F2 | 관련 조건 변화가 없으면 계속 사용 가능 개인 노출 계산 | 입력 P1의 결과 C1 | P2에 기반한 결론으로 직접 삼을 수 없으며, 재평가 또는 재계산이 필요 펀드 B 보유 공시 | 상위 10개만 | 사용자가 P2를 업로드했다고 해서 자동으로 완전 공시가 되지는 않음 업무 문제 | 종합 비교 중 | 개인 노출을 갱신하고, 완전 중복 분석의 원래 공백을 보존
코드는 정확한 입력 버전과 알려진 의존성을 기록할 수 있지만, 어떤 논증이 영향을 받는지는 일반 규칙만으로 기계적으로 판단할 수 있는 것이 아닐 수 있다. 명확한 영역 계산은 영역 로직으로 처리할 수 있지만, 더 복잡한 결론은 여전히 모델이나 검토자가 다시 확인해야 한다. 모든 의미적 영향까지 자동으로 식별하는 시스템을 이미 갖추었다고 가정해서는 안 된다.
메모는 현재 문제를 유지하고, 영수증은 실행 사실을 유지한다
그림 5: 교수 장면: 영향받은 업무만 갱신한다. 이전 결과의 신원을 보존하고, 이력을 새로운 사실로 바꾸지 않는다. 확대해서 보기
ETF Agent는 researchNeeds로 모델이 개정할 수 있는 연구 문제를 저장하고, set_research_needs를 통해 갱신한다. 아래는 그것이 표현하기에 적합한 내용을 예시로 보여줄 뿐이다.
비용: 조항을 확보했고, 현재 지분 기준으로 비교할 수 있다. 펀드 중복: B의 같은 기간 완전 공시가 없어, 완전 중복률은 여전히 확인되지 않았다. 개인 노출: 사용자가 P2로 전환하여, 원래 계산을 갱신해야 한다. 전달: 먼저 근거 있는 비용 결론을 제시한 뒤 최종 보고서를 정리한다.
모델이 한 문제가 해결되었다고 표시하는 것은 연구 판단이다. 도구가 읽을 수 있는 결과를 반환하고, 계산이 완료되고, 보고서가 저장되는 것은 각각 실제 기록이다. 메모는 문제를 삭제함으로써 사용자 요구를 없앨 수 없고, '저장됨'으로 저장 영수증을 대신할 수도 없다.[5]
메모 갱신이 매 라운드 필수 동작일 필요도 없다. 간단한 작업이거나 상태가 변하지 않았을 때는 바로 계속 진행할 수 있다. 중요한 것은 핵심 증거, 충돌, 사용자 수정 또는 단계 변화 후에 후속 요청이 이미 낡아버린 계획이 아니라 유용한 진전을 얻을 수 있게 하는 것이다.
6. 기억을 실제로 작동시키기: 쓰기, 회수, 교정, 망각이 후속 요청까지 연결되어야 한다
기억은 작업이 끝날 때만 발생하지 않는다. 명시적인 '기억해', '고쳐', '잊어'는 대화 어느 시점에서든 나타날 수 있다. 선택적 자동 학습은 적격한 답변의 영속적 종료 상태를 따라 촉발될 수 있다. 두 경로를 '모델이 봤으니 자동으로 저장했다'로 혼동해서는 안 된다.
명시적 저장: 의미는 모델이 이해하고, 성공은 영속 작업이 답한다
사용자가 "앞으로 펀드 연구 보고서를 쓸 때 기본적으로 짧은 답으로 압축하지 말고 근거와 기준을 명확히 설명하라"고 말한 것은 지속적인 답변 선호를 표현한 것이다. 사용자가 "이번에는 자세히 설명해 달라"고만 말했다면 현재 답변에만 영향을 줄 수 있다. 시스템은 두 가지를 구분해야 하며, 한 작업에서 특정 서술 방식이 빈번히 나타났다고 해서 영구 선호로 단정해서는 안 된다.
ETF Agent의 명시적 경로는 연구 단계가 이 계정 범위 내에서 기존 기억을 검색한 뒤 저장, 개정 또는 망각을 제안하고, 호스트가 실제 사용자 출처, 대상 버전과 영속 작업을 검사한다. 그 논리는 다음과 같이 요약할 수 있다.[4]
사용자의 명확한 영속 요청 → 기존 기억을 검색해 위치를 찾거나 사용 가능한 빈 결과를 확인 → 신규 추가, 대체 또는 망각 제안 → 범위, 출처, 대상 개정 및 작업 신원 검사 → 제출하고 영수증 확보 → 영수증에 따라 결과 보고
이해를 돕기 위한 저장 예시는 다음과 같다. 필드는 설계를 설명하기 위한 것이며 프로젝트의 원래 인터페이스가 아니다.
{ "kind" : "response_preference" , "scope" : "본 계정" , "family" : "research-answer-depth" , "revision" : 2 , "content" : "펀드 연구 보고서는 근거와 기준을 명확히 설명하고 기본적으로 짧은 답으로 압축하지 않는다" , "origin" : "explicit_user_request" , "sourceRef" : "사용자 원본 메시지 M2" , "status" : "active" , "supersedes" : { "revision" : 1 } }
기억 항목은 누가 제기했는지, 어디에 적용되는지, 현재 어느 버전인지, 왜 여전히 유효한지에 답할 수 있어야 한다. 한 번의 모델 추론이 스스로 user_confirmed가 될 수는 없으며, 저장에 실패했거나 결과가 알 수 없을 때도 사용자에게 "앞으로 계속 기억하겠다"고 말할 수 없다. 이번 라운드에서도 명확한 요구에 따라 작업을 계속할 수는 있지만, 장기적 효력은 아직 확인되지 않은 것이다.
자동 학습: 먼저 후보일 뿐, 시스템 프롬프트를 몰래 고쳐 쓰는 것이 아니다
그림 6: 저장, 교정, 망각은 모두 말뿐인 약속이 아니다. 제출 후 답변이 실패해도 이미 제출된 기억을 롤백하지 않는다. 확대해서 보기
일반 연구에서 생겨난 경험이 모두 사용자 선호인 것은 아니다. 모델이 "사용자는 아마 보수적일 것"이라고 말하는 것은 자신의 해석일 수 있으며, 한 번의 성공한 작업이 어떤 방법을 채택했다고 해서 앞으로 매번 반드시 그렇게 해야 하는 것도 아니다.
선택적 자동 학습은 승인된 출처에서 후보를 제안하고, 의미 판단과 영속 사실의 구분을 보존해야 한다. ETF Agent의 범용 기본 설정은 자동 의미 학습을 끄지만 명시적 기억 작업은 유지한다. 관찰 모드는 후보를 보존하되 자동으로 효력을 발생시키지 않으며, 자동 모드는 독립 설정, 출처와 자원 조건에 additionally 의존한다.[4]
작업 노트도 자동 학습의 동의어가 아니다. researchNeeds는 이번 연구의 질문 목록을 담당한다. 독립 작업 사이를 넘나드는 자율 노트는 프로젝트 탐색과 결정을 기록할 수 있지만, 명확한 저장 및 재읽기 경로가 필요하며, 사용자 선호의 정체성을 그대로 사칭해서는 안 된다. 경험을 Skill로 축적하려면 방법 검토와 적용 범위 확인을 거쳐야 하며, 모델이 전역 시스템 지시를 자동으로 덧붙이게 해서는 안 된다.
회수: 관련성은 여러 조건 중 하나일 뿐
다음번에 사용자가 심층 분석을 요구하면, 시스템은 먼저 현재 기억 기록을 검증한 뒤 관련 개정을 실제 요청에 넣는다. 오래된 revision 1에 적중했다고 해서 revision 2를 우회할 수 있는 것은 아니다. 유사도가 아무리 높은 망각된 기록도 다시 유효한 배경이 될 수 없다.
하나의 실제 소비 사슬로 회수를 점검할 수 있다: 적법한 후보 → 현재 유효한 기록 → 이번 라운드의 관련 선택 → 용량 조립 → 실제 모델 요청. 각 단계에서 내용이 줄어들 수 있고, 실패할 수도 있다. 검색이 빈 결과를 반환한 경우, 접근이 허가되지 않은 경우, 읽기 시간 초과, 용량 때문에 싣지 못한 경우를 모두 "사용자에게 기억이 없다"로 일률적으로 위장해서는 안 된다.
모델이 기억을 받았다고 해도 그것을 올바르게 채택했다는 뜻은 아니다. 별도로 답변이 이번 심층 요구를 따랐는지 점검할 수 있지만, "검색 적중 횟수"로 이 판단을 대신해서는 안 된다. ETF Agent의 사용 기록은 실제 파견 기준으로 집계하며, 브라우징, 검색 적중, 과거 재생을 모두 한 번의 모델 사용으로 계산하지 않는다.[4]
교정과 망각: 오래된 내용이 다른 경로로 돌아오는 것을 막아야
교정할 때는 개정 관계를 보존하고, 이후에 현재 유효한 버전을 선택한다. 망각할 때는 해당 기억이 미래에 사용될 자격을 잃게 한다. 주목해야 할 것은 원래 기록만이 아니다. 오래된 검색 결과, 캐시, 과거 요약, 작업 메모, 늦게 도착한 학습 작업 모두 그 파생 내용을 담고 있을 수 있다.
프로젝트의 생명주기 설계에서 기억 출처와 의존 관계는 이후 투영이 이런 파생 자료를 검사할 수 있게 해주며, 단지 인터페이스에서 한 줄을 지우는 것에 그치지 않는다.[4] 구체적 구현은 필터링, 재생성 또는 영향을 받은 자료를 당분간 제공하지 않는 방식을 선택할 수 있다. 선택은 시스템이 의존 관계를 신뢰성 있게 찾아낼 수 있는지에 달려 있으며, 키워드 하나를 단순히 교체하는 것으로 망각의 완전성을 보장할 수는 없다.
같은 연구의 기존 승인도 오래된 내용이 영원히 유효하다는 뜻은 아니다. 실행 승인과 기억의 내용 개정은 서로 다른 사실이다. 사용자가 이미 이 계정의 기억 사용을 승인받았다 해도, 나중에 교정되거나 망각된 버전을 계속 사용해서는 안 된다. 새 작업의 권한은 별도로 점검한다.
점검해 볼 만한 시나리오는 다음과 같다. 망각 작업이 이미 제출된 뒤 답변이 실패했다. 다음에 진입할 때는 실제 기억 상태에 따라 해당 내용을 계속 배제해야 하며, 채팅 창에서 "잊었다"는 알림을 받지 못했다고 해서 작업을 롤백해서는 안 된다. 반대로 모델이 먼저 "잊었다"고 말했지만 쓰기가 제출되지 않았다면, 그 말을 사실로 삼아서도 안 된다.
7. 장기 작업 경감: 오래된 내용을 퇴출시키되 계속 작업할 조건은 유지
그림 7: 교육 시나리오: 오래된 이력은 여전히 존재할 수 있다. 오래된 캐시, 요약, 늦게 도착한 작업이 그것을 되살릴 수 없다. 확대 보기
먼저 저장, 상주, 재읽기를 구별하라
시스템이 많은 데이터를 저장할 수 있다고 해서 모델이 항상 그것을 지녀야 한다는 뜻은 아니다. 저장 용량, 요청에 자동으로 넣는 작업 집합 용량, 한 번의 명시적 읽기 용량은 각각 다른 질문에 답한다. 자동 주입을 줄이려고 승인된 자료를 다시는 꺼낼 수 없는 내용으로 만들어서는 안 된다.
경감할 때는 먼저 중복되었거나 더 오래되었으면서 정확히 재읽기할 수 있는 도구 결과를 처리할 수 있다. 인용은 출처 정체성, 버전, 원래 선택 구간과 적용 범위를 보존한다. 이번 라운드에 막 얻은 핵심 자료, 필요한 사용자 수정, 현재 사용 중인 근거는 해당 결정에서 가시적이어야 한다.
한 실제 연구 관찰에서 Main의 37회 네이티브 요청 중 20회가 명시적 읽기였고, 동일한 읽기 결과가 후속 메시지에서 누적 279회 다시 나타났다. 이는 중복된 휴대이며, 279회의 추가 외부 조회를 실행한 것이 아니다. 이후 더 오래된 재읽기 가능 결과에 더 작은 작업 집합을 적용해 통제된 요청 대조에서 30,000바이트 이상을 줄였다. 이것은 조립 변화만 증명할 뿐이며, 실제 비용은 캐시, 재읽기 및 최종 작업 효과도 고려해야 한다.[2]
따라서 단일 요청이 얼마나 짧아졌는지만 물어서는 안 된다. 유용한 내용을 너무 일찍 옮기면 반복 재읽기를 초래할 수 있고, 모든 내용을 유지하면 이력 잡음이 계속 누적될 수 있다. 동일한 작업의 전체 소요 시간, 품질, 호출 비용에 대조해 전략을 선택해야 한다.
정말 요약이 필요할 때는 손실 있는 작업 표현으로 다루라
그림 8: 먼저 원본으로 돌아가는 경로를 보존하라. 요약은 작업을 설명하며, 증거와 효과를 고쳐 쓰지 않는다. 확대 보기
의미 압축은 원문 재읽기와 다르다. 요약은 정보를 선택하고 고쳐 쓰므로, 그것이 무엇을 처리할 수 있는지, 무엇을 반드시 보존해야 하는지, 실패할 때 어떻게 원래 표현으로 돌아갈지를 한정해야 한다.
ETF Agent의 동일 Run Main 압축은 원본 근거가 있는 이미 결산된 오래된 작업 그룹을 선택하고, 최근 라운드와 사용자 원문을 보존하며, 결과 인용은 여전히 실제 영수증에서 가져온다. 여기서 요약 입력은 주로 이미 봉인된 모델 도구 제안이며, 전체 원문과 함축된 사고를 모두 요약할 수 있다고 주장하지 않는다. 요약은 오래된 작업 실마리를 설명할 뿐, "이미 다 조사했다"는 한마디로 실행 성공을 증명할 수 없다.[6]
채택 전에 요약과 인용을 다시 완전한 요청에 넣어 실제 순이익과 입력 정체성을 점검해야 한다. 충분히 절약되지 않거나, 넣을 수 없거나, 출처가 맞지 않으면 원래 표현을 유지하거나 기존 용량 경로에 따라 처리한다. 요약 생성 자체가 자원을 소모하므로, 이득이 없는데 무한히 재시도해서는 안 된다.
일단 채택하면 그것이 대체한 구간, 출처, 버전과 요청 정체성을 기록해 이후 재구성이 원본과 대조할 수 있게 한다. 같은 연구의 압축과 연구 간 세션 이력 정리도 구분해야 한다. 전자는 현재 실행을 위한 것이고, 후자는 다음 작업에 이력 배경을 제공하며, 오래된 작업을 다시 발기하지도, 오래된 메모를 자동으로 이번 라운드의 진행 상황으로 만들지도 않는다.
서브 에이전트와 복구는 모두 적절한 부분 뷰를 다시 구축하는 것
비용 확인을 위임할 때는 펀드 정체성, 지분, 국소 목표, 필요한 제한과 승인된 자료만 제공하면 되며, 모든 사적 보유, 장기 기억 및 기타 탐색 이력을 복제할 필요는 없다. 서브 에이전트는 판단, 적용 조건, 근거와 미결 항목을 가져오고, 메인 에이전트가 그것을 다시 전체 작업에 연결한다. "비용이 더 낮다"는 한마디로는 인계를 완료하기에 부족하다.[7]
복구할 때도 요약 한 토막에 "계속"을 붙여 보내는 것이 아니다. 원래 작업 및 수정, 유효 입력 버전, 작업 상태, 이미 제출된 결과와 자원 사실을 읽고, 시스템이 지원하는 이어가기 지점을 복구해야 한다. 알 수 없는 효과는 자동으로 다시 실행할 수 없고, 이미 제출된 기억 작업과 보고서도 로컬에 성공 알림이 없다는 이유로 철회할 수 없다.
이런 방식이 바꾸는 것은 모델이 현재 지니는 자료다. 어느 것도 사용자 목표, 원본 증거 또는 이미 발생한 작업을 다시 발명해서는 안 된다.
서브 에이전트, 압축, 재읽기: 선택지부터 시작하라
두 펀드의 수수료율과 보유 중복 비교에서 기본 방안은 단일 Main과 필요한 도구다. 짧은 원본 자료로 이미 질문에 답할 수 있다면, '거버넌스'를 위해 그것을 외부화했다가 다시 읽을 필요가 없다. 독립 자료가 실제로 컨텍스트 간섭을 일으키거나 병렬 탐색이 비교 가능한 이득을 낼 때만 서브 에이전트를 고려한다. 그것은 모델 호출, 작업 인계, 결과 정체성과 실패 경로를 새로 추가한다. 압축도 한 라운드의 Token 감소만 보지 말고, 요약 호출, 후속 재읽기와 오류 복구의 비용까지 계산해야 한다.
8. 각 모듈에 개별 체크하는 대신 하나의 작업을 따라 점검하라
그림 9: 부분 뷰는 더 작지만 핵심 연결이 사라져서는 안 된다. 실제 입력, 실제 효과와 최종 전달을 대조하라. 확대 보기
모든 메커니즘이 존재해도 인계 지점에서 여전히 실패할 수 있다. 다음 몇 가지 유형의 입력으로 실제 요청, 도구 영수증과 최종 보고서 사이를 대조할 수 있다:
| 점검 시나리오 | 확인해야 할 구체적 변화 | | --- | --- | | 같은 주제인데 하나는 간단히, 하나는 깊이 있게 요구 | 시스템 지도는 적용 가능성을 유지하고, 현재 요구가 실제로 요청에 들어가며, 장기 선호가 이번 요구를 덮어쓰지 않음 | | 출처가 50건을 주고, 핵심 기록은 꼬리에 있음 | 목표 기록과 커버리지 정보가 실제 입력까지 추적 가능하고, 부분 결과를 전체로 말하지 않음 | | 도중에 P1에서 P2로 변경 | 사용자 수정과 신버전이 다음 라운드에 들어가고, 실제 사용은 P2로 재계산되며, 기존 결론은 원래 귀속을 유지함 | | 장기 선호를 저장한 뒤 새 세션을 시작 | 지속 영수증이 있고, 현재 개정 내용을 소환할 수 있으며 실제로 요청에 들어가고, 관리 화면에만 표시되는 것이 아님 | | 정정하거나 망각한 뒤에도 기존 이력이 남아 있음 | 새 요청이 더 이상 기존 선호를 자동으로 채택하지 않고, 파생 자료와 늦게 도착한 과업이 기존 자격을 복원하지 못함 | | 임시 모드 사용 | 기억 읽기, 쓰기, 자동 학습이 모두 발생하지 않으며, 로드한 뒤 말로만 쓰지 않겠다고 약속하는 것이 아님 | | 압축 또는 하위 과업 인계 후 연구 계속 | 현재 목표, 핵심 수정, 미결 문제와 되읽기 근거가 여전히 남아 있고, 요약이 실행 증명으로 변하지 않음 | | 도구 결산 또는 저장 후 중단 | 이어서 원사실을 읽고, 알 수 없는 효과는 알 수 없는 상태로 남기며, 이미 완료된 효과를 무조건 반복하지 않음 |
이 점검들은 성질이 서로 다르다. 입력 신원, 범위, 버전과 조작 영수증은 결정론적으로 대조할 수 있다. 반면 비용 예외를 이해했는지, 사용자 질문에 실제로 답했는지는 모델이나 사람의 독립적 평가가 필요하다. 앞의 점검이 통과했다는 것으로 뒤의 점검을 대체해서는 안 된다.
관측이 모든 사적 원문을 복제할 필요도 없다. 일반 기록은 요청 신원, 구성, 버전, 용량, 표현 유형과 생략 사유를 남길 수 있고, 구체적 내용을 봐야 할 때는 통제된 읽기를 거친다. 얻을 수 없는 관측에 대해서는 공백을 남기고, '로그가 없다'는 것으로 '발생하지 않았다'고 추론해서는 안 된다.
최종 산출물은 서두의 그 과업에 답해야 한다. 어느 개인 입력을 채택했는지, 비용을 어떤 기준으로 비교했는지, 보유 중복이 어디까지 커버되는지, 어떤 문제가 해결되지 않았는지, 그리고 보고서를 실제로 입수할 수 있는지 여부다. 기억은 표현과 이어가기를 돕고, 시스템 프롬프트는 판단을 안정시키는 데 도움을 주지만, 둘 다 이 성과 자체를 대체할 수 없다.
과업 품질과 메커니즘 비용을 함께 비교하기
사용자 질문, 펀드 자료 버전, 모델 구성과 평가 기준을 일정하게 유지한 채, 기본 Main과 필요에 따라 되읽기·압축·하위 에이전트를 켜는 후보 방안을 비교할 수 있다. 보고서가 원래 질문에 답했는지, 숫자와 출처가 정확한지, 공개 범위가 정직한지, 보고서가 전달되었는지를 점검하는 동시에 호출 횟수, Token, 지연과 실패 유형을 기록한다. 충분한 실제 페어링이 없으면 설계 가설만 제기할 수 있을 뿐, 다중 전문가가 더 낫다고 하거나 비용이 이미 크게 줄었다고 주장할 수 없다.
정상 경로 세금 도 관찰해야 한다. 고급 기능이 발동하지 않았을 때, 일반 요청이 여전히 추가 도구 설명, 상태와 조정 로직을 짊어지는가? 장기적으로 부담만 늘고 관찰 가능한 과업 이익이 없다면, 통합이나 필요 시 활성화 또는 퇴출을 고려해야 한다. 다만 권한 부여, 출처, 부작용 중복 방지 같은 강한 제약은 여전히 유지해야 하며, 단순한 비용 모델로 상쇄되어서는 안 된다.
맺음말: 방법을 같은 과업 사슬에 되돌려 놓기
과업을 받으면 원래 요구를 저장하고, 안정적 지도와 현재 목표를 구축하며, 허용 범위 안에서 유효한 기억을 선택하고, 사용 가능한 도구와 자료 입구를 제시한다. 그리고 공백의 발견, 읽기와 계산을 중심으로 진행하며, 새 증거와 사용자 수정이 후속 입력과 진척을 바꾸게 한다. 장기 축적이 필요할 때는 실제 기억 조작을 완료하고, 내용이 늘어나면 선택적으로 부담을 덜며, 분업과 복구도 계속 원사실을 따라 이어진다.
이것이 시스템 프롬프트, 기억, 검색, 결과 인용, 메모, 압축과 하위 에이전트가 함께 작동하는 방식이다. 실행의 핵심은 이들을 항목별로 모두 갖추는 것이 아니라, 정보가 인계될 때마다 여전히 같은 유효 목표를 뒷받침하는지 점검하는 것이다.
다음번 실제 모델 요청부터 점검하라. 그것은 무엇을 해야 하는지 아는가, 필요한 근거를 확보했는가, 과거를 되찾고 미지를 탐색할 수 있는가, 기억과 진척이 여전히 현재 유효한가? 이 질문들을 실제 입력과 실제 결과에 대응시킬 수 있을 때, 컨텍스트 거버넌스는 비로소 일련의 이념에서 유지 가능한 공학으로 바뀐다.
참고 및 확장
[1] Anthropic(2025-09-29), Effective context engineering for AI agents. 시스템 프롬프트, 대표적 예시 및 컨텍스트 공학의 참고 자료. 본문의 템플릿은 교육용 예시이며 원문 발췌가 아니다.
[2] 도구로 조회한 데이터는 왜 반드시 대형 모델에 보여줄 필요가 없는가?. 버전화된 결과, 커버리지, 되읽기 및 본문에서 인용한 두 종류의 입력 관측.
[3] Agent에 이 도구가 있는데, 모델은 왜 여전히 볼 수 없는가? 와 Model, Runtime, MCP, Skill의 책임 경계. 방법, 도구와 최종 요청의 역할 관계.
[4] Agent Memory의 전체 생애주기: 선호를 기억하는 것에서 안전하게 망각하는 것까지. 명시적 조작, 선택적 학습, 현재 개정, 배포 소비와 망각 경계.
[5] 왜 AI Agent에게도 《생각에 관한 생각》이 필요한가?. 개정 가능한 연구 메모와 과업 라우팅.
[6] 동일 Run 컨텍스트 압축 과 교차 Run 세션 이력 압축 . 두 가지 이력 처리의 서로 다른 입력과 책임.
[7] Subagent: 컨텍스트 격리와 전문화 . 국부적 뷰와 연구 인계.
두 편 모두 독립적으로 읽을 수 있다. 원칙편 은 전체적 판단에 중점을 두고, 행동편 은 구체적 방법을 보여 준다.
오픈소스 엔지니어링 실천은 Open ETF Agent를 참고하라. 이 글들이 도움이 되었다면 Star와 관심을 환영한다. 공개 구현의 실제 범위는 저장소 설명을 기준으로 한다.
기술 사이트 원문 · 전경 시리즈 · GitHub에서 교류하고 Star해 주시길 환영합니다.
hpoenixf
AI 애플리케이션 개발 엔지니어
67
글
198k
읽음
2.1k
팔로워