Skip to content

refactor: make autonomy plugin configurable for Hermes instances#1

Open
DeliciousHouse wants to merge 1 commit into
42-evey:mainfrom
DeliciousHouse:refactor/brendan-hermes-autonomy
Open

refactor: make autonomy plugin configurable for Hermes instances#1
DeliciousHouse wants to merge 1 commit into
42-evey:mainfrom
DeliciousHouse:refactor/brendan-hermes-autonomy

Conversation

@DeliciousHouse
Copy link
Copy Markdown

Summary

  • makes evey-autonomy configurable via /home/node/.hermes/evey-autonomy.json / HERMES_AUTONOMY_CONFIG
  • replaces Evey-specific defaults with Hermes-friendly, Brendan-oriented defaults while preserving override hooks
  • adds local git project signals, including configurable project paths/base branches
  • updates routing/planning to recommend Hermes-native tools and configurable Claude model slugs
  • adds README documentation for customization and installation

Verification

  • python3 -m py_compile evey-autonomy/__init__.py
  • imported the plugin module and smoke-tested decide_handler, plan_handler, and reflect_handler

Note

This keeps the original tool names for compatibility: autonomous_decide, autonomous_plan, autonomous_reflect.

Copilot AI review requested due to automatic review settings April 30, 2026 12:07
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Refactors the evey-autonomy plugin to be configurable per Hermes instance via a JSON config file/environment variables, and updates the plugin’s collection/routing/planning defaults to be more Hermes-oriented (including local git project signals).

Changes:

  • Added config loading/merging ($HERMES_HOME/evey-autonomy.json / HERMES_AUTONOMY_CONFIG) and configurable operator/timezone/model defaults.
  • Added local git “project signals” collection and updated routing/planning templates to include project workflows.
  • Added README documentation and bumped plugin version metadata.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 6 comments.

File Description
evey-autonomy/plugin.yaml Bumps version and updates plugin description to reflect configurability and new signals.
evey-autonomy/init.py Implements config loading, project signal collection, and updates routing/planning defaults for Hermes usage.
evey-autonomy/README.md Documents configuration and installation/customization for Hermes instances.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread evey-autonomy/__init__.py
task_type = _classify_goal(goal)
tpl_key = _TYPE_TO_TEMPLATE.get(task_type, "research")
steps = [dict(s) for s in TEMPLATES.get(tpl_key, TEMPLATES["research"])][:max_steps]
steps = [dict(s) for s in _templates().get(tpl_key, _templates()["research"])][:max_steps]
Comment thread evey-autonomy/__init__.py
text = line.strip()[5:].strip()
if in_active and stripped.startswith("- [ ]"):
text = stripped[5:].strip()
if any(text.lower()[:30] in w for w in recently_worked):
Comment thread evey-autonomy/__init__.py
rc, branch, _ = _run(["git", "branch", "--show-current"], cwd=str(path))
rc2, status, _ = _run(["git", "status", "--short"], cwd=str(path))
rc3, unpushed, _ = _run(["git", "log", f"origin/{base}..HEAD", "--oneline", "-5"], cwd=str(path))
rc4, remote_delta, _ = _run(["git", "status", "--short", "--branch"], cwd=str(path))
Comment thread evey-autonomy/__init__.py
"research_quick": {"tools": ["web_search", "web_extract"], "models": [cheap], "cost": "configured"},
"health_check": {"tools": ["terminal", "validate_output"], "models": [], "cost": "free/local"},
"memory_maintenance": {"tools": ["memory_score", "memory_decay", "consolidate_daily_memory"], "models": [cheap], "cost": "configured"},
"cost_review": {"tools": ["hermes insights", "terminal"], "models": [], "cost": "free/local"},
Comment thread evey-autonomy/__init__.py
Comment on lines +480 to +493
{"step": 1, "action": "Inspect repo and requirements", "tool": "terminal/read_file/search_files", "model": "", "cost": "free/local"},
{"step": 2, "action": "Implement in branch/worktree", "tool": "delegate_task or patch", "model": heavy, "cost": "configured"},
{"step": 3, "action": "Run targeted tests and validators", "tool": "terminal", "model": "", "cost": "free/local"},
{"step": 4, "action": "Open/update PR when clean", "tool": "github-pr-workflow", "model": "", "cost": "free/local"},
],
"project": [
{"step": 1, "action": "Check git status, branch, PRs, CI", "tool": "terminal", "model": "", "cost": "free/local"},
{"step": 2, "action": "Fix or review active work", "tool": "delegate_task/patch", "model": heavy, "cost": "configured"},
{"step": 3, "action": "Verify and hand off via PR", "tool": "github-pr-workflow", "model": "", "cost": "free/local"},
],
"health": [
{"step": 1, "action": "Check service/process/runtime status", "tool": "terminal", "model": "", "cost": "free/local"},
{"step": 2, "action": "Check cron jobs and logs", "tool": "cronjob/terminal", "model": "", "cost": "free/local"},
{"step": 3, "action": "Report or fix actionable issues", "tool": "patch/send_message", "model": cheap, "cost": "configured"},
Comment thread evey-autonomy/__init__.py

top = unique[0]
rt = ROUTING.get(top.get("task_type", ""), ROUTING["simple_answer"])
rt = _routing().get(top.get("task_type", ""), _routing()["simple_answer"])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants