2026-07-31T17:02:19.892Z
AI SDK 에이전트 루프: 중지된 이유 증명
명시적인 중지 원인, 제한된 실행, 라우팅된 승인 대기, 독립적인 결과 증명을 기준으로 Vercel AI SDK 루프 종료를 점검합니다.
AI SDK 에이전트 루프는 반환되었다는 이유만으로 정상이 아닙니다. 반환은 하나의 제어 흐름 경로가 종료되었음을 증명합니다. 즉, 다른 도구 호출 없이 모델이 완료되었거나 도구를 실행할 수 없거나 승인이 필요하거나 구성된 중지 조건이 실행되었음을 증명합니다. 이러한 사실 중 어느 것도 송장이 생성되었거나 티켓이 업데이트되었거나 보고서가 목적지에 도달했음을 증명하지 못합니다. 실제 기본값은 SDK의 제한된 루프를 유지하고 하나의 명시적인 중지 원인을 기록하고 의도한 외부 결과를 별도로 확인하는 것입니다. 승인 요청을 대기로, 단계 또는 예산 상한을 제한된 중지로, 결과 수신 없이 자연스러운 완료를 잘못된 완료로 처리합니다. 이 가이드에서는 릴리스된 [email protected] 패키지 및 Node.js 22.23.1에 동작을 고정합니다. 함께 제공되는 콘텐츠 없는 재생은 11개의 운영 사례에 걸쳐 실제 내보낸 중지 조건 기능을 실행했습니다. 11개 분류와 4개의 직접 SDK 어설션이 모두 통과되었습니다. SDK는 여러 가지 정당한 이유로 중지될 수 있습니다. 그만큼 AI SDK 루프 제어 가이드 네 가지 종료 경로를 지정합니다. 1. 모델이 tool calls 이외의 종료 이유를 반환합니다. 2. 호출된 도구에는 execute 기능이 없습니다. 3. 도구 호출에는 승인이 필요합니다. 4. 구성된 중지 조건이 true를 반환합니다. 이러한 경로는 하나의 completed: true 필드로 축소되어서는 안 됩니다. 이는 다양한 운영자 조치를 의미합니다. 자연스러운 비도구 마감은 연구 답변에는 완벽하게 유효하지만 계약에 개체 스토리지에 파일이 필요한 워크플로에는 불완전할 수 있습니다. execute 가 없는 도구는 의도적으로 구조화된 done 신호로 작동할 수 있지만 신호에는 모델이 주장한 내용이 포함되어 있으며 부작용이 성공했다는 독립적인 증거는 아닙니다. 승인 요청은 의도적인 일시 중지입니다. 단계 한도는 작업이 실패하거나 성공했다는 의미가 아니라 안전 경계가 작동했음을 의미합니다. 현재 문서에 따르면 ToolLoopAgent 의 기본값은 isStepCount(20) 입니다. 이를 isLoopFinished() 로 바꾸면 걸음 수 중지 조건이 제거됩니다. 이는 엄격하게 제어되는 로컬 실험에 적합할 수 있지만 모델 호출 및 비용에 대한 단순한 한계도 제거합니다. 애플리케이션이 독립적인 기한, 예산 및 취소 제어를 설명할 수 없는 경우 기본 한도를 유지하는 것이 더 안전한 결정입니다. 세 가지 작은 구현 세부 사항이 진단을 변경합니다. 버전 고정 정지 조건 소스 직접 감사할 수 있을 만큼 짧습니다. isStepCount(n) 는 steps.length === n 일 때 참이며, 개수가 n 보다 크거나 같은 경우가 아닙니다. hasToolCall(name) 는 가장 최근에 완료된 단계에서 도구 호출을 검사합니다. isLoopFinished() 는 항상 중지 조건으로 false를 반환하여 자연 종료, 실행되지 않은 도구 또는 루프 종료 승인을 남깁니다. 이러한 의미는 사건을 재구성할 때 중요합니다. 애플리케이션이 최종 텍스트와 총 걸음 수만 유지한다고 가정합니다. 두 번째 단계에서 done 를 호출한 3단계 실행은 관련 조건이 마지막 단계를 확인하므로 hasToolCall("done") 가 종료를 유발했음을 나중에 증명할 수 없습니다. 마찬가지로 21단계를 관찰해도 isStepCount(20) 가 실행된 것으로 나타나지 않습니다. 구성된 정책, 기록된 개수 또는 실행 경계가 가정과 다르다는 증거입니다. 실행 시 조건 입력과 선택한 정책 버전을 유지합니다. 사실 이후에 대시보드에서 이를 추론하지 마세요. 상태를 선택하기 전에 정지 영수증을 작성하세요. 유용한 영수증은 작습니다. 프롬프트, 모델 응답 또는 원시 도구 페이로드가 필요하지 않습니다. stopCause 는 최종 산문을 기반으로 한 추측이 아니라 통합 경계에서 나와야 합니다. 실행이 도구가 아닌 완료에 도달했는지, 명명된 중지 조건과 일치했는지, 승인 요청을 내보냈는지, 실행되지 않은 완료 도구를 호출했는지, 중단되었는지, 시간 초과되었는지, 도구 실행에 실패했는지 기록합니다. 그런 다음 우선순위 규칙을 적용합니다. 증거 상태 운영자 결정 도구 실행 실패 FAILED 도구 경계를 진단합니다. 불확실한 부작용을 맹목적으로 재시도하지 마십시오. 소유자, 기한 및 이력서 토큰에 대한 승인이 보류 중입니다. WAITING 결정을 전달하고 재개성을 유지합니다. 데이터 라우팅 없이 승인 대기 중 WAITING UNROUTED 대기 시간이 보이지 않게 되기 전에 소유자와 에스컬레이션 경로를 추가하세요. 유용한 진행 없이 시간 초과가 만료되었습니다. STUCK 마지막 내구성 진행을 검사하고 제한된 복구 하나를 선택합니다. 단계, 토큰 또는 사용자 중단이 실행되었습니다. BOUNDED STOP 부분적인 작업을 보존합니다. 새로운 제한된 실행이 정당한지 여부를 결정합니다. 자연스러운 마감 또는 명확한 done 및 결과 영수증 VERIFIED COMPLETE 실행을 닫습니다. 결과 영수증 없이 자연스러운 마감 또는 명시적인 done FALSE COMPLETE 대상을 확인하거나 작업을 다시 엽니다. 신호가 일치하지 않거나 원인이 기록되지 않았습니다. UNCERTAIN 행동하기 전에 물어보세요. 주문이 중요합니다. 네 번째 단계의 시간 초과는 단계 수가 4개가 되더라도 여전히 시간 초과입니다. 승인 요청은 일반적인 불완전 상태로 전환되기보다는 대기 상태를 유지해야 합니다. 결과물이 없는 자연스러운 마무리는 텍스트가 자신감 있게 들리더라도 허위 완성도를 유지해야 합니다. 모델을 호출하지 않고 정책을 재생합니다. 감사에서는 출시된 isStepCount , hasToolCall 및 isLoopFinished 기능을 가져왔습니다. 완료된 단계 기록의 콘텐츠 없는 배열을 전달하고 해당 출력을 영수증 분류기에 결합했습니다. 모델 호출, 프롬프트, 비밀 또는 외부 도구 효과가 필요하지 않았습니다. 네 가지 어설션이 SDK 경계를 설정했습니다. 그런 다음 11개의 케이스 고정 장치는 결과가 있거나 없는 자연스러운 마무리, 결과가 있거나 없는 done , 단계 한도, 토큰 예산, 라우팅 및 라우팅되지 않은 승인, 도구 오류, 시간 초과 및 사용자 중단을 다루었습니다. 공개된 쌍은 이국적인 실패가 아니었습니다. 두 자연 마감 설비 모두 동일한 제어 흐름 원인을 가졌습니다. 목적지 영수증을 소지한 사람만이 VERIFIED COMPLETE 가 되었습니다. done 도구에도 동일한 분할이 나타났습니다. 이것이 위조할 수 있는 핵심 결과입니다. 루프 종료만으로 유용한 완료가 입증된 경우 해당 쌍의 고정 장치는 동일한 건전한 판정을 받았어야 합니다. 그들은 그렇지 않았습니다. 제어 흐름이 중지된 후 대상 확인 그만큼 ToolLoopAgent 참조 생성된 결과에 완료된 단계를 표시하고 abortSignal 및 시간 초과 제어를 허용합니다. 이러한 필드는 유용한 증거이지만 애플리케이션에는 여전히 성공의 정의가 있습니다. 사용자의 실제 요청에 응답하는 가장 저렴한 결정론적 검사를 선택하십시오. 파일의 경우 예상 경로 또는 개체 키, 콘텐츠 유형, 최소 크기, 작업별 해시 또는 스키마를 확인합니다. 데이터베이스 변형의 경우 대상 레코드를 읽고 의도한 필드를 비교합니다. 메시지의 경우 공급자 영수증과 대상 ID를 유지합니다. 배포의 경우 변경할 수 없는 버전, 공중 보건 응답 및 사용자 대상 경로를 확인합니다. 분석을 위해 산문을 수락하기 전에 필수 섹션, 소스 범위 및 기계 판독 가능 출력을 검증하십시오. 결과 영수증을 모델 주장의 두 번째 사본으로 만들지 마십시오. 동일한 루프에서 방출된 {"status":"done"} 는 독립적인 검증이 아닙니다. 영수증은 대상, 결정론적 유효성 검사기 또는 결과를 코드로 안전하게 확인할 수 없는 경우 인간의 결정에서 나와야 합니다. 승인에도 별도의 경계가 필요합니다. SDK 문서에는 승인 요청이 수집되어 승인 응답으로 대화에 추가되고 후속 호출로 전달될 수 있음이 나와 있습니다. 운영상 이는 대기가 동일한 결정을 재개하기에 충분한 컨텍스트를 유지해야 함을 의미합니다. 이력서 토큰이 없는 소유자는 수동 재구성 작업을 생성합니다. 소유자가 없는 토큰은 보이지 않는 대기열을 생성합니다. 이 재생이 증명하지 못하는 것 실험에서는 공급자 모델을 호출하거나 부분 출력을 스트리밍하거나 외부 도구를 실행하지 않았습니다. 따라서 공급자별 종료 이유 동작, 네트워크 취소 타이밍 또는 부작용 멱등성을 설정하지 않습니다. 이는 실제 모델, 도구 및 대상에 대한 통합 테스트에 속합니다. 또한 하나의 보편적인 단계나 토큰 제한을 권장하지 않습니다. 4단계 조회와 40단계 마이그레이션의 범위는 다릅니다. 작동 요구 사항은 선택한 경계가 명시적이고 기록되며 도달 시 안전한 작업과 연결되어야 한다는 것입니다. 규칙은 더 좁고 내구성이 더 강합니다. 즉, 루프가 중지된 이유를 보존하고, 실패와는 다른 합법적인 대기를 유지하며, 유용한 완료를 선언하기 전에 대상 증거를 요구합니다. Sidewisp는 증거, 대기 상태, 제한된 복구 및 결과 확인을 기존 런타임 전반에서 더 쉽게 검사할 수 있도록 하기 위한 AI 에이전트 상태 플랫폼입니다. 프로덕션 에이전트 상태 수집 및 AI SDK 모니터링은 현재 일반적으로 배송되지 않습니다. Sidewisp는 현재 비공개 프리뷰 단계입니다. 이 종료 확인이 에이전트의 실패 모드와 일치하는 경우 비공개 미리 보기 대기자 명단은 필요한 런타임 및 증거 경계를 공유하기에 적합한 장소입니다.