본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 16. 16:57

나의 코딩 에이전트가 아주 작은 단계마다 허가를 요청했다

요약

로컬 AI 코딩 에이전트 개발 시 발생하는 과도한 승인 요청(approval fatigue) 문제를 해결하기 위한 설계 원칙을 다룹니다. 승인된 작업의 맥락을 유지하고 언어 혼용 문제를 방지하여 에이전트의 흐름을 개선하는 방법을 제안합니다.

핵심 포인트

  • 승인 후 작업의 연속성을 보장하여 불필요한 재요청 방지
  • 시스템 메시지가 응답 언어 결정에 영향을 주지 않도록 설계
  • 작업 범위 내 신뢰(task-scoped trust) 모델 적용 권장
  • 오픈소스 프로젝트 CliGate를 통한 로컬 제어 평면 구현

내 로컬 AI 어시스턴트에서 가장 짜증 나는 버그는 허가를 요청하기를 거부하는 것이 아니었습니다.

그것은 너무 자주 요청한다는 것이었습니다.

나는

/safe

그것은 대화를 다시 명시적 확인 모드 (explicit confirmation mode)로 되돌립니다.

연속성 (continuation)은 실제 결과를 전달해야 했습니다

또 다른 미묘한 부분이 있었습니다.

사용자가 대기 중인 작업을 승인할 때, 시스템은 단순히 "확인됨"이라고 말하고 멈춰서는 안 됩니다. 원래의 작업을 계속 수행해야 합니다.

이제 연속성 프롬프트 (continuation prompt)는 어시스턴트에게 이전의 도구 호출 (tool call)이 승인되었고, 이미 실행되었으며, 실제 결과를 생성했음을 알려줍니다. 이를 통해 어시스턴트가 동일한 승인을 다시 요청하거나, 도구가 처음에 왜 실행되었는지 잊어버리는 것을 방지합니다.

이 덕분에 어시스턴트가 챗봇이 붙어 있는 양식 (form)처럼 느껴지는 현상이 훨씬 줄어들었습니다. 흐름은 다음과 같이 변했습니다:

  • 위험한 경계 지점에서 한 번 요청
  • 첫 번째 단계 실행
  • 실제 관찰 결과 (observations)를 가지고 작업 계속 수행
  • 사용자가 명시적으로 안전 모드 (safe mode)로 돌아가거나 진정으로 다른 경계가 나타날 때만 다시 중단

흥미로운 점은 해결책이 "승인 비활성화"가 아니라는 것입니다. 그것은 "승인이 무엇을 위한 것이었는지 기억하는 것"입니다.

언어 버그도 발견했습니다

이와 동일한 연속성 경로에서 더 작지만 매우 눈에 띄는 버그가 드러났습니다.

연속성 메시지는 시스템에 의해 생성되었고 영어로 작성되었습니다. 원래 사용자의 작업이 중국어였을 때, 어시스턴트는 때때로 시스템의 연속성을 최신 "사용자" 텍스트로 감지하여 다음 확인 프롬프트를 영어로 전환했습니다.

이는 보기 흉한 혼용 언어 워크플로 (mixed-language workflow)를 만들어냈습니다. 첫 번째 승인은 중국어로, 이후의 승인 프롬프트는 영어로 나오는 식이었죠.

원칙적인 해결책은 간단했습니다. 시스템이 작성한 연속성 턴 (continuation turns)이 응답 언어를 결정해서는 안 된다는 것입니다. 이제 어시스턴트는 응답 언어를 선택하기 전에 대화 내에서 가장 최근의 실제 사용자 메시지를 다시 확인합니다.

이러한 디테일은 다단계 작업을 수행하기 전까지는 사소해 보일 수 있습니다. 하지만 일단 사용하게 되면, "이 어시스턴트가 나를 추적하고 있다"와 "이 어시스턴트가 자신의 내부 구조 (plumbing)에 반응하고 있다" 사이의 차이를 만드는 요소가 됩니다.

내가 유지하고 있는 규칙

나는 에이전트 승인이 전부 아니면 전무 (all-or-nothing) 방식이어야 한다고 생각하지 않습니다.

로컬 도구(local tools)의 경우, 유용한 절충안은 작업 범위 내의 신뢰(task-scoped trust)입니다:

  • 의미 있는 경계를 넘기 전에 요청할 것
  • 현재 작업에 대한 승인을 기억할 것
  • 엄격 모드(strict mode)로 돌아갈 수 있는 명확한 방법을 유지할 것
  • 시스템 계속 메시지(system continuation messages)가 사용자의 의도(user intent)로 위장하게 두지 말 것

이것이 현재 제가 Claude Code, Codex CLI, Gemini CLI, 데스크톱 자동화(desktop automation), 채널(channels), 그리고 모델 라우팅(model routing)을 위해 사용하는 로컬 제어 평면(local control plane)인 CliGate에서 승인 방식을 설계하는 방법입니다.

이 프로젝트는 여기서 오픈 소스로 공개되어 있습니다: CliGate.

만약 여러분이 로컬 에이전트(local agents)를 구축하고 있다면, 승인 피로(approval fatigue) 문제를 어떻게 처리하고 계신가요: 도구 호출(tool call)마다, 작업(task)마다, 세션(session)마다, 아니면 더 세분화된(granular) 방식인가요?

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0