10월 11일 일요일
프로덕션 AI의 병목은 모델 크기 하나가 아니라 컨텍스트의 수명과 출처, 실행 인터페이스, 데이터 경로, 호환성을 검증하는 시스템 경계에서 드러난다.
컨텍스트를 많이 넣는 대신 상태의 수명을 설계한다
라이브 조회·동기화 사본·파생 요약·기억을 같은 저장소처럼 다루면 신선도와 권한이 무너진다. 선택과 출처, 폐기까지 하나의 실행 계층으로 묶어야 한다.

기업 에이전트가 넓은 업무 데이터를 추론하면서도 최신성·권한·재현성을 잃지 않게 하는 최소 컨텍스트와 메모리 구조는 무엇인가?
MCP 도구를 많이 연결하거나 컨텍스트 윈도우를 키우는 일은 회사의 지식 계층을 대신하지 못한다. 특정 고객의 최신 티켓처럼 범위가 좁고 현재 상태가 중요한 질문은 라이브 API가 적합하지만, 지난 1년의 고객 불만처럼 넓은 데이터에서 의미를 찾아야 하는 질문은 외부 시스템을 반복 호출하면 타임아웃과 비용에 부딪힌다. 이때 동기화 사본과 검색 계층이 필요해지지만, 사본은 곧 신선도·권한·변환 이력이라는 운영 부채를 만든다. 세션 기록을 통째로 저장하는 방식도 같은 문제를 반복한다. 재사용할 사실과 절차를 형성하고, 여러 검색 경로로 회상하며, 오래되거나 충돌하는 기억을 진화시키고, 실제 사용 결과로 평가해야 비로소 메모리가 된다. 따라서 컨텍스트 그래프는 특정 그래프 DB 제품이 아니라 라이브 데이터, 동기화 데이터, 파생 요약, 스킬, 메모리를 질문별로 선택하고 추적하는 제어면에 가깝다.
- 01
접근 패턴으로 라이브와 동기화를 나눈다
단일 객체 조회와 전체 데이터셋의 의미론적 질의는 같은 API 패턴이 아니다. 전자는 원천 시스템에서 바로 읽는 편이 단순하고 신선하다. 후자는 로컬 사본과 검색 구조가 필요하지만 지속 동기화와 저장 비용을 감수해야 한다. 라우터가 질문의 범위와 필요한 신선도를 판별하고, 캐시의 SLA가 지나면 라이브 조회로 폴백해야 한다. 모든 검색 결과를 모델에 밀어 넣지 않고 요약기가 최소 충분한 컨텍스트만 전달하는 것도 이 경계의 일부다.
- 02
메모리는 기록이 아니라 형성·회상·진화의 루프다
원시 대화 로그나 큰 파일 트리는 영속성만 제공할 뿐 통제된 회상을 보장하지 않는다. 저장 전에는 재사용할 사실·사건·절차를 추출하고 비밀과 개인정보를 먼저 지운다. 검색은 벡터 유사도 하나에 의존하지 않고 전문 검색, 엔터티, 그래프 관계, 최신성, 중요도, 과거 피드백을 결합한다. 사용 뒤에는 채택·거부·성공·실패를 기록해 순위와 수명에 되돌려야 한다.
- 03
출처와 범위를 데이터와 함께 저장한다
컨텍스트마다 원천, 조회 시각, 식별자와 범위, 접근 주체와 권한, 변환 이력, 무효화 조건을 보존해야 한다. 그래야 답이 틀렸을 때 어느 원천과 어떤 변환이 원인이었는지 재현할 수 있다. 메모리도 에이전트·워크플로·팀·사용자 범위를 구분하고, 오래된 사실·잘못된 범위·오염·충돌·과잉 회수를 별도 실패 모드로 관측해야 한다. 저장과 검색 성공률만으로는 조용한 드리프트를 잡을 수 없다.
- 04
파생 컨텍스트도 캐시처럼 취급한다
반복되는 계정 상태나 지원 티켓 요약을 저장하면 같은 원본을 매번 읽는 비용을 줄일 수 있다. 그러나 파생 요약은 원본보다 진실한 새 데이터가 아니다. 어떤 원천에서 언제 어떤 규칙으로 만들었는지 연결하고, 원본 변경이나 SLA 만료 때 폐기·재생성해야 한다. 새 세션에 넘길 컨텍스트 카드는 이 추적 가능한 사실에서 조립하고, 사용 결과를 다시 메모리 품질 신호로 남긴다.
구현 순서는 저장소 선택보다 컨텍스트 종류의 계약을 적는 데서 시작한다. 질문 범위와 신선도에 따라 라이브·동기화·파생 데이터를 라우팅하고, 메모리 형성 전에 삭제와 범위 지정을 수행한다. 조회 결과에는 출처와 변환 이력을 붙이며, 사용 후 성공·거부·실패를 수명과 순위에 되돌린다. 이 제어면이 없으면 더 많은 도구와 더 큰 컨텍스트는 정확도를 높이기보다 낡은 정보와 권한 오류를 더 넓게 전파한다.
직접 번역보다 검증된 중간 경로가 빨랐다
TypeScript의 의미를 Rust로 옮긴 실험은 포팅 속도보다 호환성, 기준 구현, 실제 코드베이스 검증이 에이전트 개발의 성공 조건임을 보여 준다.

언어 두 개를 한 번에 건너뛰지 않는다
TypeScript의 타입 체커는 문법에서 타입 표식을 지우는 변환기와 다르다. 실행 중 타입이 바뀌는 JavaScript의 의미, 프로토타입, 복잡한 타입 계산, 원본 구현의 경계 사례와 버그까지 같은 판정을 내야 한다. JavaScript·TypeScript에서 Rust로 바로 옮긴 첫 시도는 호환성 약 84%에서 멈췄고, 남은 부분일수록 난도가 높아졌다. 성공한 경로는 Microsoft가 사람이 검증하며 만든 Go 포트를 중간 표현으로 삼아 줄 단위 의미를 Rust에 보존하는 방식이었다. Rust답게 처음부터 재설계하지 않고 Go 표준 동작과 고루틴까지 흉내 내는 보수적인 시작점은 초기 성능에는 불리했지만 비교 가능한 기준을 제공했다. 이후 ‘원본과 같은가’와 ‘기준보다 빠른가’를 분리해 최적화할 수 있었다.
벤치마크와 충실도를 별도 축으로 검증한다
완성된 TSC RS는 TypeScript 6보다 12.5배, Go 기반 차세대 구현보다 약 2배 빠른 결과를 제시했다. 그러나 더 빠른 도구가 항상 더 정확한 대체품은 아니다. Bun의 검사기는 일부 조건에서 더 빨랐지만 Effect 코드베이스를 통과하지 못하거나 Sentry와 tRPC에서 원본과 다른 오류를 낸 사례가 있었다. 반대로 TSC RS의 공개 이슈를 감사하자 대부분이 목표인 TypeScript 7 자체의 버그까지 같은 방식으로 재현한 경우였다. 포팅의 완료 조건을 테스트 통과율 하나로 두지 않고, tRPC·Sentry·Excalidraw·Effect 같은 실제 프로젝트에서 오류 집합과 통합 동작을 비교한 이유다. 속도 수치와 드롭인 호환성은 서로 대체할 수 없는 품질 축이다.
Rust와 WASM은 실행 경계를 다시 그린다
Rust 포트의 목적은 네이티브 컴파일러를 하나 더 만드는 데 그치지 않는다. WebAssembly로 옮기면 브라우저나 Cloudflare 같은 V8 isolate 안에 타입 검사·컴파일·실행을 넣을 가능성이 생긴다. 에이전트, 애플리케이션, 컴파일러를 운영체제 VM과 전용 파일 시스템 없이 더 작은 격리 단위에서 연결하면 모델 추론 가격이 내려간 뒤 상대적으로 커지는 RAM과 VM 비용을 줄일 수 있다. 다만 시연이 실제 운영 계약을 대신하지는 않는다. Cloudflare Worker에서의 CPU·메모리·권한·보안 제약, isolate가 제공하지 않는 기능, 실제 빌드 도구와의 호환성은 후속 검증 대상이다. 새 프로젝트의 유지보수 기준에서는 다른 도구가 더 현실적일 수 있다는 원문의 제한도 함께 남는다.
에이전트 개발자는 목표와 환경을 운영한다
이 작업에서 사람의 핵심 노동은 모든 줄을 직접 작성하는 것이 아니라 성공 조건과 테스트, 병렬 실행 환경, 컴퓨트와 메모리, 실패 모드를 관리하는 쪽으로 이동했다. 첫 시도의 실패는 토큰을 더 주는 것만으로 의미 보존 문제가 풀리지 않음을 보여 줬고, 두 번째 시도의 중간 경로는 에이전트가 따라갈 기준 구현의 품질이 중요하다는 점을 드러냈다. 큰 과제를 맡길수록 프롬프트의 길이보다 단계별 호환성 증거, 중간 산출물의 비교 가능성, 실제 프로젝트의 회귀 검사가 더 강한 하니스가 된다.
이번 주 구현 메모: 인터페이스·파이프라인·평가
모델 교체 전에 호출 계약, 데이터 대기, 도메인 검증을 각각 측정하면 성능 문제의 실제 층이 보인다.
- 01
aiDotEngineer호출자가 에이전트라면 CLI 계약도 달라진다
에이전트용 CLI는 사람이 읽기 좋은 색상 출력보다 JSON 입력과 JSON 출력, 모든 자원에 반복되는 명사-동사 구조, 비대화형 인증, 실패를 분류할 수 있는 일관된 응답이 우선이다. MCP는 설치와 빠른 연결에 강하고 CLI는 조합·긴 실행·파일 기반 컨텍스트에 강하므로 하나를 만능으로 택하지 않는다. 플랫폼 기능은 공통 API와 OpenAPI 사양을 기준으로 두고, CLI와 함께 발견 방법과 예제를 담은 스킬을 배포해 추측을 줄인다.
- 02
aiDotEngineerGPU가 놀면 먼저 데이터 대기 시간을 잰다
멀티모달 SFT의 기준선은 학습 계산이 약 15~20초인데 S3 이미지 로딩과 전처리가 100초를 넘겨 GPU 활용률이 15%에 머물렀다. 비동기 I/O와 Ray actor로 독립 샘플을 병렬화하고, 프리페칭으로 생산자가 trainer보다 앞서게 하며, object store 참조로 프로세스 간 복사를 줄였다. 규모를 키운 뒤에는 한 노드의 NIC가 새 병목이 되어 worker 배치까지 분산해야 했다. 한 처방이 아니라 규모별 프로파일링으로 다음 병목을 다시 찾는 절차가 핵심이다.
- 03
aiDotEngineer작은 모델의 성과는 검증된 업무 데이터에서 나왔다
금융 문서의 약 7,000개 테이블과 전문가 검토 질의를 사용한 실험에서 Qwen 3 4B 에이전트는 FinQA pass@1 약 60%를 기록해 235B 모델의 51%를 앞섰다. 훈련 컴퓨트 약 420달러와 평가 약 40달러로 전체 비용은 500달러 미만이었다. 중요한 조건은 숫자만이 아니라 원본 계보와 스키마 검사, 독립 자동 검토, 금융 전문가의 수동 검토다. 현실적인 도구 환경과 감사 가능한 단일 답을 설계한 뒤 모델 크기를 선택해야 한다.
아직 못 읽은 북마크
북마크를 고르는 중…