mirror of
https://github.com/hanzoai/bot.git
synced 2026-10-30 17:24:26 +00:00
Comprehensive rename of all openclaw references to hanzo-bot equivalents: - Package: openclaw → @hanzo/bot - Binary: openclaw → hanzo-bot - Types: OpenClaw* → Bot* - Env vars: OPENCLAW_* → BOT_* - Android: ai.openclaw.android → ai.hanzo.bot.android - iOS/macOS: ai.openclaw.* → ai.hanzo.* - Swift modules: OpenClaw* → Bot* - Plugins: openclaw.plugin.json → bot.plugin.json - Paths: .openclaw/ → .hanzo/bot/ - URLs: github.com/openclaw → github.com/hanzoai
3.6 KiB
3.6 KiB
summary, read_when, title
| summary | read_when | title | |||
|---|---|---|---|---|---|
| Troubleshoot cron and heartbeat scheduling and delivery |
|
Automation Troubleshooting |
Automation troubleshooting
Use this page for scheduler and delivery issues (cron + heartbeat).
Command ladder
hanzo-bot status
hanzo-bot gateway status
hanzo-bot logs --follow
hanzo-bot doctor
hanzo-bot channels status --probe
Then run automation checks:
hanzo-bot cron status
hanzo-bot cron list
hanzo-bot system heartbeat last
Cron not firing
hanzo-bot cron status
hanzo-bot cron list
hanzo-bot cron runs --id <jobId> --limit 20
hanzo-bot logs --follow
Good output looks like:
cron statusreports enabled and a futurenextWakeAtMs.- Job is enabled and has a valid schedule/timezone.
cron runsshowsokor explicit skip reason.
Common signatures:
cron: scheduler disabled; jobs will not run automatically→ cron disabled in config/env.cron: timer tick failed→ scheduler tick crashed; inspect surrounding stack/log context.reason: not-duein run output → manual run called without--forceand job not due yet.
Cron fired but no delivery
hanzo-bot cron runs --id <jobId> --limit 20
hanzo-bot cron list
hanzo-bot channels status --probe
hanzo-bot logs --follow
Good output looks like:
- Run status is
ok. - Delivery mode/target are set for isolated jobs.
- Channel probe reports target channel connected.
Common signatures:
- Run succeeded but delivery mode is
none→ no external message is expected. - Delivery target missing/invalid (
channel/to) → run may succeed internally but skip outbound. - Channel auth errors (
unauthorized,missing_scope,Forbidden) → delivery blocked by channel credentials/permissions.
Heartbeat suppressed or skipped
hanzo-bot system heartbeat last
hanzo-bot logs --follow
hanzo-bot config get agents.defaults.heartbeat
hanzo-bot channels status --probe
Good output looks like:
- Heartbeat enabled with non-zero interval.
- Last heartbeat result is
ran(or skip reason is understood).
Common signatures:
heartbeat skippedwithreason=quiet-hours→ outsideactiveHours.requests-in-flight→ main lane busy; heartbeat deferred.empty-heartbeat-file→ interval heartbeat skipped becauseHEARTBEAT.mdhas no actionable content and no tagged cron event is queued.alerts-disabled→ visibility settings suppress outbound heartbeat messages.
Timezone and activeHours gotchas
hanzo-bot config get agents.defaults.heartbeat.activeHours
hanzo-bot config get agents.defaults.heartbeat.activeHours.timezone
hanzo-bot config get agents.defaults.userTimezone || echo "agents.defaults.userTimezone not set"
hanzo-bot cron list
hanzo-bot logs --follow
Quick rules:
Config path not found: agents.defaults.userTimezonemeans the key is unset; heartbeat falls back to host timezone (oractiveHours.timezoneif set).- Cron without
--tzuses gateway host timezone. - Heartbeat
activeHoursuses configured timezone resolution (user,local, or explicit IANA tz). - ISO timestamps without timezone are treated as UTC for cron
atschedules.
Common signatures:
- Jobs run at the wrong wall-clock time after host timezone changes.
- Heartbeat always skipped during your daytime because
activeHours.timezoneis wrong.
Related: