Files
hermes-agent/plugin-catalog/evalroute.yaml

20 lines
3.8 KiB
YAML

name: evalroute
repo: https://github.com/keppy/hermes-plugin-evalroute
sha: 65d5a6a2544487a56e4cab1bf4a3ecf7444b8b2d
description: "Route a task to the right (model, reasoning effort) arm before you start. Classifies the task into a lane, prints a provenance-carrying route card, and installs per-model reasoning-effort defaults. Strong rules run locally; weak-signal classification calls the host LLM and consumes tokens. The separate harness and shim can make paid provider calls when explicitly run; no plugin-owned credentials. Disclosure — weak-signal task classification sends the task text to your active Hermes model via the host LLM facade (token cost). The model-callable tool, /route, /rate and observed /model and /reasoning commands append task text and command args to a local ledger at <HERMES_HOME>/evalroute/labels.jsonl. \"hermes evalroute install-routes\" rewrites agent.reasoning_overrides in config.yaml when you run it. The bundled harness and Hermes shim are never run by the plugin. When run by hand they make paid provider calls, execute model-generated code on the host via shell checkers, and run hermes -z with approvals bypassed. Disclosure — \"hermes evalroute sync\" (run by hand) downloads the route table from the Hugging Face dataset keppy/evalroute-flywheel into HERMES_HOME and route cards then show that dataset's text; \"hermes evalroute dispatch\" (run by hand) spawns a single-query hermes chat on the routed model (Nous provider by default) with the brief as its query, inheriting the current environment except HERMES_YOLO_MODE (the worker never inherits --yolo; its approvals follow approvals.single_query_mode, default deny), and writes its report and a .dispatch.json sidecar beside the brief. Disclosure — \"hermes evalroute contribute\" (run by hand only) refuses to run unless evalroute.contribute: true is set in config.yaml or EVALROUTE_CONTRIBUTE=1 is set in the environment (or contribute is true in <HERMES_HOME>/evalroute/config.json when there is no config.yaml), and then uploads redacted outcome rows only — lane, routed and actual model and effort, verdict, method, confidence, facet counts, ISO week and an HMAC-SHA256 task hash; never task text, notes, paths or the salt — to the user's own path (contributed/<hf-username>/, which carries the Hugging Face username) in the Hugging Face dataset keppy/evalroute-flywheel using the user's existing huggingface_hub login; \"--dry-run\" prints the exact rows and sends nothing; the per-install salt stays local in <HERMES_HOME>/evalroute/contribute.salt. Disclosure — \"hermes evalroute install-encoder <dir|owner/name>\" (run by hand only) downloads a text-classification model you name from the Hugging Face Hub (there is no built-in default; e.g. keppy/evalroute-lane-encoder, a 146 MB ModernBERT fine-tune) into <HERMES_HOME>/evalroute/encoder/ and from then on \"hermes evalroute route\" runs it locally, offline, to classify the task when the keyword rules are weak, instead of the LLM call; it needs torch and transformers in the plugin environment (pip extra evalroute[encoder]), which the plugin does not install; \"install-encoder --remove\" deletes it. \"hermes evalroute export-cases\" (run by hand only) writes your --lane-pinned route rows, task text included, to a local file you name, for training your own encoder; stdout carries counts only and nothing is uploaded. As of 0.6.2 the plugin is a thin adapter: all behaviour lives in the PyPI package evalroute (>=0.9,<0.10), declared as a Python dependency that Hermes installs on your confirmation."
maintainer: keppy
tier: community
category: tools
requires_hermes: '>=0.21'
version: "0.6.2"
docs_url: https://github.com/keppy/hermes-plugin-evalroute#readme
capabilities:
provides_tools:
- evalroute_route
provides_hooks:
- pre_llm_call
- pre_command
- post_llm_call
provides_middleware: []
requires_env: []