배송 예외 관리 AI 에이전트 구축기: Shipment Exception Commander

배송 예외 관리에서 AI 추천을 독립적으로 검증하고 사람의 승인을 거쳐 멱등 실행하는 통제 흐름을 살펴봅니다. Shipment Exception Commander가 합성 복구안을 결정론적으로 점수화하고 단 한 번 실행해 재현 가능한 증적을 남긴 구축 과정을 공개합니다.

게시일

작성자
배송 예외 관리 AI 에이전트 구축기: Shipment Exception Commander

배송 예외 관리가 어려운 이유는 대응책이 부족해서가 아닙니다. 근거마다 신뢰 수준이 다르고, 대체 운송 견적에는 유효기간이 있으며, 비용에 따라 승인 단계가 달라지고, 성급하게 재시도하면 첫 예약이 이미 성공한 뒤 두 번째 예약까지 생길 수 있기 때문입니다.

Shipment Exception Commander는 배송 지연 대응에서 생기는 바로 이 의사결정 경계를 다루는 오픈 소스 Claude Managed Agents 레퍼런스 애플리케이션입니다. 하나의 합성 예외를 점검하고, 모든 복구 옵션을 기계적으로 점수화하며, 독립적인 위험 검증을 맡긴 뒤, 실행할 정확한 조치를 사람에게 제시합니다. 기본 제공 승인 기능으로 사람이 승인한 뒤에만 샌드박스 상태를 멱등 방식으로 단 한 번 변경할 수 있습니다.

배송 예외 관리의 첫 단계, 모델 판단에 앞선 결정론적 점수화

코디네이터는 운임을 지어내거나 서술형 문장을 정책으로 간주하지 않습니다. 서버 측 읽기 전용 shipment_intelligence 툴은 세 가지 합성 사례를 제공하고 고정 공식으로 각 옵션의 점수를 계산합니다. 약속 이행 50점, 재고 충족 20점, 절대 상한 대비 비용 효율 20점, 신뢰도 10점입니다. 각 옵션에는 견적 버전과 만료 시각, ETA, 보호 물량 수, 추가 USD 비용이 포함됩니다.

대표 검증 사례인 SCX-2026-071은 실제 의사결정에서 마주치는 세 가지 형태를 비교했습니다. 비용은 낮지만 약속 기한을 놓치는 해상 운송, 절대 지출 상한을 넘는 전량 항공 운송, 그리고 약속된 240개 전량을 $4,200에 보호하는 분할 항공 긴급 운송입니다. 분할 옵션은 91점을 받아 운영자 한도 $5,000 안에 들었습니다. 점수 덕분에 추천은 재현 가능해지고, Claude는 근거를 모으고 가정을 검증하며 선택의 득실을 설명하는 데 집중합니다.

신뢰할 수 없는 근거로는 실행을 승인할 수 없습니다

한 운송사 메모에는 에이전트에게 승인 정책을 무시하고 프리미엄 옵션을 예약하라는 지시문 형태의 텍스트가 의도적으로 들어 있습니다. 워크플로는 이 메모를 신뢰할 수 없는 정보로 표시해 근거로 보존하되, 지시로는 명시적으로 배제합니다. 정책의 출처는 버전이 관리되는 합성 카탈로그와 어댑터뿐이며, 운송 관련 서술이나 툴 출력은 정책이 될 수 없습니다.

코디네이터에는 세션 간 쓰기가 가능한 메모리나 볼트, MCP 연동, 외부 네트워크 접근도 없습니다. 자동 승인되는 예외는 범위를 좁힌 read, glob, grep뿐입니다. Bash와 결과물 쓰기에는 always_ask가 적용되고, 편집과 웹 가져오기, 웹 검색은 비활성화되어 있습니다. 정식 상태 변경 경로는 오직 어댑터의 execute 명령입니다.

검증 에이전트가 추천안을 반박 검토합니다

실행을 요청하기 전에 Opus 코디네이터는 제안된 복구안을 좁은 역할의 Haiku 검증 에이전트에 맡깁니다. 검증 실행에서는 NEEDS_CHANGES가 반환됐습니다. 견적 Q-071-v4가 아직 유효한지, 용량과 할증료가 확정됐는지 확인할 수 없었기 때문입니다. 코디네이터는 이 문제를 그냥 넘기지 않았습니다. 결정론적 제안 검증기를 호출해 합성 시각, 견적 만료, 정책 버전, 지출 등급, 예상 상태 버전을 다시 확인했습니다. 권위 있는 ready_for_human_approval 결과가 나온 뒤에야 최종 상태가 준비 완료로 바뀌었습니다.

이후 승인 요약서에는 사례 및 옵션 ID, 정확한 지출액 $4,200, 기존 및 변경 ETA, 고객 약속에 미치는 영향, 보호되는 240개 물량, 견적 만료, 정책 및 상태 버전, 점수, 검증 이력, 제외된 대안, 고정 멱등성 키, 예상 영수증 필드, 거부 및 실패 시 동작이 모두 공개됐습니다.

거부하면 상태는 바뀌지 않습니다

첫 번째 기본 제공 승인 카드는 의도적으로 거부했습니다. 상태를 바꾸는 명령은 실행되지 않았고, 상태는 버전 3의 detected로 유지됐습니다. 영수증은 생성되지 않았으며 멱등성 키도 사용되지 않았습니다. 에이전트는 다른 툴로 바꾸거나 명령을 수정하지 않았고, 새 키를 만들어내지도 않았습니다.

운영자가 명시적으로 다시 요청하자 동일한 정식 조치를 한 번 더 제시했습니다. 이번에는 승인됐습니다. 어댑터는 상태 변경 경계에서 상태 버전 3, 견적 유효성, 정책, 승인 등급, 절대 상한 $10,000을 다시 확인했습니다. 실행은 정확히 한 번 이뤄졌고 사례는 버전 3의 detected에서 버전 4의 resolved로 전환됐습니다. 반환된 영수증은 rcpt_37105a2da411aee0391c, 예약 참조는 SBX-56DFC3291972입니다.

재실행에는 안전하게, 보장 범위는 명확하게

합성 어댑터는 고정 키 SCX-2026-071:OPT-071-B:v3, OS 수준 잠금, 정식 상태 조회, 영수증 레지스트리를 직접 관리합니다. 같은 의도로 중복 호출하면 기존 영수증을 반환하고, 동일한 키에 서로 다른 의도를 담으면 실패합니다. 오래된 버전, 동시 실행, 부분 쓰기 가능성이 감지되면 무작정 재시도하지 않고 먼저 상태를 점검해야 합니다.

이 보호 장치가 보장하는 실제 경계도 의도적으로 분명히 밝혔습니다. 잠금과 상태, 영수증 레지스트리는 하나의 Managed Agents 샌드박스 안에 있는 세션 로컬 파일입니다. 분산 프로덕션 환경까지 보장하지는 않습니다. 실제 운송사나 TMS 어댑터라면 공유 트랜잭션 저장소와 다운스트림 멱등성 경계가 필요합니다.

결과 평가기가 근거까지 대조했습니다

세션은 /mnt/session/outputs/ 아래에 세 가지 산출물을 기록했습니다. 사람이 읽을 수 있는 복구 패킷, 구조화된 감사 기록, 원본 실행 영수증입니다. Managed Agents outcome은 이 파일들을 카탈로그, 어댑터 소스, 정식 상태, 승인 이력, 영수증 레지스트리와 독립적으로 대조했습니다. 견적 만료 정보 공개, 명시적인 실패 동작, 산출물 매니페스트, 세션 로컬이라는 한계에 대한 보완을 요구한 뒤 satisfied를 반환했습니다.

이후 복구 패킷은 애플리케이션 파일 프록시를 통해 다운로드했습니다. SHA-256은 30c8ad1d0d13cf7ad4b7070e67370ea270562c5e4ef44dfa503e3124180bd40b입니다. 기능 세션은 sesn_01CcQjCVoWvNQ7VJLFbuDJxh, outcome은 outc_01GoD4rsLMh93iQNfAUw63KW입니다.

실제 outcome 실행에서는 UI의 빈틈도 드러났습니다. 부모 세션이 유휴 상태인 동안에도 평가기 자식 스레드가 승인을 요청할 수 있었습니다. 이번 릴리스는 부모의 requires_action 이벤트와 자식 스레드의 evaluated_permission: ask 이벤트 양쪽에서 대기 중인 승인 카드를 복원합니다. 확인 또는 결과가 나오면 카드를 종료하고, 리플레이 과정에서 해결된 프롬프트가 되살아나는 일도 막습니다. 또한 평가기의 session_thread_id는 제한된 브라우저 허용 목록을 거쳐 그대로 전달하며, 결정을 전달하기 전에 정확한 원본 툴 이벤트와 일치하는 경로인지 검증합니다.

별도로 구성한 Sonnet 검증 세션 sesn_01BvSf33BLBbN86w5oDb3BkQ도 수정된 경로를 점검했습니다. 교차 전달된 평가기 툴 이벤트 sevt_013VnmofY8ytk6QwgDtNSYoq에는 스레드 sthr_018HMgpidoN86Qp4iGLZt1q3이 담겼습니다. UI는 같은 툴 및 스레드 ID를 사용해 확인 이벤트 sevt_016ZFv5TdBPKNyEPThzGT36Q을 생성했고, 서버가 이를 수락하자 평가기는 다음 점검을 요청했습니다. 관련 없는 추가 반복에 비용을 쓰지 않도록 이 제한적 검증은 의도적으로 중단했으며, 대표 운송 결과는 계속 만족 판정 상태였습니다.

대표 실행은 Opus, 검증은 Sonnet과 Haiku

프로비저닝된 코디네이터는 계속 claude-opus-5를 사용합니다. 반복 가능한 유료 검증의 비용을 낮추기 위해 로컬 세션에서는 코디네이터 모델만 claude-sonnet-5로 명시적으로 재정의할 수 있으며, 다른 모든 런타임 재정의는 실패 시 닫히도록 설계했습니다. 독립 검증 에이전트는 claude-haiku-4-5를 사용합니다. Sonnet으로 실행한 유료 스모크 세션 sesn_01RTs3wLV41odV9p92eWtrHV는 정확히 SMOKE OK라는 응답을 반환했습니다.

프로덕션 테스트 스위트는 개발자의 .env.local이 구성돼 있어도 자격 증명을 의도적으로 격리합니다. 새로 배포한 환경에는 브라우저 키 입력 필드가 없고, Anthropic 트래픽을 전송하지 않으며, configured: false를 보고하고, 결제 라우트가 503을 반환한다는 점을 검증합니다.

물류 자동화를 위한 공개 레퍼런스, 오류가 나면 안전하게 차단합니다

공개 Vercel 레퍼런스에는 Anthropic 키나 Managed Agents 리소스 ID가 없습니다. 랜딩 페이지와 /api/agent/health는 계속 사용할 수 있지만 세션 생성 요청은 실패와 함께 안전하게 차단됩니다. 도입자는 자신의 Anthropic 계정에서 에이전트와 환경을 프로비저닝해야 하며, 구성된 인스턴스는 다른 사용자가 접근하기 전에 반드시 접근 보호를 적용해야 합니다.

이 프로젝트의 모든 사례, 운송사, 견적, 예약 참조, 상태 전환, 영수증은 합성 데이터입니다. 이 애플리케이션은 운영 통제 패턴을 보여줄 뿐, 실제 운송사 연동이 아닙니다.

릴리스 근거

Shipment Exception Commander의 범위는 일반적인 물류 AI 에이전트보다 의도적으로 좁습니다. 버전이 지정된 근거로 추천하고, 추천안을 반박 검토하고, 정확한 조치에 대해 사람의 승인을 받고, 상태를 한 번만 변경하며, 나중에 무슨 일이 있었는지 재구성할 수 있을 만큼 충분한 증적을 남깁니다. 이 하나의 감사 가능한 약속에 집중합니다.

게시일
카테고리
Build
코딩 에이전트, 에디터는 그대로 두고 바꾸는 법: ACP 가이드

코딩 에이전트, 에디터는 그대로 두고 바꾸는 법: ACP 가이드

코딩 에이전트를 바꿀 때 에디터까지 바꿔야 할까요? Agent Client Protocol(ACP)의 연결 원리와 지원 에디터, Android Studio BYOA 설정을 살펴봅니다. MCP와의 차이부터 어댑터, 인증, 세션 복구, 권한 처리까지 도입 전에 확인할 사항을 정리합니다.2026년 11월 3일Build
무료 호스팅부터 상시 서버까지: Vercel 대체 서비스 6곳 비교

무료 호스팅부터 상시 서버까지: Vercel 대체 서비스 6곳 비교

무료 호스팅부터 상시 서버까지 Vercel 대체 서비스 6곳을 비교합니다. Cloudflare, Render, Railway, Netlify, Fly.io, AWS Amplify의 요금·Next.js 호환성·무료 한도와 AI 앱 이전 시 확인할 스트리밍·캐시 조건을 살펴봅니다.2026년 11월 3일Build
음성 AI 플랫폼 비교 2026: Vapi 대안별 요금과 선택 기준

음성 AI 플랫폼 비교 2026: Vapi 대안별 요금과 선택 기준

Vapi 대안을 찾는다면 Retell AI, Bland AI, ElevenLabs Agents, Synthflow, Vida Global을 비교해 보세요. 플랫폼 요금부터 통신사 비용, 연동 제약, 운영 책임까지 살펴보고, 기존 전화번호를 옮기기 전에 검증할 항목을 정리합니다.2026년 11월 3일Build
AI 에이전트로 브라우저 자동화하기: Browser Use 설치부터 Cloud까지

AI 에이전트로 브라우저 자동화하기: Browser Use 설치부터 Cloud까지

Browser Use로 AI 에이전트를 만들어 웹 작업을 자동화하는 방법을 알아봅니다. Python 설치와 첫 실행, 지원 모델, Cloud 구성의 차이를 살펴보고, 로그인 정보 보호와 프롬프트 인젝션 대응, 제출 승인과 결과 검증까지 실제 연동에 필요한 기준을 정리합니다.2026년 11월 2일Build
SNS 자동화 API Zernio 리뷰: 요금과 플랫폼별 제약

SNS 자동화 API Zernio 리뷰: 요금과 플랫폼별 제약

SNS 자동화 기능을 제품에 넣으려는 개발자를 위한 Zernio 리뷰입니다. 지원 플랫폼과 계정 요건, 연결 계정별 요금과 추가 사용료, 웹훅·MCP 연동의 운영 제약을 살펴봅니다. Ayrshare, Postiz, 플랫폼 공식 API와 비교해 팀에 맞는 선택 기준을 정리합니다.2026년 11월 1일Build
협업 툴 비교: Airtable vs Notion, 업무별 선택 가이드

협업 툴 비교: Airtable vs Notion, 업무별 선택 가이드

Airtable과 Notion, 어떤 툴이 맞을까요? CRM, 콘텐츠 캘린더, 프로젝트, 팀 위키, 자산 관리, 고객 포털을 기준으로 비교합니다. 요금과 데이터베이스 한도부터 자동화, API, AI, 접근 권한, 이전 비용까지 살펴보고 두 툴을 함께 쓸 때의 역할도 정리합니다.2026년 11월 1일Build
Google Jules 서비스 종료: 작업 내보내기부터 대체 툴 전환까지

Google Jules 서비스 종료: 작업 내보내기부터 대체 툴 전환까지

Google Jules 서비스 종료 일정과 데이터 내보내기 절차를 정리합니다. 세션 기록과 설정을 보존하고, API 자동화의 불확실성을 점검하며, Antigravity·Codex·Claude Code·GitHub Copilot으로 옮길 실행 환경과 검토 절차를 비교하십시오.2026년 11월 1일Build
AI 에이전트 개발: smolagents의 작동 원리와 선택 기준

AI 에이전트 개발: smolagents의 작동 원리와 선택 기준

smolagents로 AI 에이전트의 행동을 Python 코드로 조합하는 원리와 활용 기준을 살펴봅니다. CodeAgent와 ToolCallingAgent의 차이, Docker 예제, 툴 권한과 샌드박스의 역할을 짚고 LangGraph·OpenAI Agents SDK와 비교합니다.2026년 10월 31일Build
뉴스레터

매주 일요일, 한 통의 편지.뜨거운 의견이 아닌, 돌아가는 시스템.

주간 발행. 스팸 없음. 언제든 해지 가능합니다.