Claude Code로 Hermes 스킬 라우터 디버깅한 기록
뭘 하려고 했나
슬랙에서 일 시키는 AI 비서 "슈댕이"를 쓰고 있다. Hermes 프레임워크로 돌아간다.
하나가 다 하려니 어정쩡해서 역할을 쪼갰다.
담당
하는 일
write
원고 피드백, 퇴고, 제목
data
조회수, 통계, 추이
challenge
제출 여부, 마감, 주차 체크
tutor
AI·프롬프트 학습
feedback
종합 피드백
그리고 요청을 알맞은 담당에게 넘기는 라우터를 만들었다. 전화 교환원 역할이다.
안 됐다
설계 끝, 스킬 6개 작성 끝. 슬랙에 말을 걸었더니:
⚠️ The model provider failed after retries.
check gateway logs for diagnostics.
한 줄. 여기서부터 Claude와 로그를 팠다.
원인이 3겹이었다
1. GPT를 Anthropic에 달라고 조르고 있었음
provider=anthropic model=gpt-4-turbo → HTTP 404
모델 이름만 바꾸고 어느 회사에 요청할지는 안 바꿨다. 설정에 Anthropic 키가 남아 있으면 그게 우선으로 잡히는 구조였다.
2. 설정 파일이 깨져 있었음
고쳤는데도 안 됐다. config.yaml을 손으로 만지다 줄이 병합돼 있었다. YAML은 한 줄 깨지면 파일 전체를 못 읽는다. 내 설정이 통째로 무시되고 기본값으로 돌아가고 있었다.
3. 모델 이름이 이 계정에선 안 먹힘
이번엔 400.
'gpt-5-codex' is not supported when using Codex with a ChatGPT account
ChatGPT 구독 계정으로 붙으면 쓸 수 있는 모델이 따로 있었다.
여기서 Claude Code가 좋았던 게, 이름을 바꿔가며 찍어보는 대신 내 계정 토큰으로 사용 가능한 목록을 라이브 조회해왔다. 소스코드 주석에서 "구형 이름은 이 에러를 낸다"고 명시된 부분까지 찾아 원인을 확정했다.
제일 어이없었던 것
스킬 6개가 인식이 안 되는 문제도 있었다. 모델이 가벼워서 그런 줄 알았다.
아니었다.
내가 저장한 곳:
~/.hermes/profiles/default/skills/shuedaeng-router.md
Hermes가 뒤지는 곳:
~/.hermes/skills/<카테고리>/<이름>/SKILL.md
낱개 .md로 던져놨는데, 폴더 안에 SKILL.md라는 이름으로 있어야 인식한다. 애초에 스캔 대상이 아니었다.
옮기니 6개 전부 즉시 인식됐다. 재시작도 필요 없었다.
결과
"이번 주 챌린지 피드백 정리해줘" → feedback / challenge / data 세 개를 불러오고 실제 파일까지 뒤짐. 복합 요청이라 여러 담당 동원.
"팔로워 안 늘던 시기 이야기로 스레드 글 써줘" → write 하나만 불러옴.
무조건 다 읽는 게 아니라 필요한 것만 골랐다. 라우팅이 작동한다는 증거였다.
배운 것
에러 메시지는 증상이지 원인이 아니다. 화면엔 한 줄, 실제론 세 겹이었다. 로그를 봐야 한다.
모델을 의심하기 전에 경로를 확인하자. 나는 모델을 탓하며 시간을 썼다.
추측하지 말고 조회하게 시켜라. "이 이름 맞나요?"보다 "사용 가능한 목록을 조회해줘"가 빨랐다.
설정 파일은 백업하고 만지자. 한 줄 깨지면 전체가 무시되는데, 알려주지도 않는다.
복붙 프롬프트
[도구 이름] 설정을 고쳐줘.
**현재 상태**
- (설정 파일 경로)
- (에러 메시지 전문)
**해야 할 일**
1. 로그·소스코드 기반으로 실제 원인을 찾아줘 (추측 금지)
2. 사용 가능한 값을 라이브로 조회해서 확인해줘
3. 수정 후 검증까지
**주의사항**
- 설정에 API 키 있음. 화면에 출력하지 말고 코드 내부에서만 다뤄줘
- 편집 전 백업
- YAML 들여쓰기·줄바꿈 검증 필수
추측 금지와 키 출력 금지 두 줄이 핵심이다.