본문으로 건너뛰기

모델이 아닌 서버가 실행하는 human-in-the-loop 설계와 그 취약점 검토 요청

모델의 직접 실행을 차단하고 서버 측 게이트와 원장 기반으로 효과를 수행하도록 구성한 설계와 그 한계를 기술적 관점에서 검토해 달라는 요청이다.

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

이 게시물은 모델이 직접 효과를 수행하지 못하도록 하고 서버가 승인된 효과를 단독으로 실행하도록 구성한 human-in-the-loop 아키텍처를 설명한다. 모델은 효과 호출을 제안만 하고, 서버는 Postgres 같은 권위 원장에 workItemId+gateId로 기록한 뒤 승인 이후에만 실제 효과를 한 번 실행하도록 설계되어 있으며 모든 단계는 감사 로그와 트레이스로 추적된다. 이러한 구성은 모델이 직접 트리거를 갖는 위험을 줄이는 한편 실행 경로의 통제를 서버에 집중시켜 재실행 제어와 중단 기능을 제공한다.

게시물은 이 설계의 세 가지 핵심 약점을 구체적으로 짚었다. 첫째, 게이트는 실행 안전성만 확보하며 모델의 잘못된 의사결정을 사람이 같은 방식으로 놓칠 수 있어 결정 안전성에는 한계가 있다. 둘째, 모델의 읽기 권한이 남아 있으면 인바운드 콘텐츠의 프롬프트 인젝션으로 제안이 오염될 수 있으므로 읽기 경로와 입력 검증이 별도로 강화되어야 한다. 셋째, 원장 기반의 exactly-once 보장 뒤에는 효과 자체의 멱등성이 반드시 필요하며 외부 호출의 멱등성 보장이 없으면 중복 부작용을 완벽히 막을 수 없다.

결론적으로 서버 실행 방식은 실행 권한 통제와 재실행 방지에 유효한 수단이지만, 결정 오류 및 데이터 유출과 같은 비실행적 위험을 동반하며 멱등성·입력 검증·검토 프로세스의 결합이 필요하다. 운영적 관점에서는 반복 실패 패턴을 분류해 특정 검토 각도로 처리하는 절차와 외부 서비스와의 계약에서 멱등성을 확보하는 설계가 필수적이다. 이 게시물은 그러한 남은 공격 면과 설계적 난제를 동료 커뮤니티에 검증해 달라고 요청하는 성격을 띠고 있다.

실용적 조언

  • 효과 호출은 모델이 직접 접근하지 못하도록 서버 측 함수에 바인딩하고, 모델은 단지 호출 제안만 하도록 구현하면 실행 통제 범위를 서버로 이관할 수 있다. 이렇게 하면 승인 시 서버 권위 원장에서 실행 전후 상태를 기록하고 감사 로그를 남겨 실제 실행 경로를 추적할 수 있으며, 워크플로 중단 지점을 통해 개별 또는 전체 실행을 중지할 수 있다. 다만 읽기 경로와 리뷰 정책은 별도로 강화해야 모델의 제안 단계에서 발생할 수 있는 정보 유출과 결정 오류를 완화할 수 있다.
  • 액션 원장에 workItemId+gateId 같은 고유 키를 사용해 승인 이후 단일 실행만 허용하는 정책을 적용하면 재시도 상황에서 중복 실행 위험을 줄일 수 있다. 이 방식을 적용할 때는 데이터베이스 트랜잭션과 원장 쓰기 타이밍을 신중히 설계해 승인-실행 사이의 상태 불일치 가능성을 최소화해야 한다. 또한 외부 효과 함수는 멱등성 보장을 갖추어 재시도 시에도 동일한 결과만 발생하도록 구현해야 한다.
  • 프롬프트 인젝션과 읽기 측 공격을 완화하려면 수신 데이터의 입력 검증, 출처 기반 필터링, 그리고 모델이 참조하는 컨텍스트의 최소화가 필요하다. 모델이 읽을 수 있는 컨텍스트를 축소하거나 민감 필드를 마스킹하는 전처리 파이프라인을 도입하면 제안 단계에서의 오염 가능성을 낮출 수 있다. 이와 병행해 모델 출력을 평가하는 자동화된 분류기와 사람의 심층 검토를 조합해 반복적 실패 패턴을 포착하는 운영 절차를 마련해야 안전성이 높아진다.

섹션별 상세

글에서 제안된 기본 아키텍처는 모델이 효과 호출을 직접 수행하지 못하도록 하고, 효과 도구(saveDraft, sendEmail 등)를 서버 측 함수에 바인딩해 모델은 호출을 제안만 한다는 점에 기반한다. 제안이 승인되면 서버가 workItemId와 gateId를 키로 한 액션 원장에 기록하고 실제 효과를 단 한 번만 실행하도록 보장하므로 중복 실행을 기술적으로 통제한다. 이 설계는 상태를 Postgres에 서버 권위로 유지하고 모든 단계에 감사 로그와 트레이스를 남기며, 필요 시 개별 에이전트나 전체 워크플로를 중단할 수 있는 제어점을 제공한다. 이러한 구성은 모델의 실행 경로를 분리해 모델로 인한 오토노머스 실행 리스크를 줄이는 것을 목표로 한다.
첫 번째로 지적된 약점은 게이트가 실행 안전성(execution safety)을 고정하나 의사결정 안전성(decision safety)은 보장하지 못한다는 점이다. 모델이 잘못된 결정을 만들면 인간 리뷰어가 같은 실패 패턴을 놓칠 수 있으며, 따라서 단순히 '승인' 버튼을 두는 것은 반복적 실패 유형을 막지 못한다. 글쓴이는 반복되는 실패 패턴을 학습하고 특정 클래스와 각도(class + angle)로 손수 검토하는 방식을 제안했으나, 동일한 실패 클래스를 정의하는 기준을 아직 해결하지 못했다고 명시했다. 이 문제는 사람 검토의 기준과 자동화된 분류가 결합되어야 하며, 잘못된 분류는 동일한 결함을 계속 허용하는 결과를 초래한다.
두 번째 약점은 읽기 경로가 열려 있다는 점으로, 모델이 여전히 데이터에 접근해 제안을 생성할 수 있어 인바운드 이메일 등으로부터의 프롬프트 인젝션이 제안 내용을 오염시킬 수 있다. 읽기 권한 자체는 원격 데이터 유출이나 민감 정보의 노출을 유발할 수 있기 때문에 실행을 서버로 이관하더라도 정보 유출 위협이 남는다. 따라서 실행 게이트는 쓰기·실행 통제에는 효과적이지만 읽기 단계에서의 입력 검증과 데이터 취급 정책이 병행되지 않으면 근본적 위험이 해소되지 않는다. 이 지점은 데이터 전처리, 입력 검증, 모델 접근 권한 축소와 같은 추가 통제가 필요함을 의미한다.
세 번째 약점은 정확히 한 번 실행을 보장하려는 설계가 액션 자체의 멱등성(idempotency)에 의존한다는 점이다. 원장에서 workItemId+gateId로 단일 실행 기록을 유지해도, 승인과 실제 효과 실행 사이에 프로세스가 재시작되거나 실패하면 그 효과가 멱등해야만 중복 부작용을 피할 수 있다. 따라서 효과 함수는 재시도나 재실행에 안전하도록 설계되어야 하며, 외부 시스템과의 상호작용에서 멱등성을 보장하는 별도의 조치가 요구된다. 이 제약은 간단한 데이터베이스 기록을 넘는 통합적 설계와 외부 서비스 계약을 필요로 한다.

용어 해설

정확히 한 번 실행(Exactly-once)
정확히 한 번 실행은 동일한 작업이 시스템 장애나 재시작이 발생해도 중복으로 실행되지 않도록 보장하는 기법이다. 이 글에서는 작업 호출을 고유한 workItemId와 gateId 쌍으로 원장(ledger)에 기록해 승인 이후 단 한 번만 서버가 실제 효과를 수행하도록 구성하는 방식으로 적용되었다. 이 방식은 중복 수행으로 인한 사이드 이펙트를 방지하고 재시도 로직의 안정성을 확보하는 데 중요하다.
액션 원장(Action ledger)
액션 원장은 모델이 제안한 효과 호출과 승인 상태를 불변 로그로 기록하는 저장소이다. 글에서는 workItemId+gateId 키로 레코드를 관리하여 승인 지점 이후 서버가 단일 실행 경로만 갖도록 보장하는 구현 세부가 제시되었다. 이 원장은 실행 이력, 감사 로그, idempotency 키로 활용되어 중복 실행과 추적 문제를 완화한다.
서버 권위 상태(Server-authoritative state)
서버 권위 상태는 시스템의 권한과 상태 정보가 클라이언트나 모델이 아닌 서버에 일원화되어 저장되는 설계 원칙이다. 해당 글에서는 Postgres를 권위 원장으로 사용해 상태와 감사 로그를 통제하고, 모델은 실행을 제안할 뿐 실제 호출 권한을 갖지 못하게 구성했다. 이 방식은 실행 경로의 통제와 중간 검증을 가능하게 하지만 읽기 권한이 남아 있을 때의 정보 유출 위험을 완전히 제거하지는 못한다.
프롬프트 인젝션(Prompt Injection)
프롬프트 인젝션은 입력 데이터 내 악의적 내용이 모델의 출력을 조작해 의도하지 않은 동작을 유발하는 공격 기법이다. 글에서는 수신 이메일 같은 읽기 가능한 인바운드 콘텐츠가 모델의 제안 행동을 변형할 수 있음을 주요 취약점으로 지목했다. 이 공격은 실행권을 제거해도 모델이 권한을 요구하는 제안을 계속 생성할 수 있어 완전한 방어를 어렵게 만든다.

언급된 도구

Postgres중립

서버 권위 상태와 감사 로그를 저장하는 관계형 데이터베이스 역할로 사용되며 workItemId+gateId 기반의 액션 원장으로 기록해 실행 이력을 관리하는 데 쓰인다. Postgres는 트랜잭션과 영속성 보장을 통해 승인-실행 간의 상태 불일치 가능성을 줄이는 인프라 구성 요소로 기능한다. 이 글에서는 Postgres를 권위 원장으로 명시해 상태 통제와 감사 추적을 일원화하는 방안이 제안되었다.

AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 06. 27.수집 2026. 06. 27.출처 타입 REDDIT

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.