oneshot
oneshot
🧙 AI 위자드
🚀 SNS 챌린지 달성자

클로드 코드 웹훅과 유사 서브 에이전트 만들어 보기

소개

시도하고자 했던 것과 그 이유를 알려주세요.

개발자F님의 실습은 컴퓨터 문제로 따라할 수 없었지만, 유사 서브 에이전트를 클로드 코드에서 실행해 보았다.

18기 CTO 개발자 F님의 강의 내용을 나중을 위해 정리해 보았다.

진행 방법

클로버, 클로드

클로드 코드 웹훅과 유사 서브 에이전트 실습

1. 서론: 개발 효율성을 바꾼 만남

18기 CTO 개발자F가 진행하는 "클로드 코드 웹훅과 서브 에이전트" 실습 내용을 정리해 보았습니다.

"강의안이나 자료는 없음. 웹훅(Hooks)이나 서브 에이전트 기능같이 공유하면서 따라하는 시간" 실무 중심의 접근법임.

2. 웹훅의 발견: 작업 완료를 놓치지 않는 마법

2.1 웹훅이란 무엇인가

강사는 웹훅을 "클로드 코드가 어떤 동작을 하기 전에 혹은 하고 난 후에 지정된 행동 후에 강제로 실행되는 동작"이라고 설명했다. 이는 단순한 기능처럼 보이지만, 실제로는 개발자의 작업 패턴을 완전히 바꿀 수 있는 강력한 도구였다.

가장 인상 깊었던 부분은 macOS의 내장 TTS(Text-to-Speech) 기능인 say 명령어와 웹훅을 연결하는 데모였다. 강사가 터미널에서 say "안녕하세요" 명령을 실행하자 실제로 음성이 출력되는 것을 들을 수 있었다.

.2 실제 활용: 작업 완료 알림 시스템

웹훅의 실용성은 'stop' 훅에서 극명하게 드러났다. 이는 "클로드가 리스폰스를 끝내고 멈췄을 때 발동하는 훅"으로, 다음과 같이 설정되어 있었다:

say -v Luna "작업 완료"

강사가 간단한 서버 실행 명령을 클로드 코드에 요청한 후, 작업이 완료되자 실제로 "작업 완료"라는 음성 알림이 들렸다.

윈도우에서도 소리가 날까? Windows Powershell 에 프롬프트를 넣자마다 "작업완료"라는 소리가 들려왔다. (엉? 내 것도 소리가 나네!)

powershell -Command "Add-Type -AssemblyName System.Speech; (New-Object System.Speech.Synthesis.SpeechSynthesizer).Speak('작업 완료')"

'작업완료'를 '안녕하세요'로 고치니 '안녕하세요'라는 소리가 들려왔다. (신기방기)

이 이외에도 여러가지 입력을 해보고 소리를 들어보았다.

  • 작업 시작했어요

  • 오류가 발생했어요

  • 특정 키워드를 감지했어요

powershell -Command "Add-Type -AssemblyName System.Speech; (New-Object System.Speech.Synthesis.SpeechSynthesizer).Speak('안녕하세요')"
파일 목록을 보여주는 창의 스크린 샷

2.3 개발자의 멀티태스킹 혁명

#계속 따라하고 싶었으나 현재의 나의 컴이 문제가 있다고 claude가 알려 주었다.

  • 현재 사용 중인 것: Claude Desktop 앱 (또는 Claude.ai 웹버전)

  • 서브 에이전트 기능: 현재 인터페이스에서는 지원되지 않음

  • 오류 발생: 앱 설정 파일에 문제가 있음 (두 번째 이미지)

그래서 claude의 도움을 받아 '의사 서브 에이전트 만들기'를 만들어 보기로 했다.

너는 이제부터 "디버깅 전문가"야.
역할:
- 코드의 문제점만 찾아줘
- 수정 방법은 제안하지 마
- 읽기 쉬운 보고서 형식으로 답변해줘
이해했으면 "디버깅 전문가 모드로 전환 완료"라고 답변해줘.

Clude의 대답

**디버깅 전문가 모드로 전환 완료**
이제부터 저는 디버깅 전문가로서 다음과 같이 작업하겠습니다:
✅ **수행할 작업:**
- 코드의 문제점과 버그 식별
- 논리적 오류 및 구문 에러 발견
- 성능 이슈 및 잠재적 위험 요소 분석
- 읽기 쉬운 보고서 형식으로 결과 제시
🚫 **수행하지 않을 작업:**
- 코드 수정 방법 제안
- 개선된 코드 작성
- 해결책 제시
분석할 코드를 제공해 주시면 문제점만을 명확하게 식별해서 보고서로 작성해드리겠습니다.

테스트

다음 코드를 분석해줘:
function addNumbers(a, b) {return a + b}
console.log(addNumbers(5))

Claude 대답

# 코드 디버깅 분석 보고서
## 📋 **분석 대상**
```javascript
function addNumbers(a, b) {return a + b}
console.log(addNumbers(5))
```
## 🔍 **발견된 문제점**
### **1. 매개변수 불일치 오류**
- **문제**: 함수 `addNumbers`는 2개의 매개변수 (`a`, `b`)를 요구하지만, 호출 시 1개의 인수만 전달됨
- **결과**: 두 번째 매개변수 `b`가 `undefined`로 설정됨
### **2. 예상치 못한 연산 결과**
- **문제**: `5 + undefined` 연산이 수행됨
- **결과**: `NaN` (Not a Number) 값이 반환됨
### **3. 코드 스타일 이슈**
- **문제**: 함수 선언문 끝에 세미콜론이 누락됨
- **영향**: 일부 코딩 표준에서 권장하지 않는 형태
## 📊 **심각도 평가**
- **치명적**: 매개변수 불일치로 인한 기능 오작동
- **경미**: 세미콜론 누락
## 🎯 **예상 실행 결과**
```
NaN
```

다른 전문가 만들기 - 보안 전문가

너는 이제부터 "보안 전문가"야.
역할:
- 보안 취약점만 찾아줘
- 위험도를 1-10으로 평가해줘
- 간단한 설명만 해줘
이해했으면 "보안 전문가 모드 활성화"라고 답변해줘.

클로드 답변

보안 전문가 모드 활성화
보안 취약점 분석을 위한 코드, 시스템, 또는 구성을 제공해주시면 검토하겠습니다. 위험도 평가와 간단한 설명을 포함하여 분석 결과를 제공하겠습니다.
분석할 대상을 공유해주세요.

보안 취약점 분석 의뢰

이 코드에 보안 문제가 있나요?
<script>
document.getElementById("userInput").innerHTML = userText;
</script>

claude 답변

보안 취약점 발견
취약점: XSS (Cross-Site Scripting)
위험도: 9/10
설명:
innerHTML로 사용자 입력(userText)을 직접 삽입하면 악성 스크립트 실행 가능합니다.
예시 공격:
javascriptuserText = "<img src=x onerror=alert('XSS')>";
해결방법:
javascriptdocument.getElementById("userInput").textContent = userText;
// 또는 입력값 검증/이스케이프 처리

성능 전문가 만들기

너는 이제부터 "성능 최적화 전문가"야.
역할:
- 성능 문제점만 찾아줘
- 예상 개선 효과를 %로 표시해줘
- 우선순위 순서로 나열해줘
- 읽기 쉬운 보고서 형식으로 답변해줘
이해했으면 "성능 전문가 모드 활성화 완료"라고 답변해줘.

클로드

성능 전문가 모드 활성화 완료
성능 분석을 위한 코드, 시스템 구성, 또는 애플리케이션을 제공해주시면 다음 형식으로 보고서를 작성하겠습니다:
**📊 성능 최적화 분석 보고서**
- 우선순위별 성능 문제점 식별
- 예상 개선 효과 (% 단위)
- 구체적인 최적화 방안 제시
분석할 대상을 공유해주세요.

1 성능 테스트 의뢰

이 코드의 성능 문제를 분석해주세요:
function updateList() {
    const list = document.getElementById('myList');
    list.innerHTML = ''; // 기존 내용 삭제
    for (let i = 0; i < 1000; i++) {
        const item = document.createElement('li');
        item.textContent = '항목 ' + i;
        list.appendChild(item);
        // 매번 스타일 계산
        item.style.color = 'red';
        item.style.fontSize = '14px';        
        // 불필요한 DOM 쿼리
        const allItems = document.querySelectorAll('li');
        console.log('현재 항목 수:', allItems.length);
    }
}

성능 테스트 결과

**📊 성능 최적화 분석 보고서**
## 🚨 발견된 성능 문제점
### **우선순위 1: DOM 쿼리 남용** 
- **문제:** 반복문 내 1000번 `querySelectorAll` 실행
- **예상 개선 효과:** **85-90%**
- **해결방안:** 쿼리 결과 캐싱 또는 카운터 변수 사용
### **우선순위 2: 개별 DOM 조작**
- **문제:** 1000번의 개별 `appendChild` 호출
- **예상 개선 효과:** **60-70%**
- **해결방안:** DocumentFragment 일괄 처리
### **우선순위 3: 반복적 스타일 설정**
- **문제:** 매번 개별 스타일 속성 설정
- **예상 개선 효과:** **30-40%**
- **해결방안:** CSS 클래스 사용
### **우선순위 4: 불필요한 로깅**
- **문제:** 1000번 console.log 실행
- **예상 개선 효과:** **10-15%**
- **해결방안:** 로깅 제거
## ⚡ 최적화된 코드 예시
```javascript
function updateList() {
    const list = document.getElementById('myList');
    list.innerHTML = '';   
    const fragment = document.createDocumentFragment();    
    for (let i = 0; i < 1000; i++) {
        const item = document.createElement('li');
        item.textContent = '항목 ' + i;
        item.className = 'list-item'; // CSS 클래스 사용
        fragment.appendChild(item);
    }
    list.appendChild(fragment); // 한 번에 추가
}
```
**전체 예상 성능 향상: 80-95%**

🎉 결론: 성능 전문가가 정확히 분석!

원래 코드의 문제:

  • 매우 비효율적인 방식으로 작업

  • 불필요한 반복 작업 1000번

  • 10초 걸릴 일을 1초로 단축 가능

성능 전문가의 역할:

  • ✅ 문제점만 정확히 찾아냄

  • ✅ 우선순위 올바르게 매김

  • ✅ 개선 효과 수치로 제시

  • ✅ 보고서 형식으로 깔끔하게 정리

성능 전문가가 우리 코드의 "시간 낭비 요소"들을 정확히 찾아냄

테스트 2: 비효율적인 배열 처리

이 코드도 성능 분석 부탁드립니다:

function processData() {
    let result = [];
    let data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    
    for (let i = 0; i < data.length; i++) {
        for (let j = 0; j < data.length; j++) {
            result.push(data[i] * data[j]);
        }
    }
    
    return result.sort().reverse();
}

테스트 결과

**📊 성능 최적화 분석 보고서**

## 🚨 발견된 성능 문제점

### **우선순위 1: 중첩 반복문 (O(n²) 복잡도)**
- **문제:** 이중 for문으로 100번 연산 (10×10)
- **예상 개선 효과:** **70-80%** (데이터 크기에 따라 급격히 증가)
- **해결방안:** 알고리즘 최적화 또는 필요시에만 계산

### **우선순위 2: 비효율적 배열 조작**
- **문제:** `sort()` + `reverse()` 이중 순회
- **예상 개선 효과:** **15-25%**
- **해결방안:** `sort((a, b) => b - a)` 한 번에 내림차순 정렬

### **우선순위 3: 반복적 배열 확장**
- **문제:** 100번 `push()` 호출로 배열 재할당 발생
- **예상 개선 효과:** **10-20%**
- **해결방안:** 미리 배열 크기 할당 또는 한 번에 생성

### **우선순위 4: 확장성 부족**
- **문제:** 데이터 크기 증가시 성능 급격히 저하
- **예상 개선 효과:** **데이터 크기별 상이**
- **해결방안:** 캐싱 또는 지연 계산 적용

## ⚡ 최적화된 코드 예시
```javascript
function processData() {
    const data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    const len = data.length;
    
    // 미리 크기 할당
    const result = new Array(len * len);
    let index = 0;
    
    for (let i = 0; i < len; i++) {
        for (let j = 0; j < len; j++) {
            result[index++] = data[i] * data[j];
        }
    }
    
    // 한 번에 내림차순 정렬
    return result.sort((a, b) => b - a);
}
```

**전체 예상 성능 향상: 40-60% (작은 데이터셋 기준)**
**큰 데이터셋(1000+ 항목): 80-95% 향상 가능**

🎉 결론: 알고리즘이 얼마나 중요한지 보여주는 사례

핵심 교훈:

  • 작은 데이터에서는 차이가 미미함

  • 큰 데이터에서는 하늘과 땅 차이!

  • 미래를 생각한 코딩이 중요함

성능 전문가의 정확한 분석:

  • ✅ 알고리즘 복잡도 문제 정확히 발견

  • ✅ 데이터 크기별 영향도 예측

  • ✅ 실용적인 개선 방안 제시

  • ✅ 우선순위 올바르게 설정

간단히 말하면: 성능 전문가가 "시간 폭탄"을 미리 찾아낸 것임! 🕒💣

테스트 3: 메모리 누수 위험 코드

성능 전문가님, 이 코드는 어떤가요?

function createButtons() {
    for (let i = 0; i < 100; i++) {
        const button = document.createElement('button');
        button.textContent = '버튼 ' + i;
        
        button.addEventListener('click', function() {
            console.log('버튼', i, '클릭됨');
            // 복잡한 작업들...
            const heavyObject = new Array(1000000).fill('데이터');
        });
        
        document.body.appendChild(button);
    }
}

테스트결과: 성능 최적화 분석 보고서

**📊 성능 최적화 분석 보고서**

## 🚨 발견된 성능 문제점

### **우선순위 1: 메모리 누수 위험**
- **문제:** 클릭시 100만 개 요소 배열 생성, GC 부담 증가
- **예상 개선 효과:** **80-90%** (메모리 사용량 기준)
- **해결방안:** 불필요한 대용량 객체 생성 제거

### **우선순위 2: 클로저 변수 참조 오류**
- **문제:** 모든 버튼이 동일한 `i` 값(100) 출력
- **예상 개선 효과:** **기능 수정** (성능보다 버그 수정)
- **해결방안:** `let` 블록 스코프 활용 또는 즉시 실행 함수

### **우선순위 3: 개별 DOM 조작**
- **문제:** 100번의 개별 `appendChild` 호출
- **예상 개선 효과:** **40-60%**
- **해결방안:** DocumentFragment 일괄 처리

### **우선순위 4: 이벤트 리스너 중복**
- **문제:** 100개 개별 이벤트 리스너 등록
- **예상 개선 효과:** **20-30%**
- **해결방안:** 이벤트 위임 패턴 사용

## ⚡ 최적화된 코드 예시
```javascript
function createButtons() {
    const fragment = document.createDocumentFragment();
    
    for (let i = 0; i < 100; i++) {
        const button = document.createElement('button');
        button.textContent = '버튼 ' + i;
        button.dataset.index = i; // 인덱스 저장
        fragment.appendChild(button);
    }
    
    // 이벤트 위임
    document.body.addEventListener('click', function(e) {
        if (e.target.tagName === 'BUTTON') {
            const index = e.target.dataset.index;
            console.log('버튼', index, '클릭됨');
            // 실제 필요한 작업만...
        }
    });
    
    document.body.appendChild(fragment);
}
```

**전체 예상 성능 향상: 60-80%**
**메모리 사용량: 95% 이상 감소**

결론: 이번 분석의 특별한 점

이전 분석들과의 차이점:

  • 이전: 알고리즘 효율성 문제

  • 이번: 메모리 관리와 기능 버그 문제

왜 더 중요한가:

  • 메모리 누수 → 컴퓨터 전체 성능 저하

  • 기능 버그 → 사용자 경험 완전 파괴

  • 확장성 문제 → 사용자 증가 시 서비스 마비

성능 전문가의 정확한 진단:

  • 심각한 메모리 문제 조기 발견

  • 숨어있는 기능 버그 발견

  • 확장성 문제 사전 예방

  • 실용적인 해결책 제시

성능 전문가가 "시한폭탄" 수준의 문제들을 미리 찾아낸 것임!

🎯 6단계: 성능 전문가 활용 팁

실무에서 이렇게 활용하세요:

성능 전문가님, 이 웹사이트가 느린 것 같은데 
어느 부분을 먼저 개선해야 할까요?

[실제 코드 붙여넣기]

정기 성능 체크:

성능 전문가님, 정기 성능 점검 부탁드립니다.
우선순위별로 개선점을 알려주세요.

🏆 완성된 전문가 팀

  1. 🐛 디버깅 전문가 - 버그와 오류 발견

  2. 🔒 보안 전문가 - 보안 취약점 발견

  3. ⚡ 성능 전문가 - 성능 문제 발견

각각 다른 채팅창에서 전문 분야별로 코드를 분석해줍니다!

🚀 다음 단계 미리보기

성능 전문가이후 할 수 있는 것들:

  • 🎨 UI/UX 전문가 만들기

  • 📝 코드 리뷰 전문가 만들기

  • 🔧 아키텍처 전문가 만들기

(여기까지는 CLAUDE의 도움을 받아 실습한 것이며, 개발자F님의 강의가 이어집니다)

****************************************

2.3 개발자의 멀티태스킹 혁명 (이하 관광기: 언제인가는 나도 따라 할 수 있을 것)

강사는 이 기능의 진가를 다음과 같이 설명했다:

"저 같은 경우에는 클로드 코드로 뭔가 작업시키면 진짜 10분 이상씩 동작을 해서 언제 멈출지 몰라서 기다리는 경우들이 있거든요. 근데 동작시켜 놓고 그냥 딴 일 하면 되는 거예요. 왜냐하면 작업이 끝나면 작업 끝났다고 나한테 얘기를 해줄 테니까"

이는 개발자들이 흔히 겪는 문제를 해결하는 완벽한 솔루션이었다. 장시간 소요되는 작업을 기다리면서 시간을 낭비하는 대신, 다른 업무를 처리하다가 알림을 받고 돌아올 수 있게 된 것이다.

2.4 다양한 웹훅 타입 탐색

실습을 통해 클로드 코드가 제공하는 다양한 웹훅 옵션들을 확인할 수 있었다:

  • Tool 사용 전/후: 특정 도구 사용 전후에 실행

  • Notification 전송 시: 알림이 발송될 때 실행

  • User prompt 제출 시: 사용자가 프롬프트를 제출할 때 실행

  • Session 시작/종료 시: 대화 세션의 시작과 끝에 실행

  • Response 중단 시: 클로드가 응답을 멈췄을 때 실행

  • Sub-agent 중단 시: 서브 에이전트가 작업을 마쳤을 때 실행

  • Context 압축 전: 컨텍스트 윈도우가 넘쳐서 압축하기 전에 실행

각 훅은 배치 명령어 기준으로 동작하여, 터미널 환경에 맞는 다양한 명령어를 실행할 수 있었다.

2.5 고급 활용 사례들

강사가 소개한 실제 활용 사례들은 웹훅의 무한한 가능성을 보여주었다:

  1. 로깅 시스템: 사용했던 도구나 명령어를 텍스트 형식으로 자동 기록

  2. 명령어 검증: 실행하려는 배시 명령어가 정상 작동 가능한지 사전 확인

  3. 자동 포맷팅: TypeScript 파일의 자동 포맷팅

  4. 마크다운 수정: 누락된 언어 태그와 포맷팅 문제를 자동으로 수정

  5. 보안 제어: 민감한 파일의 편집을 아예 차단

특히 Next.js나 React 프로젝트에서 작업 완료 후 자동으로 린트 체크를 실행하게 하는 활용법은 매우 실용적이었다.

3. 서브 에이전트: 컨텍스트 관리의 혁신

3.1 컨텍스트 윈도우의 딜레마

웹훅 실습 후 강사는 서브 에이전트 기능으로 넘어갔다. 서브 에이전트의 핵심 가치는 "컨텍스트 보존"에 있다고 강조했다.

클로드 코드를 자주 사용하는 개발자라면 누구나 겪는 문제가 있다. 바로 컨텍스트 윈도우 관리다. 강사는 이를 다음과 같이 설명했다:

"클로드 코드 많이 쓰시는 분들은 이해하실 거예요. 컨텍스트 창 하나를 되게 아껴 쓰잖아요. 컨텍스트 윈도우를 막 쓰다 보면 이게 다 차버려서 금방 컴팩트로 전환되고, 심지어 한 절반쯤 차면 성능이 떨어진 게 실제로 느껴진다고요."

이는 개발자들이 일상적으로 마주하는 현실적인 문제였다. 복잡한 프로젝트일수록 컨텍스트가 빠르게 쌓이고, 이는 성능 저하와 직결된다.

3.2 서브 에이전트의 혁명적 해결책

서브 에이전트는 이 문제를 완전히 다른 방식으로 해결한다. 강사의 설명에 따르면:

"서브 에이전트 내부에 동작하는 그 과정의 컨텍스트는 메인 에이전트에게 전달되지 않아요. 그 안에서만 동작하고 실행과 결과만 넘어오기 때문에 컨텍스트 보존에 진짜 큰 가치를 지니고 있습니다."

이는 마치 별도의 팀원에게 특정 업무를 위임하고 결과 보고서만 받는 것과 같은 개념이었다.

3.3 디버거 에이전트 생성 실습

실습에서는 프론트엔드 웹 애플리케이션 디버깅용 에이전트를 생성했다. 프로세스는 다음과 같았다:

  1. 에이전트 생성 방식 선택: 수동 생성 vs 클로드 자동 생성

  2. 도구 선택: 필요한 도구만 선별 (read_only 툴만 선택)

  3. 모델 선택: Sonnet 모델로 설정

  4. 색상 선택: 디버거답게 노란색으로 설정

  5. 설명 최적화: 명확한 디스크립션 작성

생성된 에이전트의 구조는 매우 체계적이었다:

  • 이름: Frontend Debugger

  • 설명: 프론트엔드 웹 애플리케이션 디버깅 전용

  • 도구: read_only (파일 읽기만 가능)

  • 모델: Sonnet

  • 세부 동작 지침: 구체적인 디버깅 방법론

3.4 서브 에이전트의 동작 원리

강사는 서브 에이전트의 동작을 시각적으로 설명했다:

[전체 컨텍스트 윈도우]
    ↓
[Mother Agent] → [Sub-Agent] → [Output]
    ↑                ↓
[Input]        [Internal Process]
                (컨텍스트 비공유)

"서브 에이전트가 내부적으로 생각하고 파일도 보고 등등등을 할 거예요. 이 출력이 나올 거고 이 사이에 있는 내용은 Mother 입장에서는 굳이 볼 필요가 없어요. 정리된 출력 결과만 주는 거죠."

3.5 실제 동작 확인

실습에서 디버거 에이전트를 실행해보니, 실제로 별도의 프로세스로 동작하는 것을 확인할 수 있었다. Ctrl+R을 누르면 서브 에이전트의 내부 동작을 실시간으로 볼 수 있었고, 복잡한 분석 과정을 거쳐 최종 결과만 메인 채팅에 전달되는 것을 확인했다.

4. 에이전트 체이닝: 팀워크의 구현

4.1 베스트 프랙티스와 설계 원칙

강사는 서브 에이전트 사용 시 중요한 베스트 프랙티스를 강조했다:

  1. 단일 책임 원칙: "하나의 서브 에이전트가 모든 것을 하도록 하지 말고 단일하고 명확한 책임을 가진 서브 에이전트를 생성해라"

  2. 명확한 지시: "서브 에이전트한테는 최대한 명령을 적게, 명확하게 시키는 걸 추천"

  3. 필수 도구만 선택: "그냥 무작정 다 넣게 되면 성능이 많이 떨어지고 부적절한 동작을 할 수 있기 때문에 반드시 꼭 필요한 도구만 사용"

4.2 에이전트 체이닝의 실제 적용

강사가 보여준 에이전트 체이닝 예시는 매우 인상적이었다:

  1. Code Analyzer 에이전트로 성능 문제 분석

  2. Optimizer 에이전트로 코드 개선 수행

"이런 애들을 가지고 일을 쪼개는 거죠. 사람이 여러 명이 일하는 것처럼. 컨텍스트 창 관리를 하면서 사용할 수 있고."

4.3 지능적 에이전트 선택

더 놀라운 것은 동적 에이전트 선택 기능이었다. 강사는 다음과 같이 설명했다:

"클로드 코드가 컨텍스트를 기반으로 서브 에이전트를 지능적으로 선택하게 할 수 있어요. 디스크립션을 잘 작성해놓으면 필요한 상황에 필요한 동적인 서브 에이전트를 선택해서 일을 한다."

이는 MCP(Model Context Protocol)의 도구 선택과 같은 방식으로, 메인 에이전트가 상황에 맞는 적절한 서브 에이전트를 자동으로 선택하는 것이다.

5. 통합 워크플로우: 훅과 에이전트의 시너지

5.1 완전 자동화 시스템 구축

강의 후반부에서 강사는 웹훅과 서브 에이전트를 결합한 강력한 워크플로우를 시연했다. 서브 에이전트 완료 시에도 별도의 훅을 설정할 수 있어, 다음과 같은 명령어로 알림을 받을 수 있었다:

say "서브 에이전트 동작 완료"

5.2 장시간 작업의 혁신

"기존에 10분 정도 혼자 돌았으면 이제 서브 에이전트까지 잘 만들어서 넣으면 20분, 30분, 1시간도 계속 동작하게 하는 것도 가능해요."

이는 개발자가 복잡한 리팩토링이나 대규모 분석 작업을 클로드 코드에 맡기고, 완전히 다른 업무에 집중할 수 있게 해주는 혁신적인 방법이었다.

5.3 역할 분담의 최적화

강사는 다음과 같은 역할 분담을 제안했다:

  • 웹훅: "명시적이고 고정적으로 해야 할 작업"

  • 서브 에이전트: "동적이고 지능적으로 동작해야 되는 것"

이 두 기능을 잘 조합하면 "한 프로젝트에 한 번 더 일을 시킬 때 더 많이, 더 구체적이고, 더 잘 시킬 수 있어진다"고 했다.

6. 실무 적용과 결론: 개발 패러다임의 전환

6.1 즉시 적용 가능한 실용성

이날 배운 기능들의 가장 큰 장점은 즉시 적용 가능하다는 점이었다. 복잡한 설정이나 추가 도구 없이, 클로드 코드 내장 기능만으로 개발 효율성을 크게 향상시킬 수 있었다.

실습 직후 다음과 같은 웹훅 설정:

  1. 작업 완료 알림: say "작업 완료"

  2. 에러 발생 알림: say "오류 발생"

  3. 서브 에이전트 완료: say "분석 완료"

6.2 개발 문화의 변화

강사가 언급한 "클로드 코드 관련된 많은 프로덕트들이 나오는데 이걸 잘 세팅하면 굳이 그런 프로덕트들을 따로 쓸 필요는 없는 것 같아요"라는 말이 인상 깊었다.

실제로 웹훅과 서브 에이전트만 잘 활용해도 대부분의 개발 자동화 니즈를 충족할 수 있을 것 같았다.

6.3 프로젝트별 맞춤 설정

웹훅과 서브 에이전트 모두 프로젝트별로 다르게 설정할 수 있어, 각 프로젝트의 특성에 맞는 최적화된 워크플로우를 구축할 수 있다는 점도 큰 장점이었다.

6.4 학습의 연속성

강사는 "여러분 이렇게 시간 따로 마련 안 하면 어차피 다들 공부 안 하시잖아요"라며 지속적인 학습의 중요성을 강조했다. 이날 세션은 단순한 기능 소개를 넘어, 실제로 손으로 만들어보며 체득하는 시간이었다.

6.5 미래 전망

56분이라는 짧은 시간 동안 경험한 웹훅과 서브 에이전트는 단순한 편의 기능을 넘어서는 의미가 있었다. 이는 AI와 함께 일하는 새로운 방식의 시작점이라고 할 수 있다.

개발자가 더 이상 모든 작업을 직접 모니터링하고 관리할 필요 없이, AI 어시스턴트에게 적절히 위임하고 중요한 순간에만 개입하는 새로운 개발 패러다임을 제시하고 있다.

6.6 마무리

"이거만 세팅 잘해도 저는 훨씬 클로드 코드 사용성이 높아지는 것 같아요"라는 강사의 마지막 말처럼, 이날 배운 기능들은 클로드 코드 활용의 새로운 차원을 열어주었다.

웹훅을 통한 자동 알림과 서브 에이전트를 통한 컨텍스트 관리는 개발자의 생산성을 획기적으로 향상시킬 수 있는 강력한 도구임을 확인했다. 무엇보다 이러한 기능들이 복잡한 설정 없이 즉시 사용 가능하다는 점에서 실무 적용성이 매우 높다고 평가할 수 있다.

앞으로는 이 기능들을 프로젝트별로 체계적으로 적용하여, AI와 함께하는 더욱 효율적인 개발 환경을 구축해 나갈 계획이다.

결과와 배운 점

윈도우에서도 웹훅이 돌아간다는 것을 알았다.

개발자F님의 실습은 컴퓨터 문제로 따라할 수 없었지만, 유사 서브 에이전트를 클로드 코드에서 실행해 보았다.

도움 받은 글 (옵션)

18기 CTO 개발자 F님의 실습 강의

CLAUDE

1
2개의 답글

👉 이 게시글도 읽어보세요