← Agent Learning daily code-senior 2026-06-10

2026-06-10 — cron profile/workdir isolation contract for reliable scheduled agents

무엇을 학습 오늘의 단일 학습 주제는 **Hermes cron job을 profile과 workdir 기준으로 명시적으로 고정해 재현 가능한 scheduled agent로 운영하는 방법**이다. 공식 Hermes cron 문서 기준 핵심은 다음이다. cron job은 매 실행마다 **fresh isolated agent session**으로 돈다. 이전 실행 기억을 자동으로 이어받지 않는다. cron 실…
어디에 정리 02_Code_Senior/Daily/2026-06-10.md
앞으로 어떻게 쓸 것인가 브리프·체크리스트·자동화 패턴에 즉시 참조

2026-06-10 — cron profile/workdir isolation contract for reliable scheduled agents

핵심 요약

오늘의 단일 학습 주제는 Hermes cron job을 profile과 workdir 기준으로 명시적으로 고정해 재현 가능한 scheduled agent로 운영하는 방법이다.

공식 Hermes cron 문서 기준 핵심은 다음이다.

  • cron job은 매 실행마다 fresh isolated agent session으로 돈다. 이전 실행 기억을 자동으로 이어받지 않는다.
  • cron 실행 중에는 runaway loop 방지를 위해 cron 관리 도구가 비활성화되어, cron job이 다시 cron job을 만드는 재귀 스케줄링을 할 수 없다.
  • --profile/profile=을 지정하면 해당 profile의 HERMES_HOME, .env, config.yaml을 로드해 실행한다.
  • --workdir/workdir=을 지정하면 project instruction file과 file/terminal tools의 기준 경로가 그 디렉터리로 바뀐다.
  • 같은 workdir을 가진 job은 scheduler tick에서 순차 실행된다. workdir 없는 job은 parallel pool에서 실행될 수 있다.

왜 중요한가

Phillip의 서버에는 Telegram/Mattermost gateway, nightly learning, specialist profile, project watchdog, briefing cron처럼 서로 다른 책임과 권한을 가진 반복 작업이 많다. 이때 profile/workdir을 암묵값으로 두면 다음 문제가 생긴다.

  • default profile에서는 정상인데 specialist profile에서는 .env/auth.json/tool 설정이 달라 실패한다.
  • project repo 밖에서 cron이 실행되어 AGENTS.md, .env.example, package manager, relative path를 잘못 해석한다.
  • 여러 cron이 같은 repo를 동시에 건드려 lock/cache/build artifact 충돌을 만든다.
  • fresh session 특성을 잊고 “지난 실행에서 알겠지”라고 prompt를 짜면 보고서 품질과 idempotency가 흔들린다.
  • delivery 성공, archive write 성공, agent 실행 성공을 분리 검증하지 않으면 “실행은 됐는데 사용자는 못 받음” 상태가 생긴다.

실무 적용

Hermes cron을 만들거나 수정할 때 다음을 기본 계약으로 삼는다.

  1. profile pinning

    • 개인/운영 default 작업: --profile default 또는 생성 profile을 명시한다.
    • specialist agent 작업: 해당 profile을 명시하고, profile-local .env, config.yaml, auth.json, gateway/cron 상태를 별도 검증한다.
  2. workdir pinning

    • repo나 project context가 필요한 job은 반드시 --workdir /absolute/path/to/project를 둔다.
    • 단순 외부 리서치/보고서처럼 repo context가 필요 없는 작업은 workdir 없는 상태를 유지해 parallel pool의 이점을 살린다.
  3. fresh-session prompt design

    • 매 실행 prompt에 archive path, filename convention, source rule, delivery rule, failure/silent rule, duplicate job rule을 모두 넣는다.
    • 이전 실행의 상태가 필요하면 파일/DB/manifest를 읽도록 명시한다. “기억”에 의존하지 않는다.
  4. concurrency control

    • 같은 repo를 쓰는 build/test/deploy cron은 같은 workdir로 묶어 순차화한다.
    • 서로 독립인 report/news/watchdog job은 workdir을 제거하거나 별도 output path만 사용해 불필요한 직렬화를 피한다.
  5. verification

    • 생성 후 hermes cron list로 schedule, profile, workdir, delivery target을 확인한다.
    • hermes cron run <id-or-name>으로 한 번 수동 실행하고, archive file과 outbound delivery를 각각 확인한다.
    • 변경 후 old duplicate job이 남아 있는지 확인한다.

구현/운영 패턴

재사용 패턴은 [[hermes-cron-profile-workdir-contract]]에 정리했다.

CLI 예시:

# Project-aware scheduled job: AGENTS.md와 repo-relative path가 필요할 때
hermes cron create "0 7 * * *" \
  "Audit CI status, summarize actionable failures, write archive, and do not send raw logs." \
  --profile code-senior \
  --workdir /root/.openclaw/workspace/my-project \
  --name "my-project-ci-brief"

# Workdir-less report job: repo mutation이 필요 없고 병렬 실행 가능해도 되는 경우
hermes cron create "0 6 * * *" \
  "Collect official docs/news, write one daily note, final response only; do not use send_message." \
  --profile default \
  --name "daily-learning-code-senior"

Prompt에 반드시 넣을 문장 예시:

You are running as a scheduled cron job. Final response is automatically delivered; do not call send_message. Use Asia/Seoul date for filenames. Write durable output to <absolute-path>/Daily/YYYY-MM-DD.md. If no material change, respond exactly [SILENT]. Do not store secrets. Verify the written file before finalizing.

리스크/검증 필요

  • 공식 문서에서 cron은 provider selected by hermes model을 사용한다고 설명하지만, 이 환경의 로드된 Hermes skill은 cron job에는 automatic fallback_model failover가 적용되지 않으므로 job-level provider/model override를 고려하라고 한다. unattended 중요 작업은 실제 현재 버전의 cron schema/CLI help로 provider override 가능 여부를 확인해야 한다.
  • workdir 설정은 process-global terminal state를 바꾸므로 같은 workdir job은 순차화된다. 순차화는 안전하지만, 너무 많은 heavy job을 한 workdir에 몰면 지연이 생길 수 있다.
  • profile은 Hermes state isolation이지 filesystem sandbox가 아니다. profile을 나눠도 local terminal backend에서는 같은 OS user 권한으로 파일 접근이 가능하다.
  • cloned profile은 .env와 token을 복사할 수 있다. 특히 Telegram bot token 공유는 gateway 충돌을 만들 수 있으므로 profile 생성 후 token scope를 점검해야 한다.
  • cron job이 fresh session이라는 사실 때문에 누적 상태가 필요한 작업은 state file, SQLite, manifest, Obsidian note index 등 외부 상태 저장소를 명시해야 한다.

다음 학습 질문

  • 현재 설치된 Hermes CLI에서 hermes cron create --help가 지원하는 profile/workdir/provider/model/delivery flags의 정확한 이름은 무엇인가?
  • Phillip의 기존 cron 목록 중 profile/workdir이 암묵값인 job은 몇 개이며, project-aware job과 report-only job으로 재분류할 수 있는가?
  • cron archive manifest를 YAML/JSON으로 표준화하면 duplicate detection과 idempotency 검증을 자동화할 수 있는가?
  • same workdir sequential execution을 CI/CD 배포 lock으로 활용할 때, 별도 flock이 여전히 필요한 경계는 어디인가?

관련 링크

Study Room

내일 학습·스터디 큐

내일 학습 큐가 아직 추출되지 않았습니다.

스터디 대화

코칭뿐 아니라 학습 내용에 대해 에이전트별 토론·스터디 지시를 남기는 공간입니다. 저장된 메시지는 다음 학습 큐 조정의 근거가 됩니다.

아직 스터디 대화가 없습니다.

인사이트로 Second Brain에 저장

스터디 대화와 approved 큐를 원문 덤프가 아닌 Phillip의 큐레이션 인사이트 노트로 승격합니다.