클로드 코드 서브 에이전트 - 풀려고 하는 문제의 정의부터 생성까지 Part 1 (feat. 클코가 PDF 읽게 해주는 SemTools)

소개

채용 스크리닝(서류 통과자 정하기)를 클로드 코드의 서브 에이전트 기능을 가지고 구현해 보는 시도를 해 보았습니다.

  1. 후보자 이력서를 PDF로 다운로드 받아서 저장해두고

  2. 클로드 코드에서 지휘하는 서브 에이전트를 부르면

  3. 이 에이전트가 여러 평가하는 서브 에이전트들을 불러 이력서를 객관적으로 분석한 뒤, 서류 통과자 추천하기

이걸 만들어 보려해요.

그 첫 단계로 서류 평가 방법의 베스트 프랙티스를 파악하고, 그 방안을 수행하기 위해서 전문가가 협업하는 방법에 대해 리서치한 뒤, 그 방법을 서브 에이전트 형태로 만드는 것까지 시도해 본것을 공유합니다.

진행 영상

진행 방법

0. SemTools 설치

먼저 이력서와 포폴 파일은, PDF, DOC, PPT 로 전달이 되는 경우가 많습니다. 그런데 클로드 코드는 PDF를 바로 파싱하지 못합니다.

그래서 LlamaIndex에서 최근 공개한 SemTools를 먼저 설치해서 클로드 코드가 PDF를 벡터 DB에 넣어서 분석도 하고, 내용을 검색도 하는 기능을 추가했습니다.

(1) 설치

커맨드라인에서 아래와 같이 명령어를 치면 설치됩니다.

npm i -g @llamaindex/semtools

(2) API 키 설정

https://cloud.llamaindex.ai/에 방문해서 가입하면 무료로 API 키 발급이 가능합니다. 그 키를 사용해서 환경 변수를 설정합니다. 아래 코드에 API 키를 넣은 다음에 홈 디렉토리에 ".parse._config.json"이라는 파일로 저장합니다.

{
  "api_key": "여기에 발급 받은 키 넣기",
  "num_ongoing_requests": 10,
  "base_url": "https://api.cloud.llamaindex.ai",
  "check_interval": 5,
  "max_timeout": 3600,
  "max_retries": 10,
  "retry_delay_ms": 1000,
  "backoff_multiplier": 2.0,
  "parse_kwargs": {
    "parse_mode": "parse_page_with_agent",
    "model": "openai-gpt-4-1-mini",
    "high_res_ocr": "true",
    "adaptive_long_table": "true",
    "outlined_table_extraction": "true",
    "output_tables_as_HTML": "true"
  }
}

(3) CLAUDE.md 설정

설치 안내 페이지에 나온것처럼 예시로 주어진 CLAUDE.md 파일을 프로젝트 폴더에 추가한 뒤, 클로드 코드를 재실행하면, 이제 클로드 코드가 "parse"라는 명령어를 쓸 줄 알게 됩니다.

(4) 테스트

간단히 프로젝트 폴더에 .pdf 파일을 넣고 요약해 달라 했습니다. PDF를 .md 파일로 변환해서 그걸 요약해 주더라구요. API 키가 설정이 안되어 있으면, 직접 PDF를 열어서 "search" 명령을 써서 요약을 해 주기도 합니다.

한국어 텍스트가있는 검은 색 화면

이제 채용 후보자들의 PDF를 클로드 코드가 액세스 할 수 있게 되었습니다.

1. 채용 서류 평가의 문제

제가 직접 서류 평가를 하면서 느껴온 문제는

  • 서류 평가를 직관에 의존해서 하면서 놓치는 평가 항목등을 평가 기준표로 만들어 두어도, 이를 일괄적으로 객관적으로 서류 평가에 적용하는 것이 어렵다.

  • 서류 평가를 할 때 내 배경 지식의 한계가 평가를 편향되게 한다.

    • 예: 내가 알고 있는 회사, 학교, 업무에 대한 평가가 모르는 것 대비 좀 더 정확함

  • 학력, 회사 등 모두가 선호할만한 지표를 선호하다보니 숨겨진 보물 같은 인재를 구분할 능력이 없다

이런 것을 AI를 사용해서 해결해 볼 수 있을 것 같았습니다.

2. 가장 좋은 채용 서류 평가 방법

제가 해온 직관적인 방법 외에 정말 좋은 서류 평가 방법이 분명 있을 거라 생각했습니다. 그래서 이에 대한 리서치를 먼저 시작했습니다. 이때 Claude는 추론 능력에 믿음이 가질 않아서, 챗GPT를 켜고 진행했어요.

증거 기반 채용이라는 용어는 이번에 처음 접했네요

그래서 답으로 얻게 된 가장 좋은 서류 평가 방법은

  • 자유 이력서보다 구조화된 지원서

  • 루브릭 (교육 분야에서는 학습자의 과제 수행 수준을 평가하기 위한 채점 기준)을 가지고 평가

  • 학력/연차 보다는 구조화된 과거 행동/성과 데이터 보기

이라고 합니다.

그래서, AI 응용 엔지니어 포지션에 이런 방법을 적용해 보기로 했습니다. 해당 포지션의 JD는 아래와 같습니다.

# AI 응용 엔지니어 (AI Application Engineer)

**직무 요약**: LLM·실시간 음성·영상 생성·파인튜닝 API와 노코드 도구를 조합해 현업 자동화를 신속히 구축

## **주요 업무**

- 사내 그로스/세일즈/교육 업무에 AI API 활용하여 자동화 및 사내 웹서비스 구축
- GPTers 포털·Bettermode·PortOne·PostgreSQL 연동 및 운영 자동화
- 프롬프트/컨텍스트 엔지니어링, 가드레일·관측성·실험 체계 수립 (경험 없어도 무관)
- 바이브 코딩 후 최소한의 코드 리뷰, 외부 AI 툴 적극 도입으로 빠르게 결과물 도출

## 필수 요건

- Node.js/TypeScript/Next.js/React 실무 경력 3년 이상
- 데이터 모델링(PostgreSQL/Prisma), REST/GraphQL 연동
- 프롬프트/컨텍스트 엔지니어링 기본 이해, 노코드·SaaS 연동 경험

## **우대 요건**

- Tailwind, tRPC, Prisma, PortOne, CloudFlare, Vitest/Playwright
- 클로드 코드 등 AI 코딩 CLI 사용 경험, 가드레일·관측성·실험 체계 수립 경험
- 결제 시스템/프로덕션 운영, 레거시 개선 경험, 각종 노코드 연동

## **이 직무에서 얻게 되는 것**

- 현업에 AI를 적용하여 100x 레버리지를 만드는 다양한 API 활용 개발 경험
- 장기적으로 AI 엔지니어로 성장

JD 외에도 업무에 대한 상세한 내용을 챗GPT와 함께 대화하면서 만들었어요. 너무 길어서 여기 다 담지는 않는데요, 이후 평가표 등을 만들기 위해서는 최대한 상세한 정보를 준비하는게 맞다고 생각해서 준비했습니다.

3. 루브릭 (평가표) 만들고 평가 방법 물어보기

준비한 업무 세부 내용을 챗GPT에게 전달하면서, 루브릭을 짜 달라고 했어요.

한국어 문자 메시지의 스크린 샷
후보자명: __________________  총점: ____ / 100   권고: □합격 □보류 □불합격

[노크아웃 체크]
- Next.js/React/TS/Node 3년+:   □예 □아니오
- Postgres/Prisma:              □예 □아니오
- REST/GraphQL:                 □예 □아니오
- 프롬프트/컨텍스트 기본:      □예 □아니오
- 노코드/SaaS 연동:             □예 □아니오

[항목별 점수(0–5)×가중치]
1) 핵심 스택(20):      __ ×20 = __
2) 데이터·API(15):     __ ×15 = __
3) AI 응용(15):        __ ×15 = __
4) 플랫폼 연동(10):    __ ×10 = __
5) 노코드/바잉(10):    __ ×10 = __
6) 관측/실험(10):      __ ×10 = __
7) 도메인 적합(10):    __ ×10 = __
8) 테스트(5):          __ × 5 = __
9) 실행/도구(5):       __ × 5 = __
10) 문서/운영(5):      __ × 5 = __
가산/감점(±10%):      __

[핵심 증거 링크/문구]
- 리포지토리/데모:
- 프롬프트/체이닝/Eval:
- 결제/웹훅/보안:
- 대시보드/A/B/비용:

최종 코멘트:

평가를 어떻게 해야 하는지도 부가적인 설명이 있었기에, 이 평가를 위해서 어떻게 에이전트를 구성할 수 있는지, 그게 합당한 선택인지도 챗GPT와 대화했어요.

즉, 5-7명의 구성된 전문가 패널이 최적이라 하네요. 그럼 이를 각각 서브 에이전트로 만들어서 스크리닝에 활용하면 될 것 같습니다.

4. 서브 에이전트를 구성하는 방법

서브 에이전트를 구성해서 클로드 코드를 쓰는 것은 복잡한 업무를 클로드 코드가 컨텍스트 윈도우를 잘 절약하게 쓰는 방법으로 실행해서, 사용하는 컨텍스트 윈도가 길어질수록 정확도가 떨어지는 문제를 해결하는 것이 핵심이라 생각합니다.

서브 에이전트 없이도, 그냥 서류 평가 해 달라고 해도 해줍니다. 다만, 이력서에 평가표에 여러 전문가들의 평가 기준까지 다 때려 넣어서 처리한다면, 그 결과의 신뢰성이 넣은 자료가 길수록 떨어집니다.

즉, 한 에이전트가 평가하는 경우, 클로드 코드의 컨텍스트 윈도 전체를 여러 가지 업무를 진행하는데 사용하게 되므로, 정확도가 현저히 떨어집니다. 그래서 (이력서에 나온 회사, 링크까지 다 확인하는) 긴 서류 평가 작업이라면 서브 에이전트로 일을 나눠서 컨텍스트 엔지니어링을 해 주는 것이 맞는 것 같습니다.

서브 에이전트를 만드는 것도 결국 프롬프트를 만드는 것과 별반 다를바가 없기 때문에, 아래와 같이 챗GPT 대화를 이어가면서 바로 만들어 달라 했습니다.

(1) 평가를 담당하는 서브 에이전트 만들기

네 명의 서브 에이전트가 협력할 방안을 지휘 에이전트가 지휘하고 결과를 취합하기 위해서 네 명의 서브 에이전트의 시스템 프롬프트를 한 방에 만들어 보았습니다.

이 에이전트는 로컬의 파일에 대한 접근이 가능하고, 지휘 에이전트와 평가 서브 에이전트는 (컨텍스트 윈도를 공유하지 않으므로) 파일 .md 로 정보를 공유해야 하기 때문에 이에 대한 지침을 알려주었어요.

그리고 지휘 에이전트가 전체 이력서 자료에 있는 링크를 미리 다 뽑아다가 페이지 내용 요약과 함께 주면, 다른 서브 에이전트는 또 그 URL을 뽑아 내는 것을 안해도 되고, 모든 페이지를 방문하기 보다 일부 필요한 곳만 방문하면 되게 됩니다. 이로써 각각의 에이전트가 쓰는 컨텍스트 윈도도 절약하고, 정확도도 올릴 수 있을거라 생각했어요.

(2) 지휘 에이전트 프롬프트 생성

평가를 담당하는 네 명의 서브 에이전트 프롬프트를 얻었으니, 이제 마지막으로 지휘 (오케스트레이션)을 할 지휘 에이전트의 프롬프트를 생성해 달라고 했습니다.

→ 에이전트 프롬프트를 뽑은 전체 대화 내용

screencapture-chatgpt-c-68c10596-52ac-8325-9845-981822d7f8bb-2025-09-10-19_38_13.pdf
11.46MB

(지피터스 임직원용 링크 - 저희가 팀 플랜을 써서 ... 외부 공유 링크를 만들수가 없네요)

5. 클로드 코드에서 에이전트 생성

클로드 코드에서 위에서 만든 에이전트 프롬프트를 바로 .md 파일로 만들어서 ./claude/agents 에 넣는 방법은 비추한다고 들었습니다. 왜냐면, 클로드 코드가 언제 이 에이전트가 쓰여야 할지, 어떤 툴을 쓸 수 있을지 등의 클로드 코드 에이전트로 쓰이기 위한 정보를 넣어서 다듬어 주는 것이 필요하다고 했거든요.

그래서 /agents → Generate with Recommendation 인가 하는 메뉴를 선택하고, 한 줄 입력 창이 나올때 위에서 만든 프롬프트를 하나씩 넣었어요.

아래 그림은 평가 에이전트 중에 첫 번째, 테크 리드 에이전트를 만드는 장면입니다.

이렇게 해서 만들어진 클로드 코드용 에이전트 파일은 챗GPT로 만든 시스템 프롬프트와 비교를 해 보았을 때, 빠진 부분과 잘못된 부분도 있었습니다.

다시 검토해보니, 챗GPT에서 시스템 프롬프트를 만들 때부터 잘못 만들어진 부분이 있더라구요.

  • 인터넷/브라우저 접근 금지를 명시한 것

클로드 코드가 에이전트를 만들면서 빼먹은 부분도 있었습니다.

  • 출력 JSON 스키마를 사용하라고는 하고는 예시 포맷을 주지 않은 것

만들어지는 에이전트들의 내용을 사람이 리뷰하는 것은 필수로 보이네요.

이렇게 에이전트를 가다듬고 스크리닝의 결과도 만들어 보는 것을 다음 주에 해 볼 예정입니다.

결과와 배운 점

저는 사실 클로드 코드에서 서브 에이전트를 만들어 쓰는 것에 대해서 막연하게 많이 느껴졌습니다.

이번 시도를 통해서 좀 더 서브 에이전트를 왜 써야 하는지, 어떻게 만들어서 쓸 수 있을지가 명확해 진 것 같습니다 (물론 갈 길은 머네요).

  • 복잡한 일을 시키면 AI도 한방에 정확히 처리하기 힘들다. 이럴때 서브 에이전트를 써서 일을 시키면 정확도를 높일 수 있다

  • 서브 에이전트를 쓰는 것이 목적이 아니므로, 내가 풀려는 문제를 정의하고 이 문제를 가장 잘 풀 방법을 챗GPT 등 추론을 잘 하는 모델과 대화하다보면, 서브 에이전트 (전문가들)과 함께 해서 해결할 방안을 찾을 수 있다.

  • 그 전문가 AI 에이전트를 위한 프롬프트를 써 달라고 하면 서브 에이전트를 얻을 수 있다.

  • 서브 에이전트 프롬프트를 다 모아서 지휘 에이전트 프롬프트 써 달라고 하면 서브 에이전트들을 지휘 에이전트가 잘 휘할 수 있는 프롬프트를 쉽게 얻을 수 있다

다음주에는 실제로 서브 에이전트를 실행해서 서류 평가를 해 보면서 사람이 했을 때 대비해서 어떤 장점이 있는지, 그냥 원 샷으로 평가를 해 달라고 하는 것과 비교해서 얼마나 정교하게 할 수 있는지 등을 살펴보겠습니다.

도움 받은 글 (옵션)

4
1개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요