
Claude Opus 5.5로 능동형 에이전트 루프 구축하기
- OrcaNEWOrca: OrcaCyber Ultra 1.02026-10-17$5.00 / $10.00 100만 토큰당 · 13 tok/s
- deepseekNEWDeepSeek: DeepSeek V4.1 Flash 10172026-10-1745지능
- DeepSeekNEWDeepSeek: DeepSeek V4.1 Flash2026-10-1740지능
- OrcaNEWOrca: OrcaCyber Zero 1.52026-10-10$3.00 / $7.50 100만 토큰당 · 154 tok/s
- openaiOpenAI: GPT-6.1 Sol2026-09-2952지능
- anthropicAnthropic: Claude Sonnet 5.52026-09-2856지능
- typesafeTypeSafe: Jev 1.132026-09-24$0.04 / $0.00 100만 토큰당 · 983 tok/s
- OpenAIOpenAI: GPT-6 Luna2026-09-2238지능
- OpenAIOpenAI: GPT-6 Sol2026-09-2248지능
- AnthropicAnthropic: Claude Opus 5.52026-09-2258지능
- xAIGrok 4.72026-09-2146지능
- OrcaOrca: OrcaCyber Zero 1.02026-09-17$3.00 / $7.50 100만 토큰당 · 95 tok/s
- OrcaOrca: OrcaVerify Text 1.02026-09-16$2.00 / $0.00 100만 토큰당 · 964 tok/s
- OpenAIOpenAI: GPT-6 Astra2026-09-0453지능77코딩
- GoogleGoogle: Gemini 3.8 Flash2026-09-0241지능76코딩
- AlibabaQwen: Qwen3.8 Max (0902)2026-09-0245지능76코딩
- AnthropicAnthropic: Claude Fable 5.12026-09-0153지능82코딩
- TencentTencent: Hy4 preview2026-08-28$0.83 / $2.50 100만 토큰당 · 47 tok/s
- AlibabaQwen: Qwen3.8 Flash2026-08-26$0.15 / $0.47 100만 토큰당 · 100 tok/s
- z-aiZ.ai: GLM 5.3 Flash2026-08-2642지능72코딩
자체적인 사전 대응형 에이전트를 만드는 일에서 불편한 부분은 흥미로운 작업이 모델 호출이 아니라는 점이다. Claude Opus 5.5가 질문에 답하게 만드는 데는 한나절이면 충분하다. 하지만 그것이 일정에 따라 깨어나고, 지난번 이후 달라진 것만 읽고, 사람이 개입할 만한 일이 있는지 판단하고, 행동을 초안으로 작성한 뒤 멈춰서 기다리게 하려면 몇 주가 걸리며, 그 과정의 거의 전부가 모델 안에서 일어나지 않는다. Anthropic은 이 루프의 한 버전을 Claude Duet으로 출시했는데, 직접 무언가를 만드는 사람에게 그 제품이 유용한 이유는 기능 목록이 아니라 그것이 조립된 방식에서 드러나는 결정들이다. 공개된 API가 없고 자신의 시스템으로 다시 연결할 수도 없으므로, 앱이 아니라 루프를 원한다면 직접 만들어야 한다. 이어지는 내용은 각 단계별 아키텍처와 각 단계의 솔직한 비용이다.
형태부터 보자. 다섯 단계가 순차적으로 실행되며, 다섯 번째 단계는 사람이 승인해야만 도달한다. 스케줄러가 실행을 트리거한다. 다이제스트 단계는 연결된 각 시스템을 델타로 축약한다. 결정 단계는 그 델타와 정책을 결합해 타입이 지정된 제안으로 만든다. 모델 외부의 승인 게이트가 그 제안을 실행해도 되는지 결정한다. 실행기가 그것을 수행한다. 이것이 설계의 전부이며, 어려운 모든 것은 그 이음새에 있다.

1단계: 몇 시간마다 트리거되는 스케줄러
첫 번째 결정은 사람들이 엔지니어링이 아니라 열의 때문에 틀리는 결정이다. 바로 지속적으로 폴링하지 않는 것이다. Anthropic의 Duet 문서는 몇 시간마다 확인한다는 간격을 설명하면서, 멈추지 않고 확인하면 요금제의 한도를 훨씬 더 빨리 소진하게 될 것이라고 말한다. 그것은 마케팅을 위한 신중한 경고가 아니다. 그것은 실제 비용 문제에 대한 올바른 답이며, 모든 자체 제작 에이전트가 첫 주에 빠지는 함정이다.
연속 폴링이 파멸적인 데에는 구조적 이유가 있다. 모든 스윕은 하나의 완전한 컨텍스트다. 지침, 도구 정의, 끌어온 자료, 그리고 모델이 그 위에서 수행하는 모든 추론이 포함된다. 1분 주기라면 하루에 1,440개의 완전한 컨텍스트이고, 그 압도적 다수는 새로운 것을 찾아내지 못한다. 메일함이 바뀌지 않았다는 말을 듣기 위해 전액을 지불하는 셈이다. 3시간 주기라면 8번이 되고, 발견 대비 지출의 비율은 청구서에 서명하는 사람 누구에게든 납득시킬 수 있는 수준이 된다.
그래서 스케줄러는 최소 간격에 하한이 있는 cron 스타일 타이머이지, 이벤트 스트림이 아닙니다. 이벤트는 매력적으로 들립니다 — 무언가 일어나는 순간 반응하는 것이죠 — 하지만 이벤트는 여러분을 다시 연속 작업 쪽으로 밀어넣고, 바쁜 날의 비용을 무한대로 만듭니다. 타이머는 예측 가능한 상한을 제공하는데, 이는 청구 금액이 가변적일 때 필요한 것입니다. 한 소스에 대해 더 빠른 반응을 원한다면, 해당 커넥터의 간격만 줄이고 추가 비용을 감수하세요.
2단계: 캐시에 보관되는, 바이트 단위까지 동일한 하나의 접두사
여기서 공개된 수치가 가장 큰 역할을 합니다. OrcaRouter의 Claude Opus 5.5는 백만 입력 토큰당 4.00달러, 백만 출력 토큰당 20.00달러이며, 1M 토큰 컨텍스트 윈도와 백만당 0.20의 캐시 읽기를 제공합니다. 이는 공급자의 정가에 0% 마크업을 적용한 가격입니다. 이 수치들은 가격표가 아니라 설계 제약으로 읽어야 합니다. 캐시 읽기 비용은 신규 입력 토큰의 20분의 1이므로, 스윕 전반에서 안정적으로 유지하는 모든 바이트는 더 이상 정가를 지불하지 않게 되는 바이트입니다.
실제로 시스템 프롬프트와 도구 스키마는 배포 시점에 한 번 조립되며, 스윕마다 다시 생성되지 않습니다. 키 순서가 다른 사전에서 다시 직렬화되지도 않고, 타임스탬프나 요청 ID, 또는 오늘 연결된 계정이 중간에 끼워 넣어진 템플릿으로 만들어지지도 않습니다. 단 1바이트라도 달라지면 캐시된 접두사가 무효화되고, 매 스윕마다 지시 블록이 전체 입력 가격으로 되돌아갑니다. 팀들은 의도적으로보다 실수로 이 사실을 놓치는 경우가 더 많으며, 보통은 유용해 보이는 추상화가 프롬프트 상단 근처에 실행 식별자를 주입하기 시작하면서 발생합니다.
실제 코드와 맞닥뜨려도 살아남는 규율은 지루하다. 안정적인 블록에는 상수 문자열을 반환하는 함수 하나, 도구 스키마에는 고정 리터럴, 모든 가변 요소는 그 뒤에 배치한다. 그다음 블록을 해시하고 해시가 바뀌면 빌드를 실패시키는 테스트를 둔다. 누군가는 결국 스키마 필드를 추가하면서 캐시는 생각하지 않을 것이기 때문이다. 그 테스트는 한 시간이 들지만 캐싱의 이점 전체를 지켜준다.
3단계: 사서함을 통째로 쏟아내는 것이 아니라, 연결별 다이제스트
세 번째 단계는 소비자 제품은 공짜로 얻지만 당신은 얻지 못하는 단계입니다. Duet은 Anthropic 계정 안에 존재하며 연결된 앱에 접근하므로, 특정 시점 이후 무엇이 바뀌었는지 물어보고 작은 답을 받을 수 있습니다. 그 계정 밖에서 구축하는 경우, 당신은 여느 일반 클라이언트와 동일한 API와 통신합니다. 증분 읽기를 직접 구현하거나, 모든 것을 끌어와 모델에 텍스트의 벽을 넘겨주어야 합니다.
모든 것을 가져오는 것은 첫날부터 작동하기 때문에 기본값입니다. 또한 입력이 변경된 내용이 아니라 메일박스에 따라 커지기 때문에 스윕당 비용을 예측 불가능하게 만드는 가장 빠른 방법이기도 합니다. 변경되지 않은 스레드 40개에 대한 스윕은 단 하나의 스레드만 중요한 스레드 40개에 대한 스윕과 비용이 같으며, 그중 유용한 제안이 나올 가능성이 있었던 것은 하나뿐입니다. 그런 상태로 한 달이 지나면 예산의 대부분은 현상 유지를 확인하는 데 쓰였습니다.
다이제스트 단계는 프롬프트가 아니라 코드로 구현해야 합니다. API가 제공하는 커서나 델타를 사용해 연결별로 가져오고, 결과를 구조화된 요약으로 정리하세요. 무엇이 나타났는지, 무엇이 수정되었는지, 무엇이 해결되었는지가 포함되어야 합니다. 각 항목에 안정적인 식별자를 부여해 이후 단계에서 참조할 수 있게 하고, 연결별로 마지막으로 성공한 커서를 기록해 가져오기에 실패했을 때 어제의 자료를 새것인 양 다시 재생하지 않도록 하세요. "아무 일도 없었다"와 "확인하지 못했다"를 구분하지 못하는 다이제스트는 결국 관찰한 적 없는 상태에 대해 자신 있게 보고하게 됩니다.
4단계: 산문이 아니라 객체를 출력하는 결정 단계
여기가 Claude Opus 5.5가 자리한 지점이며, 이것이 내보내는 결과물은 나머지 시스템을 애초에 구축할 수 있는지를 결정한다. 본능적으로는 모델이 요약을 작성하고 사람이 그것을 읽게 하는 방식을 떠올린다. 그 방식은 대시보드에는 통하지만 게이트에는 실패한다. 다음 단계는 어떤 행동을 허용할지 결정해야 하는데, 문단 하나에 허가를 부여할 수는 없기 때문이다.
의사결정 단계는 타입이 지정된 액션 제안을 반환해야 한다. 즉, 폐쇄형 목록에서 고른 액션 이름, 그 액션이 적용되는 대상, 매개변수, 한 줄 근거, 그리고 명시적인 신뢰도 또는 에스컬레이션 플래그다. 폐쇄형 액션 목록은 관료주의가 아니라 승인 게이트를 강제 가능하게 만드는 메커니즘이다. 게이트는 자신이 열거할 수 있는 액션만 검증할 수 있기 때문이다. 어떤 동사든 내보낼 수 있는 에이전트는 게이트로 통제할 수 없고, 신뢰할 수밖에 없다.
실용적인 참고 사항 두 가지입니다. 모델에 다이제스트를 먼저 주고 그다음 정책을 주세요. 그러면 정책이 가변 자료 뒤에 놓이고 캐시 접두사가 그대로 유지됩니다. 그리고 기본 결과는 행동처럼 읽히는 빈 제안이 아니라 "조치 없음"으로 만드세요. 침묵을 실패로 취급하는 루프는 분량만 늘리며, 유용해 보이려고 일을 만들어내는 에이전트는 변경된 것이 없다고 보고하는 에이전트보다 나쁩니다.
5단계: 실제로 '아니오'라고 말할 수 있는 승인 게이트
게이트는 별도의 서비스여야 하며, 에이전트 자체 코드 안의 분기여서는 안 된다. 이는 구축에서 가장 중요한 구조적 결정이다. 에이전트의 프로세스가 그 동작을 직접 실행할 수 있다면, 그 프로세스의 버그나 프롬프트 인젝션, 잘못 설정된 플래그가 실제 효과에 도달한다. 실행기가 게이트가 서명한 제안만 받아들인다면, 에이전트가 할 수 있는 최악의 일은 잘못된 무언가를 제안하는 것뿐이며, 게이트의 거부는 실제로 유효하다.
Anthropic이 Duet에 대해 공개한 정책은 당신의 목록이 다르더라도 구조는 따라 할 가치가 있다. 게이트는 어떤 작업이 메시지를 보내거나, 결제를 하거나, 문서에 서명하거나, 무엇이든 삭제하기 전에 승인을 요구한다. 그 위에는 승인을 받아도 거부되는 두 번째 계층이 있다 — Duet의 경우 증권 거래와 계좌 간 자금 이동이다. 패턴은 2계층 정책이다: 사람이 허용할 수 있는 대규모 게이트 작업 집합과, 어떤 승인으로도 잠금 해제되지 않는 소규모 집합. 모든 항목이 바뀌더라도 계층은 복사하라, 왜냐하면 그것들은 서로 다른 문제를 해결하기 때문이다. 게이트는 실수로부터 보호한다. 금지 목록은 침해된 운영자, 인간 운영자까지 포함하여, 로부터 보호한다.
진짜 게이트의 나머지 절반은 흐름을 중단시킨다는 점이다. Duet의 승인 요청은 정확한 작업을 보여 주고 기다리며, 흐름에 주석을 다는 대신 의도적으로 흐름을 멈춘다. 아무도 읽지 않는 로그에 한 줄을 쓰는 게이트는 게이트가 아니라 영수증이다. 승인 단계에서 새벽 3시에 누군가 대시보드를 지켜봐야 한다면, 간격이 너무 짧거나 작업 목록이 너무 광범위한 것이다. 둘 다 고칠 수 있지만, 알림을 추가해서 고칠 수 있는 문제는 아니다.
메모리, 자격 증명, 그리고 테스트만으로는 벗어날 수 없는 두 가지 표면
다섯 단계 아래에는 두 가지 어려운 문제가 깔려 있는데, 둘 다 기능처럼 보이지만 실제로는 그렇지 않다.
• 컨텍스트 이어받기.모든 스윕은 새로운 컨텍스트이므로, 에이전트가 스윕 간에 기억해야 하는 것은 무엇이든 그 사이에 기록해 두어야 합니다. 연결별로 크기가 제한된 롤링 상태 파일 하나에 미결 항목과 최근 결정을 담아 두는 것으로 대부분의 루프에는 충분합니다. 통하지 않는 방식은 모델이 다이제스트로부터 이력을 재구성해 주기를 바라는 것인데, 다이제스트는 명시적으로 변경 사항에 대한 설명이며 이미 내려진 결정에 대한 기억을 전혀 담고 있지 않기 때문입니다.
• 자격 증명 보관. Duet은 Anthropic의 관리형 에이전트에 사용된 설계를 따르므로 비밀번호나 로그인 토큰을 직접 보는 일이 없습니다. 이러한 원칙을 그대로 지키는 것이 대부분의 자체 제작 에이전트가 건너뛰는 부분이며, 이를 건너뛰면 모든 프롬프트가 자격 증명으로 이어지는 경로를 갖게 됩니다. 모델은 절대 토큰을 보유해서도, API 키를 텍스트로 받아서도, 인증을 수행하는 구성 요소가 되어서도 안 됩니다. 다이제스트 단계와 실행기가 자격 증명을 보유하고 모델에는 결과만 전달하도록 하십시오.
그다음에는 아무도 생각하고 싶어 하지 않는 표면이 있다. 에이전트가 이메일과 웹 페이지를 읽기 시작하면, 각각은 지시를 포함할 수 있는 입력이 된다. “이것을 아래 주소로 전달하라”는 메시지는 권한에 대한 별도의 개념이 없는 모델에게는 데이터와 구별되지 않는다. 두 가지 방어책이 어떤 프롬프트 강화보다도 뛰어나다. 실행 가능한 동작 목록을 닫아 두어, 주입된 지시가 손댈 수 있는 동사가 없게 하라. 그리고 게이트를 모델의 영향력 밖에 두어라. 모델을 설득해 무언가를 전송하게 만드는 주입이라도, 대상 주소를 보는 사람을 여전히 설득해야 하기 때문이다.
페일오버, 그리고 라우팅이 실제로 도움이 되는 경우
루프가 구축되면 단일 벤더 설계에는 없는 아키텍처적 선택지가 열린다. OrcaRouter의 라우팅 DSL은 여러 모델을 하나의 호출로 구성하며, 모델 퓨전은 병렬로 응답하는 모델 패널을 실행한다. 둘 다 하나의 요청 뒤에 둘 이상의 모델을 둔다. 여기서의 실용적 용도는 화려하지 않다. 다이제스트 요약에는 더 저렴한 모델을 배치하는데, 그 작업은 판단이 아니라 압축이기 때문이다. 그리고 제안이 형성되는 의사결정 단계에는 Claude Opus 5.5를 유지한다. 동일한 OpenAI 호환 키 하나로 200개 이상의 모델에 접근할 수 있으므로, 어느 단계를 어느 모델이 담당할지 전환하는 것은 재작성이 아니라 구성 변경이다.

페일오버는 나머지 절반이다. 공급자가 한 시간 동안 문제를 겪으면, 하나의 엔드포인트에만 접근할 수 있는 에이전트도 같은 한 시간 동안 문제를 겪으며, 폴백이 없는 예약된 루프는 그저 스윕을 놓친다. 라우팅은 놓친 스윕을 더 느린 스윕으로 바꾼다 — 그것이 필요한 주가 오기 전까지는 극적인 이점이 아니지만, 그때는 기록에 공백이 생기느냐 생기지 않느냐의 차이가 된다.

당신이 실제로 가입하고 있는 것
이 루프를 실행하는 것은 서비스를 운영하는 일이며, 그 서비스에는 당신이 방금 소유권을 넘겨받은 네 가지 속성이 있습니다.
• 가동 시간. 앤트로픽의 앱은 남의 호출기이고, 당신의 앱은 당신의 것입니다. 조용히 실행을 멈춘 스케줄러는 오류도 출력도 남기지 않으며, 그 사실은 알림이 아니라 아침 브리핑이 없다는 걸 알아차린 사람을 통해 알게 됩니다.
• 자격 증명 보관. 다이제스트 단계가 보유한 모든 토큰은 당신이 책임져야 하는 것이며, 유출 시 피해 범위는 해당 연결이 접근할 수 있는 모든 대상입니다. Anthropic의 설계는 자격 증명을 모델에서 멀리 둡니다. 당신의 설계가 그렇지 않다면, 모델은 당신이 연결한 모든 계정의 공격 표면이 됩니다.
• 프롬프트 인젝션 방어. 게이트는 여기서 큰 역할을 하지만, 게이트가 통제하는 작업에만 해당됩니다. 에이전트가 승인 없이 수행하는 모든 것, 즉 읽기, 요약, 자체 상태 쓰기는 보호되지 않으며, 오염된 다이제스트는 이후 스윕이 추론하는 메모리를 손상시킬 수 있습니다.
• 버그 바운티는 누구의 몫도 아니다. 루프가 오작동해 고객에게 잘못된 메시지를 보내더라도, 에스컬레이션할 벤더도, 상태 페이지도, 사고 보고서도 없다. 위의 결정들이 유일한 안전망이며, 그래서 게이트가 별도 서비스이고 액션 목록이 닫혀 있는 것이다.
그것이 그것을 구축하는 일을 반대하는 것은 아니다. 반대하는 것은 그것을 가볍게 구축하는 일이다. 각 단계는 작고, 단계 사이의 이음새에 바로 판단이 깃든다. 스트림이 아니라 타이머, 템플릿이 아니라 고정된 프리픽스, 덤프가 아니라 다이제스트, 산문이 아니라 객체, 그리고 주석이 아니라 서비스인 게이트. 이것들을 제대로 하면 그 루프는 제값을 한다 — 당신이 찾아보지 않았을 것들을 찾아내고, 되돌릴 수 없는 일을 하기 전에 멈춘다. 이것들을 잘못하면 당신은 예산을 계속 소모하면서 이미 알고 있던 것을 알려주는 무언가를 만든 셈이다.
