GitHub Copilot Harness 이론 약 40분
What's New — 개념편
New Copilot Studio를 ‘업계 원리 → Microsoft 구현’으로 읽습니다. 왜 다시 지었는지, 하네스·에이전틱 루프·스킬·툴·서브에이전트·메모리·워크플로우가 무엇인지 셰프와 주방 비유로 정리합니다.
이 페이지를 읽는 법
New Copilot Studio는 단순한 UI 개편이 아닙니다. Anthropic·OpenAI·GitHub가 코딩 에이전트에서 먼저 검증한 ‘하네스 설계’ 원리를 엔터프라이즈 플랫폼에 옮겨 온 것입니다.
그래서 모든 기능을 “Microsoft가 새로 추가한 기능”이 아니라 “업계 원리 → Microsoft 구현”으로 읽으면 훨씬 정확하게 이해됩니다.
왜 다시 만들었나 — 클래식의 구조적 한계
클래식에서 메이커가 직접 그려야 했던 것
클래식 Copilot Studio에서는 메이커가 아래 세 가지를 모두 손으로 그려야 했습니다.
- Topics — “사용자가 X라고 말하면 → 노드 A → 노드 B”로 이어지는 트리거-응답 트리
- Prompts — 특정 입력 → 특정 출력의 단발성 AI 호출
- 분기·조건·변수 — 모든 경우의 수를 노드로 일일이 연결
결정적 약점 — 모든 경로를 사람이 미리 상상해야 한다
시나리오가 조금만 복잡해져도 분기가 폭발하고, 예상 밖의 말이 들어오면 흐름이 끊깁니다.
| 한계 | 실제로 겪는 증상 |
|---|---|
| 흐름이 깨짐 | 다단계 작업 중간에 예상 못 한 입력이 오면 토픽이 끊김 |
| 분기 폭발 | 복잡해질수록 노드·조건이 기하급수적으로 증가 |
| 도구 호출이 경직 | 어떤 도구를 언제 부를지 메이커가 미리 다 설계 |
| 긴 작업 불가 | “문서를 읽고 분석해 보고서를 써 줘” 같은 장기 작업이 어려움 |
코어 재건축 — 무엇을 바꿨나
Anthropic이 ‘Effective harnesses for long-running agents’에서 정리한 두 가지 실패 모드는, 클래식 봇이 무너지던 모습과 정확히 같습니다.
| Anthropic이 진단한 실패 모드 | 클래식 봇에서의 증상 |
|---|---|
| 한 번에 다 하려다(one-shot) 컨텍스트 중간에 소진 | 다단계 작업이 중간에 끊기고 미완성으로 종료 |
| 진척을 보고 “다 됐다”고 조기 선언 | 핵심 기능이 안 됐는데 대화가 끝나 버림 |
그 결과 얻은 능력
- 지시 준수 강화 — 긴 대화에서도 원래 지침을 놓치지 않음
- 장기·다단계(long-horizon) 작업 — 중간에 무너지지 않고 끝까지
- 재귀적 실행 — 복잡한 문제를 스스로 단계로 쪼개 반복
- 대용량 콘텐츠 + 리치 파일 생성 — 컨테이너에서 Word·PPT·Excel·PDF 산출
- 빌드 경험 단순화 — 구성 탭 9개 → 4개, 추론과 도구 호출을 실시간으로 관찰
하네스 엔지니어링 — 하네스란 무엇인가
가장 중요한 정의
LLM 혼자서는 다음 토큰을 예측하는 것밖에 못 합니다. 파일을 읽거나, API를 호출하거나, 실패를 복구하지 못합니다.
Anthropic은 에이전트를 이렇게 정의합니다 — “에이전트 = LLM이 루프 안에서 자율적으로 도구를 사용하는 것.” 이 루프를 돌려 주는 런타임이 바로 하네스(harness)입니다.
| 하네스가 모델에게 주는 것 | 의미 | 🍳 주방으로 비유하면 |
|---|---|---|
| 도구 접근 | 파일·셸·검색·API 사용 | 칼·오븐·냉장고를 쓸 수 있게 해 줌 |
| 관찰(observation) 피드백 | 도구 실행 결과를 다시 모델 입력으로 | 조리한 음식을 맛보게 해 줌 |
| 반복 제어(loop control) | 끝날 때까지 판단 → 실행 → 관찰 반복 | 요리가 완성될 때까지 계속 조리하게 함 |
| 컨텍스트 관리 | 무엇을 언제 모델에게 보여 줄지 결정 | 도마 위에 지금 필요한 재료만 올려 줌 |
업계는 이미 이 길로 수렴했다
2025년을 거치며 가장 검증된 에이전트들은 예외 없이 CLI 기반 코딩 하네스 형태로 모였습니다. 우연이 아닙니다.
| 사례 | 형태 | 특징 |
|---|---|---|
| Claude Code (Anthropic) | 터미널 agentic CLI | 코드베이스를 읽고·수정·테스트. 필요한 것만 그때그때 로드 |
| GitHub Copilot CLI | 셸·파일·도구 호출 코딩 하네스 | 터미널에서 작업을 끝까지 완수 |
| OpenAI Codex CLI | 코드 실행 하네스 | 동일 계열 |
| New Copilot Studio | 엔터프라이즈 에이전트 플랫폼 | 같은 하네스 패턴을 업무 에이전트로 이식 |
왜 하필 ‘코딩’ 하네스인가?
코딩은 에이전트 능력이 가장 먼저, 가장 혹독하게 검증된 분야이기 때문입니다. 코드를 다루려면 반드시 다음 네 가지를 해내야 합니다.
- 여러 파일을 읽고 맥락을 종합한다
- 어떤 도구(컴파일·테스트·검색)를 쓸지 정확히 고른다
- 여러 단계로 추론한다
- 실패하면(테스트가 깨지면) 원인을 보고 복구한다
황금률 — 과설계하지 마라
Anthropic은 이렇게 말합니다. “하네스의 모든 구성요소는 ‘모델이 혼자 못 하는 것’에 대한 가정을 담고 있다. 그 가정은 틀릴 수도 있고, 모델이 좋아지면서 낡을 수도 있다. 가장 단순한 해법에서 출발하고, 필요할 때만 복잡도를 더하라.”
실제로 Anthropic은 이전 모델용으로 만든 정교한 보조 장치를 다음 모델에서 덜어 냈습니다. 모델이 스스로 계획을 더 잘 세우게 되자, 하네스가 오히려 가벼워진 것입니다.
| 메이커의 일 | |
|---|---|
| 이전 | 대화 흐름(순서도)을 손으로 그림 — 모든 분기를 미리 상상해야 했음 |
| 이후 | 하네스에게 줄 지침·스킬·도구를 설계 — 그리고 처음부터 과설계하지 않음 |
에이전틱 루프 & 스킬
루프 한 바퀴
의도 해석 → 도구/스킬 선택 → 슬롯 필링(입력값 채우기) → 실행 → 관찰 → 판단(완료?) → (필요하면) 반복
스킬·툴·서브에이전트·메모리는 독립 기능처럼 보이지만, 전부 이 루프 안에서만 의미를 가집니다.
| 새 오케스트레이터가 강화한 4가지 | 무슨 뜻인가 |
|---|---|
| ① 정확한 도구 선택 + 슬롯 필링 | 첫 시도에 올바른 도구를 올바른 입력으로 호출 |
| ② 재귀적 작업 실행 | 문제를 단계로 쪼개 끝까지 체계적으로 반복 |
| ③ 적응(adaptation) | 실패·에러가 나면 자동 재시도하거나 다른 길을 찾아 계속 |
| ④ 장기 지시 준수 | 긴 세션 내내 원래 지침을 유지 |
신뢰성에 집중하는 진짜 이유 — 두 가지 실패 상황
| 실패 상황 | 무슨 일이 생기나 | 해법 |
|---|---|---|
| ① 컨텍스트 일관성 상실 + “context anxiety” | 컨텍스트 창이 차오르면 일관성을 잃고, 한계가 가까워지면 작업을 조급하게 마무리 | Compaction(대화를 요약·압축해 계속) 또는 Context reset(비우고 새 에이전트에 상태 인계) |
| ② 자기 평가의 관대함 | 자기 결과물을 평가하라고 하면 거의 항상 과대 칭찬 | 작업자(generator)와 평가자(evaluator)를 분리 |
예시 — 송장 승인, 이전과 지금
| 구분 | 동작 방식 |
|---|---|
| 이전 모델 | “송장 PDF에서 금액 추출 → 임계값 비교 → 승인/반려”를 노드로 일일이 분기. 새 PDF 양식이 오면 깨짐. |
| 새 모델 | 목표(“송장을 검토해 승인 여부를 판단”)와 도구만 주면, 루프가 알아서 추출·비교·판단하고 실패하면 재시도하거나 다른 방법을 시도. |
스킬 — 필요할 때만 꺼내 쓰는 markdown 지침
스킬은 “X를 어떻게 하는지”를 markdown으로 한 번 적어 두고, 필요할 때만 불러 쓰는 재사용 지침입니다. 단순한 편의 기능이 아니라 Anthropic이 말하는 “just-in-time 컨텍스트”의 엔터프라이즈 구현이고, GitHub Copilot·Claude 스킬까지 그대로 가져올 수 있는 업계 호환 자산입니다.
| 특징 | 설명 |
|---|---|
| 온디맨드 로드 | 평소엔 컨텍스트에 넣지 않다가, 그 작업이 필요해질 때만 로드 |
| use case 패키징 | 언제·어떻게 정보를 묻고 보여 줄지까지 한 묶음으로 |
| 여러 에이전트 재사용 | 한 번 만들면 조직 내 여러 에이전트가 그대로 재사용 |
| 외부 자산 재활용 | GitHub Copilot·Claude Code 등의 공개 스킬(SKILL.md)을 import |
왜 ‘필요할 때만’ 로드할까? — 컨텍스트 엔지니어링
- 컨텍스트는 유한한 자원(attention budget) — 컨텍스트가 길어질수록 모델의 주의가 얇게 퍼집니다.
- Context rot(컨텍스트 부패) — 토큰 수가 늘수록 모델이 정보를 정확히 떠올리는 능력이 떨어집니다. 큰 컨텍스트 창이 답이 아닙니다.
- 목표는 “원하는 결과를 낼 가장 작은 고신호 토큰 집합”을 찾는 것입니다.
- Just-in-time 검색 — 파일 경로·쿼리·링크 같은 가벼운 식별자만 들고 있다가, 실행 중에 필요한 것만 불러옵니다.
클래식 구성요소는 어디로 갔나
| 클래식 | New Copilot Studio | 설명 |
|---|---|---|
| Topics | 스킬 + 워크플로우 | 스킬이 “특정 상황의 응답 방법”을, 워크플로우가 “여러 액션 엮기”를 담당 |
| Prompts | 스킬(에이전트) / agent node(워크플로우) | 새 코어로 전환되며 대체 |
툴·MCP & 서브에이전트
툴 설계 3원칙 (Anthropic)
| 원칙 | 의미 |
|---|---|
| ① 토큰 효율적으로 | 결과를 간결하게 반환한다 |
| ② 기능이 겹치지 않게 | “엔지니어조차 어떤 툴을 써야 할지 단언 못 하면, 에이전트는 절대 더 잘하지 못한다.” |
| ③ 최소한의 툴셋으로 | 가장 흔한 실패가 비대한 툴셋(기능 과잉·모호한 선택지) |
툴의 두 축 — 커넥터와 MCP
| 축 | 정체 / 성격 |
|---|---|
| 커넥터 | Power Platform의 1,000개 이상 커넥터 — Microsoft 고유 자산, 검증된 엔터프라이즈 연결 |
| MCP | Model Context Protocol — 에이전트와 도구를 잇는 업계 표준. Microsoft 독점이 아님 |
서브에이전트 — 본질은 ‘컨텍스트 격리’
메인 에이전트가 큰 계획을 잡고, 전문 서브에이전트가 깨끗한 컨텍스트에서 집중 작업합니다. 서브에이전트는 수만 토큰을 써 가며 깊이 파고들지만, 메인에게는 압축된 요약(보통 1,000~2,000 토큰)만 돌려줍니다. 메인은 종합과 판단에만 집중하는 관심사의 분리입니다.
New Copilot Studio는 클래식의 child agent를 버리고 “스킬 + 연결된 에이전트”로 재구성했습니다.
| 구성요소 | 역할 |
|---|---|
| 스킬 | 재사용 가능한 역량을 패키징 |
| 연결된 에이전트 | 다른 에이전트를 끌어와 협업 |
메모리·워크플로우·클래식 매핑
메모리의 3대 기법 (Anthropic)
| 기법 | 무엇을 하나 | 언제 쓰나 | 🍳 비유 |
|---|---|---|---|
| ① Compaction (압축) | 컨텍스트가 한계에 가까우면 대화를 요약·압축해 이어 감. 중요한 결정·미해결 이슈는 보존, 중복 출력은 버림 | 왕복이 많은 대화 | 긴 회의를 회의록 한 장으로 정리 |
| ② Structured note-taking | 에이전트가 컨텍스트 밖 파일에 진척을 기록하고 나중에 다시 읽음 | 마일스톤이 뚜렷한 반복 작업 | 교대 근무자의 인수인계 노트 |
| ③ Sub-agent 아키텍처 | 컨텍스트를 격리해 메인을 깨끗하게 유지 | 병렬 탐색이 이득인 리서치 | 분업 — 전문가가 요약만 보고 |
에이전트 + 워크플로우 — 왜 둘을 나누는가
이것은 Anthropic의 “가장 단순한 해법에서 출발하라”와 정확히 일치합니다. 예측 가능한 단계는 결정론으로 싸게, 판단이 필요한 부분만 에이전트로.
워크플로우 디자이너 핵심
| 기능 | 설명 |
|---|---|
| 통합 비주얼 캔버스 | 드래그 앤 드롭으로 단계를 구성하고 전체 흐름을 한눈에 |
| 노드 단위 테스트 | 전체를 돌리지 않고 깨진 한 단계만 콕 집어 테스트 |
| 버전 관리 | 변경을 추적하고 자신 있게 게시 |
| 분석(analytics) | 처음부터 끝까지 프로세스 가시성과 성능 모니터링 |
에이전트와 워크플로우는 서로를 부를 수 있습니다
- 워크플로우 → 에이전트: agent node로 판단이 필요한 단계를 위임
- 에이전트 → 워크플로우: “에이전트가 이 플로우를 호출할 때” 트리거를 가진 워크플로우를 에이전트의 도구로 등록
- “Power Automate랑 뭐가 다른가요?” — 워크플로우는 결정론적 자동화에 에이전트 능력(agent node·인텔리전트 액션·버전 관리)을 섞은 것입니다. 기존 agent flow도 계속 동작하고 변환도 가능합니다.
클래식 → New 매핑표
핵심 변화는 “Topics·Prompts·Child agents”가 “스킬·워크플로우·연결된 에이전트”로 재편됐다는 것입니다.
| 클래식 | New Copilot Studio | 비고 |
|---|---|---|
| Topics | 스킬 + 워크플로우 | 메시지 가로채기 등 일부 확장은 향후 제공 |
| Prompts | 스킬(에이전트) / agent node(워크플로우) | 새 코어로 전환되며 대체 |
| Child agents | 연결된 에이전트 + 스킬 | 끼어들기·멀티 요청에 강함 |
| Agent flows | 워크플로우 | 업그레이드·변환 가능 |
| 구성 탭 9개 | 4개 (Build · Test · Preview · Monitor) | Knowledge·Tools·Channels·Agents는 Build 안의 구성요소 |
| 분리된 지침/지식/도구 | 한 화면 통합 | 풀페이지 테스트 + 추론 과정·도구 호출 실시간 표시 |
Part 1 한 장 정리
| 개념 | 한 줄 요약 | 🍳 주방 비유 |
|---|---|---|
| 하네스 | LLM을 루프로 감싸 도구를 쓰게 하는 런타임 | 주방 전체 |
| 에이전틱 루프 | 해석 → 선택 → 실행 → 관찰 → 판단 반복 | 맛보며 조정하는 셰프 |
| 스킬 | 필요할 때만 꺼내는 markdown 지침 | 레시피 카드 |
| 툴·MCP | 외부에서 행동하는 손발 / 표준 연결 | 조리 도구 / 표준 콘센트 |
| 서브에이전트 | 컨텍스트를 격리해 위임 | 디저트 전담 파티시에 |
| 메모리 | 구조화된 노트 쓰기 | 인수인계 노트 |
| 워크플로우 | 결정론적·반복 작업 | 정해진 순서의 주방 동선 |