모델은 상태가 없습니다.
작업은 상태를 가지고, 통제됩니다.
오케스트레이션 코어는 상태 없는 LLM 호출을 지속적이고, 자격 증명을 인식하며, 감사 가능한 작업으로 바꾸는 상태 저장 에이전트 런타임입니다 — 채팅 어시스턴트, 원샷 함수형 에이전트, 상태 머신 워크플로가 모두 하나의 API 뒤에서 동작합니다.
문서 보기LLM은 무엇을 할지 결정할 수 있습니다. 그 일을 끝까지 해내지는 못합니다.
LLM은 OAuth 토큰을 보관할 수도, 작업 도중 재시작을 견뎌낼 수도, 불안정한 API를 백오프로 재시도할 수도, 사람의 승인을 사흘간 기다릴 수도 없습니다. 오케스트레이션 코어가 이 실행 기반을 책임집니다: LLM은 상태가 없는 채로 남고, 시스템이 상태를 지속시키고, 런타임에 자격 증명을 해석하며, 다단계 플랜을 실행하고, 모든 동작을 기록합니다.
에이전트 룸
모든 대화는 어시스턴트, 플랫폼(UI, Slack, Teams, API, 워크플로), 외부 사용자를 하나로 묶는 룸입니다. 룸별 프로세스가 진행 중인 요청을 직렬화하므로, 중복된 동시 메시지가 경쟁 상태를 일으킬 수 없습니다.
에이전틱 루프
매 턴마다: 컨텍스트를 구성 → 구조화된 플랜과 결론(응답, 명확화 요청, 재평가)을 획득 → 실행 → 필요하면 반복. 제한된 반복 횟수, 진행 상황 감지, 강제 응답 생성이 종료를 보장합니다.
루프 감지
동일한 도구 호출의 반복(인수를 해시 비교), 연속된 오류, 반복되는 오류 유형은 루프를 중단시킵니다 — 폭주하는 에이전트는 런타임이 거부하는 실패 모드입니다.
동적 도구 탐색
사전에 등록된 도구 목록은 없습니다. 에이전트는 SKB의 시맨틱 검색을 통해 기능을 찾습니다. 신뢰도가 낮은 매칭은 추측 대신 명확화 질문을 유발하며, 확인된 결과는 이후 매칭 정확도를 높입니다.
자격 증명을 인식하는 실행
두 개의 자격 증명 계층이 분리되어 있습니다: 에이전트가 여러분의 Interactor 계정에 접근하는 로그인, 그리고 연결된 서드파티 앱 내부에서 동작할 수 있게 하는 OAuth 토큰. 프롬프트에는 연결된 서비스, 반환 타입 힌트가 포함된 기능 시그니처, 재인증이 필요한 만료된 서드파티 자격 증명이 포함되어 모델이 한 번에 계획을 세울 수 있습니다. 실행 시점에는 토큰이 호출마다 해석되고 자동 갱신되며, 대화 데이터에는 절대 포함되지 않습니다.
멀티 에이전트 위임
주 에이전트는 자체 도구를 가진 임시 룸에서 생성된 전문 에이전트에게 위임합니다. 체인 깊이, 동시성, 타임아웃, 순환 여부에는 엄격한 제한이 적용되며, 자격 증명 상속은 전체 상속, 최소 권한으로 범위 지정, 또는 상속 없음 중 하나입니다.
워크플로 상태 머신
장기 실행 프로세스는 방향성 있는 상태 머신으로 표현됩니다: 상태가 처리하고, 전이가 라우팅하고, 조건이 판단합니다. 인스턴스는 생성 시점의 정의를 스냅샷으로 남기고, 매 전이마다 저장되며, 조인 시맨틱을 가진 병렬 스레드로 분기할 수 있습니다.
일시정지 / 재개 — 사람이 개입하는 지점
일시정지 상태는 데이터, 스레드 상태, 선택지, 암호화된 자격 증명 참조까지 모든 것을 저장한 채 대기합니다. 승인은 재시작과 배포를 거쳐도 유지되며, 중복 재개 요청은 아무 효과가 없습니다.
프로바이더 추상화
하나의 어댑터 계층이 OpenAI, Anthropic, Google, 그리고 텍스트 파싱 폴백에 걸쳐 구조화된 출력을 표준화합니다. 모델 레지스트리는 모든 모델을 하나의 추론 인터페이스 뒤에 있는 버전 관리 레코드로 취급합니다 — 프로바이더 교체는 설정 변경일 뿐이며, 지연 시간·토큰·비용은 호출마다 기록됩니다.
프롬프트 & 메모리 병합
프로필은 계정 → 컨텍스트 → 사용자 순으로 모든 시스템 프롬프트에 병합됩니다. 메모리는 4단계로 구성됩니다: 구조화된 상태, 그대로 보존되는 최근 대화 창, 압축된 진행 요약, 그리고 유사도로 검색되는 pgvector 기반 일화 기억.
메시지에서 통제된 실행까지.
하나의 대화 턴
직렬화 — 메시지가 룸에 도달하고, 룸별 프로세스가 동시 요청의 중복을 제거합니다.
구성 — 프로필, 이력, 지속 상태, 검색된 메모리, 자격 증명 요약, 기능 시그니처가 컨텍스트를 구성합니다.
계획 — LLM이 구조화된 플랜과 결론을 반환하고, 스키마에 따라 검증됩니다.
실행 — 기본은 순차 실행이며, 의존성 분석으로 독립성이 입증된 그룹은 병렬로 처리됩니다. 자격 증명은 액션마다 해석됩니다.
위임 — 전문 에이전트가 범위가 지정된 자격 증명으로 생성되며, 구조화된 결과와 액션 로그가 플랜 변수로 다시 흘러들어갑니다.
결론 — 응답, 명확화, 재평가 중 하나로 마무리하며 — 제한이 있습니다. 토큰은 SSE로 스트리밍되고, HMAC 서명된 웹훅이 재시도와 함께 발송됩니다.
기억 — 이력이 갱신되고, 메모리가 임베딩되며, 실행 결과가 UKB의 감지와 SKB의 신뢰도 점수에 반영됩니다.
어시스턴트, 룸, 워크플로 — 하나의 API.
비결정적인 모델 위에서 이루어지는 결정적인 실행.
구조화되고 검증된 플랜 — 스키마로 검증된 출력, 파싱 실패 시 안내된 재시도, 제한된 재평가, 모든 액션 기록.
분류된 재시도 — 일시적 오류는 Retry-After를 존중하며 지수 백오프와 지터로 재시도합니다. 영구적 오류와 보안 오류는 절대 재시도하지 않으며, 액션별 재시도 정책과 명시된 폴백이 존재합니다.
전 구간 멱등성 — client_ref 기반 인스턴스 중복 제거, 멱등한 재개, 멱등하지 않은 HTTP 단계의 요청 ID, 부작용이 있는 단계를 재실행하기 전 완료 마커를 확인하는 크래시 복구.
지속성 — 상태는 매 전이마다 저장됩니다. 일시정지된 워크플로와 크래시된 인스턴스는 재시작 시 복구됩니다.
테넌트 격리 — 계정 단위로 범위가 지정된 데이터, 계정별 자격 증명 암호화, 불투명한 외부 사용자 ID — 최종 사용자의 개인정보는 여러분의 앱 안에만 머무릅니다.
자격 증명 위생 — 값은 호출 시점에 해석되며, 워크플로나 대화 데이터에 절대 저장되지 않고, 사용 후 폐기되며, 모든 접근이 감사됩니다.
실제 업무, 증거와 함께.
주문을 확인하고, 범위가 지정된 자격 증명만 가진 빌링 전문 에이전트에게 환불을 넘기고, Slack에 게시하며 병렬 그룹으로 티켓을 업데이트합니다 — 모두 토큰 단위로 스트리밍됩니다.
주문 워크플로가 결제 프로세서에 청구하고, 대형 주문에 대해 awaiting_approval 상태에서 멈추고, 이틀과 배포 한 번을 견뎌낸 뒤 관리자가 승인을 클릭하면 재개됩니다.
대화 없이 동작하는 함수형 에이전트가 티켓을 분류합니다 — 신뢰도와 토큰 사용량이 포함된 구조화된 결과를 반환합니다.
한 번 언급된 "이메일보다 LinkedIn 아웃리치를 선호한다"는 말이, 몇 주 뒤 다른 룸에서 유사도 검색으로 다시 떠오릅니다.
레지스트리 한 줄을 편집하는 것만으로 작업이 다른 LLM 프로바이더로 이동합니다. 구조화된 출력 계약은 그대로, 코드 변경은 전혀 없습니다.
목표를 설정하면, 나머지는 시스템이 처리합니다. 여러분의 승인 없이는 아무것도 실행되지 않습니다.
노드당 수천 개의 격리되고 크래시로부터 복구 가능한 에이전트 세션 — OTP 동시성 이야기가, 여러분에게 책임을 지는 에이전트에 적용된 것입니다.