jaysnote

04. 사람 vs Agent — 경계를 정하는 기준

이 프로젝트의 핵심 질문. 어디까지 사람이 하고, 어디까지 agent에게 맡기는가?

정답은 “단계별로 고정”이 아니라 “위험·되돌림·검증 가능성에 따라 그때그때 결정” 이다. 아래 원칙과 프레임워크로 그 결정을 체계화한다.

대원칙 한 줄

사람은 “무엇을·왜”의 최종 책임자, agent는 “어떻게”의 실행자. 책임(accountability)은 위임할 수 없다. 실행(execution)은 위임할 수 있다.

agent는 양·속도·패턴 인식을 담당하고, 사람은 판단·책임·결과가 따르는 결정을 담당한다. (Elementum AI)

In-the-loop vs On-the-loop

신뢰도가 올라갈수록 사람의 관여 방식이 바뀐다:

  • Human-in-the-loop: 매 단계 사람이 승인해야 진행. (신뢰 낮음, 위험 높음)
  • Human-on-the-loop: agent가 자율 진행, 사람은 감독하다 필요 시 개입. (신뢰 높음, 검증 자동화됨)

효과적으로 agent를 이끌려면 SDLC에서 새로운 조종(steering) 역할을 맡고, 모든 줄을 리뷰하려는 시도를 멈춰야 한다. (Thoughtworks)

목표는 “사람이 다 한다”가 아니라, 검증을 자동화해서(테스트·타입·린트·CI) in-the-loop를 on-the-loop로 점점 옮기는 것이다.

결정 프레임워크: 4가지 축

어떤 작업을 agent에게 맡길지 정할 때, 4가지 축으로 점수를 매긴다. 점수가 높을수록 사람 게이트가 필요하다.

질문사람 게이트 필요 ↑
되돌림(Reversibility)틀리면 쉽게 되돌릴 수 있나?되돌리기 어려울수록
파급(Blast radius)틀리면 피해 범위가 얼마나 넓나?프로덕션·데이터·돈·보안·사용자에 닿을수록
모호함(Ambiguity)정답이 하나인가, 판단·트레이드오프인가?가치 판단이 섞일수록
검증성(Verifiability)결과를 자동으로 옳다고 확인할 수 있나?테스트로 검증 불가할수록

빠른 판정 규칙

  • 4축 모두 낮음 → agent 자율(on-the-loop). 예: 내부 유틸 함수 리팩터링 + 테스트 통과.
  • 검증성만 높고 나머지 낮음 → agent가 만들고 테스트가 게이트. 사람은 테스트의 의도만 확인.
  • 되돌림·파급 높음 → 무조건 사람 게이트(in-the-loop). 예: DB 마이그레이션, 배포, 권한·과금 변경.
  • 모호함 높음 → 사람이 먼저 결정하고 명세에 박는다. agent에게 “알아서”는 금지.

업계 합의: DB 수정, 코드 배포, 네트워크 정책 변경은 사람 게이트가 필수. 규제(EU AI Act, HIPAA, GDPR 등)도 문서화된 사람 감독을 요구한다. (permit.io)

단계별 기본 분담 (출발점)

위 프레임워크를 일반적인 개발 흐름에 적용한 기본값. 프로젝트마다 조정하라.

단계주도이유 (어느 축이 높은가)
문제·가치 정의🧑 사람모호함·파급 최고. “왜 만드나”는 위임 불가
요구사항/PRD🧑 사람 주도, 🤖 초안·질문모호함 높음. 의도는 사람 것
아키텍처 결정🧑 사람 결정, 🤖 옵션 제시되돌림 어려움 + 트레이드오프
작업 분해(tasks)🤖 agent 주도, 🧑 검토모호함 낮음, 기계적
구현(코드 작성)🤖 agent 주도, 🧑 diff 리뷰검증성 높으면 자율↑
테스트 작성🤖 작성, 🧑 의도 검증agent가 약한 테스트로 속일 위험
코드 리뷰/머지🧑 사람 최종 승인파급·책임
배포·릴리스🧑 사람 게이트되돌림·파급 최고
문서·커밋 메시지🤖 초안, 🧑 확인파급 낮음

🧑 = 사람이 결정/책임, 🤖 = agent가 실행.

체크포인트는 “체인의 경계”에 둔다

매 줄·매 동작마다 승인받지 말고, 단계 전환 지점(chain boundary) 에 게이트를 둔다. (permit.io) 자연스러운 게이트:

  1. spec 승인 (구현 전)
  2. plan/아키텍처 승인 (코딩 전)
  3. diff 리뷰 (머지 전)
  4. 배포 승인 (릴리스 전)

이 4개만 사람이 확실히 지키면, 그 사이의 실행은 agent가 자율적으로 해도 통제권을 유지한다.

신뢰를 점진적으로 늘리는 법

처음부터 agent에게 다 맡기지 말고, 가드레일을 깔면서 자율성을 넓혀간다:

  1. 작고 되돌리기 쉬운 작업부터 자율 허용.
  2. 테스트·타입·린트·CI를 촘촘히 → 검증성을 올린다 → 자율성을 늘릴 근거.
  3. 헌법/constitution에 “절대 넘지 마라” 선을 명문화 → agent가 못 넘는 하드 가드레일.
  4. agent가 반복해서 틀리는 영역은 다시 in-the-loop로 당긴다.

흔한 안티패턴

안티패턴문제대신
모호한 요구사항을 던지고 “알아서 해”agent가 모호함을 그럴듯한 코드로 채움먼저 사람이 명세를 확정
생성된 코드 1000줄을 그냥 머지책임 포기, 부채 누적diff 리뷰 게이트 + 테스트
테스트 통과만 보고 안심agent가 테스트를 약화시켰을 수 있음테스트의 의도를 사람이 검토
배포까지 자동화되돌림·파급 최고 단계를 위임배포는 사람 게이트
모든 줄을 일일이 검수병목, agent의 이점 상실경계 지점에만 게이트

한 장 요약

무엇을·왜  ─────────────────▶  사람 (위임 불가, 책임)
어떻게(아키텍처)  ──────────▶  사람 결정 + agent 옵션
어떻게(구현)  ──────────────▶  agent 실행 + 사람 게이트(경계에서)
옳은가(테스트)  ────────────▶  사람이 기준, agent가 구현, 사람이 의도 검증
배포/되돌리기 어려운 것  ───▶  사람 게이트 (항상)

검증을 자동화할수록 → in-the-loop에서 on-the-loop로 이동

다음: 이 경계에서 사람이 만들어야 하는 05. 문서들.

← 목록으로