좋은 하네스는 머릿속의 감각으로 운영되지 않는다. 팀이 같은 그림을 보고, 같은 기준으로 판단하고, 같은 방식으로 수정할 수 있어야 한다. 그때 필요한 것이 하네스 설계 문서다. 이 문서는 단순한 설명서가 아니다. 에이전트가 어디까지 일할 수 있는지, 무엇을 하면 안 되는지, 실패하면 어떻게 멈추는지, 결과를 어떤 기준으로 통과시키는지를 명시하는 운영 계약서에 가깝다.
초기에는 "일단 돌아가게 만들고 나중에 정리하자"는 유혹이 크다. 하지만 에이전트는 코드보다 더 쉽게 퍼지고, 사람마다 다르게 이해되며, 작은 오해가 곧 큰 사고로 이어진다. 그래서 하네스 문서는 나중에 쓰는 정리 문서가 아니라, 처음부터 써야 하는 설계 문서다.

왜 하네스는 문서로 남아야 하는가
한 팀이 같은 모델을 쓰고 같은 도구를 연결해도 결과가 다르게 나오는 이유는, 실제로는 각자 머릿속에 다른 규칙을 갖고 있기 때문이다. 어떤 사람은 "이메일 발송은 자동으로 해도 된다"고 생각하고, 어떤 사람은 "초안만 만들고 사람 승인을 받아야 한다"고 생각한다. 어떤 사람은 실패 시 세 번 재시도하도록 만들고, 어떤 사람은 한 번 실패하면 바로 중단하게 만든다. 이런 차이가 쌓이면 에이전트는 기능이 아니라 불안 요소가 된다.
문서의 역할은 이 차이를 줄이는 것이다. 문서가 있으면 개발자는 구현 범위를 분명히 알고, PM은 위험 구간을 확인할 수 있으며, 보안 담당자는 권한과 금지 행동을 검토할 수 있다. 운영자는 장애가 났을 때 원래 설계 의도를 기준으로 문제를 추적할 수 있다. 결국 문서는 팀의 공통 기억이자, 에이전트의 행동을 통제하는 첫 번째 인터페이스다.
하네스 설계 문서의 목표
좋은 문서는 장황한 설명보다 명확한 판단 기준을 준다. 문서를 읽은 사람이 다음 질문에 답할 수 있어야 한다.
이 에이전트는 누구를 위해 어떤 일을 하는가
어디까지 자동으로 실행하고, 어디서 사람 승인으로 넘기는가
어떤 도구를 어떤 조건에서 사용할 수 있는가
무엇은 절대 하면 안 되는가
실패했을 때 어떻게 멈추고, 어떻게 복구하는가
결과를 어떤 기준으로 성공이라 부르는가
이 질문에 선명하게 답하지 못하면 문서가 있어도 실제 운영에는 도움이 되지 않는다. 문서의 분량보다 중요한 것은 의사결정 밀도다.
문서의 기본 구조
하네스 설계 문서는 보통 일곱 개의 축으로 구성하면 안정적이다. 목적, 범위, 도구, 금지 행동, 승인 규칙, 실패 처리 정책, 평가 기준이다. 여기에 필요하면 운영 지표와 변경 이력, 책임자 정보를 덧붙인다.
이 일곱 개의 축은 서로 따로 놀면 안 된다. 예를 들어 목적이 "고객 문의를 빠르게 분류하는 것"이라면 도구도 그 목적에 맞아야 하고, 승인 규칙도 그 위험도에 맞아야 한다. 반대로 목적이 애매하면 나머지 항목도 전부 애매해진다. 그래서 문서는 항상 목적에서 시작해야 한다.
목적을 쓰는 법
목적은 "무엇을 만든다"보다 "무슨 문제를 해결한다"로 적는 편이 좋다. "이메일 에이전트 구축"은 기능 설명이지만, "반복적인 일정 조율 메일을 자동 초안화하여 응답 시간을 줄인다"는 목적 설명이다. 후자가 훨씬 좋은 문장이다. 목적이 분명해야 나중에 평가 기준도 잡을 수 있다.
목적을 쓸 때는 세 가지를 함께 적는 것이 좋다. 첫째, 해결하려는 업무 문제. 둘째, 기대하는 사용자 가치. 셋째, 자동화의 수준이다. 예를 들어 초안 작성까지만 자동인지, 외부 발송까지 자동인지가 목적 문장에 드러나야 한다.
나쁜 목적은 대개 지나치게 넓다. "영업 업무를 자동화한다"는 문장으로는 아무것도 설계할 수 없다. 반대로 좋은 목적은 범위가 분명하다. "CRM에 기록된 리드 상태를 바탕으로 후속 메일 초안을 생성하고, 발송 전 사람 검토를 받는다"처럼 적으면 설계가 가능해진다.
범위는 기능 목록이 아니라 경계 선언이다
범위는 무엇을 하는지뿐 아니라 무엇을 하지 않는지도 적어야 한다. 많은 팀이 문서에서 이 부분을 빼먹는다. 하지만 범위를 좁게 쓰지 않으면 에이전트는 자꾸 다른 문제까지 떠안게 된다. 처음에는 회의 요약만 하던 에이전트가 어느새 일정 수정, 메일 발송, 파일 정리까지 맡는 식이다. 기능 확장은 빠르지만 책임 경계는 흐려진다.
범위를 쓸 때는 입력, 출력, 대상 사용자, 연결 시스템, 제외 기능을 함께 적는 것이 좋다. 예를 들어 입력은 캘린더 이벤트와 회의록 파일, 출력은 요약 문서와 후속 액션 리스트, 대상 사용자는 영업팀, 연결 시스템은 메일과 문서 저장소, 제외 기능은 고객에게 직접 메일 발송이라고 쓰는 식이다.
특히 제외 기능을 분명히 쓰면 좋은 이유가 있다. 구현 단계에서 "이 정도는 그냥 넣어도 되지 않을까"라는 유혹을 막아 주기 때문이다. 범위 문서는 확장보다 통제에 더 가깝다.
도구를 적는 법
도구 목록은 단순한 나열이 아니라 사용 계약이어야 한다. 어떤 도구를 쓸 수 있는지만 적으면 반쪽짜리다. 언제 쓰는지, 무엇을 입력받는지, 어떤 결과를 기대하는지, 실패하면 어떻게 처리하는지까지 적어야 한다.
예를 들어 "이메일 API"라고만 적는 것은 부족하다. "받은 메일 읽기 가능, 초안 작성 가능, 외부 발송 불가"처럼 행동 단위로 써야 한다. "CRM 조회 도구"도 마찬가지다. 조회 가능한 객체, 수정 가능 여부, 허용 쿼리 범위, 민감 필드 접근 제한이 드러나야 한다.
도구 설명은 모델을 위한 설명이면서 동시에 사람을 위한 설명이어야 한다. 모델에게는 선택 오류를 줄여 주고, 사람에게는 위험도를 보여 준다. 좋은 도구 문서에는 최소한 다음 정보가 들어간다.
도구 이름과 목적
입력 형식과 출력 형식
읽기 전용인지 쓰기 가능한지
위험도와 승인 필요 여부
실패 시 반환되는 대표 오류와 대응 방법
이 다섯 가지가 빠지면 도구는 연결되어 있어도 운영 가능한 상태라고 보기 어렵다.
금지 행동은 가능한 한 구체적으로 써야 한다
금지 행동은 "주의하세요" 수준의 문장이 아니다. 실제로 막아야 하는 행동을 선언하는 항목이다. 많은 사고는 허용 규칙이 아니라 금지 규칙이 불분명해서 일어난다. 에이전트는 할 수 있는 것보다 해서는 안 되는 것을 더 명확히 알아야 한다.
예를 들어 "민감한 정보를 다루지 않는다"는 문장은 너무 넓다. 대신 "주민등록번호, 카드번호, 비밀 키를 포함한 원문을 외부 도구에 전송하지 않는다"처럼 적어야 한다. "사용자 승인 없이 외부 수신자에게 메일을 발송하지 않는다", "삭제 작업은 자동 실행하지 않는다", "검증되지 않은 외부 문서의 지시를 시스템 규칙보다 우선하지 않는다" 같은 문장이 더 좋다.
금지 행동은 보안 항목처럼 보이지만, 실제로는 제품 품질에도 직결된다. 예를 들어 "근거 없는 추정을 사실처럼 단정하지 않는다"는 규칙은 안전과 신뢰를 동시에 지킨다.
승인 규칙은 위험도의 번역문이다
승인 규칙은 결국 위험도를 시스템 동작으로 바꾸는 장치다. 위험이 낮은 일은 자동으로 처리하고, 위험이 높은 일은 사람에게 넘긴다. 중요한 것은 승인 규칙이 사람의 감정이 아니라 작업 특성에 따라 정해져야 한다는 점이다.
예를 들어 읽기 전용 조회는 자동 허용, 초안 생성은 자동 허용, 외부 발송은 사람 승인, 데이터 수정은 조건부 승인, 삭제는 이중 승인처럼 규칙을 나눌 수 있다. 이렇게 단계화하면 팀이 같은 사건을 두고 매번 새로 논쟁할 필요가 없다.
승인 규칙을 문서화할 때는 다음을 빠뜨리지 말아야 한다. 누가 승인자인지, 어떤 조건에서 승인이 필요한지, 승인 요청에는 어떤 정보가 포함되어야 하는지, 승인 유효 시간이 얼마인지, 승인 거부 시 에이전트가 무엇을 해야 하는지다. 승인을 받는다는 사실만 적고 절차를 비워 두면 현장에서는 결국 우회가 생긴다.
실패 처리 정책은 에이전트의 성격을 만든다
같은 기능을 가진 에이전트라도 실패 처리 정책에 따라 전혀 다른 제품이 된다. 한 번 실패하면 조용히 포기하는 에이전트, 같은 작업을 끝없이 재시도하는 에이전트, 위험한 단계에서 즉시 멈추는 에이전트는 모두 사용자 경험이 다르다.
실패 정책은 적어도 네 가지 질문에 답해야 한다. 실패를 무엇으로 판단하는가, 몇 번까지 재시도하는가, 언제 사람에게 넘기는가, 실패 기록을 어디에 남기는가. 여기에 가능하면 복구 단위도 적어야 한다. 예를 들어 "문서 생성 실패 시 마지막 성공한 체크포인트부터 재개"처럼 쓰면 운영자가 훨씬 편해진다.
실패 처리 정책에서 특히 중요한 것은 침묵 금지다. 에이전트가 실패했는데도 성공처럼 보이면 가장 위험하다. 따라서 실패는 사용자에게 보이고, 로그에 남고, 추적 가능해야 한다. 실패를 숨기지 않는 하네스가 장기적으로 더 신뢰받는다.
평가 기준은 좋은 결과의 정의다
문서를 쓰다 보면 목적과 기능은 열심히 적는데, 정작 성공의 기준은 모호하게 남겨 두는 경우가 많다. "잘 동작해야 한다"는 말은 평가 기준이 아니다. 평가 기준은 사람이 결과를 보고 같은 결론에 도달할 수 있도록 만들어야 한다.
평가 기준은 정량과 정성을 함께 써야 한다. 정량 기준은 작업 성공률, 재시도율, 사람 개입 비율, 평균 처리 시간처럼 숫자로 측정할 수 있는 것들이다. 정성 기준은 결과의 정확성, 근거 제시 여부, 표현의 안정성, 사용자 신뢰도처럼 사람이 판단해야 하는 것들이다.
중요한 것은 평가 기준이 역할에 맞아야 한다는 점이다. 리서치 에이전트라면 출처 정확성과 최신성 구분이 중요하고, 업무 자동화 에이전트라면 승인 누락과 잘못된 실행이 더 중요하다. 모든 에이전트를 같은 자로 재면 안 된다.
문서는 추상적 원칙보다 실행 가능한 문장으로 써라
하네스 설계 문서는 멋있는 선언문이 아니라 실행 문서다. 그래서 추상적 표현을 줄여야 한다. 예를 들어 "안전하게 동작해야 한다"는 문장은 누구나 찬성하지만 아무도 구현할 수 없다. 대신 "외부 발송 전 수신자, 제목, 본문 요약을 포함한 승인 요청을 생성하고, 승인 없이는 send를 호출하지 않는다"고 쓰면 바로 구현할 수 있다.
좋은 문장은 조건과 행동이 함께 있다. 언제, 무엇을, 어떤 예외 없이, 어떤 제한 아래 수행하는지 드러난다. 문서를 읽은 엔지니어가 곧바로 로직으로 옮길 수 있어야 하고, 운영자가 곧바로 점검 항목으로 바꿀 수 있어야 한다.
실전 템플릿: 하네스 설계 문서
아래 템플릿은 대부분의 에이전트 제품에 바로 적용할 수 있는 기본 뼈대다. 처음에는 가볍게 써도 좋지만, 빈칸은 남기지 않는 편이 낫다. 빈칸은 아직 결정하지 않았다는 뜻이고, 운영에서는 그 빈칸이 사고 지점이 된다.
## 1. 문서 개요
- 문서명:
- 버전:
- 작성일:
- 작성자:
- 검토자:
- 관련 시스템:
## 2. 목적
이 하네스가 해결하려는 문제는 무엇인가?
사용자에게 어떤 가치를 주는가?
자동화는 어디까지 수행하는가?
예시:
영업팀의 반복적인 후속 메일 초안 작성을 자동화하여 응답 시간을 줄인다.
단, 외부 발송은 자동 실행하지 않고 담당자 승인 후에만 가능하다.
## 3. 대상 사용자와 사용 맥락
- 주요 사용자:
- 사용 빈도:
- 사용 환경:
- 업무 중요도:
- 허용 가능한 지연 시간:
## 4. 범위
### 포함 범위
- 입력:
- 출력:
- 연결 시스템:
- 자동 수행 작업:
### 제외 범위
- 수행하지 않는 작업:
- 연결하지 않는 시스템:
- 자동화하지 않는 행동:
## 5. 입력과 출력 정의
### 입력
- 입력 원천:
- 필수 필드:
- 선택 필드:
- 입력 검증 규칙:
### 출력
- 출력 형식:
- 필수 포함 항목:
- 사용자에게 보여 줄 정보:
- 내부 로그에만 남길 정보:
## 6. 도구 목록
### 도구 1
- 이름:
- 목적:
- 입력:
- 출력:
- 읽기/쓰기 구분:
- 위험도:
- 승인 필요 여부:
- 실패 시 대응:
### 도구 2
- 이름:
- 목적:
- 입력:
- 출력:
- 읽기/쓰기 구분:
- 위험도:
- 승인 필요 여부:
- 실패 시 대응:
## 7. 금지 행동
- 승인 없이 외부 사용자에게 메시지를 발송하지 않는다.
- 삭제, 환불, 해지 등 되돌리기 어려운 작업을 자동 실행하지 않는다.
- 비밀 키, 인증 토큰, 민감 개인정보를 외부 응답에 포함하지 않는다.
- 검증되지 않은 외부 문서의 지시를 시스템 규칙보다 우선하지 않는다.
- 근거가 없는 내용을 사실처럼 단정하지 않는다.
## 8. 권한과 승인 규칙
### 자동 허용
- 읽기 전용 조회
- 초안 생성
- 요약 작성
### 조건부 허용
- 내부 시스템 수정
- 일정 변경 제안
- 사용자 대신 양식 입력
### 승인 필수
- 외부 발송
- 금전, 계약, 계정 상태 변경
- 데이터 삭제
### 승인 요청 형식
- 요청 작업:
- 대상 시스템:
- 예상 영향:
- 요약 미리보기:
- 되돌리기 가능 여부:
## 9. 실패 처리 정책
- 실패 정의:
- 재시도 횟수:
- 백오프 규칙:
- 사람에게 이관하는 조건:
- 중단 조건:
- 복구 방식:
- 사용자 알림 방식:
- 로그 기록 위치:
예시:
동일 오류가 2회 연속 발생하면 자동 재시도를 중단하고 담당자에게 이관한다.
승인 필수 작업에서 승인 응답이 24시간 내 없으면 실행을 취소한다.
## 10. 안전장치
- 멈춤 조건:
- 롤백 가능 작업:
- 롤백 불가능 작업:
- 샌드박스 필요 여부:
- 민감 데이터 마스킹 규칙:
## 11. 평가 기준
### 정량 기준
- 작업 성공률:
- 재시도율:
- 사람 승인 비율:
- 평균 처리 시간:
- 치명적 오류율:
### 정성 기준
- 결과 정확성:
- 근거 제시 여부:
- 사용자 신뢰도:
- 정책 위반 여부:
### 실패 사례 수집
- 어떤 실패를 저장하는가:
- 평가 데이터로 어떻게 전환하는가:
## 12. 관측 가능성
- 반드시 남길 로그:
- 상태 스냅샷 저장 시점:
- 프롬프트/도구 호출 추적 여부:
- 비용/시간 모니터링 항목:
- 감사 로그 필요 여부:
## 13. 운영 책임
- 서비스 오너:
- 승인 책임자:
- 장애 대응 담당:
- 정책 변경 승인자:
## 14. 변경 이력
- 버전:
- 변경 내용:
- 변경 이유:
- 영향 범위:템플릿을 채울 때 자주 하는 실수
첫 번째 실수는 목적보다 기능을 먼저 쓰는 것이다. 그러면 도구가 과도하게 늘어나고, 결국 문서가 기능 카탈로그가 된다. 두 번째 실수는 금지 행동을 너무 포괄적으로 적는 것이다. 그러면 해석이 제각각이 된다. 세 번째 실수는 승인 규칙을 적어 놓고 승인 절차를 비워 두는 것이다. 네 번째 실수는 실패 정책에서 재시도만 적고 중단 조건을 빼먹는 것이다. 다섯 번째 실수는 평가 기준을 "품질이 좋아야 한다" 수준으로 끝내는 것이다.
이 실수들의 공통점은 모두 판단 기준의 부재다. 문서는 정보를 모으는 종이가 아니라 판단을 고정하는 도구여야 한다.
작은 팀을 위한 경량 문서와 큰 조직을 위한 확장 문서
모든 팀이 같은 수준의 문서를 쓸 필요는 없다. 두 명이 실험하는 단계라면 문서를 짧게 시작해도 된다. 다만 목적, 범위, 도구, 금지 행동, 승인 규칙, 실패 정책, 평가 기준만큼은 절대 생략하지 않는 편이 좋다. 이 일곱 항목은 최소 골격이다.
조직 규모가 커지면 여기에 추가 항목이 붙는다. 예를 들면 데이터 분류 등급, 법무 검토 상태, 감사 로그 보존 기간, SLA, 온콜 담당, 모델 교체 절차, 사용자 공지 정책 같은 항목이다. 하지만 확장 문서도 기본은 같다. 결국 큰 조직의 문서도 작은 문서의 명확함을 잃지 않아야 한다.
문서를 코드와 함께 운영하라
하네스 설계 문서는 저장소 어딘가에 잠자는 파일이 되어서는 안 된다. 실제 구현과 연결되어야 한다. 가장 좋은 방법은 문서 항목을 코드 구조와 대응시키는 것이다. 예를 들어 도구 목록은 실제 도구 레지스트리와 연결하고, 금지 행동은 정책 검사 로직과 연결하고, 승인 규칙은 워크플로 조건문과 연결하고, 평가 기준은 테스트 케이스와 연결하는 식이다.
문서와 구현이 분리되면 금세 둘 중 하나가 거짓말을 하기 시작한다. 그래서 문서 변경은 설계 변경으로 취급해야 한다. 버전을 올리고, 검토자를 지정하고, 영향 범위를 적어야 한다. 하네스를 운영한다는 것은 코드만 배포하는 일이 아니라 규칙도 함께 배포하는 일이다.
좋은 문서는 팀의 속도를 늦추지 않는다
문서를 싫어하는 팀은 종종 "문서 쓰느라 느려진다"고 말한다. 단기적으로는 맞는 말처럼 보일 수 있다. 하지만 에이전트 시스템에서는 문서가 없을 때 생기는 느림이 훨씬 더 크다. 승인 규칙을 몰라 배포가 늦어지고, 금지 행동이 불분명해 리뷰가 길어지고, 실패 정책이 없어 같은 장애를 반복하고, 평가 기준이 없어 개선이 멈춘다.
좋은 문서는 속도를 늦추는 것이 아니라, 불필요한 재논의를 없애 속도를 만든다. 특히 팀이 커질수록, 도구가 많아질수록, 권한이 민감할수록 그 차이는 더 벌어진다.
하네스 문서의 최종 목적
하네스 설계 문서의 최종 목적은 설명이 아니다. 통제 가능성을 만드는 것이다. 에이전트가 무엇을 할 수 있는지보다, 무엇을 하도록 설계되었는지를 팀이 분명히 아는 상태를 만드는 것이다. 그래야 실패해도 원인을 찾을 수 있고, 확장해도 기준을 잃지 않으며, 사람과 에이전트가 같은 작업장을 공유할 수 있다.
좋은 하네스는 잘 만든 프롬프트 몇 줄에서 나오지 않는다. 명시된 목적, 선명한 경계, 구체적인 금지 규칙, 분명한 승인 흐름, 예측 가능한 실패 처리, 측정 가능한 평가 기준에서 나온다. 그리고 그 모든 것은 결국 문서로 남아야 한다. 문서화된 하네스만이 팀의 자산이 된다.
이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.