Curator
curator는 agent-created skills를 백그라운드에서 유지보수하는 pass입니다. 각 skill이 얼마나 자주 view, use, patch되는지 추적하고, 오래 쓰지 않은 skill을 active -> stale -> archived 상태로 이동하며, 주기적으로 짧은 auxiliary-model review를 실행해 중복 통합이나 drift patch를 제안합니다.
이 기능은 self-improvement loop로 생성된 skills가 끝없이 쌓이는 것을 막기 위해 존재합니다. agent가 새로운 문제를 풀고 skill을 저장할 때마다 그 skill은 ~/.hermes/skills/에 들어갑니다. 유지보수가 없으면 좁은 범위의 near-duplicate skills가 catalog를 오염시키고 token을 낭비하게 됩니다.
curator는 repo에 포함된 bundled skills나 agentskills.io에서 설치한 hub skills는 절대 건드리지 않습니다. agent가 직접 authored한 skills만 review합니다. 또한 자동 삭제하지 않습니다. 가장 강한 조치는 ~/.hermes/skills/.archive/로 archive하는 것이며, 이는 복구할 수 있습니다.
issue #7816를 추적합니다.
실행 방식
curator는 cron daemon이 아니라 inactivity check로 trigger됩니다. CLI session 시작 시, 그리고 gateway cron-ticker thread 안의 recurring tick에서 Hermes는 다음을 확인합니다.
- 마지막 curator run 이후 충분한 시간이 지났는가(
interval_hours, 기본 7 days) - agent가 충분히 오래 idle 상태였는가(
min_idle_hours, 기본 2 hours)
둘 다 true이면 AIAgent의 background fork를 spawn합니다. memory/skill self-improvement nudges와 같은 pattern입니다. fork는 자체 prompt cache에서 실행되며 active conversation을 건드리지 않습니다.
새 설치 또는 curator 도입 전 설치가 hermes update 후 처음 tick되는 경우, curator는 즉시 실행되지 않습니다. 첫 observation은 last_run_at을 "now"로 seed하고, 첫 실제 pass를 interval_hours 한 번만큼 미룹니다. 이 기간 동안 skill library를 검토하고, 중요한 것을 pin하거나, curator를 완전히 끌 수 있습니다.
실제 실행 전에 curator가 무엇을 할지 보고 싶다면 hermes curator run --dry-run을 실행하세요. library를 변경하지 않고 같은 review report를 생성합니다.
한 run은 두 phase로 구성됩니다.
- Automatic transitions - deterministic하며 LLM을 사용하지 않습니다.
stale_after_days(30) 동안 쓰이지 않은 skills는stale이 되고,archive_after_days(90) 동안 쓰이지 않은 skills는~/.hermes/skills/.archive/로 이동합니다. - LLM review - 단일 auxiliary-model pass이며
max_iterations=8을 사용합니다. forked agent는 agent-created skills를 조사하고,skill_view로 읽고, skill별로 keep, patch(skill_manage), overlapping skills 통합, terminal tool을 통한 archive를 결정합니다.
pinned skills는 curator auto-transitions와 agent 자신의 skill_manage tool 모두의 대상에서 제외됩니다. 아래 Pinning a skill을 참고하세요.
Configuration
모든 설정은 .env가 아니라 config.yaml의 curator: 아래에 있습니다. secret이 아니기 때문입니다. 기본값:
curator:
enabled: true
interval_hours: 168 # 7 days
min_idle_hours: 2
stale_after_days: 30
archive_after_days: 90
완전히 끄려면 curator.enabled: false를 설정하세요.
더 저렴한 auxiliary model로 review 실행
curator의 LLM review pass는 Vision, Compression, Session Search와 같은 일반 auxiliary task slot입니다. slot 이름은 auxiliary.curator입니다. "auto"는 "main chat model을 사용"한다는 뜻입니다. review pass만 특정 provider + model로 고정할 수 있습니다.
가장 쉬운 방법 - hermes model:
hermes model # "Auxiliary models - side-task routing"
# "Curator" 선택 -> provider 선택 -> model 선택
web dashboard의 Models tab에서도 같은 picker를 사용할 수 있습니다.
직접 config.yaml 수정:
auxiliary:
curator:
provider: openrouter
model: google/gemini-3-flash-preview
timeout: 600 # review는 몇 분 걸릴 수 있으므로 넉넉히
provider: auto(기본값)를 두면 review pass는 main chat model로 route됩니다. 다른 auxiliary task와 같은 동작입니다.
이전 release는 일회성 curator.auxiliary.{provider,model} block을 사용했습니다. 이 경로는 아직 동작하지만 deprecation log line을 남깁니다. curator도 hermes model, dashboard Models tab, base_url, api_key, timeout, extra_body 같은 공통 auxiliary plumbing을 쓰도록 위의 auxiliary.curator로 migration하세요.
CLI
hermes curator status # last run, counts, pinned list, LRU top 5
hermes curator run # 지금 review trigger(blocking)
hermes curator run --background # background thread에서 fire-and-forget
hermes curator run --dry-run # preview only, mutation 없는 report
hermes curator backup # ~/.hermes/skills/ manual snapshot
hermes curator rollback # 최신 snapshot에서 restore
hermes curator rollback --list # 사용 가능한 snapshots 목록
hermes curator rollback --id <ts> # 특정 snapshot restore
hermes curator rollback -y # confirmation prompt 생략
hermes curator pause # resume 전까지 실행 중지
hermes curator resume
hermes curator pin <skill> # 이 skill은 auto-transition 금지
hermes curator unpin <skill>
hermes curator restore <skill> # archived skill을 active로 복원
Backups and rollback
실제 curator pass 전마다 Hermes는 ~/.hermes/skills/의 tar.gz snapshot을 ~/.hermes/skills/.curator_backups/<utc-iso>/skills.tar.gz에 만듭니다. pass가 원하지 않는 archive나 consolidation을 했다면 한 명령으로 전체 run을 되돌릴 수 있습니다.
hermes curator rollback # 최신 snapshot restore(confirmation 있음)
hermes curator rollback -y # prompt 생략
hermes curator rollback --list # 모든 snapshot의 reason + size 확인
rollback 자체도 reversible합니다. skills tree를 교체하기 전에 Hermes는 pre-rollback to <target-id> tag가 붙은 snapshot을 하나 더 만듭니다. 잘못 rollback했다면 그 snapshot ID로 다시 rolling forward할 수 있습니다.
manual snapshot은 언제든 만들 수 있습니다.
hermes curator backup --reason "before-refactor"
--reason 문자열은 snapshot의 manifest.json에 기록되고 --list에 표시됩니다.
disk 사용량을 제한하기 위해 snapshots는 curator.backup.keep(기본 5)개로 prune됩니다.
curator:
backup:
enabled: true
keep: 5
automatic snapshotting을 끄려면 curator.backup.enabled: false를 설정하세요. manual hermes curator backup도 enabled: true일 때만 동작합니다. mutation run에서 pre-run snapshot만 실수로 건너뛰는 일이 없도록 두 경로를 같은 flag로 gate합니다.
hermes curator status는 least-recently-used skills 5개도 보여줍니다. 다음에 stale이 될 가능성이 큰 항목을 빠르게 볼 수 있습니다.
같은 subcommands는 CLI 또는 gateway session 안에서 /curator slash command로도 사용할 수 있습니다.
"agent-created"의 의미
skill은 다음 목록에 이름이 없으면 agent-created로 간주됩니다.
~/.hermes/skills/.bundled_manifest- 설치 시 repo에서 복사된 skills~/.hermes/skills/.hub/lock.json-hermes skills install로 설치한 skills
그 외 ~/.hermes/skills/ 아래의 모든 skill은 curator 대상입니다. 여기에는 다음이 포함됩니다.
- conversation 중 agent가
skill_manage(action="create")로 저장한 skills - 사용자가 직접
SKILL.md를 작성해 만든 skills - Hermes가 참조하도록 지정한 external skill directories의 skills
여기서 provenance는 binary입니다. bundled/hub인지, 그 밖의 것인지뿐입니다. curator는 사용자가 private workflow용으로 직접 작성한 skill과 self-improvement loop가 session 중 저장한 skill을 구분하지 못합니다. 둘 다 "agent-created" bucket에 들어갑니다.
첫 실제 pass 전, 기본적으로 설치 후 7일 안에 다음을 해 두세요.
hermes curator run --dry-run으로 curator가 제안할 내용을 확인합니다.- 건드리면 안 되는 항목은
hermes curator pin <name>으로 보호합니다. - 직접 library를 관리하고 싶다면
config.yaml에서curator.enabled: false를 설정합니다.
archive는 언제든 hermes curator restore <name>으로 복구할 수 있지만, 나중에 consolidation을 추적하는 것보다 처음부터 pin하는 편이 쉽습니다.
특정 skill을 절대 건드리지 않게 하려면 hermes curator pin <name>을 사용하세요.
Pinning a skill
pinning은 skill을 deletion에서 보호합니다. curator의 automated archive passes와 agent의 skill_manage(action="delete") tool call 모두에 적용됩니다. skill이 pin되면:
- curator는 auto-transitions(
active -> stale -> archived)에서 해당 skill을 건너뛰고, LLM review pass에도 그대로 두라고 지시합니다. - agent의
skill_managetool은 해당 skill에 대한delete를 거부하고 사용자를hermes curator unpin <name>으로 안내합니다. patch와 edit은 계속 허용되므로, agent는 pin/unpin/re-pin 반복 없이도 문제가 드러날 때 pinned skill content를 개선할 수 있습니다.
pin/unpin:
hermes curator pin <skill>
hermes curator unpin <skill>
flag는 ~/.hermes/skills/.usage.json의 해당 skill entry에 "pinned": true로 저장되어 session을 넘어 유지됩니다.
agent-created skills만 pin할 수 있습니다. bundled와 hub-installed skills는 애초에 curator mutation 대상이 아니며, hermes curator pin을 시도하면 설명과 함께 거부됩니다.
"no deletion"보다 강한 보장, 예를 들어 agent가 읽기는 하지만 content 자체를 freeze하고 싶다면 ~/.hermes/skills/<name>/SKILL.md를 editor로 직접 관리하세요. pin은 tool-driven deletion을 막는 장치이지 사용자의 filesystem access를 막는 장치가 아닙니다.
Usage telemetry
curator는 ~/.hermes/skills/.usage.json sidecar에 skill별 entry를 유지합니다.
{
"my-skill": {
"use_count": 12,
"view_count": 34,
"last_used_at": "2026-04-24T18:12:03Z",
"last_viewed_at": "2026-04-23T09:44:17Z",
"patch_count": 3,
"last_patched_at": "2026-04-20T22:01:55Z",
"created_at": "2026-03-01T14:20:00Z",
"state": "active",
"pinned": false,
"archived_at": null
}
}
counters가 증가하는 시점:
view_count: agent가 해당 skill에skill_view를 호출할 때use_count: skill이 conversation prompt에 load될 때patch_count: skill에 대해skill_manage patch/edit/write_file/remove_file이 실행될 때
bundled와 hub-installed skills는 telemetry writes에서 명시적으로 제외됩니다.
Per-run reports
모든 curator run은 ~/.hermes/logs/curator/ 아래 timestamped directory를 작성합니다.
~/.hermes/logs/curator/
20260429-111512/
run.json # machine-readable: full fidelity, stats, LLM output
REPORT.md # human-readable summary
REPORT.md는 해당 run이 무엇을 했는지 빠르게 확인하는 방법입니다. 어떤 skills가 transition됐는지, LLM reviewer가 무엇을 말했는지, 어떤 skills를 patch했는지 볼 수 있습니다. agent.log를 grep하지 않고 audit할 때 유용합니다.
Archived skill 복원
curator가 여전히 필요한 skill을 archive했다면:
hermes curator restore <skill-name>
이 명령은 skill을 ~/.hermes/skills/.archive/에서 active tree로 되돌리고 state를 active로 reset합니다. 같은 이름의 bundled 또는 hub-installed skill이 나중에 설치되어 upstream을 shadow하게 되는 경우에는 restore를 거부합니다.
Environment별 비활성화
curator는 기본적으로 켜져 있습니다. 끄려면:
- profile 하나에만 적용:
~/.hermes/config.yaml또는 active profile config에서curator.enabled: false를 설정합니다. - 일시 중지:
hermes curator pause를 실행합니다. pause는 session을 넘어 유지되며resume으로 다시 켤 수 있습니다.
curator는 min_idle_hours가 지나지 않았으면 실행을 거부하므로, active dev machine에서는 자연스럽게 조용한 시간대에만 실행됩니다.
See also
- Skills System - skills의 일반 동작과 self-improvement loop
- Memory - long-term memory를 유지하는 병렬 background review
- Bundled Skills Catalog
- Issue #7816 - original proposal과 design discussion