Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: microsoft/SkillOpt
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Choose a base ref
...
head repository: stanvx/SkillOpt
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 4 commits
  • 13 files changed
  • 3 contributors

Commits on Jul 19, 2026

  1. feat(sleep): add Hermes Agent as a first-class backend and transcript…

    … source
    
    Wires the Hermes Agent CLI into the core skillopt_sleep engine at the same
    tier as claude/codex, plus a plugins/hermes/ folder for parity with the other
    harness integrations.
    
    Core:
    - HermesBackend(CliBackend) driving `hermes --profile <name> chat -Q -q`, with
      boilerplate/traceback stripping and error capture; registered in get_backend
      for hermes/hermes_chat/hermes_cli.
    - harvest_hermes.py reads ~/.hermes/state.db, redacts secrets (reusing the
      shared staging._SECRET_PATTERNS), filters meta prompts, and skips the engine's
      own throwaway sessions.
    - harvest_sources.py, config.py (hermes_home), and the CLI --source/--backend
      choices gain hermes.
    
    Plugin:
    - plugins/hermes/ with an MCP server (hermes defaults), config example, rules
      snippet, README, and SKILL.md; integration tables in plugins/README.md and
      docs/sleep/README.md updated.
    
    Ported and slimmed from upstream PR #114: drops the broad,
    reviewer-blocked training-core model backend and its double-counted token
    tracker; keeps the redacting harvester variant and the corrected output filter.
    
    Tests: 10 new (harvest DB queries, engine-session filter, tool inclusion,
    feedback detection, secret redaction, limits, source routing, backend dispatch,
    output filtering). 80/80 pass.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
    stanvx and claude committed Jul 19, 2026
    Configuration menu
    Copy the full SHA
    20ada35 View commit details
    Browse the repository at this point in the history
  2. refactor(sleep): harvest Hermes via hermes sessions export, not raw…

    … state.db
    
    Reworks the Hermes harvester after validating against a real Hermes Agent
    v0.18.2 install: the ported raw-sqlite reader returned nothing because the
    current state.db has null cwd on sessions and keeps message content behind the
    export/FTS layer (schema drift from the version PR #114 was written against).
    
    - harvest_hermes now shells out to `hermes sessions export --format jsonl
      --redact` (stable public interface, WAL-safe, self-redacting) and parses the
      per-session JSONL, with content-part normalization matching Hermes's own
      serializer. Filters: --after <since>, --cwd <project> for invoked scope,
      --min-messages 1 to drop empty ACP/editor shells.
    - Warns loudly to stderr and returns [] on missing binary / export failure /
      zero matches, instead of a silent no-op.
    - Layers our own sanitization + meta-prompt filtering on top of --redact, and
      guards against harvesting the optimizer's own skillopt_sleep_hermes_ tempdirs.
    - Tests rewritten to mock the export seam (no hermes binary or sqlite needed);
      84/84 pass. Verified end-to-end against the live hermes CLI.
    - Plugin README/SKILL updated to describe the export-based approach.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
    stanvx and claude committed Jul 19, 2026
    Configuration menu
    Copy the full SHA
    df95517 View commit details
    Browse the repository at this point in the history
  3. feat(sleep): target Hermes skills dir, skill-only evolution by default

    Makes SkillOpt-Sleep evolve the artifact Hermes actually consumes, and stop
    short of the one it doesn't:
    
    - Hermes plugin now defaults --target-skill-path to
      $HERMES_HOME/skills/skillopt-sleep-learned/SKILL.md — where Hermes discovers
      global skills — via the existing managed_skill_path/target_skill_path seam
      (no core change to skill targeting).
    - Adds a generic `--no-evolve-memory` CLI flag (exposes the existing
      evolve_memory config bool). The Hermes MCP server passes it for cycle actions:
      the engine's memory doc is a project CLAUDE.md, which Hermes ignores (it owns
      memory via SOUL.md/MEMORY.md + curator), so skill-only avoids staging a doc
      that has no effect.
    - Deliberately does NOT add an AGENTS.md/memory_filename core change: it's
      cross-cutting (cycle/staging manifest/memory/adopt), shared by all backends,
      and the wrong surface for Hermes. Deferred as a separate upstream concern.
    - Docs updated; new test for the flag. 85/85 pass.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
    stanvx and claude committed Jul 19, 2026
    Configuration menu
    Copy the full SHA
    a432ec5 View commit details
    Browse the repository at this point in the history
  4. Merge pull request #1 from stanvx/feat/hermes-first-class-sleep

    feat(sleep): add Hermes Agent as a first-class backend and transcript source
    stanvx authored Jul 19, 2026
    Configuration menu
    Copy the full SHA
    062809b View commit details
    Browse the repository at this point in the history
Loading