Harness Engineering: 2026 년 AI 엔지니어가 알아야 할 모든 것

@sairahul1
영어1개월 전 · 2026년 6월 07일
1.1M
1.0K
177
54
3.3K

TL;DR

이 가이드에서는 원시 AI 모델을 신뢰할 수 있는 프로덕션 시스템으로 전환하기 위한 제약 조건과 피드백 루프를 구축하는 2026 년의 새로운 분야인 Harness Engineering에 대해 알아봅니다.

2026년 2월, 작은 OpenAI 팀이 100만 줄의 프로덕션 코드를 출시했습니다.

그들은 단 한 줄도 직접 작성하지 않았습니다.

AI 에이전트가 코드를 작성했습니다.

인간은 에이전트를 안정적으로 만드는 시스템을 설계했습니다.

그 시스템에는 이제 이름이 있습니다.

하네스 엔지니어링.

몇 주 안에 Anthropic은 이에 관한 3편의 논문을 발표했습니다.

ThoughtWorks는 프레임워크를 공식화했습니다.

Hugging Face의 Philipp Schmid는 이를 "2026년의 가장 중요한 학문"이라고 불렀습니다.

새로운 엔지니어링 학문이 90일 만에 구체화되었습니다.

그리고 AI 인프라 팀 외부에서는 아직 거의 아무도 이해하지 못하고 있습니다.

이 글은 모든 것을 설명합니다.

군더더기 없이, 학술적 전문 용어 없이, 실제로 사용할 수 있는 멘탈 모델만 제공합니다.

저장해 두세요. 두 번은 읽게 될 것입니다.

파트 1: 하네스가 실제로 무엇인가 (AI에 대한 생각을 바꾸는 개념)

1. 하네스의 정의

Rahul - inline image

가장 간단한 정의는 ThoughtWorks에서 나왔습니다.

에이전트 = 모델 + 하네스

하네스는 모델이 아닌 모든 것입니다.

에이전트를 올바른 방향으로 유지하는 제약 조건. 실수를 잡아내는 피드백 루프. 에이전트에게 현재 위치를 알려주는 문서. 사용이 허가된 도구들.

하네스를 제거하면 → 코드베이스를 추측하며 헤매는 원시 언어 모델.

올바른 하네스를 추가하면 → 프로덕션 코드를 출시하는 시스템.

이름은 말의 마구에서 유래했습니다.

하네스는 강력하지만 예측 불가능한 동물을 유용한 방향으로 이끄는 고삐, 안장, 재갈입니다.

말을 더 똑똑하게 만드는 것이 아닙니다. 말의 힘을 유용하게 만드는 장비를 설계하는 것입니다.

2. OS 비유

Rahul - inline image

Philipp Schmid가 가장 훌륭한 기술적 프레임워크를 제시했습니다.

컴퓨터처럼 생각해 보세요.

모델 = CPU (원시 처리 능력)

컨텍스트 윈도우 = RAM (제한적이고 휘발성인 작업 메모리)

하네스 = 운영 체제 (CPU가 무엇을, 언제 볼지 관리)

에이전트 = 그 위에서 실행되는 애플리케이션

모델은 강력합니다.

하지만 메모리를 관리하고, 작업을 스케줄링하고, 규칙을 강제하는 OS가 없다면, 그것은 그냥 실리콘 조각일 뿐입니다.

대부분의 사람들은 운영 체제 없이 앱을 실행하고 있습니다.

그것이 바로 그들의 에이전트가 프로덕션에서 실패하는 이유입니다.

3. 2026년에 달라진 점

Rahul - inline image

LangChain은 Terminal Bench 2.0에서 동일한 모델을 두 번 실행했습니다.

동일한 모델. 다른 하네스.

→ 기존 하네스: 52.8% 점수

→ 새 하네스: 66.5% 점수

Vercel은 반대 방향으로 갔습니다.

에이전트의 도구 중 80%를 제거했습니다.

결과? 더 나은 성능.

더 나쁘지 않았습니다.

2026년의 불편한 진실:

→ 에이전트는 결코 어려운 부분이 아니었습니다.

→ 하네스가 어려운 부분입니다.

2025년이 AI 에이전트가 코드를 작성할 수 있음을 증명한 해였다면…

2026년은 환경이 모델보다 더 중요하다는 것을 발견한 해입니다.

파트 2: 5가지 하네스 산출물 (실제 하네스의 모습)

4. AGENT.md / CLAUDE.md 파일

Rahul - inline image

가장 보편적인 하네스 산출물.

코드베이스 전체에 분산된 마크다운 파일.

에이전트는 모든 세션 시작 시 이를 읽습니다. 팀에 합류하는 새 엔지니어를 위한 온보딩 문서와 같습니다.

여기에 포함되는 내용:

→ 프로젝트 컨텍스트

→ 코딩 규칙

→ 아키텍처 결정

→ "여기서 우리가 하는 방식" 가이드

→ 현재 진행 중인 작업

OpenAI는 이를 AGENT.md라고 부릅니다.

Anthropic은 CLAUDE.md라고 부릅니다.

Cursor는 .cursorrules를 사용합니다.

이름은 다르지만 원칙은 동일합니다.

주요 모듈당 하나의 파일. 프로젝트가 발전함에 따라 업데이트됩니다.

이것이 없으면: 에이전트는 매 세션을 맹목적으로 시작합니다. 이것이 있으면: 에이전트는 정보를 가지고 세션을 시작합니다.

5. JSON 기능 목록 (진행 상황 추적기)

Rahul - inline image

에이전트가 여러 세션에 걸쳐 전체 앱을 구축할 때, 각 세션을 빈 컨텍스트 윈도우로 시작합니다.

이미 완료된 작업을 어떻게 알 수 있을까요?

JSON 파일입니다.

각 항목은 다음을 정의합니다:

→ 기능

→ 작동 여부를 확인하는 방법

→ 통과/실패 상태

에이전트는 세션 시작 시 이를 읽습니다. 우선순위가 가장 높은 실패 기능을 선택합니다. 구현합니다. 통과로 표시합니다. 커밋합니다. 반복합니다.

왜 Markdown이 아닌 JSON일까요?

Anthropic은 에이전트가 Markdown보다 JSON을 실수로 덮어쓸 가능성이 적다는 것을 발견했습니다.

작은 세부 사항이지만, 6시간 자율 실행에서는 매우 중요합니다.

6. 세션 초기화 루틴

Rahul - inline image

모든 세션은 같은 방식으로 시작됩니다.

매번. 예외 없이.

Anthropic의 7단계 부트 시퀀스:

  1. 작업 디렉토리 확인
  2. Git 로그 및 진행 파일 읽기
  3. 기능 목록에서 우선순위가 가장 높은 미완료 항목 확인
  4. 개발 서버 시작
  5. 기본 종단 간(end-to-end) 검증 실행
  6. 하나의 기능 구현
  7. 설명 메시지와 함께 커밋 및 진행 상황 업데이트

이것이 없으면:

에이전트는 이미 무엇이 존재하는지 파악하는 데 처음 20분을 낭비합니다.

매 세션이 처음부터 다시 시작하는 꼴입니다.

이것이 있으면:

에이전트는 즉시 정보를 파악하고 직접 작업을 시작합니다.

7. 스프린트 계약

Rahul - inline image

에이전트가 단 한 줄의 코드를 작성하기 전에:

두 에이전트가 협상합니다.

생성기 에이전트가 제안합니다:

→ 무엇을 구축할 것인지

→ 성공을 어떻게 검증할 것인지

평가자 에이전트가 검토합니다:

→ 제안이 완전한가?

→ 성공 기준이 명확한가?

양측이 동의한 후에야 구현이 시작됩니다.

설계 검토와 같습니다.

단, 두 참가자 모두 AI라는 점이 다릅니다.

이것이 왜 중요할까요?

동일한 패스에서 계획하고 실행하는 에이전트는 신뢰할 수 없는 출력을 생성합니다.

계획 단계는 AI가 수행하더라도 출력 품질을 극적으로 향상시킵니다.

8. 구조화된 작업 템플릿

Rahul - inline image

코딩 전에:

하네스가 실제 코드베이스를 분석합니다.

실제 기반의 영향 맵을 생성합니다:

→ 실제 파일 경로 (환각된 것이 아님)

→ 실제로 존재하는 실제 심볼 이름

→ 따라야 할 기존 패턴

→ 구체적인 승인 기준

그런 다음 구현이 시작됩니다.

당연해 보입니다.

하지만 대부분의 팀은 이를 건너뜁니다.

에이전트는 파일 구조를 추측합니다. 존재하지 않는 API 엔드포인트를 발명합니다. 코드베이스에 맞지 않는 것을 구축합니다.

실행 전 실제 컨텍스트 → 훨씬 더 나은 출력.

파트 3: 세 가지 진영 (세 팀이 같은 벽에 부딪혔고, 세 가지 다른 사다리를 만들었다)

9. OpenAI: 환경 우선

Rahul - inline image

OpenAI의 Codex 팀은 터무니없는 문제에 직면했습니다.

100만 줄의 프로덕션 코드. 단 한 줄도 직접 작성하지 않음.

그 규모에서는 모든 줄을 코드 리뷰할 수 없습니다.

그래서 그들은 하지 않았습니다.

대신:

에이전트가 검토 가능한 출력을 생성하도록 환경을 철저히 설계했습니다.

그들의 접근 방식:

→ 엄격한 의존성 흐름 (Types → Config → Repo → Service → Runtime → UI)

→ 코드베이스 전체의 AGENT.md 파일

→ CI/CD 파이프라인에 직접 연결된 에이전트

철학: 환경을 설계하라. 그런 다음 에이전트를 풀어 놓아라.

증거: Sora Android 앱. 엔지니어 4명. 28일. Play Store 1위. 99.9% 충돌 없음.

Codex는 매주 내부 풀 리퀘스트의 70%를 처리했습니다.

10. Anthropic: 실행자와 평가자 분리

Rahul - inline image

Anthropic은 다른 문제를 가지고 있었습니다.

에이전트에게 자신의 출력을 평가하도록 요청했을 때:

자신 있게 작업을 칭찬했습니다.

인간의 관찰자에게는 품질이 명백히 평범했음에도 불구하고 말이죠.

자기 평가는 효과가 없습니다.

에이전트는 학생이자 교사였습니다.

그리고 스스로에게 A+를 주고 있었습니다.

그들의 해결책: 세 가지 특화된 에이전트.

플래너 — 2문장 프롬프트를 전체 제품 사양으로 전환

생성기 — 한 번에 하나의 스프린트씩 기능 구현

평가자 — 브라우저 자동화를 사용하여 실제 사용자처럼 실행 중인 앱 테스트

핵심 통찰: 독립적인 평가자를 회의적으로 만드는 것이 생성기가 자신의 작업을 비판하도록 만드는 것보다 훨씬 쉽다는 것입니다.

결과: 단독 에이전트 (하네스 없음): $9, 20분 → 고장난 앱 / 전체 하네스: $200, 6시간 → 작동하는 소프트웨어, 세련된 UI

11. ThoughtWorks: 2×2 프레임워크

Rahul - inline image

ThoughtWorks는 다른 각도에서 접근했습니다.

그들은 제품을 만들고 있지 않았습니다.

50개 이상의 엔지니어링 팀이 같은 일에서 실패하는 것을 지켜보고 있었습니다.

그들의 통찰: 모든 하네스 제어를 두 가지 축을 따라 분류합니다.

축 1: 언제 실행되는가?

→ 피드포워드 = 에이전트가 행동하기 전 (안내)

→ 피드백 = 에이전트가 행동한 후 (센서)

축 2: 어떻게 작동하는가?

→ 계산적 = 결정론적, 밀리초 단위 (린터, 타입 체커, 테스트 스위트)

→ 추론적 = LLM 사용, 초 단위 (코드 리뷰 에이전트, 의미 분석)

2×2:

→ 계산적 피드포워드: 타입 시스템, 린터, 아키텍처 규칙

→ 계산적 피드백: 테스트 스위트, 커버리지 분석, 변이 테스트

→ 추론적 피드포워드: 사양 문서, 제약 조건 설명

→ 추론적 피드백: LLM 코드 리뷰어, 동작 검증기

피드포워드나 피드백만으로는 작동하지 않습니다.

둘 다 필요합니다.

파트 4: 모든 진영이 동의하는 5가지 원칙 (세 팀은 협력하지 않았지만, 독립적으로 여기에 도달했다)

12. 원칙 1: 컨텍스트가 지시보다 중요하다

Rahul - inline image

OpenAI: "1,000페이지 분량의 매뉴얼이 아닌 지도를 제공하라."

Anthropic: 에이전트가 항상 자신의 위치를 알 수 있도록 JSON 기능 목록과 진행 파일.

Red Hat: 작업을 생성하기 전에 실제 코드베이스를 분석하라.

ThoughtWorks: "피드포워드."

다른 표현. 같은 발견.

에이전트에게 세계의 현재 상태를 보여주는 것이 추상적으로 무엇을 해야 하는지 말하는 것보다 지속적으로 더 나은 성능을 냅니다.

→ 실제 파일 경로에 기반 → 코드베이스에 맞는 코드

→ 모호한 설명에서 작업 → 환각된 파일 경로와 발명된 API

교훈: 에이전트가 무엇을 입력하기 전에, 자신이 정확히 어디에 있는지 알도록 하라.

13. 원칙 2: 계획과 실행은 분리되어야 한다

Rahul - inline image

OpenAI: 인간이 환경을 설계하고, 에이전트가 실행.

Anthropic: 전용 플래너 에이전트가 생성기가 코드를 건드리기 전에 실행.

ThoughtWorks: 계획과 구현 사이에 필수 인간 검토 체크포인트.

Red Hat: 1단계 (영향 맵)와 2단계 (구현) 사이에 엄격한 게이트.

모든 진영이 독립적으로 이것을 발견했습니다:

에이전트가 동일한 패스에서 계획하고 실행하도록 두는 것은 신뢰할 수 없는 출력을 생성합니다.

계획 단계가 인간에 의해 수행될 필요는 없습니다.

하지만 별도의 단계여야 하며, 구현이 시작되기 전에 그 출력이 검토되어야 합니다.

14. 원칙 3: 피드백 루프는 필수 불가결하다

Rahul - inline image

OpenAI: CI/CD 및 관찰 가능성 시스템에 연결된 에이전트.

Anthropic: 브라우저 자동화를 사용하는 전용 평가자 에이전트.

ThoughtWorks: "센서"로 공식화. 피드포워드 전용 접근 방식은 가이드가 실제로 작동하는지 확인하지 못한다고 경고.

동일한 원칙에 대한 세 가지 접근 방식:

→ OpenAI는 자동화된 테스트와 CI 사용

→ Anthropic은 다른 LLM 사용

→ ThoughtWorks는 계층화하여 둘 다 사용하라고 말함

그들은 누가 피드백을 제공하는지에 대해서는 의견이 다릅니다.

피드백이 필요한지에 대해서는 의견이 다르지 않습니다.

피드백이 없는 하네스는 단지 추가 단계가 있는 프롬프트일 뿐입니다.

15. 원칙 4: 한 번에 한 가지씩

Rahul - inline image

OpenAI: 목표를 더 작은 구성 요소로 나누고 깊이 우선으로 작업.

Anthropic: 각각 커밋과 함께 스프린트당 하나의 기능을 강제.

ThoughtWorks: 단계별 라이프사이클 (사전 통합 → 사후 통합 → 지속적 모니터링).

한 번에 너무 많은 것을 시도하는 에이전트:

→ 컨텍스트 소진

→ 일관성 상실

→ 조용히 요구 사항 누락

Anthropic 루틴:

진행 상황 읽기 → 하나의 기능 선택 → 구현 → 커밋 → 반복

강제된 점진주의는 모든 성공적인 하네스에서 보편적입니다.

16. 원칙 5: 코드베이스가 곧 문서다

Rahul - inline image

OpenAI: AGENT.md 파일을 저장소에 포함.

Anthropic: 기능 목록, 진행 파일, Git 히스토리를 에이전트의 연속성 메커니즘으로 저장.

ThoughtWorks: "하네스 적합성" 측정 — 코드베이스가 에이전트에게 얼마나 읽기 쉬운지.

아무도 에이전트를 위한 별도의 지식 베이스를 유지하지 않습니다.

저장소가 유일한 진실 공급원입니다.

규칙, 제약 조건 또는 아키텍처 결정이 코드베이스에 없다면, 에이전트는 그것에 대해 알지 못할 것입니다.

실제 의미:

→ 코드 구성에 투자하는 팀은 더 나은 에이전트 성능을 공짜로 얻습니다.

→ 지저분한 저장소 + AI 에이전트 = 혼란, 그러나 규모에 따라.

파트 5: 역설 — 삭제하기 위해 구축하라 (하네스 엔지니어링에서 가장 반직관적인 진실)

17. 하네스 부패는 현실이다

Rahul - inline image

Anthropic이 Opus 4.5에서 Opus 4.6으로 업그레이드했을 때:

필수적이었던 스프린트 분해가 쓸모없는 부담이 되었습니다.

모델의 개선된 계획 능력이 그것을 불필요하게 만들었습니다.

3월에 하중을 지탱하던 하네스 구성 요소가 4월에는 오버헤드가 되었습니다.

그리고 Opus 4.7이 등장했습니다.

모델이 자체 출력을 검증하기 시작했습니다.

평가자 에이전트의 역할 설명이 줄어들기 시작했습니다.

이것이 하네스 부패입니다.

하네스의 모든 구성 요소는 모델이 할 수 없는 것에 대한 가정을 인코딩합니다.

모델이 개선됨에 따라 → 그 가정은 만료됩니다 → 구성 요소는 오버헤드가 됩니다.

Opus 4.5: 스프린트 분해 + 스프린트당 평가

Opus 4.6: 스프린트 분해 없음 + 단일 패스 평가 (비용 38% 절감)

Opus 4.7: 모델이 자체 검증 시작 → 평가자 역할 더욱 축소

18. 삭제하기 위해 구축하라

Rahul - inline image

Philipp Schmid의 조언:

"삭제하기 위해 구축하라."

모든 하네스 구성 요소를 제거 가능하도록 설계하라.

각 구성 요소를 주기적으로 끄고 출력 품질이 변하는지 측정하여 테스트하라.

변하지 않으면: 삭제하라.

Manus는 6개월 동안 하네스를 5번 리팩토링했습니다. LangChain은 1년에 3번 재구성했습니다. Vercel은 도구의 80%를 제거하고 더 나은 성능을 얻었습니다.

이것들은 나쁜 엔지니어링의 신호가 아닙니다.

빠르게 개선되는 모델 위에 구축하는 것의 자연스러운 결과입니다.

죽은 하네스 구성 요소를 유지하는 것은 모든 실행에서 토큰을 소모합니다. 품질 향상은 전혀 없습니다. 순수한 낭비입니다.

19. 비용 현실

Rahul - inline image

Anthropic의 A/B 테스트에서 나온 정직한 수치:

→ 단독 에이전트 (하네스 없음): $9, 20분 → 작동하는 UI, 고장난 핵심 기능

→ 전체 하네스 (Opus 4.5): $200, 6시간 → 작동하는 소프트웨어, 세련된 UI, 올바른 물리 엔진

22배의 비용 증가입니다.

기능하는 제품 대 스크린샷에서만 괜찮아 보이는 데모의 차이입니다.

그것이 비싼지 싼지는 전적으로 팀에 장애 릴리스가 얼마나 큰 비용을 초래하는지에 달려 있습니다.

하지만 아무도 이야기하지 않는 것이 있습니다:

하네스 + 모델 조합은 진화합니다.

$200 하네스는 한 번의 모델 업그레이드로 $124가 되었습니다.

추세선:

→ 더 나은 모델 = 더 간단한 하네스 = 더 저렴한 실행 = 더 빠른 출력

2026년에 승리하는 엔지니어들은 최고의 코드를 작성하는 것이 아닙니다.

그들은 최고의 제약 조건을 설계하고 있습니다.

그리고 그 제약 조건이 더 이상 효용을 제공하지 않는 순간 기꺼이 버릴 의지가 있습니다.

마무리

Rahul - inline image

방금 배운 모든 것:

하네스가 무엇인가:

→ 1. 에이전트 = 모델 + 하네스

→ 2. 모델 = CPU. 하네스 = 운영 체제.

→ 3. 동일한 모델, 더 나은 하네스 = +13% 성능

5가지 하네스 산출물:

→ 4. CLAUDE.md / AGENT.md — 에이전트를 위한 온보딩 문서

→ 5. JSON 기능 목록 — 진행 상황 추적기 + 테스트 스위트

→ 6. 세션 초기화 루틴 — 매번 동일한 7단계 부트

→ 7. 스프린트 계약 — 에이전트가 코딩 전에 협상

→ 8. 구조화된 작업 템플릿 — 실제 파일 경로, 실제 패턴

세 가지 진영:

→ 9. OpenAI: 환경을 설계하고 에이전트를 풀어 놓아라

→ 10. Anthropic: 실행자와 평가자를 분리하라

→ 11. ThoughtWorks: 2×2 피드포워드/피드백 프레임워크

5가지 보편적 원칙:

→ 12. 컨텍스트가 지시보다 중요하다

→ 13. 계획과 실행은 분리되어야 한다

→ 14. 피드백 루프는 필수 불가결하다

→ 15. 한 번에 한 가지씩

→ 16. 코드베이스가 곧 문서다

역설:

→ 17. 하네스 부패 — 지난달에 효과가 있었던 것이 이번 달에는 해가 된다

→ 18. 삭제하기 위해 구축하라 — 죽은 구성 요소를 테스트하고 제거하라

→ 19. 비용 현실 — 더 나은 모델 = 더 간단한 하네스 = 더 저렴한 실행

2026년에 승리하는 엔지니어들은 최고의 코드를 작성하는 것이 아닙니다.

그들은 최고의 제약 조건을 설계하고 있습니다.

그리고 그 제약 조건이 더 이상 효용을 제공하지 않는 순간 기꺼이 버릴 의지가 있습니다.

이 글이 유용했다면:

→ 네트워크의 빌더들에게 닿도록 리포스트하세요

→ 더 많은 이런 콘텐츠를 위해 @sairahul1을 팔로우하세요

→ 북마크하세요 — 에이전트가 문제를 일으키기 시작할 때 참고하게 될 것입니다

저는 AI, 제품 구축, 그리고 2026년에 실제로 효과가 있는 것들에 대해 글을 씁니다.

원클릭 저장

YouMind로 바이럴 글을 AI 심층 읽기

소스를 저장하고, 핵심 질문을 던지고, 주장을 요약해 바이럴 글을 다시 활용할 수 있는 노트로 바꾸세요. 하나의 AI 워크스페이스에서 모두 할 수 있습니다.

YouMind 둘러보기
크리에이터를 위해

당신의 Markdown을 깔끔한 𝕏 글로

직접 쓴 장문을 올릴 때 이미지, 표, 코드 블록을 𝕏에 맞게 정리하는 일은 번거롭습니다. YouMind는 전체 Markdown 초안을 깔끔하고 바로 게시할 수 있는 𝕏 글로 바꿔 줍니다.

Markdown → 𝕏 사용해 보기

분석할 패턴 더 보기

최근 바이럴 아티클

더 많은 바이럴 아티클 보기