최근 공개된 Libretto라는 도구가 브라우저 자동화의 패러다임을 바꿀 조짐을 보인다. 기존 AI 런타임 자동화 도구들이 겪던 불안정성, 높은 비용, 예측 불가능한 동작 문제를 해결하며 신뢰할 수 있는 자동화를 가능하게 한다. 단순히 "프롬프트를 던지고 AI가 알아서 하기를 바라는" 방식에서 벗어나, AI가 실제 스크립트를 생성하고 개발자가 그 코드를 검사, 실행, 디버깅하는 방식으로 전환한다.

과거에는 웹 자동화에서 특정 요소를 찾거나 작업을 수행할 때, AI 에이전트가 실시간으로 DOM을 파싱하고 판단하는 방식이 주를 이루었다. 하지만 특히 복잡하거나 오래된 웹사이트에서는 이러한 방식의 신뢰성이 크게 떨어졌다. AI 에이전트가 어떤 의도로 어떤 동작을 할지 예측하기 어려워, "블랙박스" 내부의 결정을 온전히 신뢰하기 힘들었다. 개발자들은 결국 에이전트가 제대로 작동하기를 바라며 프롬프트만 수정하는 데 많은 시간을 쏟았다. Libretto는 이러한 문제의 근본적인 해결책을 제시한다. AI가 개발 단계에서 `Playwright` 스크립트와 같은 실제 코드를 생성해 준다. 생성된 코드는 개발자가 직접 확인하고, 수정하고, 버전 관리하며, 디버깅할 수 있다. 이로써 자동화의 불투명성이 사라지고, 예측 가능하고 안정적인 시스템을 구축할 수 있게 된다. 이는 AI를 단순한 작업 실행자가 아닌, 개발 생산성을 높이는 강력한 도구로 활용하는 방향을 제시한다.

에이전트의 불투명성을 걷어내다

Libretto의 접근 방식은 "개발 시점 AI" (development-time AI)라는 개념으로 요약할 수 있다. 런타임에 에이전트가 자율적으로 행동하는 대신, AI는 미리 스크립트를 생성하고, 이 스크립트를 개발자가 완전히 소유하고 통제한다. 이 방식은 특히 복잡하고 중요한 업무 환경에서 빛을 발한다. 예를 들어, 금융이나 의료 시스템처럼 오류가 치명적인 분야에서는 런타임 AI의 불확실성을 감수하기 어렵다. Libretto는 수동 사용자 동작을 기록하여 에이전트가 스크립트를 생성하고 업데이트하도록 돕고, 단계별 디버깅을 지원하며, 심지어 코딩 저장소의 기존 추상화 및 규칙에 맞는 코드를 생성한다. 이는 개발자가 AI를 활용해 자동화 솔루션을 빠르게 구축하면서도, 궁극적인 제어권을 잃지 않는다는 점에서 큰 의미가 있다. 이제 우리는 AI가 "무엇을 할지"가 아니라 "어떻게 할지"를 더 명확하게 이해하고 관리할 수 있다. 오늘 당장 Libretto의 GitHub 저장소를 방문하여 데모 영상을 확인하고, 실제 프로젝트에 적용 가능성을 탐색해 보는 것이 좋다.

내 손으로 AI 컨텍스트를 조각하다

AI와의 상호작용에서 제어권을 확보하는 것은 비단 자동화 도구에만 국한되지 않는다. 앤스로픽의 클로드 코드(Claude Code) 개발팀이 공개한 컨텍스트 관리 가이드라인은 우리가 AI 모델의 성능을 직접적으로 좌우할 수 있는 구체적인 방법을 제시한다. 많은 개발자가 AI 챗봇을 사용할 때 하나의 세션에서 모든 작업을 이어가는 경향이 있다. 하지만 이정민님의 글에서 지적하듯이, 이러한 습관이 오히려 모델 성능 저하의 원인이 될 수 있다. 컨텍스트 창이 커질수록 모델은 과거 정보에 "오염"되어 현재 작업에 대한 집중력이 떨어지는 "컨텍스트 로트(Context rot)" 현상이 발생한다.

이 가이드라인은 사용자가 직접 컨텍스트를 설계하고 통제하는 "사용자 측면의 컨텍스트 엔지니어링"을 강조한다. `Rewind`, `Compact`, `Clear`, `Subagent`라는 다섯 가지 핵심 기술은 우리가 AI와의 대화에서 "무엇을 남기고 무엇을 버릴 것인가"를 명확히 결정하도록 돕는다.

  • `Rewind` (Esc 두 번 또는 `/rewind`): 실패한 시도의 맥락을 컨텍스트에서 제거하고 이전 시점으로 돌아가 다시 시작한다. 이는 불필요한 정보가 축적되는 것을 막아준다.
  • `Compact` (`/compact`): 대화 내용을 모델이 요약하여 기존 기록을 대체한다. 낮은 노력으로 컨텍스트를 줄이지만, 모델의 판단에 의존한다.
  • `Clear` (`/clear`): 새로운 세션을 열어 컨텍스트를 완전히 초기화하고, 필요한 정보만 직접 설계하여 전달한다. 높은 노력이 들지만, 컨텍스트 오염을 완전히 막을 수 있다.
  • `Subagent`: 중간 과정의 복잡한 작업이나 도구 출력물이 주 컨텍스트를 오염시키지 않도록 별도의 에이전트에 위임한다. 최종 결과만 부모 세션으로 가져와 깔끔한 컨텍스트를 유지한다.

이러한 기술들은 프롬프트 작성 능력만큼이나 중요한 AI 상호작용의 핵심이다. 다음 번 클로드 코드와 대화할 때, `Enter`를 누르기 전 5초 동안 이 5가지 선택지 중 어떤 것이 현재 작업에 가장 적합한지 고민해 보는 습관을 들이면 AI 결과물의 품질이 눈에 띄게 달라질 수 있다. 이는 AI의 내부 작동 방식에 대한 이해를 바탕으로, 우리 스스로가 AI의 효율성을 극대화하는 적극적인 주체가 되는 길이다.

AI 서비스 제공자의 숨겨진 손길, 투명성을 요구하다

하지만 우리가 아무리 AI의 동작과 컨텍스트를 통제하려 노력해도, AI 서비스 제공자 측의 불투명한 변화는 또 다른 예측 불가능성을 초래할 수 있다. 정상록님의 글에서 다뤄진 앤트로픽의 클로드 캐시 TTL 변경 사건이 대표적인 예다. 앤트로픽은 클로드 구독자들에게 아무런 공지 없이 캐시 TTL(Time-To-Live) 설정을 1시간에서 5분으로 변경했다. 이 작은 변화는 사용자들에게 큰 파장을 일으켰다. 캐시 쓰기 비용이 읽기보다 12.5배나 비싼데, 5분마다 캐시가 만료되면서 사용자들의 캐시 쓰기 활동이 급증했고, 결국 월 $200 구독자들이 갑자기 쿼터 한도에 걸리는 일이 발생했다. 심지어 AMD AI 디렉터까지 불만을 표출할 정도였다.

이 사건은 우리가 AI 서비스를 단순한 API 호출로만 바라봐서는 안 된다는 점을 일깨워준다. 서비스 제공자의 작은 정책 변경, 인프라 조정 하나가 사용자 경험, 비용, 그리고 워크플로우 전반에 예상치 못한 치명적인 영향을 미칠 수 있다. 우리가 아무리 프롬프트 엔지니어링을 잘하고, 컨텍스트 관리에 능숙해져도, 서비스 제공자의 투명성 결여는 우리의 노력을 무색하게 만들 수 있다. 이는 우리가 AI 서비스에 의존할수록 더 큰 위험에 노출될 수 있음을 보여준다.

결국 AI 시대의 개발자와 사용자는 단순히 기술을 활용하는 것을 넘어, AI의 블랙박스 속을 들여다보고, 내가 가진 제어권을 최대한 행사하며, 외부 요인으로 인한 불확실성까지 관리하는 총체적인 시야를 가져야 한다. Libretto를 통해 AI에게 명시적인 코드를 요구하고, 클로드 컨텍스트 관리 기술로 AI와의 대화 흐름을 내 손으로 조각하며, 앤트로픽 사례를 통해 서비스 제공자의 정책 변화에 촉각을 곤두세우는 것. 이 모든 것이 우리가 AI를 도구로서 제대로 길들이고 활용하기 위한 필수적인 노력이다. AI는 이제 우리에게 단순히 편리함을 제공하는 존재를 넘어, 능동적인 관리와 통제를 요구하고 있다.

참고

  1. Libretto GitHub Repository: Making AI browser automations deterministic
  2. 클로드 코드: 능동적 컨텍스트 관리, 5가지 핵심 기술 (by 이정민)
  3. Anthropic 몰래 캐시 TTL 변경, Claude 구독자 쿼터 급감 (by 정상록)