Skip to content

Hermit v0.2.0

Latest

Choose a tag to compare

@haizhongzheng haizhongzheng released this 04 Nov 20:29
· 11 commits to main since this release

Highlights

Three-layer agent architecture

  • Model → Base Agent → Acting / Evolver Agent separates model access and reusable execution from task and method logic. The shared Base Agent interface covers direct model calls, ReAct, Codex and Claude Code, with common tools, session handling, limits, trajectories and usage records (#57). See Agent layers.
  • Acting pipelines and learning methods reuse these shared interfaces, including existing benchmark clients connected through a local model endpoint. Run configurations can specify the model, Base Agent and method settings separately (#57, #61).

Harness evolution methods and benchmarks

  • ReHarness adds a reflection bank with per-instance retrieval and revision, with OfficeQA and CL-Bench integrations (#43).
  • Meta-Harness Adapter searches over whole adapters using scored candidate history and trajectories, with an OfficeQA example (#45).
  • ACE grows and revises a playbook through Reflector and Curator roles, with an OfficeQA example (#48).
  • AHE Adapter adds attribution-guided evolution and file-level rollback, with a template deployable to Codex and Claude Code and an OfficeQA example (#65).
  • RRSI Adapter adds regularized candidate search with analysis, critic screening, edit budgets, exploration and score/cost-based selection, with an OfficeQA example (#59).
  • EvoSafeHarness adds defense-bundle evolution with Designer, Criticizer and Analyzer roles, plus an AgentDyn integration that evaluates existing frozen cases (#63).

Each method's documentation describes its search space, protocol, upstream adaptations and result-comparison limits. See Learning methods.

Run with your Codex plan

  • Act and learn through a ChatGPT login, using Codex sessions without configuring a separate model API key. Text-reply learners can use llm: {cli: codex, isolation: container, ...}; agent-style learners use the Codex Base Agent directly. OfficeQA recipes include plan-backed acting and learning configurations (#61).
  • Shared login refresh, session concurrency controls, plan-usage reporting, pause/usage-threshold controls and usage-limit handling coordinate Codex sessions on the same machine. Sessions held back by the plan are distinguished from task attempts (#61, #69). Model availability and plan limits still apply.
  • Harness² editors can also run through Codex. General Claude Code subscription support for the llm.cli route remains future work; this release does not add llm.cli: claude.

Adapter deployment and training

  • One deployment contract for training and hermit deploy: copy the whole adapter, connect declared context, tools, skills, subagents and hooks where supported, and name other files in the context. Per-task context is supported by the acting-agent integration (#51, #60).
  • Hook exports connect to Codex and Claude Code. Context limits are checked before deployment, and redeployment detects conflicting or externally modified files (#60).
  • Evolvers can choose the next batch from the remaining training tasks while preserving the once-per-epoch contract. Invalid requests are reported and fall back to the Trainer's order; an empty request chooses no tasks (#67, #68).

Installation, reliability and contributor workflows

  • A release workflow validates core behavior and Linux sandbox execution, builds distributions, tests the installed wheel and publishes tagged versions through PyPI Trusted Publishing.
  • Method dependencies move into source-checkout dependency groups: install one or several groups with python -m pip install -e . --group <method>. Missing-dependency errors include the relevant group and pinned requirements (#38).
  • EvoSafeHarness no longer requires Daybreak for its default Codex roles; AgentDyn judging and evaluation reporting are clarified (#72).
  • Installed packages now include MWM's hidden pattern-library resource, and workspace deployment excludes Git worktree metadata.
  • Shared fixes improve CLI event parsing, trajectory coverage, model-endpoint connections, login/session-home handling, hidden-path enforcement and budget usage accounting (#40, #66, #69).
  • Contributor guidance now includes agent instructions, PR preparation and independent post-PR audits, with separate general and method-reproduction checklists. The contribution guide also describes iterative reviews and keeping generated experiment artifacts out of Git.

Breaking Changes

  • Adapter layout: metadata moves into .hermit/; exports move to the adapter-root exports.yaml. Adapters in the 0.1 layout are rejected. Migrate existing adapters and rebuild converted plugins using Migrating from Hermit 0.1 (#41).
  • Deployment and templates: adapter files now live under hermit/<adapter-id>/ in a host workspace. Legacy deploy: tree / files settings are removed. The continual-harness, harness2-codex and reharness templates are now 1.1; use a new adapter tree when moving from their 1.0 versions (#60).
  • Python module paths: implementation moves under hermit.agent.* and hermit.adapter.*. Compatibility modules for hermit.backends, hermit.llm, hermit.trajectory, hermit.agents and hermit.evolver warn and forward for one release; hermit.algorithms and hermit.tools_mcp are removed (#57).
  • CLI configuration: sessions use their own homes rather than inheriting user configuration, and web_search must be explicitly set. For layered recipes, override agent.model.* and agent.codex.* instead of setting duplicate flat parameters. OfficeQA Codex recipes now use the shared acting agent and unified deployment, so older harness-specific results and settings need their documented comparison limits (#57, #60, #61).
  • Dependency installation: the root requirements*.txt files are removed. Dependency-group installation requires pip 25.1+ and a checkout. Core requires Python 3.12+; the pinned Harness² dependency supports Python 3.12–3.13 (#38).

What's Changed

  • Refocus the homepage on framework features and collaboration by @haizhongzheng in #29
  • Use the official Hermit wordmark on the homepage by @haizhongzheng in #30
  • docs: clarify Quick Start, first-model and overview pages by @iamziyuzhao in #31
  • Consolidate method dependencies into pyproject groups by @haizhongzheng in #38
  • Declare packaging, which the sandbox's dependency closure needs by @haizhongzheng in #40
  • Make every adapter file learnable unless a limit says otherwise by @haizhongzheng in #41
  • ReHarness: the template, the Evolver and per-task adapter context by @haizhongzheng in #43
  • docs: add Discord community badge and link by @haizhongzheng in #46
  • Add Meta-Harness Adapter: the template, the Evolver and an OfficeQA example by @haizhongzheng in #45
  • Deploy the whole adapter and connect what it declares by @haizhongzheng in #51
  • Build agents from three layers: model, Base Agent, Acting/Evolver Agent by @haizhongzheng in #57
  • Deploy every adapter one way: as hermit deploy does, and name what the host cannot load by @haizhongzheng in #60
  • OfficeQA: the Flash row with GPT-5.6-Luna on a ChatGPT login (port of #54 onto the agent layers) by @haizhongzheng in #61
  • Add ACE (Agentic Context Engineering): the template, the Evolver and an OfficeQA example by @ruiling-smartbear in #48
  • Let an Evolver choose the next step's training tasks by @ChangyiYang in #67
  • Trainer: an empty next_tasks names nothing (follow-up to #67) by @ChangyiYang in #68
  • Fix parse_log crashing on a CLI log line that is JSON but not an object by @iamziyuzhao in #66
  • Add AHE Adapter: the template, the Evolver and an OfficeQA example by @iamziyuzhao in #65
  • Fix shared-layer faults the RRSI Adapter port found: home links, CLI reports, hidden paths, endpoint connections by @iamziyuzhao in #69
  • Add RRSI Adapter: the template, the Evolver and an OfficeQA example by @iamziyuzhao in #59
  • Integrate EvoSafeHarness with AgentDyn by @andylinx in #63
  • Make EvoSafe Daybreak opt-in and clarify AgentDyn utility judging by @andylinx in #72

New Contributors

Full Changelog: v0.1.0...v0.2.0