Articlemartinfowler.com·2026년 4월 2일·0

Harness engineering for coding agent users

Quick Summary

코딩 에이전트의 자율성을 높이려면 모델 자체를 맹신하기보다 가이드와 센서로 이루어진 외부 하네스를 설계해 결과를 예방·검증·자가수정하게 만들어야 한다.

Harness engineering for coding agent users 관련 대표 이미지

🖼️ 인포그래픽

Harness engineering for coding agent users 내용을 설명하는 본문 이미지

🖼️ 4컷 인포그래픽

Harness engineering for coding agent users 내용을 설명하는 본문 이미지

💡 한 줄 요약

코딩 에이전트의 자율성을 높이려면 모델 자체를 맹신하기보다 가이드와 센서로 이루어진 외부 하네스를 설계해 결과를 예방·검증·자가수정하게 만들어야 한다.

📌 핵심 요약

  • 글은 코딩 에이전트가 더 적은 인간 감독으로 일하려면 결과에 대한 신뢰를 높이는 장치가 필요하다고 설명한다. 하네스는 에이전트에서 모델을 제외한 모든 요소를 뜻할 수 있지만, 이 글은 코딩 에이전트 사용자 관점에서 외부 하네스를 좁게 정의한다.
  • 하네스는 에이전트가 행동하기 전에 방향을 주는 피드포워드 가이드와, 행동 후 결과를 관찰해 자가수정을 돕는 피드백 센서로 나뉜다. 둘 중 하나만 있으면 규칙은 있어도 효과를 확인하지 못하거나, 반복되는 실수를 계속 보게 된다.
  • 가이드와 센서는 계산적 제어와 추론적 제어로 다시 구분된다. 테스트, 린터, 타입 검사, 구조 분석 같은 계산적 제어는 빠르고 결정적이며, 의미 판단이나 AI 코드 리뷰 같은 추론적 제어는 더 비싸고 비결정적이지만 풍부한 판단을 제공할 수 있다.
  • 품질 검사는 개발 생명주기에서 가능한 한 왼쪽, 즉 더 이른 시점에 배치되어야 한다. 빠른 검사는 커밋 전이나 통합 전에도 실행하고, 더 비싸고 넓은 검사는 통합 후 파이프라인이나 지속적 코드베이스 건강 점검에 배치하는 식으로 분산해야 한다.
  • 유지보수성 하네스는 기존 도구가 많아 비교적 구축하기 쉽지만, 기능적 동작을 충분히 신뢰하게 만드는 행동 하네스는 아직 어렵다. 또한 강한 타입, 명확한 모듈 경계, 프레임워크 추상화가 있는 코드베이스일수록 하네스화하기 쉽고, 기술 부채가 큰 레거시일수록 가장 필요하지만 가장 만들기 어렵다.

🧩 주요 포인트

  1. 글은 코딩 에이전트가 더 적은 인간 감독으로 일하려면 결과에 대한 신뢰를 높이는 장치가 필요하다고 설명한다. 하네스는 에이전트에서 모델을 제외한 모든 요소를 뜻할 수 있지만, 이 글은 코딩 에이전트 사용자 관점에서 외부 하네스를 좁게 정의한다.
  2. 하네스는 에이전트가 행동하기 전에 방향을 주는 피드포워드 가이드와, 행동 후 결과를 관찰해 자가수정을 돕는 피드백 센서로 나뉜다. 둘 중 하나만 있으면 규칙은 있어도 효과를 확인하지 못하거나, 반복되는 실수를 계속 보게 된다.
  3. 가이드와 센서는 계산적 제어와 추론적 제어로 다시 구분된다. 테스트, 린터, 타입 검사, 구조 분석 같은 계산적 제어는 빠르고 결정적이며, 의미 판단이나 AI 코드 리뷰 같은 추론적 제어는 더 비싸고 비결정적이지만 풍부한 판단을 제공할 수 있다.
  4. 품질 검사는 개발 생명주기에서 가능한 한 왼쪽, 즉 더 이른 시점에 배치되어야 한다. 빠른 검사는 커밋 전이나 통합 전에도 실행하고, 더 비싸고 넓은 검사는 통합 후 파이프라인이나 지속적 코드베이스 건강 점검에 배치하는 식으로 분산해야 한다.
  5. 유지보수성 하네스는 기존 도구가 많아 비교적 구축하기 쉽지만, 기능적 동작을 충분히 신뢰하게 만드는 행동 하네스는 아직 어렵다. 또한 강한 타입, 명확한 모듈 경계, 프레임워크 추상화가 있는 코드베이스일수록 하네스화하기 쉽고, 기술 부채가 큰 레거시일수록 가장 필요하지만 가장 만들기 어렵다.

🧠 상세 정리

1. 코딩 에이전트 신뢰 문제와 하네스의 범위

글은 코딩 에이전트를 더 적은 감독으로 사용하려면 결과에 대한 신뢰를 높일 방법이 필요하다는 문제의식에서 출발한다. 소프트웨어 엔지니어에게 AI 생성 코드는 자연스러운 신뢰 장벽을 만든다. 대형 언어 모델은 비결정적이고, 사용자의 구체적 맥락을 자동으로 알지 못하며, 코드를 인간처럼 이해한다기보다 토큰의 패턴으로 다룬다는 한계가 있기 때문이다. 저자는 에이전트를 모델과 하네스의 결합으로 보는 관점을 소개하되, 이 넓은 정의를 코딩 에이전트 사용자라는 제한된 맥락으로 좁힌다. 코딩 에이전트에는 시스템 프롬프트, 코드 검색 방식, 오케스트레이션 같은 일부 하네스가 이미 내장될 수 있지만, 사용자는 자신의 시스템과 용도에 맞는 외부 하네스를 추가로 구성해야 한다.

2. 외부 하네스의 두 목표: 첫 시도 성공률과 자가수정

잘 설계된 외부 하네스는 두 가지 목표를 가진다. 첫째, 에이전트가 처음부터 올바른 결과를 낼 가능성을 높인다. 둘째, 문제가 인간 리뷰어에게 도달하기 전에 가능한 한 많은 오류를 피드백 루프 안에서 스스로 고치게 만든다. 이 접근은 단순히 에이전트를 감시하는 것이 아니라, 리뷰 노동을 줄이고 시스템 품질을 높이며 불필요하게 낭비되는 토큰도 줄이는 방향을 지향한다. 저자는 이를 위해 원치 않는 출력을 미리 예상해 예방하는 장치와, 출력 이후 관찰 신호를 제공해 수정하게 하는 장치를 함께 둬야 한다고 설명한다. 따라서 하네스는 에이전트의 자유도를 무조건 제한하는 장치라기보다, 더 적은 감독으로도 안전하게 일하게 만드는 작업 환경에 가깝다.

3. 피드포워드 가이드와 피드백 센서

하네스의 첫 번째 구분은 피드포워드와 피드백이다. 피드포워드 제어는 가이드로 표현되며, 에이전트가 행동하기 전에 방향을 제시해 좋은 결과가 처음부터 나올 확률을 높인다. 예를 들어 코딩 규칙, 프로젝트 부트스트랩 지침, 특정 코드 변환 도구 같은 것들이 여기에 속할 수 있다. 피드백 제어는 센서로 표현되며, 에이전트가 행동한 뒤 결과를 관찰하고 수정 신호를 준다. 특히 대형 언어 모델이 소비하기 좋게 작성된 신호, 예컨대 무엇을 어떻게 고쳐야 하는지 포함한 커스텀 린터 메시지는 자가수정을 돕는 긍정적인 형태의 프롬프트 주입처럼 작동할 수 있다. 저자는 피드백만 있으면 에이전트가 같은 실수를 반복하고, 피드포워드만 있으면 규칙이 실제로 효과가 있었는지 알 수 없다고 지적한다.

4. 계산적 제어와 추론적 제어의 역할 분담

가이드와 센서는 실행 방식에 따라 계산적 제어와 추론적 제어로 나뉜다. 계산적 제어는 CPU가 빠르고 결정적으로 실행하는 테스트, 린터, 타입 검사, 구조 분석 같은 도구를 뜻한다. 보통 밀리초에서 수 초 안에 실행되며 결과가 신뢰 가능하므로, 변경마다 에이전트와 함께 반복 실행하기 적합하다. 반면 추론적 제어는 의미 분석, AI 코드 리뷰, 대형 언어 모델을 판정자로 쓰는 방식처럼 더 느리고 비싸며 비결정적인 판단을 포함한다. 하지만 추론적 제어는 규칙만으로 포착하기 어려운 의미적 안내와 판단을 제공할 수 있다. 저자는 강한 모델이나 과제에 잘 맞는 모델을 사용하면, 비결정성에도 불구하고 추론적 센서가 신뢰를 높이는 데 기여할 수 있다고 본다.

5. 스티어링 루프와 하네스의 반복 개선

저자는 인간의 핵심 역할을 에이전트를 직접 한 줄씩 통제하는 것이 아니라 하네스를 반복 개선하며 방향을 잡는 일로 설명한다. 어떤 문제가 여러 번 발생하면, 그 문제가 미래에 덜 일어나거나 아예 예방되도록 피드포워드와 피드백 제어를 개선해야 한다. 이 과정이 스티어링 루프다. 흥미로운 점은 하네스를 개선하는 데에도 AI를 사용할 수 있다는 것이다. 코딩 에이전트는 구조 테스트 작성, 관찰된 패턴에서 규칙 초안 생성, 커스텀 린터 스캐폴딩, 코드베이스 탐색 결과를 바탕으로 한 안내서 작성 같은 작업을 더 싸게 만들어 준다. 따라서 하네스 엔지니어링은 한 번 만들어 두는 문서 작업이 아니라, 반복되는 실패 양상을 도구와 규칙으로 흡수해 가는 지속적 개선 활동으로 제시된다.

6. 품질을 왼쪽에 두기: 변경 생명주기와 지속 센서

글은 지속적 통합을 실천하는 팀들이 오래전부터 검사와 리뷰를 비용, 속도, 중요도에 따라 개발 흐름 곳곳에 배치해 왔다고 설명한다. 지속적 전달까지 지향한다면 모든 커밋 상태가 배포 가능하기를 원하게 되며, 문제는 생산 경로에서 가능한 한 이른 시점에 발견될수록 고치기 싸다. 그래서 빠른 린터, 빠른 테스트 묶음, 기본적인 코드 리뷰 에이전트 같은 검사는 통합 전이나 커밋 생성 전에도 실행할 수 있어야 한다. 반대로 변이 테스트나 더 넓은 맥락을 보는 코드 리뷰처럼 비싼 검사는 빠른 검사들을 반복한 뒤 통합 후 파이프라인에 배치하는 편이 합리적이다. 또한 죽은 코드 탐지, 테스트 커버리지 품질 분석, 의존성 스캐너처럼 코드베이스에 서서히 쌓이는 드리프트를 감시하는 센서와, SLO 악화나 응답 품질 샘플링, 로그 이상 징후 같은 런타임 피드백도 별도의 지속적 감시 대상으로 제시된다.

7. 유지보수성 하네스와 그 한계

저자는 에이전트 하네스를 사이버네틱 조절 장치에 비유하며, 코드베이스를 원하는 상태로 조절하기 위해 피드포워드와 피드백을 결합한다고 설명한다. 이때 무엇을 조절하려는지에 따라 범주를 나누면 하네스화 가능성과 복잡성을 더 정확히 말할 수 있다. 유지보수성 하네스는 내부 코드 품질과 유지보수성을 조절하는 범주이며, 기존 도구가 많아 현재 가장 만들기 쉬운 유형으로 제시된다. 계산적 센서는 중복 코드, 순환 복잡도, 누락된 테스트 커버리지, 아키텍처 드리프트, 스타일 위반 같은 구조적 문제를 저렴하고 신뢰성 있게 잡아낼 수 있다. 반면 의미적으로 중복된 코드, 불필요한 테스트, 무식한 수정, 과도하게 복잡한 해결책 같은 문제는 대형 언어 모델이 일부 다룰 수 있지만 비싸고 확률적이다. 더 큰 문제인 오진, 과잉 설계, 불필요한 기능, 잘못 이해한 지시는 어떤 센서도 충분히 안정적으로 잡아내지 못하며, 사람이 원하는 것을 명확히 지정하지 않았다면 정확성 자체도 센서의 범위 밖에 놓인다.

8. 아키텍처 적합성, 행동 하네스, 하네스화 가능성

아키텍처 적합성 하네스는 애플리케이션의 아키텍처 특성을 정의하고 점검하는 가이드와 센서를 묶는 범주로, 글에서는 피트니스 함수의 개념과 연결된다. 예를 들어 성능 요구사항을 기술한 스킬과 성능 테스트를 결합하면 에이전트가 성능을 개선했는지 악화시켰는지 피드백할 수 있다. 관측 가능성을 높이는 코딩 규칙과, 사용 가능한 로그 품질을 돌아보게 하는 디버깅 지침도 예로 제시된다. 기능적 동작을 다루는 행동 하네스는 더 어려운 문제로 다뤄진다. 현재 많은 고자율 코딩 에이전트 사용 방식은 기능 명세를 피드포워드로 주고, AI가 만든 테스트가 통과하는지, 커버리지가 충분한지, 경우에 따라 변이 테스트와 수동 테스트를 결합해 확인하는 방식이다. 그러나 저자는 AI 생성 테스트에 너무 많은 신뢰를 두는 이 접근이 아직 충분하지 않다고 본다. 승인된 픽스처 패턴이 일부 영역에서 좋은 결과를 보이지만 모든 테스트 품질 문제의 일반 해법은 아니며, 결국 기능 동작에 대한 신뢰를 높이는 하네스는 아직 더 많은 탐구가 필요하다고 정리한다.

9. 레거시, 하네스 템플릿, 인간의 암묵적 하네스

모든 코드베이스가 같은 수준으로 하네스화되지는 않는다. 강한 타입 언어로 작성된 코드베이스는 타입 검사를 자연스러운 센서로 갖고, 명확한 모듈 경계는 아키텍처 제약 규칙을 만들기 쉽게 한다. 스프링 같은 프레임워크는 에이전트가 직접 신경 쓰지 않아도 되는 세부사항을 추상화해 성공 가능성을 암묵적으로 높인다. 그와 달리 그런 속성이 없는 코드베이스에서는 같은 제어 장치를 만들기 어렵다. 그린필드 팀은 기술 선택과 아키텍처 선택 단계부터 하네스화 가능성을 심을 수 있지만, 기술 부채가 많이 쌓인 레거시 팀은 하네스가 가장 필요한 곳에서 오히려 가장 만들기 어려운 문제를 만난다. 저자는 기업에서 흔한 서비스 토폴로지와 서비스 템플릿이 앞으로 특정 구조, 관례, 기술 스택에 에이전트를 묶는 하네스 템플릿으로 발전할 수 있다고 보면서도, 템플릿 인스턴스가 상류 개선과 어긋나는 버전 관리와 기여 문제를 그대로 겪을 수 있다고 설명한다. 마지막으로 인간 개발자는 관례와 좋은 실천, 복잡성의 인지적 고통, 커밋에 이름이 남는 책임감을 통해 이미 암묵적 하네스로 작동한다고 말한다.

🧾 핵심 주장 / 시사점

  • 이 글의 핵심은 코딩 에이전트 신뢰를 모델의 성능만으로 해결하려 하지 말고, 반복 가능한 가이드와 센서의 체계로 설계해야 한다는 점이다.
  • 빠르고 결정적인 계산적 검사는 매 변경마다 가까이 붙이고, 비싸고 비결정적인 추론적 판단은 의미 판단이 필요한 지점에 선택적으로 배치하는 분리가 중요하다.
  • 유지보수성과 구조 품질은 비교적 하네스화하기 쉽지만, 기능적 동작의 정확성은 아직 충분히 자동화된 신뢰 장치가 부족하므로 인간의 명확한 명세와 감독이 계속 중요하다.

✅ 액션 아이템

  • 코딩 에이전트 실행 전에는 피드포워드 가이드를 정리하고, 사후 피드백 센서로 반복 실수를 잡아 자가수정 경로를 구성한다.
  • 품질 검사는 커밋 전·통합 전 단계에서 빠른 계산적 제어(테스트, 린터, 타입 검사)를 선행하고, 통합 후에는 추론적 제어를 분리 배치한다.
  • 기능 하네스 구축 시 타입 강도·모듈 경계·추상화 정도를 기준으로 유지보수성 하네스와 행동 하네스의 난이도와 우선순위를 함께 조정한다.

❓ 열린 질문

  • 피드포워드 가이드와 피드백 센서를 함께 둔 뒤, 규칙 위반이 실제로 줄었는지를 판단할 핵심 지표는 무엇인가?
  • 커밋 전·통합 전 계산적 제어 범위를 어디까지 둘 때, 통합 후 추론적 제어를 시작할 임계점은 어디인가?
  • 기술 부채가 큰 레거시 코드에서 기능 하네스를 먼저 도입해야 할지 판단할 기준은 어떤 기준이 가장 적절한가?

관련 문서

공통 태그와 주제 흐름을 기준으로 같이 보면 좋은 문서를 이어서 제안합니다.