mason
mason-log.

GitHub 로그인 중

하네스 엔지니어링.
mason

masonfe-hyunsu

🧵 1. 개요 : 한 줄로 보면.

  • AI를 개발에 쓰기 시작하면서, "어떻게 시키면 결과가 좋아지나"에 대한 관심도 같이 바뀌어 왔다.

  • 처음에는 채팅으로 질문하는 정도였는데, 지금은 Cursor, Claude Code처럼 코드를 직접 고치는 도구까지 들어왔다.

  • 그래서 관심사도 대략 이렇게 옮겨졌다.

    • 말을 잘 쓰기 (Prompt)

    • 프로젝트 정보를 미리 주기 (Context)

    • AI가 일할 환경을 만들어 두기 (Harness)

  • 영어로 부르면 Prompt Engineering → Context Engineering → Harness Engineering이다.

  • Cursor를 쓰다 보면 "프롬프트를 더 잘 쓰면 되지 않나?"만으로는 설명이 안 되는 순간이 자주 있었다.

  • 이 포스팅에서는 세 단계를 쉬운 말로 나눠 정리해 본다.

  • Prompt : 이번 요청을 어떻게 말할지. (말 잘 시키기)

  • Context : 프로젝트 정보를 어떻게 미리 넣을지. (미리 알려두기)

  • Harness : AI가 어떤 규칙과 검사 안에서 일하게 할지. (일할 환경 만들기)

Prompt → Context → Harness 관심사 변화

💬 2. Prompt Engineering : 말을 잘 시키기.

  • ChatGPT가 막 나왔을 때는, AI에게 어떻게 말하느냐가 거의 전부였다.

  • Prompt Engineering은 쉽게 말해 질문 문장을 잘 써서 답을 더 좋게 만드는 일이다.

자주 쓰이던 방법들.

더 구체적으로 말하기.

  • "더 자세하게 설명해줘"

  • "단계별로 생각해줘"

  • "전문가처럼 답변해줘"

문장을 조금만 바꿔도 답이 달라지는 걸 많이 겪었다.

역할 주기. (Role Play)

  • "너는 시니어 개발자야"

  • "너는 코드 리뷰어야"

  • "너는 보안 전문가야"

역할을 주면, 그 시선으로 답해주는 경우가 많다.

생각 과정을 보여 달라고 하기. (Chain of Thought)

  • "문제를 단계별로 분석해줘"

  • "답을 바로 내지 말고, 중간 과정을 보여줘"

한 번에 답을 내기보다, 과정을 적게 하면 틀린 답이 줄어드는 느낌이 있었다.

예시를 먼저 보여주기. (Few-Shot)

  • 원하는 형식의 예시 몇 개를 먼저 주고다.

  • 그다음 같은 패턴으로 이어서 쓰게 한다.

예를 들면 이렇게 준다.

회원가입 API → UserController
로그인 API → AuthController
비밀번호 변경 API → ??

출력:

PasswordController

당시 기준은 단순했다.

좋은 결과 = 좋은 프롬프트


🤖 3. AI 코딩 도구 : 채팅을 넘어 코드 수정까지.

  • 이제는 AI가 채팅창에만 있지 않다.

  • GitHub Copilot, Cursor, Claude Code, Codex, Gemini CLI처럼 에디터나 터미널에서 코드를 직접 고치는 도구가 늘었다.

  • "설명해줘"에서 "이 파일 수정해줘"로 역할이 넓어진 셈이다.

같은 말을 해도 결과가 제각각인 문제.

  • 같은 문장을 넣어도, 실행할 때마다 결과가 달라질 수 있다.

  • 예를 들어 "React 로그인 페이지 만들어줘"를 여러 번 시키면 이런 식이다.

    • 어떤 번은 함수형 컴포넌트

    • 어떤 번은 클래스 컴포넌트

    • 폴더 구조도 제각각

    • TypeScript를 안 쓰는 경우도 있다

  • 코드 자체는 나오는데, 우리 프로젝트 규칙에 맞는 코드는 아닌 경우가 많았다.

  • Cursor에서 같은 요청을 반복해 보면, "돌아가긴 하는데 이 레포 스타일은 아닌" 결과가 자주 나와서 손이 더 갔다.

  • 같은 프롬프트여도 실행마다 구조, 스타일, 파일 구성이 갈라질 수 있다.

같은 요청으로 나온 서로 다른 결과 비교

📏 4. 프롬프트만으로 버티기 어려워진 이유.

  • 프로젝트가 커질수록, 매 요청마다 붙여야 할 조건이 늘어났다.

    • "React, TypeScript 써줘"

    • "any 쓰지 마, ESLint 지켜"

    • "테스트도 작성해"

    • "폴더 구조, 스타일 규칙도 맞춰"

  • 결국 매번 같은 말을 다시 적는 일이 된다.

  • 사람이 기억해서 붙여 넣는 방식은, 글이 길어질수록 빼먹기 쉽다.

  • 프롬프트를 길게 쓰는 걸로 버티다 보면, 검수도 사람이 계속 떠안게 된다.


📚 5. Context Engineering : 미리 알려두기.

  • 그래서 방향이 바뀌었다.

  • 프롬프트를 매번 길게 쓰기보다, 프로젝트 문서를 저장소에 두고 AI가 자동으로 보게 하는 쪽이다.

  • Context Engineering은 쉽게 말해 AI에게 미리 배경지식을 넣어 두는 일이다.

  • Cursor Rules를 한 번 잡아두면, 같은 제약을 매번 다시 안 적어도 되어서 체감이 컸다.

자주 두는 문서 예시:

  • README.md

  • 아키텍처 정리

  • API 문서

  • 디자인 시스템

  • 코딩 컨벤션

도구마다 파일 이름만 다르고, 역할은 비슷하다.

  • Cursor: Rules

  • Claude Code: CLAUDE.md

  • Codex: AGENTS.md

  • Cursor Rules 예시. 프로젝트 규칙을 저장소에 두고 AI가 참고하게 한다.

Cursor Rules 설정 예시
  • Claude Code의 CLAUDE.md 예시.

CLAUDE.md 설정 예시

이때 기준은 이렇게 넓어졌다.

좋은 결과 = 좋은 프롬프트 + 좋은 컨텍스트


⚠️ 6. 문서만 줘도 부족한 이유.

  • 규칙 문서를 줘도, 아래 문제는 그대로 남을 수 있다.

    • 빌드나 테스트가 깨짐

    • 엉뚱한 파일을 수정함

    • 규칙을 읽고도 안 지킴

    • 코드 스타일이 어긋남

  • 쉽게 말하면, 문서는 "이렇게 해"를 알려줄 뿐이고 "진짜 그렇게 했는지"를 검사하진 않는다.

  • Rules만 믿다가 lint, test에서 한 번에 깨지는 경험을 몇 번 하고 나서야, 다음이 보이기 시작했다.


🔧 7. Harness Engineering : 일할 환경을 만들기.

  • 이제는 "뭐라고 말할지"보다, AI가 이 프로젝트에서 어떻게 일하게 할지를 설계하는 쪽으로 관심이 옮겨졌다.

  • Martin Fowler는 이렇게 말한다.

Agent = Model + Harness

  • 쉽게 풀면 이렇다.

    • Model: AI 자체 (똑똑한 엔진)

    • Harness: 그 엔진이 일하는 바깥 환경 (규칙, 도구, 검사)

  • Harness Engineering그 바깥 환경을 잘 짜는 일이다.

  • 예를 들면 이런 것들이다.

    • Rules, Skills (어떻게 일할지)

    • Hooks, Memory (언제 끼어들고, 무엇을 기억할지)

    • Context (무엇을 참고할지)

    • Lint, Test, Review, Workflow (결과를 어떻게 검사하고 흘릴지)

  • 모델이 조금 더 좋은 것보다, 어떤 규칙과 검사 안에 두느냐가 체감이 더 컸다.

  • 개인적으로는 Rules, Skills에 더해 format, lint, test를 저장소에 고정해 두는 쪽이, "같은 말 반복하기"를 줄이는 데 제일 도움이 됐다.

Agent = Model + Harness 구성

✅ 8. 정리.

한 줄로 보면 이 흐름이다.

말 잘 시키기 (Prompt)
    ↓
미리 알려두기 (Context)
    ↓
일할 환경 만들기 (Harness)
  • Prompt: 이번 요청을 어떻게 말할까

  • Context: 프로젝트 정보를 어떻게 미리 넣을까

  • Harness: AI가 어떤 규칙과 검사 안에서 일하게 할까

결국 "문장을 잘 쓰는 일"에서 시작해, "문서를 잘 주는 일"로 넓어졌고, 지금은 "AI가 일할 자리를 만들어 두는 일"로 관심이 옮겨진 느낌이다. 실무에서는 그 자리를 저장소에 고정해 두는 쪽이 더 편했다.

이전 글
AWS 배포, 한 번에 정리하기.

댓글

불러오는 중...
목록으로