IBM Bob·watsonx Orchestrate·BobShell이 동시에 타임아웃될 때, 2026년 Clash 분류로 엔터프라이즈 코딩 에이전트 출구 맞추기
2026년 5월 IBM Think에서 공개된 IBM Bob은 엔터프라이즈용 에이전트 코딩 동반자로, IDE·터미널·watsonx Orchestrate 플러그인이 한 작업선에서 움직입니다. IBM Cloud 콘솔과 API, Granite·Anthropic 등 모델 게이트웨이, BobShell CLI, 플러그인이 끌어오는 npm·GitHub 의존성, 그리고 MCP 보조 프로세스까지 합치면 “챗 한 줄”이 아니라 열 개 이상의 서로 다른 호스트를 동시에 밟게 됩니다. 브라우저만 맞춰 둔 프록시로는 “cloud.ibm.com은 되는데 BobShell만 멈춘다” 같은 간헐 증상이 남기 쉽습니다. 이 글은 Clash의 분류 규칙·노드 선택·TUN을 IBM 생태계 워크플로에 맞춰 정리합니다. AWS 쪽은 Agent Toolkit·Bedrock 분류 글, 터미널·패키지 공통 패턴은 OpenCode·npm·GitHub 글과 함께 보시면 됩니다.
Think 2026 이후 Bob이 네트워크 지도를 넓힌다
IBM이 Bob과 watsonx Orchestrate 다중 에이전트 오케스트레이션을 묶어 내놓으면서, 검색 의도도 “모델 품질”에서 실제로 호출되는 IBM Cloud·플러그인·CLI 전체로 빠르게 옮겨 갔습니다. 사내에서 Bob을 파일럿할 때 흔한 그림은 다음과 같습니다. VS Code나 JetBrains 계열 IDE에 Bob 확장을 깔고, 터미널에서는 BobShell로 같은 워크스페이스를 다루며, Orchestrate 플러그인으로 여러 에이전트를 묶어 배포 파이프라인이나 티켓 시스템과 연결합니다. 한 번의 “리팩터 제안”만 해도 추론 API, 조직 IAM, 샘플 저장소 clone, SDK npm install이 겹칩니다.
- 동시성: 채팅 스트림, 플러그인 메타데이터, 짧은 제어 플레인 호출이 한 작업 단위 안에서 겹칩니다.
- 호스트 다양성:
cloud.ibm.com, watsonx 추론, SSO, 패키지, Git, 브라우저 OAuth 창마다 목적지가 달라집니다. - MCP: 로컬 서버는 루프백이지만, 마켓·문서·번들이 원격이면 별도 HTTPS가 붙습니다.
한 줄 요약
IBM Bob 도입 여부보다 어떤 프로세스가 어떤 호스트를 치는지가 먼저입니다. Connections 로그를 단일 근거로 삼으세요.
여섯 축으로 나누기: IBM Cloud·watsonx·인증·모델·npm·GitHub
규칙을 쓰기 전 머릿속 지도를 고정합니다. 첫째는 IBM Cloud 콘솔·제어 API(cloud.ibm.com 및 조직별 리소스 그룹 엔드포인트)입니다. 둘째는 watsonx Orchestrate와 Bob이 붙는 오케스트레이션·추론 호스트 묶음입니다. 셋째는 IAM·SSO·API 키 교환 축입니다. 넷째는 Granite·Anthropic 등 모델 게이트웨이로 나가는 추론 스트림입니다. 다섯째는 npm 레지스트리와 tarball CDN입니다. 여섯째는 GitHub의 웹·API·오브젝트 스토리지·raw 경로입니다. 리전·테넌트·프라이빗 엔드포인트마다 문자열은 달라지므로 문서 예시를 그대로 복사하지 말고 본인 세션 로그로 교차 검증해야 합니다.
이 여섯 축은 네트워크 특성이 다릅니다. Bob의 장시간 코드 생성 스트림은 낮은 지터와 긴 세션 유지가 중요하고, Orchestrate 플러그인이 끌어오는 대형 npm 번들은 처리량에 민감합니다. GitHub API는 출구 IP가 자주 바뀌면 레이트 리밋 메시지가 섞이기 쉽습니다. SSO 단계는 브라우저와 BobShell이 서로 다른 프로세스 트리를 타므로 “로그인 창은 열렸는데 토큰만 안 온다” 식의 증상이 규칙 순서에서 설명되기도 합니다.
1단계: Connections에서 Bob·BobShell·MCP 목적지 모으기
추측을 줄이는 것이 가장 저렴한 디버깅입니다. IDE 자식 프로세스, BobShell 바이너리, node로 돌아가는 MCP 브리지, npm 자식이 각각 어떤 SNI를 치는지 Clash 대시보드에 적습니다. Windows에서는 WSL 내부 Node가 호스트와 다른 경로로 나가는 경우가 있어 WSL2·Clash 글을 함께 참고합니다. Bob으로 긴 컨텍스트 스트림을 켠 뒤 Orchestrate 워크플로를 한 번 돌리면, 제어 플레인과 추론 호스트가 서로 다른 행에 찍히는지 바로 보입니다.
목록에 자주 등장하는 유형(환경마다 다름)
cloud.ibm.com및 조직별 IBM Cloud API 서브도메인.- watsonx·Orchestrate 문서에 나온 추론·관리 호스트(리전별로 재확인).
- SSO·토큰 교환에 쓰이는 인증 호스트 묶음.
registry.npmjs.org와 tarball이 뜨는 CDN 호스트.github.com,api.github.com,objects.githubusercontent.com등.
아래 YAML은 설명용 스켈레톤입니다. IBM-CLOUD·WATSONX·IBM-AUTH·MODEL-GW·PKG-CDN·GITHUB 자리에 구독의 proxy-group 이름을 넣고, 행은 로그로 채웁니다.
# Illustrative rules — replace proxy groups; verify hostnames in your logs
rules:
- DOMAIN-SUFFIX,cloud.ibm.com,IBM-CLOUD
- DOMAIN-SUFFIX,ibm.com,IBM-CLOUD
- DOMAIN-SUFFIX,watsonx.ai,WATSONX
- DOMAIN-SUFFIX,ibmcloud.com,IBM-CLOUD
- DOMAIN-SUFFIX,registry.npmjs.org,PKG-CDN
- DOMAIN-SUFFIX,npmjs.org,PKG-CDN
- DOMAIN-SUFFIX,github.com,GITHUB
- DOMAIN-SUFFIX,githubusercontent.com,GITHUB
- MATCH,DIRECT
분류 규칙은 위에서 아래로 첫 매칭이 승권합니다. 이미 RULE-SET을 끌고 있다면 ibm.com 전체를 한 번에 던지는 광범위 행이 Bob 전용 좁은 규칙을 덮지 않는지 병합 순서를 읽습니다. DOMAIN-KEYWORD,ibm처럼 지나치게 넓은 키워드는 다른 업무 SaaS까지 끌고 와 의도치 않은 프록시를 만들 수 있으니 최후 수단으로만 두세요.
2단계: Bob 스트림과 Orchestrate·npm 대량 다운로드를 한 노드에 묶지 않기
Granite나 Anthropic 경유 추론 스트림과 npm install @ibm-cloud/... 같은 fat download를 동일한 url-test 그룹에 넣고 자동 전환을 공격적으로 돌리면, 스트림 중간에 출구가 바뀌어 재협상·재시도 폭주가 나고 IDE 플러그인만 끊기는 현상이 생깁니다. Orchestrate가 여러 에이전트를 동시에 깨우는 날에는 제어 호출과 패키지 설치가 겹치므로, “Bob 채팅은 되는데 플러그인 배포만 이상하다”는 패턴은 이 구조와 잘 맞습니다.
| 트래픽 | 노드에 바라는 성질 | 자주 생기는 실수 |
|---|---|---|
| Bob·watsonx 스트림 | 플랩이 적고 RTT가 안정적 | 속도 테스트 1위 노드만 고집 |
| npm·플러그인 번들 | 처리량·재시도 친화 | 스트림과 같은 큐를 공유 |
| GitHub API | 출구 IP가 덜 바뀜 | 짧은 주기 자동 failover |
| IBM Cloud·SSO | 세션 일관성 | 브라우저 축과 BobShell 축 노드 불일치 |
URL-TEST 주기를 지나치게 타이트하게 두면 장시간 Bob 세션 중에도 후보 노드가 바뀝니다. 에이전트 코딩용 그룹은 작업 시간 동안 수동 고정하거나 테스트 간격을 보수적으로 잡는 운용이 더 낫습니다.
3단계: DNS·fake-ip·IPv6를 스택과 맞추기
브라우저, Electron 기반 IDE, 순수 터미널, 시스템 리졸버가 서로 다른 DNS 경로를 쓰면 같은 cloud.ibm.com도 다른 엣지로 갈라집니다. Clash에서 fake-ip를 쓰는 경우 일부 TLS 스택은 핸드셰이크 직후 끊기는 것처럼 보이기도 합니다. DNS·fake-ip 가이드의 순서대로 한 번에 한 변수만 바꿔 재현해 보세요.
- IPv6: AAAA가 먼저 잡히면 의도와 다른 회선으로 나가는 사례가 있습니다.
- Split tunnel: 회사 VPN과 병행할 때 BobShell만 다른 라우팅 테이블을 타는지 확인합니다.
- 캐시: 오래된 TTL이 남아 규칙을 고쳤는데도 이전 목적지로 붙는 착시가 납니다.
주의
본문 도메인은 이해를 돕기 위한 예시입니다. Think 2026 이후에도 엔드포인트는 바뀔 수 있으니 항상 본인 Connections 로그를 단일 출처로 삼으세요.
4단계: TUN·환경 변수로 BobShell·CLI·MCP 경로 확정
IDE와 터미널이 OS 프록시를 무시하면 TUN이 BobShell·언어 런타임에 유리한 경우가 많습니다. 반대로 TUN이 모든 트래픽을 끌어당겨 사내 SaaS와 충돌하면, bobshell·node·npm만 골라내는 PROCESS-NAME 규칙을 검토합니다. HTTPS_PROXY·HTTP_PROXY·ALL_PROXY를 셸 프로필에 넣되, Bob CLI가 값을 존중하는지 확인합니다. Git의 http.proxy만 켜 두고 Node는 빈 손으로 나가면 증상이 격자무늬처럼 섞여 보입니다. 공통 패턴은 터미널·git·프록시 글과 맞닿습니다.
MCP로 watsonx·IBM 도구를 감싼 경우, 편집기 UI는 멀쩡한데 터미널 코덱스만 실패한다면 어느 바이너리가 설정을 읽는지부터 갈라야 합니다. Claude Code·MCP 분류 글의 “웹 클라이언트와 다른 터미널 경로” 논리가 Bob에도 그대로 이어집니다.
5단계: Orchestrate·MCP 레이어에서 터지는 지점 찾기
watsonx Orchestrate 플러그인은 로컬 stdio MCP처럼 보여도, 에이전트 카탈로그·원격 템플릿·조직 정책 JSON을 당기면 추가 HTTPS가 생깁니다. OAuth 루프백은 로컬이지만 토큰 교환은 IBM Cloud 쪽입니다. 플러그인 매니저가 별도 Node 자식을 띄우면 프로세스 필터도 달라집니다. Bob이 제안한 패치를 적용하려 GitHub에서 PR diff를 받거나 npm으로 linter를 설치하는 순간, MCP “로컬 실패”로 오해되기 쉽습니다. 실패 시각의 Connections에서 레지스트리인지 GitHub인지를 먼저 나눕니다.
- 카탈로그 JSON: 버전 고정 URL이면 캐시와 충돌할 수 있습니다.
- 원격 도구 번들: 압축 해제 시 npm·GitHub 호출이 연쇄됩니다.
- IDE vs BobShell: 동일 플러그인 이름이라도 실행 주체 프로세스가 다르면 규칙 매칭이 달라집니다.
AWS 글·다른 CLI 글과 겹치는 곳, 다른 곳
AWS Agent Toolkit·Bedrock 글은 amazonaws.com·Bedrock·STS 축에 가깝습니다. OpenCode 글은 터미널·npm·GitHub 비중이 큽니다. 이 글은 그 사이에서 IBM Bob·watsonx Orchestrate·IBM Cloud·BobShell·모델 게이트웨이·MCP가 한 엔터프라이즈 개발 작업선으로 겹치는 검색 의도에 맞췄습니다. 규칙을 통째로 복붙하지 말고 로그 패턴을 이식하세요.
증상별로 의심할 순서
IBM Cloud 콘솔은 되는데 BobShell만 응답이 없다
터미널이 DIRECT로 나가거나, CLI만 다른 불안정 노드에 걸린 경우를 의심합니다. TUN 전환과 환경 변수 주입 후 같은 목적지가 프록시 체인을 통과하는지 확인합니다.
Orchestrate 워크플로는 시작됐는데 에이전트 호출만 실패한다
오케스트레이션 제어 축과 추론 축이 서로 다른 정책 그룹으로 갈리면 토큰이 유효해 보여도 중간에 끊깁니다. 두 축을 한 세션에서 일관된 출구로 묶었는지 봅니다.
npm는 대부분 되는데 IBM 스코프 패키지만 실패한다
tarball이 다른 도메인으로 리다이렉트되면 레지스트리 행만으로는 부족합니다. 실패한 패키지 한 건에 verbose 로그를 켜 실제 URL을 확인하세요.
자주 묻는 질문
리전·테넌트를 바꿨는데 갑자기 전체가 느려졌습니다.
리전 문자열이 바뀌면 watsonx·IBM Cloud 호스트 집합이 함께 바뀝니다. 이전 리전에 맞춘 좁은 규칙이 무용지물이 되거나, 광범위한 fallback에만 걸려 먼 CDN으로 새는 경우가 있습니다. Connections에서 새 호스트를 다시 수집하세요.
사내 프록시와 Clash를 같이 쓰면 충돌이 납니다.
사내망 대상은 DIRECT, 공용 IBM Cloud API는 프록시 그룹으로 두는 스플릿이 필요합니다. “업무 SaaS”와 “Bob·코딩 에이전트” 축을 테이블로 나눠 유지하세요.
CI에서만 플러그인·패키지 단계가 자주 타임아웃됩니다.
러너에 프록시 환경 변수가 비어 있거나, 캐시 없이 매번 전 세계 미러를 돌 경우가 많습니다. Clash를 러너 호스트에 두거나, 동일 분류 규칙을 인프라 egress에 이식했는지 확인합니다.
실무 체크리스트
- Bob·Orchestrate 실행 중 IDE·BobShell·npm·git·MCP 보조 프로세스의 Connections 로그를 모은다.
- IBM Cloud, watsonx, 인증, 모델 게이트웨이, npm·CDN, GitHub를 정책 그룹에 매핑할지 결정한다.
- DNS·fake-ip·IPv6를 고정한 채 한 변수씩만 바꿔 재현한다.
- 장시간 스트림용 그룹과 대량 패키지용 그룹을 분리한다.
- TUN 또는 환경 변수로 터미널과 CI가 실제 Clash 출구를 통과하는지 검증한다.
정리와 제품 관점에서의 선택
일부 단일 목적 프록시 앱은 “브라우저 속도” 하나에 맞춰져 있어, IBM Bob처럼 IBM Cloud·watsonx Orchestrate·BobShell·npm·GitHub·MCP가 동시에 움직이는 엔터프라이즈 개발 작업선을 한 설정 트리에서 설명하기 어렵습니다. 규칙을 파일 한 덩어리로만 노출하거나 DNS 제어가 부족하면 증상이 간헐적으로만 남아 재현이 힘들어집니다. Clash 계열은 호스트·프로세스·정책 그룹의 분류 규칙을 쌓고 DNS와 TUN을 같은 구성 안에서 다룰 수 있어 Think 2026 이후 늘어난 IBM 에이전트 스택과 잘 맞습니다. 노드 선택을 작업 성격에 맞게 나누면 Bob 호출과 터미널 의존성 설치가 동시에 흔들리는 날을 줄이기 쉽습니다.
AWS 쪽 워크플로와 비교한다면 Agent Toolkit·Bedrock 글을, 범용 CLI 패턴만 보려면 OpenCode·npm·GitHub 글을 함께 읽어도 좋습니다. 호스트 목록만 IBM 축에 맞게 갈아 끼우면 됩니다.