Skip to content

feat(cron): per-job reasoning_effort override - #64565

Closed
teknium1 wants to merge 1 commit into
mainfrom
hermes/hermes-68a973d8
Closed

feat(cron): per-job reasoning_effort override#64565
teknium1 wants to merge 1 commit into
mainfrom
hermes/hermes-68a973d8

Conversation

@teknium1

Copy link
Copy Markdown
Contributor

Summary

Cron jobs can now set their own reasoning effort — a first-class reasoning_effort field on the job record, so a lightweight hourly scan runs at low while a morning-briefing job on the same model runs at xhigh. Fixes #23524.

hermes cron create "every 1h" "Scan the inbox and flag urgent items" --reasoning-effort low
hermes cron create "every 1d at 07:00" "Compile my morning briefing" --reasoning-effort xhigh

Resolution priority per run: job field > agent.reasoning_overrides (per-model) > global agent.reasoning_effort — the lower two tiers resolve through the shared chokepoint from #64458.

Changes

  • cron/jobs.py: reasoning_effort on create_job/update_job with write-time validation (_normalize_job_reasoning_effort — unknown levels raise ValueError at create/update, never at run time; empty string clears)
  • cron/scheduler.py: job field consulted before per-model/global resolution
  • tools/cronjob_tools.py: reasoning_effort param on the cronjob tool (create/update), surfaced in list/show output
  • hermes_cli/subcommands/cron.py + hermes_cli/cron.py: --reasoning-effort on hermes cron create/edit, echoed in create/edit/list detail
  • website/docs/user-guide/features/cron.md: new "Per-job reasoning effort" section
  • Tests: 7 new cases (level validation incl. YAML-False alias, create/update storage round-trip, clear semantics, priority order incl. job-none-beats-per-model)

no_agent jobs ignore the field (they never touch the inference layer). Existing jobs are unaffected — absent field means per-model/global resolution, exactly as before.

Validation

Check Result
Targeted cron suite 11/11 pass (tests/cron/test_reasoning_config_per_model.py)
Sibling suites (tests/cron/, cronjob tool, cron CLI) 777/777 pass
Isolated E2E (real tool entry, real jobs.json store) 8/8 — create/store, invalid rejected, clear→per-model fallback, none disables, list surfaces field, disk persistence
Live scheduler runs (real hermes cron create + cron run, logging proxy → real OpenRouter) job xhighreasoning: {effort: "xhigh"} on the wire; no job field → per-model low applied; 3/3 jobs completed

Infographic

Per-job reasoning effort

Adds a first-class reasoning_effort field to cron jobs, resolving
per-run as: job field > agent.reasoning_overrides (per-model) >
agent.reasoning_effort (global). Closes #23524.

- cron/jobs.py: validated field on create_job/update_job (rejects
  unknown levels at write time; empty clears)
- cron/scheduler.py: job field consulted before the shared
  resolve_reasoning_config chokepoint
- cronjob tool: reasoning_effort param on create/update, surfaced in
  list/show output
- hermes cron create/edit: --reasoning-effort flag + display
- docs: new 'Per-job reasoning effort' section in cron.md
- tests: 7 new cases (validation, storage round-trip, priority order)
@alt-glitch alt-glitch added type/feature New feature or request comp/cron Cron scheduler and job management area/config Config system, migrations, profiles P3 Low — cosmetic, nice to have duplicate This issue or pull request already exists labels Jul 14, 2026
@alt-glitch

Copy link
Copy Markdown
Collaborator

This was generated by AI during triage.

Duplicate of #7382 (earliest open, MikelCalvo) — same feature (per-job cron reasoning_effort with job > per-model > global precedence) at the same core sites (cron/jobs.py, cron/scheduler.py, tools/cronjob_tools.py, CLI). #26214, #30929, and #62623 are already tracked as duplicates of #7382; tracking issue is #23524. The write-time validation and resolution-chokepoint refinements here don't change the underlying mechanism.

@teknium1

Copy link
Copy Markdown
Contributor Author

Closing — decided against adding per-job reasoning to the cron surface; going with per-auxiliary-task reasoning_effort instead.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/config Config system, migrations, profiles comp/cron Cron scheduler and job management duplicate This issue or pull request already exists P3 Low — cosmetic, nice to have type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature: support per-cron reasoning effort overrides

2 participants