모델 라우팅을 위한 AiKA Modes와 shunt 플러그인
이번에 공개된 Portal의 핵심은 'AiKA Modes'라는 선언적 에이전트 구조다. 이는 AWS Lambda와 유사한 임시 런타임(Ephemeral Runtime)에서 작동하며, 개발자가 지침(Instructions), 모델, 온도(Temperature) 등의 파라미터를 정의하고 MCP(Model Context Protocol) 도구를 연결해 사용할 수 있다. 인프라 관리나 API 키 설정 없이 Portal CLI 또는 API를 통해 호출 가능하며, 공개(Public) 및 비공개(Private) 범위 설정이 가능하다.
Claude Code의 토큰 소모를 직접적으로 제어하는 것은 'shunt'라는 플러그인이다. 이 플러그인은 Claude Code의 `PreToolUse` 훅(Hook)에 연결되어 특정 조건에서 고비용의 프론티어 모델 대신 저비용 워커 모델로 작업을 위임한다. 기본적으로 Gemini 2.5 Flash가 워커 모델로 사용되지만, Portal 인스턴스에 설정된 다른 모델로 교체할 수 있다.
위임 여부를 결정하는 기준은 파일 크기다. `check-file-size` 훅은 모든 읽기(Read) 호출을 감시하며, 파일이 설정된 라인 임계값을 초과할 경우 읽기 작업을 차단하고 `/bulk-reader` 스킬을 사용하도록 유도한다. 기본 임계값은 350라인이며, 이는 `.claude/settings.json` 파일이나 환경 변수를 통해 수정할 수 있다.
{
"env": {
"SHUNT_MIN_LINES": "500"
}
}
I/O 위임 메커니즘과 벤치마크 결과
작업 위임은 크게 두 가지 모드로 나뉜다. `bulk-reader` 모드는 여러 대형 파일을 읽어 핵심 내용을 구조화된 불렛 포인트로 요약해 반환한다. 이때 각 파일은 XML 태그로 감싸 경계를 명확히 하며, 결과물은 Claude의 컨텍스트에 직접 들어가지 않고 요약본만 전달되어 토큰 소모를 줄인다. `code-writer` 모드는 참조 파일의 패턴을 분석해 테스트 파일이나 설정 스캐폴딩을 생성한다. 이 모드는 생성된 코드를 마크다운 펜스 없이 직접 디스크에 쓰기 때문에 Claude가 생성된 코드를 다시 읽고 파싱하는 비용을 제거한다.
자바 모노레포를 대상으로 네 가지 시나리오에서 테스트한 결과, 파일을 직접 읽을 때보다 `bulk-reader`를 통해 요약본을 소비했을 때 평균 약 90%의 토큰 절감 효과가 나타났다. 다만, 모든 작업이 효율적인 것은 아니다. 워커 모델이 표면적인 패턴은 잘 찾아내지만, 테스트 과정에서 미묘한 스레드 안전성(Thread-safety) 버그를 놓치는 사례가 발견됐다. 반면 Claude는 동일한 컨텍스트가 주어졌을 때 해당 버그를 즉시 찾아냈다.
성능 제약으로는 네트워크 왕복으로 인한 지연시간이 발생한다. Claude Code에서 Portal 백엔드를 거쳐 워커 모델로 이어지는 호출은 통상 10~30초가 소요된다. Portal은 단일 호출에 대해 최대 30초의 제한 시간을 두므로, 매우 큰 규모의 생성 작업은 여러 번의 호출로 나누어 처리해야 한다. 이러한 지연시간 때문에 작은 파일까지 위임할 경우 오히려 효율이 떨어지며, 이것이 라인 임계값 설정이 필요한 이유다.
도입 방법 및 운영 제약
Portal과 shunt를 도입하려면 먼저 스포티파이의 플러그인 마켓플레이스에서 관련 도구를 설치해야 한다.
claude plugin marketplace add spotify/portal-ai-plugins
claude plugin install portal@portal
claude plugin install shunt@portal설치 후 새 세션에서 `/portal:setup` 명령어를 실행해 Portal 인스턴스 인증을 완료하면 사용할 수 있다. 이미 공개된 `bulk-reader`와 `code-writer` 모드를 그대로 사용할 수 있으며, 필요에 따라 Portal에서 해당 모드를 포크(Fork)해 지침이나 모델을 커스터마이징하면 사용자 정의 버전이 우선적으로 적용된다.
운영 시 주의할 점은 위임 불가능한 영역이 명확하다는 것이다. 워커 모델의 요약본은 신뢰할 수 있는 라인 번호를 포함하지 않으므로, 실제 코드 수정(Editing) 작업은 반드시 Claude가 직접 해당 섹션을 읽고 수행해야 한다. 이를 위해 shunt의 훅은 오프셋(Offset)과 제한(Limit)이 지정된 타겟 읽기는 허용하도록 설계되었다.
따라서 실무자는 단순 I/O 작업과 패턴 기반 생성은 저비용 모델로 라우팅하되, 디버깅, 아키텍처 결정, 안전성이 중요한 코드 분석 및 실제 수정 작업은 반드시 프론티어 모델이 직접 처리하도록 워크플로우를 분리해야 한다.




