하네스 엔지니어링 (Harness Engineering) 이란 무엇이며 왜 중요한가?
AI가 스스로 실수를 줄이고 정해진 규칙 안에서 작동하도록 제어하는 시스템으로, 인간의 개입 없이도 안정적인 결과물을 얻을 수 있는 엔지니어링 기법이다.
목차
1. 하네스 엔지니어링: AI의 안정적인 작동을 위한 필수 시스템
1.1. AI 활용의 근본적인 목적
1.2. AI 엔지니어링의 발전 과정: 프롬프트 엔지니어링 부터 하네스 엔지니어링 까지
2. 하네스 엔지니어링의 등장 배경과 핵심 요소
2.1. 하네스 엔지니어링의 필요성: 인간의 개입으로 인한 병목 현상
2.2. 하네스 엔지니어링의 핵심 요소
3. 하네스 엔지니어링 구축예제 및 적용 방안
3.1. 하네스 엔지니어링 시스템 구축 예시
1. 하네스 엔지니어링: AI의 안정적인 작동을 위한 필수 시스템
하네스 엔지니어링은 AI가 스스로 실수를 줄이고 정해진 규칙 안에서 안정적으로 작동하도록 제어하는 시스템이다.
이 하네스 엔지니어링이 주목받는 이유는 무엇일까? 그 전에 우리가 AI를 사용하는 이유가 무엇인가를 생각해 보자!
1.1. AI 활용의 근본적인 목적
우리는 AI를 통해 나 대신 돈을 벌거나, 숙제를 하는 등 원하는 모든 것을 해주는 시스템을 만들고 싶어한다.
즉, AI를 통해 모든 것을 아는 '울트라 휴먼'을 만들고자 한다.
1.2. AI 엔지니어링의 발전 과정: 프롬프트 엔지니어링 부터 하네스 엔지니어링 까지
그러면 AI를 잘 쓰려면 어떻게 해야할까? 초기에는 AI를 잘 쓰는 기법으로 프롬프트 엔지니어링 기법이 떠올랐다.
즉, AI에게 프롬프트를 구체적으로 잘 주고, AI가 이해하기 쉽게 전달을 잘하는 것이 AI를 잘 쓰는 사람이라고 생각했다.
짧은 작업에는 프롬프트를 잘 쓰는 것만드로도 효과적일 수 있지만 작업이 길어지고, 파일이 많아지며, 중간에 실수 할 경우 반복적으로 프롬프트를 전달하면서 더 중요한 것이 생겨났다.
이러한 반복적인 작업을 줄이기 위해 AI가 일할 작업 환경을 얼마나 잘 설계해두는가 가 중요해졌고, 이에 대한 기법이 하네스 엔지니어링과 관련이 있다.
https://openai.com/ko-KR/index/harness-engineering/
하네스 엔지니어링: 에이전트 우선 세계에서 Codex 활용하기
작성자: Ryan Lopopolo, 기술 스태프 멤버
openai.com
- 프롬프트 엔지니어링: AI와의 소통 기술
- AI가 사용자의 의도를 정확히 이해하도록 최대한 자세하게 설명하는 기술이다.
- 이는 AI에게 말을 잘하는 방법을 가르치는 것과 같다 - 컨텍스트 엔지니어링: AI에게 업무 히스토리 전 달
- 단순히 말만 잘하는 것을 넘어, 업무의 히스토리를 AI에게 알려주어 더 나은 결과를 얻도록 한다.
- 마치 6개월 일한 인턴이 신입 사원보다 회사 사정을 잘 아는 것처럼, AI에게 회사의 맥락(컨텍스트)을 전달하는 것이 중요하다. - 하네스 엔지니어링: AI의 실수 방지 및 규칙 준수 강화
- AI가 스스로 판단하여 일을 너무 잘하게 되면, 때로는 사용자의 의도와 다르게 마음대로 결과물을 만들 수 있다.
- 이로 인해 인간이 중간중간 개입하여 AI의 결과물을 확인하고 수정하는 작업이 반복된다.
하네스 엔지니어링은 AI가 실수하지 않고 정해진 규칙(바운더리) 안에서 활동하도록 제어하는 시스템이다.
이는 마치 강아지 산책 시 사용하는 하네스처럼, AI의 행동 범위를 설정해주는 것과 같다.
단순히 "이렇게 하지 마"라고 말하는 것을 넘어, AI가 실수했을 때 이를 잡아낼 수 있는 장치까지 마련하는 것을 의미한다.
이를 통해 AI가 실수를 하더라도 스스로 피드백을 통해 수정하거나, 인간이 발견하여 수정할 수 있게 된다.
2. 하네스 엔지니어링의 등장 배경과 핵심 요소
하네스 엔지니어링은 AI 개발 과정에서 인간의 개입을 최소화하고 생산성을 높이기 위해 등장했다.
2.1. 하네스 엔지니어링의 필요성: 인간의 개입으로 인한 병목 현상
- 기존 개발 방식의 문제점
- AI에게 요청하면 AI가 코드를 구현하고, 인간이 테스트 후 수정 요청하는 반복적인 과정을 거친다.
- AI의 코드 생성 속도는 빠르지만, 인간의 테스트 속도는 느려 생산성의 병목 현상이 발생한다.
- 인간의 잦은 개입은 AI를 기다리게 만들어 오히려 생산성을 저해한다. - 인간의 개입을 최소화하려는 시도
- 생산성 향상을 위해 프로젝트에서 인간을 삭제하고 AI가 스스로 모든 과정을 처리하도록 하는 시스템 구축이 목표가 되었다.
- AI가 스스로 계획, 구현, 테스트, 버그 수정까지 완벽하게 수행하여 결과물을 내놓는 것을 원했다.
2.2. 하네스 엔지니어링의 핵심 요소
- 가시성 확보: AI에게 '눈' 달아주기 (로그 시스템)
- AI가 자신의 작업 과정을 스스로 파악하고 피드백할 수 있도록 로그 시스템을 도입한다.
- 개발자들이 과거에는 불필요하다고 여겼던 로그를 오히려 적극적으로 활용한다.
- 로그를 통해 AI는 자신이 원하는 결과물이 아니라고 판단하면 스스로 피드백하고 수정할 수 있다.
- 크롬 개발자 도구, 스크린샷, 탐색 스킬 등을 활용하여 AI가 버그를 제언하고 수정 사항을 검증하며 UI 동작까지 직접 출연할 수 있게 한다. - 컨텍스트 관리: AI에게 필요한 정보 점진적 제공
- AI에게 너무 많은 정보를 한 번에 제공하면 대충 읽고 넘어가는 문제가 발생한다.
- AI가 스스로 필요한 컨텍스트를 찾아가도록 목차를 제공하고 점진적으로 정보를 공개하는 방식으로 변경한다.
- 하나의 큰 MD 파일에 모든 정보를 담는 방식 대신, 목차를 활용하여 AI가 부담 없이 필요한 정보를 찾아 활용하도록 한다. - CI/CD 강제: 규칙 위반 시 에러 발생
- AI가 "하지 마"라는 규칙을 무시하지 않도록 강제하는 시스템이 필요하다.
- AI가 규칙 밖으로 벗어나면 에러를 발생시켜 되돌아오게 하는 훅(hook)이나 규칙을 설정한다.
- 이는 단순히 프롬프트로 요청하는 것을 넘어, 규칙 위반 시 돌아올 수 있도록 룰을 설정하는 것이 핵심이다.
- ES 린트 규칙, 커밋 메시지 규칙 등을 활용하여 AI의 행동을 제어한다
3. 하네스 엔지니어링 구축 예제 및 적용 방안
하네스 엔지니어링은 실제 개발 과정에서 AI의 안정적인 작동을 보장하며, 점진적인 구축을 통해 효율성을 높일 수 있다.
3.1. 하네스 엔지니어링 시스템 구축 예시
- 시스템 구축 과정
- 오픈 AI의 문서를 GPT에게 주고, 이를 적용한 하네스 엔지니어링 구축 프롬프트를 생성한다.
- 생성된 프롬프트를 적용하고, 필요한 부분을 수정하여 시스템을 완성한다. - 핵심 구성 요소: 클로드 MD 파일
- 클로드 MD 파일은 AI가 명령어를 실행하기 전에 반드시 읽고 시작하는 중요한 규칙 문서이다.
- 이 파일에 중요한 규칙을 명시하는 것이 중요하며, 누락 시 AI가 임의로 작동할 수 있다. - 개발 단계별 하네스 엔지니어링 적용
1단계: 플랜 생성
- 계획 없이 코드를 작성하지 않도록 플랜을 먼저 생성한다.
2단계: 워크트리에서 구현
- 로컬 시스템에 복사본인 워크트리를 만들어 작업하고, 완벽해지면 메인에 병합한다.
- 이는 메인 작업 환경이 망가지는 것을 방지하고 인간의 개입을 최소화하기 위함이다.
3단계: 테스트 작성 및 검증
- 구현된 기능에 대한 단위 테스트, 린트 테스트, 빌드 테스트 등을 수행한다.
- 스크립트/verify.tasks를 통해 이러한 테스트를 강제로 수행하도록 한다.
4단계: 소스 코드 커밋 및 머지
- 개발 완료 후 AI가 스스로 코드를 커밋하고 메인 코드로 합친다.
- 커밋 메시지 형식도 미리 정해두어 AI가 규칙에 맞게 작성하도록 한다.
허스키(Husky) 활용
- 커밋 전후 실행되는 훅 리스트를 설정하여 코드 세이브 전 테스트를 강제한다.
- 계획 없는 코드나 마스터 브랜치 직접 수정 시 차단하는 등 규칙 위반 시 실패할 수 있는 장치를 마련한다.
문서 및 로그 활용
- AI가 클로드 MD 파일을 무시하더라도 다시 돌아올 수 있는 장치를 마련하는 것이 중요하다.
- 에이전트 파일은 목차만 제공하여 AI가 필요한 정보를 스스로 찾아가도록 한다.
- 대부분의 규칙은 documents 폴더에 저장되며, 로그는 logs 폴더에 기록된다.
- 로그를 통해 AI는 스스로 에러를 보고 수정해 나갈 수 있다.
'AI > Natural language processing' 카테고리의 다른 글
| Window/Linux에서 Opencode설치 및 실행 방법 (0) | 2026.01.30 |
|---|---|
| [NLP] 임베딩 / 임베딩 차원 / 임베딩 모델 최대 토큰길이 (1) | 2025.11.13 |
| [NLP] Text-to-SQL 기반 Agentic AI 3-Tier 데이터 분석 에이전트 개발 (0) | 2025.11.10 |
| [NLP] docker container 내 Reranker 모델 로드 에러 해결 (0) | 2025.10.21 |
| LLM 파라미터: GPT-4 vs GPT-5 샘플링·제어 정리 (0) | 2025.09.30 |