장기 실행 에이전트 애플리케이션의 컨텍스트 관리 (새 탭에서 열림)
장시간 실행되는 멀티 에이전트 시스템은 모든 대화 기록을 그대로 누적하면 컨텍스트 윈도우 한계와 응답 품질 저하에 직면한다. Slack은 이를 해결하기 위해 Director의 구조화된 Journal, Critic의 신뢰도 주석 Review, 시간순 Timeline이라는 세 가지 컨텍스트 채널을 분리해 사용한다. 각 에이전트에 필요한 맥락만 제공함으로써 팀 전체의 일관성을 유지하면서도 과도한 정보 공유로 인한 창의성 저하와 확증편향을 줄이는 것이 핵심이다. ## 장시간 에이전트 시스템의 컨텍스트 문제 - 언어 모델 API는 상태가 없으므로, 호출 간 연속성을 유지하려면 전체 메시지 이력을 매번 전달해야 한다. - 에이전트 프레임워크는 일반적으로 메시지 기록을 누적하지만, 기록이 길어질수록 컨텍스트 윈도우가 빠르게 소진된다. - 컨텍스트 한도에 도달하기 전부터 응답 품질과 추론 능력이 저하될 수 있다. - 보안 조사처럼 수백 번의 추론 요청과 수 MB의 결과를 생성하는 작업에서는 단순한 대화 기록 누적만으로는 부족하다. - 멀티 에이전트 환경에서는 모든 정보를 공유하면: - 각 에이전트의 역할과 집중력이 흐려지고 - 기존 결론에 끌리는 확증편향이 커지며 - 독립적인 탐색과 창의적 추론이 억제될 수 있다. - 반대로 공유 정보가 너무 적으면 각 에이전트가 전체 조사 방향을 이해하지 못해 결과가 단절된다. ## 세 가지 컨텍스트 채널 Slack의 보안 조사 시스템은 Director가 조사 전체를 조율하고, 여러 Expert가 증거를 수집하며, Critic이 결과를 검토하는 구조다. - **Director’s Journal** - Director의 구조화된 작업 메모이자 장기 기억이다. - 조사 중 결정, 관찰, 사실, 가설, 미해결 질문 등을 기록한다. - **Critic’s Review** - Expert의 발견 사항을 검토하고 주석을 추가한 보고서다. - 각 결과의 신뢰도 점수를 포함해 어떤 증거를 얼마나 믿을지 판단하게 한다. - **Critic’s Timeline** - 여러 결과를 시간순으로 통합한 기록이다. - 사건의 진행 순서와 인과관계를 파악하도록 돕고, 신뢰도 점수도 함께 제공한다. - 세 채널은 서로 다른 목적을 가지며, 에이전트가 전체 메시지 이력 대신 역할에 맞는 맥락을 사용하도록 한다. ## Director’s Journal의 역할 Director는 어떤 질문을 던질지, 어떤 Expert를 호출할지, 언제 조사를 종료할지를 결정한다. 여러 단계와 라운드에 걸쳐 일관된 결정을 내리려면 이전에 무엇을 발견하고 판단했는지 기억해야 한다. - Journal은 Director가 사용하는 전용 journaling tool을 통해 업데이트된다. - 시스템 프롬프트는 Director가 Journal을 자주 갱신하고 짧은 메모 형태로 기록하도록 유도한다. - 기록의 목적은 완성된 보고서를 작성하는 것이 아니라, Director의 현재 사고 과정과 조사 상태를 유지하는 것이다. - 모든 에이전트는 현재 Journal 내용을 시간순으로 프롬프트에서 전달받는다. - 각 에이전트의 시스템 프롬프트에는 다음 내용이 설명된다. - Director의 역할 - 자신과 Director의 관계 - Journal의 목적 - Journal에 기록된 내용을 해석하는 방법 ## Journal의 기록 유형 Journal은 메모를 여섯 가지 유형으로 구분한다. - **decision**: 전략적 선택 - 예: 네트워크 활동보다 인증 이상 징후에 집중하기로 결정 - **observation**: 관찰된 패턴 - 예: 성공적인 인증 전에 여러 번의 로그인 실패가 발생 - **finding**: 확인된 사실 - 예: 사용자가 기존 이력에 없는 IP에서 인증 - **question**: 아직 해결되지 않은 질문 - 예: 의심스러운 활동 전후 중 언제 VPN 연결이 성립했는가 - **action**: 수행했거나 수행할 조치 - 예: Cloud Expert에게 EC2 인스턴스 활동 조사 요청 - **hypothesis**: 현재 검토 중인 가설 - 예: 계정 탈취보다 자격 증명 대입 공격에 가까운 패턴 추가로 각 항목에는 다음 정보를 포함할 수 있다. - 우선순위 - 후속 조치 목록 - 관련 증거 자료에 대한 인용 또는 참조 - 조사 단계(phase) - 라운드 번호 - 기록 시각 Journaling tool 자체는 복잡한 추론을 수행하지 않고 항목을 누적하는 역할만 담당한다. ## Journal을 통한 팀 정렬 Journal은 Director가 조사 방향을 유지하고 필요할 때 전략을 수정하도록 돕는다. - 조사 진행 상황을 관찰하고 측정할 수 있다. - 더 이상 유용하지 않은 조사 경로나 막다른 길을 식별할 수 있다. - 새 증거에 따라 가설과 조사 우선순위를 수정할 수 있다. - 다른 에이전트에게 공통된 조사 서사를 제공해 각자의 결과가 전체 조사와 연결되게 한다. - Director가 내린 결정과 아직 남은 질문을 명시적으로 전달해, Expert들이 중복되거나 무관한 작업을 수행하는 것을 줄인다. ## 실제 Journal 기록의 특징 글의 예시에서는 커널 모듈 로딩으로 탐지된 보안 알림을 조사한다. 실제로는 개발자가 개발 환경에서 패키지를 설치하던 중 발생한 오탐이었다. - 이벤트가 직접적인 `modprobe` 실행이 아니라 패키지 설치 과정의 스크립트였다는 점을 기록한다. - 관련 Expert 영역으로 엔드포인트 텔레메트리, 사용자 권한, 호스트 설정, 사용자 행동 패턴을 지정한다. - 개인 개발자 워크스테이션과 사용자 세션으로 보이는 단서를 정리한다. - 탐지 규칙이 실제 모듈 로딩이 아니라 스크립트 경로의 `"kmod"` 문자열에 반응했을 가능성을 제시한다. - 개발 환경에서 root 권한이 의도적으로 허용된다는 사실을 확인한다. - 프로세스 부모 관계, 엔드포인트 쿼리, SSH 인증서 로그 등을 추가로 검증할 대상으로 남긴다. - 조사 중간 결론으로 해당 이벤트가 정상적인 시스템 관리 활동에 의한 오탐일 가능성을 기록한다. 실무적으로는 전체 대화 로그를 무제한 보존하기보다, 역할별로 필요한 정보를 구조화하고 요약하는 방식이 적합하다. 특히 Director의 Journal에는 결정·근거·미해결 질문을 명시하고, Critic의 결과에는 신뢰도와 시간 순서를 함께 관리하면 장기 실행 에이전트의 일관성과 독립적인 탐색을 동시에 확보할 수 있다.