/always-on-agent-inputs — 지속적 에이전트에 컨텍스트 입력하기
항상 켜져 있는 에이전트가 보고, 듣고, 아는 것을 설계하고 있습니다. 아키텍처 스킬은 메모리가 저장되는 위치를 다룹니다. 이 스킬은 메모리로 들어가는 내용 — 원시 신호, 구조화 방법, 에이전트가 깨어나는 시기, 컨텍스트 윈도우를 정직하게 유지하는 방법 — 을 다룹니다.
결정 포인트
검색 전략 선택
에이전트 작업 유형 → 검색 전략
IF 대화/채팅:
├─ 최신성 우선 사용 (70% 시간적, 30% 의미적)
├─ 예산: 대화 기록 15K + 최근 회상 4K
└─ 사용자가 "그때... 기억나?"라고 묻지 않는 한 아카이브 건너뛰기
IF 문제 해결/디버깅:
├─ 관련성 우선 사용 (60% 의미적, 40% 시간적)
├─ 예산: 아카이브 8K + 회상 4K + 주변 2K
└─ 과거 해결책의 오류 패턴 포함
IF 컨텍스트 전환 감지:
├─ 빈도 기반 사용 (사용자가 가장 많이 작업하는 것은?)
├─ 예산: 프로젝트 컨텍스트 6K + 최근 2K + 목표 4K
└─ 활성 파일/사람에 대한 엔터티 기록 가져오기
IF 예약된 트리거 (아침 브리핑):
├─ 구조화된 의제 사용 (캘린더 + 작업 + 업데이트)
├─ 예산: 캘린더 4K + 미완료 작업 4K + 변경 사항 2K
└─ 대화 기록 불필요
IF 반응형 트리거 (CI 실패, 회의 시작):
├─ 이벤트별 컨텍스트 로딩 사용
├─ 예산: 이벤트 컨텍스트 8K + 관련 기록 4K
└─ 관련 없는 일반 대화 건너뛰기
주변 데이터 필터링
화면/오디오 관측 → 필터 결정
IF 동일 앱 + 동일 텍스트가 5분 이상 지속:
└─ 폐기 (변화 없음, 잡음)
IF 앱 전환 감지:
├─ 전환 기록 보관
└─ 새 앱 콘텐츠의 관련성 점수 매기기
IF 고신호 키워드 발견:
├─ 활성 프로젝트/목표 확인
├─ IF 일치 점수 >0.6 → 아카이브 + 회상에 저장
├─ IF 일치 점수 0.3-0.6 → 회상에만 저장
└─ IF 일치 점수 <0.3 → 폐기
IF 기술적 오류/예외 표시:
├─ 항상 저장 (디버깅 컨텍스트)
└─ 긴급도 태그 지정
IF 캘린더 이벤트 언급:
├─ 항상 저장 (시간적 기준점)
└─ 실제 캘린더와 교차 참조
트리거 긴급도 할당
이벤트 유형 + 컨텍스트 → 긴급도 수준
IF CI 실패:
├─ 프로덕션 브랜치 → 활성 (사용자에게 알림)
├─ 기능 브랜치 + 현재 사용자 코딩 중 → 수동 (사용자가 다음에 상호작용할 때 언급)
└─ 오래된 브랜치/PR → 무음 (기록만)
IF 회의 시작:
├─ <5분 → 활성 (준비물로 중단)
├─ 5-15분 → 배지 (준비물 사용 가능 표시)
└─ >15분 → 무음 (백그라운드에서 준비)
IF 코드 변경 감지:
├─ 새 브랜치 첫 커밋 → 수동 (새 작업 기록)
├─ 이전 오류 수정 커밋 → 수동 (해결 기록)
└─ 일반 커밋 → 무음 (진행 상황 추적)
IF Slack에서 언급됨:
├─ 다이렉트 메시지 → 활성 (응답 필요)
├─ 채널 멘션 + 긴급 키워드 → 활성
└─ 채널 멘션, 일반 → 배지 (편할 때 검토)
실패 모드
스키마 비대화
- 증상: 컨텍스트 윈도우가 항상 최대치, 느린 응답, 필터링에도 불구하고 높은 토큰 비용
- 근본 원인: 관측 스키마가 에이전트 추론에 필요한 필드만이 아니라 모든 필드를 캡처함
- 탐지 규칙: 평균 컨텍스트 크기가 50K 토큰을 초과하거나 관측 저장량이 하루 1MB 이상이면 스키마 비대화
- 해결책: 매달 스키마 감사. 30일 동안 결정에 영향을 미치지 않은 필드 제거. 원시 저장 대신 요약 사용.
검색 스래싱
- 증상: 에이전트가 오래된 정보를 언급하거나, 최근 컨텍스트를 놓치거나, 관련 없는 기억을 반복적으로 검색함
- 근본 원인: 재순위화 없는 단일 패스 벡터 검색, 또는 시간적/의미적 가중치가 잘못 조정됨
- 탐지 규칙: 검색된 컨텍스트의 30% 이상이 응답에서 사용되지 않거나, 사용자가 에이전트의 최근 이벤트 언급을 수정함
- 해결책: 2단계 검색 구현 (광범위 검색 + 재순위화). 다양한 시간적/의미적 가중치 비율을 A/B 테스트.
트리거 스팸
- 증상: 사용자가 에이전트 알림을 비활성화하거나, 중단에 대해 불평하거나, 에이전트를 무시함
- 근본 원인: 긴급도 계층화 부재, 또는 활성/중단 트리거 임계값이 너무 낮게 설정됨
- 탐지 규칙: 사용자가 활성 알림의 50% 이상을 해제하거나, 사용자 참여 사이의 평균 시간이 4시간을 초과함
- 해결책: 모든 것을 기본값으로 무음 설정. 사용자가 활성 알림을 받을 대상을 명시적으로 구성하도록 함. 해제율 추적.
컨텍스트 부실화
- 증상: 에이전트가 오래된 정보를 바탕으로 행동하거나, 사용자가 초점/프로젝트를 변경한 것을 놓침
- 근본 원인: 컨텍스트에 신선도 감소가 없거나, 검색 가중치가 최신성을 충분히 반영하지 않음
- 탐지 규칙: 에이전트가 최근 컨텍스트가 존재하는데도 7일 이상 된 정보를 참조하거나, 완료된 프로젝트를 언급함
- 해결책: 관련성 점수에 지수 감소 추가. 최근 관측 가중치를 아카이브보다 2-3배 더 높게 설정.
주변 잡음 범람
- 증상: 높은 비용, 낮은 응답 품질, 에이전트가 관련 없는 화면 컨텍스트를 언급함
- 근본 원인: 원시 주변 데이터가 필터링을 우회하거나, 관련성 게이트가 너무 허용적으로 설정됨
- 탐지 규칙: 주변 관측이 저장된 기억의 30% 이상을 차지하거나, 토큰 비용이 하루 10달러를 초과함
- 해결책: 관련성 점수 강화. 주변 관측을 5분 단위로 일괄 처리. 관련성을 확인하기 위해 2개 이상의 신호 요구.
작업 예제
시나리오: 토큰 예산 제약이 있는 청구 버그 조사
사용자 보고: "엔터프라이즈 고객에 대한 청구 계산이 잘못되었습니다."
1단계: 컨텍스트 예산 할당 (총 40K)
시스템 + 신원: 4K 토큰 (고정)
핵심 메모리: 2K 토큰 (사용자 선호도, 활성 프로젝트)
결정: 문제 해결 작업 → 관련성 우선 검색 사용
할당: 아카이브 8K + 회상 4K + 주변 2K + 대화 15K + 출력 버퍼 5K
2단계: 검색 전략 실행
# 청구 관련 기억에 대한 광범위 의미 검색
archival_candidates = vector_search(
query="billing calculation enterprise customer error bug",
top_k=20,
filters={"project": ["billing", "payments"]}
)
# 실제 관련성으로 재순위화 (임베딩 유사성만이 아닌)
reranked = rerank_results(archival_candidates, query, top_k=5)
# 결과: 순수 벡터 검색이 12위로 순위를 매긴 "3주 전 엔터프라이즈 할인 로직 버그"를 찾음
# 최근 청구 작업에 대한 시간적 검색
recent_work = temporal_search(
time_range="last_7_days",
entity_filters=["billing", "enterprise"],
max_results=3
)
# 결과: 사용자가 어제 가격 등급을 디버깅하고 있었음
3단계: 주변 컨텍스트 통합
# 사용자가 현재 무엇을 하고 있는지 확인
screen_summary = get_ambient_summary(last_30_minutes)
# 결과: "사용자가 billing_calculator.py를 열고 calculate_enterprise_discount() 함수를 보고 있음"
# 예산 확인: 아카이브 8K + 최근 4K + 주변 2K = 14K (예산 이내)
4단계: 빠름 vs 완전함 트레이드오프 에이전트에게는 두 가지 옵션이 있습니다:
- 빠른 검색 (현재): 14K 컨텍스트, 최근 버그 패턴에 집중
- 완전한 컨텍스트: git 기록, 관련 PR 토론 추가 (+8K 토큰, 예산 초과)
결정: 초기 응답은 빠른 검색 유지. 사용자가 더 깊은 조사를 요청하면 확장된 컨텍스트 예산으로 후속 작업 실행.
에이전트 응답 품질:
- 초보 접근 방식: 모든 청구 관련 컨텍스트를 덤프하고, 예산을 초과하며, 혼란스러운 응답을 생성함
- 전문가 접근 방식: 14K의 가장 관련성 높은 컨텍스트를 선별하고, 순수 벡터 검색으로는 놓쳤을 3주 전 특정 엔터프라이즈 할인 버그를 언급하며, 예산 이내를 유지함
품질 게이트
- 컨텍스트 윈도우 할당이 계층(시스템/핵심/검색됨/대화)별로 명시적으로 예산 책정됨
- 일상 상호작용에 대한 요청당 평균 토큰 수가 40K 미만
- 주변 관측이 저장 전에 관련성 파이프라인을 통해 필터링됨
- 검색이 2단계 프로세스 사용 (광범위 검색 + 재순위화)
- 모든 트리거가 긴급도별로 분류됨 (무음/배지/수동/활성/중단)
- 관측 스키마에 타임스탬프, 신뢰도 점수, 출처 포함
- 필터 파이프라인 테스트 완료: 검색된 컨텍스트의 30% 미만이 응답에서 사용되지 않음
- 사용자가 활성 알림의 20% 미만을 해제 (트리거 스팸 확인)
- 사용 가능한 경우 에이전트가 아카이브 대신 최근 정보(지난 24시간)를 참조
- 사용자당 저장 공간 증가율이 주당 100MB 미만 (효율성 확인)
NOT-FOR 경계
/always-on-agent-inputs 사용 대상:
- 사용자 환경에서 캡처할 데이터 결정
- 트리거 및 관측 스키마 구조화
- 컨텍스트 윈도우 예산 및 검색 전략 선택
- 주변 데이터가 에이전트에 도달하기 전에 필터링
다음 용도로는 사용하지 마십시오:
- 메모리 아키텍처 설계 (벡터 스토어, 데이터베이스, 메모리 계층) →
/always-on-agent-architecture사용 - 애플리케이션 및 사용 사례 아이디어 구상 →
/always-on-agent-applications사용 - 캡처된 데이터의 개인정보 보호 및 안전 →
/always-on-agent-safety사용 - 일반 프롬프트 엔지니어링 기법 →
/prompt-engineer사용 - 에이전트 추론 패턴 →
/agentic-patterns사용