본문으로 건너뛰기

크론 문제 해결

크론 작업이 예상대로 작동하지 않는 경우 이러한 검사를 순서대로 진행하세요. 대부분의 문제는 타이밍, 전달, 권한 또는 기술 로딩의 네 가지 범주 중 하나에 속합니다.


채용이 해고되지 않음

확인 1: 작업이 존재하고 활성 상태인지 확인

hermes cron list

채용정보를 찾아 해당 상태가 [active]([paused] 또는 [completed] 아님)인지 확인하세요. [completed]이 표시되면 반복 횟수가 소진되었을 수 있습니다. 작업을 편집하여 재설정하세요.

확인 2: 일정이 올바른지 확인

형식이 잘못된 일정은 자동으로 일회성으로 설정되거나 완전히 거부됩니다. 표현을 테스트해 보세요.

당신의 표정평가해야 함
0 9 * * *매일 오전 9시
0 9 * * 1매주 월요일 오전 9시
every 2h지금부터 2시간마다
30m지금부터 30분
2025-06-01T09:00:002025년 6월 1일 오전 9시(UTC)

작업이 한 번 실행된 후 목록에서 사라지면 이는 일회성 일정(30m, 1d 또는 ISO 타임스탬프)이며 예상되는 동작입니다.

확인 3: 게이트웨이가 실행 중입니까?

크론 작업은 60초마다 틱되는 게이트웨이의 백그라운드 티커 스레드에 의해 시작됩니다. 일반 CLI 채팅 세션은 크론 작업을 자동으로 실행하지 않습니다.

작업이 자동으로 실행되기를 기대하는 경우 실행 중인 게이트웨이(포그라운드의 경우 hermes gateway, 설치된 서비스의 경우 hermes gateway start)가 필요합니다. 일회성 디버깅의 경우 hermes cron tick을 사용하여 틱을 수동으로 트리거할 수 있습니다.

확인 4: 시스템 시계 및 시간대 확인

작업은 현지 시간대를 사용합니다. 컴퓨터의 시계가 잘못되었거나 예상과 다른 시간대에 있는 경우 작업이 잘못된 시간에 실행됩니다. 확인:

date
hermes cron list # Compare next_run times with local time

배달 실패

확인 1: 전달 대상이 올바른지 확인

전달 대상은 대소문자를 구분하며 올바른 플랫폼을 구성해야 합니다. 잘못 구성된 대상은 자동으로 응답을 삭제합니다.

대상필요하다
telegramTELEGRAM_BOT_TOKEN(~/.hermes/.env)
discordDISCORD_BOT_TOKEN(~/.hermes/.env)
slackSLACK_BOT_TOKEN(~/.hermes/.env)
whatsappWhatsApp 게이트웨이가 구성됨
signal신호 게이트웨이 구성됨
matrix매트릭스 홈서버 구성
emailconfig.yaml에 구성된 SMTP
smsSMS 제공업체가 구성됨
local~/.hermes/cron/output/에 대한 쓰기 액세스 권한
origin작업이 생성된 채팅으로 전달

기타 지원되는 플랫폼에는 mattermost, homeassistant, dingtalk, feishu, wecom, weixin, bluebubbles, qqbotwebhook. platform:chat_id 구문(예: telegram:-1001234567890)을 사용하여 특정 채팅을 타겟팅할 수도 있습니다.

전달이 실패하더라도 작업은 계속 실행되며 아무데도 전송되지 않습니다. hermes cron list에서 업데이트된 last_error 필드를 확인하세요(사용 가능한 경우).

확인 2: [SILENT] 사용량 확인

cron 작업이 출력을 생성하지 않거나 에이전트가 [SILENT]으로 응답하면 전달이 억제됩니다. 이는 작업 모니터링을 위해 의도된 것입니다. 그러나 프롬프트가 실수로 모든 것을 표시하지 않도록 하세요.

"아무것도 변경되지 않은 경우 [SILENT]로 응답하세요"라는 프롬프트는 비어 있지 않은 응답도 자동으로 삼킵니다. 조건부 논리를 확인하세요.

확인 3: 플랫폼 토큰 권한

각 메시징 플랫폼 봇은 메시지를 수신하기 위해 특정 권한이 필요합니다. 전송이 자동으로 실패하는 경우:

  • 텔레그램: 봇은 대상 그룹/채널의 관리자여야 합니다.
  • Discord: 봇에는 대상 채널로 보낼 수 있는 권한이 있어야 합니다.
  • Slack: 봇은 작업공간에 추가되어야 하며 chat:write 범위를 가져야 합니다.

확인 4: 응답 래핑

기본적으로 cron 응답은 머리글과 바닥글(config.yamlcron.wrap_response: true)로 래핑됩니다. 일부 플랫폼이나 통합에서는 이를 잘 처리하지 못할 수 있습니다. 비활성화하려면:

cron:
wrap_response: false

스킬 로딩 실패

확인 1: 스킬이 설치되었는지 확인

hermes skills list

크론 작업에 스킬을 연결하려면 먼저 스킬을 설치해야 합니다. 스킬이 누락된 경우 먼저 hermes skills install <skill-name>을 사용하거나 CLI에서 /skills을 통해 설치하세요.

확인 2: 스킬 이름과 스킬 폴더 이름 확인

스킬 이름은 대소문자를 구분하며 설치된 스킬의 폴더 이름과 일치해야 합니다. 작업에서 ai-funding-daily-report을 지정했지만 스킬 폴더가 ai-funding-daily-report인 경우 hermes skills list에서 정확한 이름을 확인하세요.

확인 3: 대화형 도구가 필요한 기술

Cron 작업은 cronjob, messagingclarify 도구 세트가 비활성화된 상태로 실행됩니다. 이렇게 하면 재귀적 크론 생성, 직접 메시지 보내기(배달은 스케줄러에 의해 처리됨) 및 대화형 프롬프트가 방지됩니다. 스킬이 이러한 도구 세트에 의존하는 경우 cron 컨텍스트에서는 작동하지 않습니다.

기술 문서를 확인하여 비대화형(헤드리스) 모드에서 작동하는지 확인하세요.

확인 4: 다중 기술 주문

여러 스킬을 사용할 경우 순서대로 로드됩니다. 스킬 A가 스킬 B의 컨텍스트에 따라 달라지는 경우 B가 먼저 로드되는지 확인하세요.

/cron add "0 9 * * *" "..." --skill context-skill --skill target-skill

이 예에서는 context-skilltarget-skill보다 먼저 로드됩니다.


작업 오류 및 실패

확인 1: 최근 작업 출력 검토

작업이 실행되었다가 실패한 경우 다음과 같은 오류 컨텍스트가 표시될 수 있습니다.

  1. 작업이 전달되는 채팅(전달이 성공한 경우)
  2. 스케줄러 메시지의 경우 ~/.hermes/logs/agent.log(또는 경고의 경우 errors.log)
  3. hermes cron list을 통한 작업의 last_run 메타데이터

확인 2: 일반적인 오류 패턴

스크립트의 경우 "해당 파일이나 디렉터리가 없습니다" script 경로는 절대 경로(또는 Hermes 구성 디렉터리에 대한 상대 경로)여야 합니다. 확인하다:

ls ~/.hermes/scripts/your-script.py   # Must exist
hermes cron edit <job_id> --script ~/.hermes/scripts/your-script.py

작업 실행 시 "스킬을 찾을 수 없음" 발생 스케줄러를 실행하는 머신에 스킬을 설치해야 합니다. 컴퓨터 간에 이동하면 스킬이 자동으로 동기화되지 않습니다. hermes skills install &lt;skill-name&gt;을 사용하여 다시 설치하세요.

작업이 실행되지만 아무것도 제공되지 않습니다 배달 대상 문제(위의 배달 실패 참조) 또는 자동으로 억제된 응답([SILENT])일 가능성이 있습니다.

작업이 중단되거나 시간 초과됨 스케줄러는 비활성 기반 시간 제한(기본값 600초, HERMES_CRON_TIMEOUT env var, 무제한의 경우 0을 통해 구성 가능)을 사용합니다. 에이전트는 도구를 적극적으로 호출하는 동안 실행할 수 있습니다. 타이머는 지속적인 비활성 후에만 실행됩니다. 장기 실행 작업은 스크립트를 사용하여 데이터 수집을 처리하고 결과만 전달해야 합니다.

확인 3: 잠금 경합

스케줄러는 파일 기반 잠금을 사용하여 틱이 겹치는 것을 방지합니다. 두 개의 게이트웨이 인스턴스가 실행 중이거나 CLI 세션이 게이트웨이와 충돌하는 경우 작업이 지연되거나 건너뛸 수 있습니다.

중복된 게이트웨이 프로세스를 종료합니다.

ps aux | grep hermes
# Kill duplicate processes, keep only one

확인 4: jobs.json에 대한 권한

작업은 ~/.hermes/cron/jobs.json에 저장됩니다. 사용자가 이 파일을 읽거나 쓸 수 없으면 스케줄러가 자동으로 실패합니다.

ls -la ~/.hermes/cron/jobs.json
chmod 600 ~/.hermes/cron/jobs.json # Your user should own it

성능 문제

느린 작업 시작

각 cron 작업은 제공자 인증 및 모델 로딩이 포함될 수 있는 새로운 AIAgent 세션을 생성합니다. 시간에 민감한 일정의 경우 버퍼 시간을 추가하세요(예: 0 9 * * * 대신 0 8 * * *).

중복되는 작업이 너무 많습니다.

스케줄러는 각 틱 내에서 순차적으로 작업을 실행합니다. 여러 작업이 동시에 예정된 경우 차례로 실행됩니다. 지연을 방지하려면 시차를 두는 일정(예: 0 9 * * * 대신 0 9 * * *5 9 * * *)을 고려하세요.

대규모 스크립트 출력

메가바이트의 출력을 덤프하는 스크립트는 에이전트 속도를 저하시키고 토큰 제한에 도달할 수 있습니다. 스크립트 수준에서 필터링/요약합니다. 에이전트가 추론해야 하는 내용만 내보냅니다.


진단 명령

hermes cron list                    # Show all jobs, states, next_run times
hermes cron run <job_id> # Schedule for next tick (for testing)
hermes cron edit <job_id> # Fix configuration issues
hermes logs # View recent Hermes logs
hermes skills list # Verify installed skills

추가 도움 받기

이 가이드를 진행한 후에도 문제가 지속되는 경우:

  1. hermes cron run &lt;job_id&gt;(다음 게이트웨이 틱에서 실행)을 사용하여 작업을 실행하고 채팅 출력에서 오류를 관찰합니다.
  2. 스케줄러 메시지는 ~/.hermes/logs/agent.log을 확인하고 경고는 ~/.hermes/logs/errors.log을 확인하세요.
  3. github.com/NousResearch/hermes-agent에서 다음을 사용하여 이슈를 엽니다.
    • 작업 ID 및 일정
    • 배송 대상
    • 예상했던 것 vs. 일어난 일
    • 로그의 관련 오류 메시지

전체 cron 참조는 Cron으로 모든 작업 자동화예약된 작업(Cron)을 참조하세요.