agentleFS
ryonakaeryonakae/hermes-self-improvement/skills/operations/SKILL.md

operations

Skill4 starsChanged 3 months agoMITView on GitHub

Hermes self-improvement plugin(`hermes-self-improvement`)の設計・実装・検証・運用に使う bundled operational skill。runtime hook、telemetry、evidence、runner、scorer/evaluator calibration、安全な skill/memory 改善を扱うときに読む。

9 other projects use a version of this.

Adopted by

Most recently taken up by

The file

Files
SKILL.md

hermes-self-improvement operations

Hermes の skill / memory / scorer / evaluator を改善するための user plugin を扱う operational index。詳細な設計や roadmap は repo-tracked docs / .hermes/plans/ に置き、この skill は毎回必要な判断だけを短く保持する。

まず守ること

  • Hermes 本体や upstream-managed code を直接編集しない。plugin 内で解決する。
  • Runtime hook は観測専用。hook 内で LLM、GEPA optimizer、skill patch、memory edit、重い集計を実行しない。
  • Primary CLI / tool surface は improve, calibrate, report, status の4つ。
  • improve と calibrate は default mutation-capable。preview-only は --dry-run。
  • plan, apply, rollback, outcome / record_outcome, --execute, item/hash 指定 flag は primary surface に戻さない。
  • 改善対象は skill, memory, scorer, evaluator だけ。runtime config、prompt policy、tool policy、任意 docs/config、Hermes core へ広げない。
  • Curator と self-improvement は代替関係ではない。Curator は skill usage / pinned state / active → stale → archived lifecycle / optional consolidation を担当する。self-improvement は tool failure、memory operation/failure、user correction/session outcome、subagent outcome、LLM/API failure metadata を証拠に、skill / memory / user profile / evaluator prompt の改善を担当する。
  • Curator telemetry(skill usage / lifecycle / pinned / archive state)は Curator / Hermes を source of truth にし、plugin hooks で重複収集しない。Curator の advisory review outcome だけでは auto-apply せず、planner decision と safety checks を通す。
  • 定期運用では built-in Curator を hermes curator pause で一時停止し、2つの autonomous maintainer が同じ skill library を別々に変更しないようにする。curator.enabled: false にはしない。pause が止めるのは scheduled Curator run だけで、config / telemetry / pin / lifecycle state / CLI management は残る。Curator 単独運用へ戻すときは hermes curator resume。
  • improve は paused 中も Curator/Hermes telemetry を skill candidate の source of truth として読む。mutating improve は candidate load 前に Curator と同じ apply_automatic_transitions() を実行することがある。pause を「Curator の情報やライフサイクル機能を捨てる設定」と説明しない。
  • Skill mutation は $HERMES_HOME/skills/ 配下の local unprotected skills のみを対象にし、skill_manage など公式 skill tools だけで実行する。protected classes は pinned / archived / built-in / bundled / hub-installed / plugin-bundled / external-dir / ambiguous/unresolvable で、LLM-facing mutation target には載せず artifact に除外件数・理由だけ残す。edit には patch / merge・absorb / reference rewrite / Curator-style archive を含む。Curator に直接 attach できない evidence は context window 付き candidate として残す。Evidence pack は inventory health、memory duplicate/stale pair、local stale singleton、coverage gap candidate を持てる。Target resolver は attachment-only で attach_existing_skill / memory_candidate / unresolved / skip_noise の4分類だけを返し、single visible target は generic failure の attach 根拠ではなく negative-fit signal として扱う。Improvement planner は mutate_skill / archive_skill / create_skill / mutate_memory / calibrate_evaluator / skip / defer を選ぶ。Skill の patch / merge は canonical decision ではなく decision: "mutate_skill" + maintenance_action: "patch" | "merge" で表す。Dry-run summary は recommendation に加えて knowledge maintenance の代表テーマを短く出す。観測から新規 skill が必要だと planner が判断した場合でも、durable procedural workflow かつ既存 local unprotected skill に改修・統合先がないときだけ skill_manage(action="create") 経由で作成できる。direct filesystem fallback は使わない。
  • Archived skills は通常の candidate / duplicate-prevention / restore candidate として使わない。Curator behavior に合わせる。
  • Memory mutation は memory tool / provider-native memory tool だけで実行する。evidence-triggered related-memory recall/search context は使うが、built-in memory files、provider DB、provider internals を直接編集しない。CLI/standalone 実行でも公式 tools.memory_tool.MemoryStore を load して memory_tool(..., store=store) を呼ぶ。Conversation-derived memory gap 抽出では $HERMES_HOME/memories/MEMORY.md / USER.md から既存 built-in memory の compact entry を読み、editor の current-entry handoff へ exact old_text 付きで渡す。run artifact の Current memory entries is empty は、これらの files が存在するなら runtime handoff bug と扱う。抽出後にも類似チェックで duplicate add を skip、関連 stale fact を replace に寄せる。USER/MEMORY/Skill の置き場所も LLM-facing inventory evidence として扱い、USER=好み/会話スタイル/期待値、MEMORY=環境事実/規約/学んだこと、Skill=手順/workflow という公式境界を渡す。placement candidate は code/path/command 形に限定せず、plain な user preference や environment fact も editor に渡して既存 bounded executor に判断させる。clear な USER↔MEMORY move は add-before-remove で実行し、曖昧なら defer。editor の実変更は nested result だけでなく top-level decisions / changed_memories / summary / episode にも反映する。明白な stale memory pair は既存 memory inventory planning に memory_replace hint として流し、曖昧・不確実・temporary・secret っぽい pair は defer に留める。手順/workflow が built-in memory にある場合は memory_to_skill bridge が明示 skill_route と current exact old_text を要求し、editor による skill 更新成功後だけ memory remove を実行する。replay は dry-run artifact の memory_to_skill_preview だけを対象にし、source memory が現行 entry と一致しなければ削除しない。raw terminal/search output は memory にしない。full memory lifecycle / sweep はしないが、built-in memory add が容量上限で失敗した場合は公式 tool の current_entries を入力に、最大3件の replace/remove compaction を試してから add を再試行する。それでも満杯なら active external provider が expose する tool にだけ fallback する。外部 provider はユーザーごとに異なるため、Hindsight 固定にしない。Conversation-derived memory gaps are first-class candidates; filters may rank candidate windows, but must not be hard gates for semantic value.
  • Rollback は primary feature ではない。失敗や誤変更は future evidence として次の improvement run で correction する。Curator-style archive restore は別扱い。
  • Scorer/evaluator self-improvement は prompt / rubric / runtime-private eval cases が対象。Python implementation code は自己変更しない。Repo base prompt は hermes_self_improvement/prompts.py の薄い kernel(schema / allowed action/tool / hard safety boundary)に留め、厚い planner/editor/evaluator guidance は ${HERMES_HOME:-~/.hermes}/self-improvement/evaluator/ の runtime-private overlay を正本にする。defaults/prompt-overlays/*.md は setup 用 seed で、GEPA/DSPy は runtime overlay を改善する。overlay は role ごとに 150 行 / 12000 文字まで。
  • improve は skill / memory 変更を episode として append-only に記録する。calibrate は rolling window(既定30日)で観測を見直し、明示的に紐づく observation だけを outcome scoring に使う。unmatched observation は artifact に残し、弱・中・強の材料分類と繰り返し失敗の runtime eval case 化に使う。improve run artifact に unmatched candidates や conversation memory gaps が残った場合も、overlay calibration 用の runtime-private eval cases にできる。
  • DSPy/GEPA は hook / plugin discovery path では lazy import を維持し、Hermes runtime 全体の必須依存にしない。
  • Proposal scoring は deterministic heuristic のみ。scoring は report ordering / diagnostic signals 用の advisory 情報で、無人変更の許可として扱わない。LLM 判断は planner / editor / evaluator の現在の site が担当する。GEPA/DSPy は calibrate で evaluator / prompt / rubric 改善に使う。
  • Model routing は current schema の model.planner(skill / memory 改善判断と unresolved evidence の target 解決)、model.editor(skill / memory mutation)、model.planner_memory(tool-free memory gap extraction)、model.evaluator(tool-free DSPy/GEPA evaluator calibration)だけを使う。provider: auto と空の model は Hermes の通常 auto/main routing に任せる指定。旧 role key は残さない。
  • 変更前に git status --short と対象 diff を確認し、無関係な変更を巻き戻さない。

主要パス

  • plugin.yaml: plugin manifest / exposed tools
  • __init__.py: root thin plugin entrypoint
  • hermes_self_improvement/schemas.py: plugin tool schemas
  • hermes_self_improvement/tool_handlers.py: CLI parity tool handlers。wrapper CLI に shell out せず core function を使う
  • hermes_self_improvement/cli.py: CLI parser、report rendering、runner orchestration
  • hermes_self_improvement/observer.py: hook observer、redaction、JSONL telemetry
  • hermes_self_improvement/evidence.py: event aggregation / evidence extraction / context-windowed unmatched candidates
  • hermes_self_improvement/planner.py: planner facade, target resolution digest / normalization, and planner execution surface
  • hermes_self_improvement/planner_memory.py: conversation window ranking and memory gap candidates
  • hermes_self_improvement/calibration.py: calibration evidence、outcome prepass、regression-gated active evaluator promotion
  • hermes_self_improvement/runtime_eval_cases.py: runtime-private eval case builders for episodes, unmatched observations, and improve run artifacts
  • hermes_self_improvement/outcome_observer.py: calibrate 前処理で outcome observation を生成する lightweight producer
  • hermes_self_improvement/mutation_policy.py: provider-aware memory mutation policy / context builders
  • hermes_self_improvement/mutation_worker.py: tool-mediated mutation executor
  • evals/proposal/: repo-tracked public evaluator regression seed。user-specific runtime eval cases はここに混ぜない
  • skills/operations/SKILL.md: この bundled operational skill

Runtime artifact は ${HERMES_HOME:-~/.hermes}/self-improvement/ 配下。主な subdir は state/, daily/, runs/, evidence/, ledgers/, evaluator/, cache/。evaluator/ は evaluator state、active-prompts.json、role-level prompt-candidates/、prompt candidate sets、runtime eval cases、default asset copy を置く場所で、GEPA はその中の optimizer 実装の一つとして扱う。

日常コマンド

hermes self-improvement setup --check
hermes self-improvement status
hermes self-improvement report --since-hours 24 --json
hermes self-improvement improve
hermes self-improvement improve --dry-run
hermes self-improvement calibrate
hermes self-improvement calibrate --dry-run
hermes self-improvement calibrate --from-candidate-set /path/to/candidate-set.json

Primary plugin tools:

self_improvement_status
self_improvement_report
self_improvement_improve
self_improvement_calibrate

Cron / no-agent 運用

  • self-improvement-autonomous-maintenance は 10 */3 * * *。self-improvement-maintenance.sh で status, improve, report --since-hours 24 を実行する。
  • self-improvement-calibrate は 0 3 * * *。DSPy/GEPA 系の重い calibrate は maintenance script に戻さない。
  • 08:00 の daily-ops-digest は直近24時間の maintenance 出力を最大8回分読み、個別ログではなく、実行回数・実変更・候補・defer/skip/block の傾向を統括する。
  • cron output は local 保存前提。script stdout は短い要約と artifact path に留める。

変更時の進め方

  1. README.md, AGENTS.md, 関連 reference、該当 repo-tracked plan を読む。
  2. 新しい runner / proposal scoring / mutation 挙動は TDD で fail-closed を先に固定してから実装する。
  3. Hook path を触る場合は、redaction・retention・partial event filtering が壊れないか確認する。
  4. Proposal scoring / evaluator path を触る場合は、advisory-only と runtime-private eval cases を崩さない。
  5. Tool handler / schema を触る場合は、plugin.yaml, schemas.py, tool_handlers.py, registration、tests/test_plugin_tools.py を同時に更新する。
  6. __init__.py / registration / bundled skill discovery を触ったら、unit test だけでなく plugin manager loading も確認する。
  7. 実 mutation step を追加するときは、skill は official skill tools、memory は memory/provider tools だけに閉じる。

検証 checklist

通常変更後:

PY=${PYTHON:-.venv/bin/python}
$PY -m py_compile __init__.py hermes_self_improvement/*.py
$PY -m pytest tests -q
hermes self-improvement status

Registration / tool surface 変更後:

PY=${PYTHON:-python3}
$PY - <<'PY'
from hermes_cli.plugins import discover_plugins, get_plugin_manager
import json

discover_plugins(force=True)
info = [p for p in get_plugin_manager().list_plugins() if p['name'] == 'hermes-self-improvement']
print(json.dumps(info, ensure_ascii=False, indent=2))
PY

Expected: enabled true, error null, tools 4。

Pitfalls

  • Evidence skill target names may be bare (skill-name) or qualified (dir-name:skill-name). Resolve exact qualified Curator candidate matches first; otherwise fall back to bare-name matching and attach evidence to every mutable candidate with that bare name so the mutation agent can decide. Do not hardcode a user-specific prefix such as hermes-custom:.
  • Planner quality should be evaluated from proof counts, not selected count alone. Watch attached_candidate_count, unmatched_evidence_count, selected_with_evidence, action_like_skips, target-hint attachment counts/match kinds, evidence-strength counts, weak_only_selected_count, cluster evidence counts, editor prompt chars, and planner/editor prompt source/hash in dry-run output/artifacts. If target hints attach nearly everything, inspect match kinds and strength before trusting the planner selection.
  • Agent tool handlers must not return full run/calibration payloads. Return compact summaries with artifact paths; keep full payloads in runtime artifacts or CLI --json only. self_improvement_improve should return counts/status, semantic action_summary / actionable buckets (apply / defer / skip / block), prompt source/hash metadata, artifact_path / full_payload.path, and short next actions. self_improvement_calibrate should expose components.prompt_overlay_set, components.evaluator, overlay_candidate_set, and full_payload.path. Never include full evidence, planner decision bodies, editor instructions, full prompt text, role-level prompt_overlays, or prompt candidates in tool results.
  • Native mutation editor follow-up messages must avoid role: tool; some auxiliary/provider paths reject it with Invalid value: 'tool'. Execute tools inside the plugin, then feed compact tool results back as ordinary user-role context.
  • root 直下に tools.py や tools/ package を置かない。Hermes core tools.registry を shadow する。
  • Plugin-bundled skills は repo file として編集する。skill_manage で plugin-bundled skill を編集しない。
  • importlib.util.module_from_spec で unit test する場合は、exec_module 前に sys.modules[spec.name] = module を入れる。
  • Runtime code で relative import を含む plugin module を読む場合は、file-location spec の単体名で exec_module しない。importlib.import_module("hermes_self_improvement.<module>") など package context 付きで読む。単体名だと from .prompts ... が attempted relative import with no known parent package で落ちる。
  • DSPy/GEPA evaluator tests は基本 fake dependency で書く。runtime hook / normal import が dspy を eager import しないことを守る。

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.