【제18회】 사용한 스킬을 오래된 상태로 두지 마라. Hermes Agent는 스스로 SKILL.md를 재작성한다.
요약
본 기사는 Hermes Agent의 심화 활용 가이드로, 사용자가 구축한 스킬(Skill)을 오래된 상태로 두지 않고 스스로 최신 버전으로 재작성하는 방법을 다룹니다. VPS 구동부터 자동 실행, 기억 관리까지 전반적인 고급 기능을 소개하며, 특히 스킬의 연속성과 업데이트 과정을 상세히 설명합니다.
핵심 포인트
- Hermes Agent는 사용한 스킬을 자동으로 재작성하여 최신 상태를 유지할 수 있습니다.
- VPS 환경에서 24시간 구동 및 Docker 격리 등 안정적인 운영 방법을 제시합니다.
- 스킬의 변경 사항은 장부(Log)와 diff 기능을 통해 추적하고 관리할 수 있습니다.
- 자동화된 스케줄링과 메모리 연동을 통해 에이전트의 지능을 지속적으로 향상시킵니다.
시리즈 목차 (탭하여 열기)
제I부 VPS에서 24시간 구동하기
- 제1회 서버 비용은 월 1,800엔으로 충분하다. Hermes Agent는 VPS에서 24시간 계속 움직인다
- 제2회 비밀번호는 더 이상 입력하지 마라. Hermes Agent에 대한 SSH 접속은 키 하나로 가능하다
- 제3회 API 키를 그대로 적지 마라. Hermes Agent의 비밀은 1Password가 보관한다
- 제4회 Hermes Agent를 Docker로 격리하여 구동하는 방법
- 제5회 명령어를 외우지 마라. Hermes Agent는 Discord에서 말만 걸면 움직인다
- 제6회 '멈춰 있다'는 상황을 없애라. Hermes Agent는 systemd로 항상 움직이며, 다운되어도 바로 복구된다
제II부 데스크톱 앱과 브라우저에서 조작하기
- 제7회 Hermes Agent가 Microsoft Store에 왔다. Windows 앱으로 설치하여 VPS에 연결한다 (구 버전부터 교체도)
- 제8회 헤매며 구동하지 마라. Hermes Agent는 브라우저 한 장만으로 내부를 볼 수 있다
제III부 정기 실행・스킬・웹 검색 추가하기
- 제9회 늘 하던 작업을 매번 스스로 하지 마라. Hermes Agent가 정한 시각이나 간격에 따라 자동적으로 처리한다
- 제10회 매번 가르치지 마라. Hermes Agent는 사용할수록 스스로 똑똑해진다
- 제11회 궁금한 정보를 직접 찾아다니지 마라. Hermes Agent가 인터넷으로 조사하고 요점만 정리해 준다
제IV부 기억・말투・스킬 관리하기
- 제12회 취향을 매번 말하지 마라. Hermes Agent는 Memory로 기억한다
- 제13회 메모를 스스로 찾지 마라. Hermes Agent는 Obsidian을 기억으로 읽는다
- 제14회 매번 처음부터 말하지 마라. Hermes Agent는 지난 내용의 이어서 움직인다
- 제15회 기억을 버리지 마라. Hermes Agent는 Claude Code의 연속성을 이어받는다
- 제16회 같은 것을 두 번 조사시키지 마라. Hermes Agent는 작업 기록에서 세컨드 브레인을 만든다
- 제17회 말투가 흔들리게 하지 마라. Hermes Agent의 말하는 방식은 사실 바꿀 수 있다
제18회(본 기사) 사용한 스킬을 오래된 상태로 두지 마라. Hermes Agent는 스스로 SKILL.md를 재작성한다.
전체적인 내용은 Hermes Agent 완전 구축 가이드에 있다.
도입: 6월 17일부터 수정되지 않은 스킬이 매일 아침 배포에 사용되다
매일 아침 7시 뉴스 배포(제9회의 cron, 작업명 morning-news)가 읽는 스킬은 2026년 6월 17일 이후 한 번도 수정되지 않았다. 그 사이에 cron의 사용법이 바뀌었다. 10월 7일에 이전 출력을 보여주며 '이미 전달한 것은 반복하지 않는다'고 지시하는 설정(continuity, 제9회)을 추가했다. 스킬 절차에는 이 내용이 적혀있지 않았다.
Hermes에게 재작성을 요청하자, 2026년 10월 8일 20:05의 요청으로부터 3분 후인 20:08에 스킬이 새로운 버전(v1.3.0)으로 바뀌어 있었다. 변경 사항은 Telegram 답변에서 목록 형태로 받았고, 장부(재작성 기록)에서 재작성을 확인했으며, diff로 차이점을 읽었다. 수정된 스킬로 배포도 1회 구동했다. 재작성을 한 건만 되돌리는 작업도 테스트용 스킬로 시도했다. 이번 회차는 그 절차이다.
이번 회차에서 다루지 않는 것은 사용하지 않는 스킬 정리(Curator)이다. 제19회에서 다룰 것이다.
확인한 것은 Hermes v0.21.5+8509 (2026-10-08)를 VPS에서 구동한 범위이다.
이번 회차의 도달점
스킬을 현재 사용 방식에 맞춰 Hermes에게 재작성하게 하고, 무엇이 바뀌었는지 장부와 diff로 확인하며, 한 건만 되돌릴 수 있는 상태로 만드는 것. 배포는 재작성된 스킬로 1회 구동했다.
제17회 완료 시점과의 차이점을 표로 나타낸다.
| 항목 | 제17회 완료 시점 | 본 회(제18회) 완료 시점 |
|---|---|---|
| morning-news 스킬 | 6월 17일 그대로 (2,116바이트・version 1.2.0) | 10월 8일에 재작성함 (4,513바이트・version 1.3.0) |
| ... | hermes curator rollback로 한 건만 되돌릴 수 있음 | |
| 다음 회차로의 연결고리 | 말투가 결정된 Hermes(제17회) | 사용하지 않는 스킬 정리(제19회) |
이번 회차에서 등장하는 용어를 미리 숙지해 두자.
| 용어 | 의미 |
|---|---|
| 스킬 (Skill) | ~/.hermes/skills/morning-news/SKILL.md와 같이 절차를 작성한 파일. 제10회에서 다룬 것 |
| patch | 스킬을 다시 쓰는 작업. 대체할 부분만 전달하면 일부가 대체됨 |
| patch에 전체를 전달 | SKILL.md를 통째로 대체하는 방식. edit은 구명 |
| 대장 (Ledger) | ~/.hermes/skills/.curator_ledger.jsonl. 수정할 때마다 변경 전과 변경 후 기록이 남음 |
| continuity | cron이 이전 출력을 보여주어 이미 전달한 것을 반복하지 않도록 하는 설정(제9회) |
스킬이 오래될 때
제10회에서 만든 morning-news 스킬은 제11회에서 nano를 사용해 수동으로 전체 내용을 수정했다. 그 후, 2026년 6월 17일부터 수정하지 않았다.
스킬은 누군가 다시 쓰지 않는 한, 작성 당시의 절차 그대로 유지된다. 그 사이에 cron에는 이전 출력을 이어받는 설정(continuity)을 붙였다. 배포하는 사용법은 바뀌었는데, 스킬의 절차는 변하지 않았다. 이 상태를 다음 절에서 화면에 띄워 확인한다.
사전 준비: 백업과 현재 상태
자신의 컴퓨터(이 연재에서는 Windows) 터미널(PowerShell)에서 VPS로 SSH(원격 로그인) 접속을 한다. 이후의 명령어는 모두 VPS 안에서 친다.
ssh admin@hermes-vps
수정하기 전에 스킬 폴더 전체를 복사해 둔다. cp -r
은 폴더 단위로 복제하는 명령어이며, 끝에 붙는 날짜는 구별하기 위한 표식이다.
cp -r ~/.hermes/skills/morning-news ~/morning-news.bak-20261008
현재 상태를 확인한다. ls -la
은 업데이트 날짜가 있는 목록이며, wc -c
은 바이트 수를 세는 명령어이다.
ls -la ~/.hermes/skills/morning-news/
wc -c ~/.hermes/skills/morning-news/SKILL.md

SKILL.md는 2,116바이트이고, 업데이트 날짜는 6월 17일이었다. 다음 명령어로 이 스킬의 수정 기록을 본다.
hermes curator ledger --skill morning-news

화면에는 curator: ledger is empty (or skills.ledger is disabled).
이라고 나왔다. 대장 자체는 2026년 10월 8일 기준으로 322건이 있지만, morning-news의 기록은 0건이었다. 수정하기 전의 기준을 삼는다.
다시 쓰는 방법은 두 가지, 변경 사항은 대장에 남는다
스킬을 다시 쓰는 방법에는 두 가지가 있다.
| 방법 | 움직임 |
|---|---|
| patch (일부만 대체) | 대체하기 전의 문구와 후의 문구를 전달한다 |
| patch에 전체를 전달 (통째로 대체. edit은 구명) | SKILL.md의 전문을 전달한다 |
어떤 방식으로 쓸지는 Hermes가 선택한다. 대장에는 통째든 일부든 patch로 기록된다. 변경 전후는 해시값(내용으로부터 계산한 짧은 식별 값)만 남는다. 이번에는 1회의 요청 안에서, 대장에 patch가 4건 남았다(4건 모두 20:08:29의 같은 초).
수정할 때마다 변경 전과 변경 후가 대장에 남는다. 대장을 보는 명령어와 1건만 되돌리는 명령어는 다음과 같다.
| 목적 | 명령어 |
|---|---|
| 특정 스킬의 수정 기록 보기 | hermes curator ledger --skill <이름> |
| 1건만 되돌리기 | hermes curator rollback <id> |
쓰기 승인(skills.write_approval)
은 기본적으로 꺼져 있다. 이번에도, 승인을 요구받지 않고 수정되었다.
또 하나 더 알아두는 것이 있다. 대화 후에 Hermes가 자동으로 스킬을 고치는 메커니즘은 기본적으로 켜져 있다. 다만, 자동으로 고치는 것은 대화 후의 자동 검토에서 Hermes가 스스로 만든 스킬과 hermes curator adopt <이름>
맡긴 스킬만 그렇다. 대화 속에서 부탁해서 만들게 한 스킬도, 사람이 만든 스킬과 마찬가지로 대상에서 제외된다. morning-news는 제10회 때 스스로 만들었기 때문에, 방치해도 자동으로 수정되지 않는다. 따라서 이번 회차에서는 부탁해서 다시 작성하게 했다. 사용하지 않는 스킬 정리(정리)는 제19회에서 다룰 것이다.
Telegram으로 요청하기
다시 작성은 Telegram을 통해 요청한다. 먼저 /new를 보내고, 새로운 대화로 시작한다(제17회와 같은 이유로, 이전 대화의 연속일 경우 오래된 지침문이 사용될 수 있기 때문이다).
요청할 문구는 다음과 같다.
morning-news 스킬을 현재 사용 방식에 맞춰 다시 작성해 줘. cron에 continuity를 추가했으니, 지난 방송과 같은 주제를 반복하지 않도록 절차에 넣어 줘. 수정했다면 어디가 바뀌었는지 목록으로 알려 줘.

Hermes는 morning-news를 v1.3.0으로 업데이트했다고 답했다. cron 설정은 변경되지 않았으며, 기존 아침 7시 잡에서 continuity가 유효한 것을 확인했다고도 적혀 있었다. 변경점은 6가지였다.
- 매번 continuity로 전달되는 지난 방송 내용을 먼저 확인하는 절차를 추가함
- 표현이나 게재 매체가 달라도 같은 주제라면 재게재하지 않음
- 속보(続報)는 최근 24시간 내에 중요한 신정보가 있는 경우에 한해 '속보'라고 명시함
- 새로운 주제가 5건에 미달하는 날은 기출 뉴스(既出ニュース)로 채우지 않고, 확인된 건수만 게재함
- 웹 기사와 X 게시물이 같은 뉴스는 별 항목으로 나누지 않음
- 검증 항목과 주의점에 중복 확인・속보 조건・취득 건수 대조를 추가함
답변에 나온 변경점들을 다음 절에서 실제 파일과 비교한다.
변경 사항 확인하기
장부 보기
Hermes의 보고만으로 끝내지 않고, 장부(ledger)로 확인한다.
hermes curator ledger --skill morning-news --limit 5

패치가 4건이었고, 모두 실행자(actor)가 agent였으며 스킬은 morning-news였다. 다시 작성하기 전에는 0건이었으므로, 이 4건이 이번 요청으로 늘어난 부분이다.
차이점 읽기
다음으로 백업본과 다시 작성된 SKILL.md를 diff로 비교한다. diff -u는 두 파일의 차이를 사라진 줄(-)과 늘어난 줄(+)로 표시하는 명령어이다.
diff -u ~/morning-news.bak-20261008/SKILL.md ~/.hermes/skills/morning-news/SKILL.md

절차의 1번째에 지난 방송을 확인하는 항목이 들어갔다. 5번째에는 continuity에 의한 중복 회피가 들어갔다. 취득 상황 형식에는 'x_search는 호출했으나 게시물 미채택'이라는 작성 방식과 '취득 건수'가 추가되었다.
확인 항목과 주의점도 늘어났다.

확인 항목과 주의점에도 중복・속보・건수 항목이 추가되었다. Telegram에서 받은 6가지 내용은 모두 차이점 안에 있었다. 차이점에는 이 외에 '확인된 범위를 넘어서 단정하지 않기', '대화에서의 요청은 3~5개 항목을 기준으로 하기', '지정한 형식이나 템플릿이 있으면 우선하기'의 추가와, 검색 사용 방식(Firecrawl・Tavily・web_extract) 기술한 내용 삭제도 포함되어 있었다. 바이트 수는 2,116바이트에서 4,513바이트로 늘어났다.
다시 작성된 스킬로 방송 움직이기
다음 날 아침 7시의 방송을 기다릴 수도 있지만, 이번 회차에서는 다음 명령어로 당일에 한 번 수동으로 실행했다. hermes cron run은 지정한 잡(job)을 다음 스케줄러 순회에서 한 번 즉시 실행하는 명령어이며, 끝 부분은 morning-news의 잡 ID(제9회에서 확인한 것)이다.
hermes cron run 18dd6b7a1580
2026년 10월 8일 20:17에 방송이 도착했다.

항목은 3건이었고, 취득 상황은 'X 검색 호출 완료・게시물 미채택', '취득 건수: 3'이었다. 새로운 절차에 작성된, 5건에 미달하는 날은 확인된 건수만 게재하기, 호출했지만 게시물을 채택하지 않은 경우의 작성 방식과 동일한 결과가 나왔다.
제목 날짜는 '2026-10-09 아침 뉴스'로 나왔지만, 실제로는 10월 8일 밤에 수동으로 실행한 회차이다.
1회 방송이므로 '좋아졌다'고 말할 수는 없다. 확인된 것은, 다시 작성된 스킬로 방송이 움직였다는 것과, 취득 상황의 작성 방식이 새로운 절차대로 나왔다는 점까지다.
1건만 되돌리기
수정(書き換え) 결과가 마음에 들지 않을 때, 장부(台帳)의 ID를 지정하여 해당 건만 되돌릴 수 있다. 매일 아침 사용하는 morning-news는 되돌리지 않고, 10월 7일에 만든 테스트용 스킬인 plain-japanese-v2로 시도했다. 이 스킬은 Hermes에게 부탁해서 만들게 한 것이며, 만든 직후 같은 흐름으로 한 번 다시 수정(書き直し)했었다. 그 재수정(patch)의 장부 ID가 fba21d45fb0c이다.
hermes curator rollback fba21d45fb0c
![VPS에서 hermes curator rollback fba21d45fb0c를 실행한 화면. 되돌릴 대상으로서, action이 patch, skill이 plain-japanese-v2, actor가 agent, when이 2026-10-07, files가 1로 표시되어 있다. Restore this mutation's before-state? [y/N]에 y라고 답하자, 1 file(s) restored, 0 removed. 라고 나오고 Safety entry 5bda0b640bfb가 되돌리기 직전의 상태를 기록했다고 표시된다](https://static.zenn.studio/user-upload/deployed-images/25cc14644b7f2e653de18a7f.png?sha=83f389027132cf9516c4a27651e52b224589486e)
되돌릴 대상이 표시되고, Restore this mutation's before-state? [y/N]라고 확인되었다. y라고 답하자, 1 file(s) restored, 0 removed.가 나왔다. 이어서 Safety entry 5bda0b640bfb captured the pre-rollback state.라고 되어, 되돌리기 직전의 상태도 별도로 기록되었다.
장부를 본다.
hermes curator ledger --skill plain-japanese-v2 --limit 3

장부에는 pre-rollback과 rollback 두 줄이 추가되었다. 원래 patch의 줄은 남아 있다. 되돌린 후에도, 되돌리기 전 기록은 사라지지 않는다.
장부 옆에는 스킬 보관소(~/.hermes/skills/) 전체 스냅샷을 되돌리는 방법(hermes curator rollback --list)도 화면에 안내되어 있었다. 이번에는 시도하지 않았다.
잘 안 될 때 (うまくいかないとき)
화면에 나온 것들로, 분리할 수 있는 것을 표로 정리했다.
| 증상 | 알 수 있는 것 | 대처 |
|---|---|---|
hermes curator ledger --skill <이름>가 ledger is empty를 출력함 | 해당 스킬의 수정 기록이 0건. 아직 수정되지 않았거나, 장부(台帳)가 무효(skills.ledger가 무효)일 가능성이 있음 | 장부가 유효한지 확인한다. 수정 전 morning-news에서는 이 표시가 정상이었다 |
| 직접 만든 스킬이 자동으로 수정되지 않음 | 자동 수리는 대화 후의 자동 검토에서 Hermes가 스스로 만든 스킬과, hermes curator adopt <이름>으로 맡긴 스킬만 가능하다 | Telegram에서 재수정을 요청한다 |
| 재수정 결과가 마음에 들지 않음 | 변경 전 상태가 장부에 남아 있다 | hermes curator rollback <id>로 1건 되돌린다. 되돌리기 직전의 상태도 기록된다 |
요약표・참고 자료・제19회 예고
명령어 요약표
# [VPS ssh] 백업
cp -r ~/.hermes/skills/morning-news ~/morning-news.bak-20261008
# [VPS ssh] 현재 상태 확인
...
참고 자료 및 출처
| 항목 | 출처 |
|---|---|
| 스킬 재작성(공식 문서) | English: Skills / 일본어 번역: スキル |
| 원장 및 1건 되돌리기 작업(공식 문서) | English: Curator / 일본어 번역: キュレーター |
| 근거(Hermes 본체 코드) | patch(edit은 구명)는 tools/skill_manager_tool.py 임. 자동 재작성의 대상은 tools/skill_manager_guards.py 임. 쓰기 승인(write_approval)의 기본값은 hermes_cli/config_defaults.py |
| 버전 주석 | 화면은 Hermes v0.21.5+8509(2026-10-08)로 촬영함 |
요약 및 제19회 예고
제18회를 완료하면서, 매일 아침 사용하는 스킬을 Hermes에게 맡겨 재작성하게 하고, 변경 사항을 원장에서 확인하며, 1건만 되돌릴 수 있는 상태가 되었다. 세부 내역은 다음과 같다.
morning-news스킬은 6월 17일부터 손대지 않아 2,116바이트(version 1.2.0)였다. Telegram에 요청하자, 10월 8일 20:08에는 4,513바이트(version 1.3.0)가 되었다.- 재작성은 원장에 patch가 4건(모두 actor는 agent)으로 남았다.
diff
을 통해 지난 배포 확인과 중복 회피가 절차에 포함되었음을 확인했다 - 재작성한 스킬로 수동 실행한 배포 항목은 3건이었고, 취득 상황은 'X 검색 호출됨・게시물 미채택', '취득 건수: 3'이었다. 1회 배포이므로 좋아졌다고는 할 수 없다. - 되돌린 것은 테스트용 스킬
plain-japanese-v2의 patch 1건이다. 되돌리기 직전 상태도 Safety entry로 기록되었고, 원래 patch의 줄도 원장에 남았다. - 자동 재작성의 대상은 Hermes가 스스로 만든 스킬과,
hermes curator adopt
으로 맡긴 스킬에 한정되어 있으며,morning-news는 자동으로 재작성되지 않는다.
다음 제19회는 작업 이력을 매일 밤 가져오는 이야기와, 사용하지 않는 스킬을 정리하는 이야기(Curator)이다. 연재 회수는 바뀔 가능성이 있으니, 착수 시 최신 계획서를 확인해 주었으면 한다.
| ← 이전 회 | 다음 회 → |
|---|---|
| 제17회 말투를 흐트러뜨리지 마라. Hermes Agent의 말하는 방식은 사실 변경 가능하다 | 제19회 가져오기는 손으로 하지 마라. Hermes Agent는 작업 이력을 매일 밤 가져오고, 사용하지 않는 스킬을 정리한다. (近日 공개) |
📑 시리즈 목차
Discussion
AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기