Tool vs Skill 설계 원칙
핵심 구분
Tool = agent가 실행할 수 있는 원자적 능력 Skill = tool들의 조합 + 실행 순서 + 조건
Tool: 파일 다운로드 (url → local_path)
Tool: MD 변환 (file → .md)
Tool: RAG 인덱싱 (file → vector DB)
Skill A: 파일 다운로드
Skill B: 파일 다운로드 → 특정 폴더 저장
Skill C: 파일 다운로드 → MD 변환 → RAG 인덱싱
Tool은 개발자가 만들고, Skill은 사용자가 구성한다.
Tool 설계 원칙
1. 원자성
하나의 tool은 하나의 명확한 입출력을 가져야 한다.
좋음: download_file(url) → local_path
나쁨: download_and_convert_file(url) → md_content ← 두 가지를 함
2. 재사용성
여러 skill에서 공통으로 쓸 수 있어야 한다.
download_file이 있으면:
Skill B: download_file → save_to_folder
Skill C: download_file → convert_to_md → index_to_rag
Skill D: download_file → send_to_email
Skill 설계 — 세 가지 모델
모델 1 — 템플릿 선택
미리 만들어진 Skill 중 선택.
- 일반인 친화적
- 조합 자유도 낮음
모델 2 — 파라미터 커스터마이징
Skill: 파일 다운로드
- 저장 위치: [사용자 입력]
- 변환 여부: [on/off]
- RAG 인덱싱: [on/off]
- 중간 난이도
- 대부분의 케이스 커버
모델 3 — 자연어로 Skill 생성
"회의 30분 전에 첨부파일 다운받아서 Obsidian에 MD로 저장해줘" → LLM이 파싱 → Tool 조합으로 변환
- 가장 이상적
- 안정성 문제 있음
단계별 접근
단기 (개인용): Tool을 원자적으로 구현 + config로 Skill 정의 → 모델 2
장기 (서비스화): 자연어 → Skill 자동 생성 → 모델 3
관련 개념
- overview — 전체 지도
- skill-composition-model — Skill 조합 구체적 구조
- research/harness-engineering/harness-layer-structure — Harness 레이어와의 연결