Hermes Agentで育てるMDファイルは最初が大事っていう話・・・
はじめに
本、記事はClaude Codeと対話しながらHermes Agentを触ってみた内容であり、以下の文章自体もClaude Codeにまとめさせたものです、
Claude Codeとの対話は、進め方をリードさせながら、実際のコマンドは私が実行して、できるだけ手触り感を把握しながら、ツッコミをClaude Codeに入れ軌道修正しつつHands-Onを進めました。そのときの気づきをギュッとQiita用にまとめさせました。ハルシネーションがあればご指摘くださいませ。
TL;DR
NousResearch/hermes-agent をハンズオンで触ったら、自律 skill 学習ループが数学の初期値問題 (ODE) と完全に同じ構造になっていることに気付きました。$1.28 で headline 機能 (closed learning loop) を全 verify した記録と、そこから導出した mental model の話です。
-
発見: skill ecosystem の挙動は
skill(n+1) = f_agent(skill(n))の力学系、初回生成 (= 初期値 y_0) の質が trajectory 全体を支配する - 実証: 同じ弱モデル (gpt-oss-120b:free) が、broken な初期値で 60 iter loop に陥り、改善された初期値だと 40 messages で完走
- 戦略: phase-separated optimal model — bootstrap phase だけ paid model 投入、routine は free で十分
1. はじめに
「自律 AI Agent ってどこまで本当に動くの?」という疑問から、Hermes Agent を 8 日間ハンズオンで触りました。
そこで気付いたのは、Hermes Agent の "skill" 機構は数学の初期値問題と完全に同じ構造だということ。skill が育つかどうか、改善されるかどうかは、初回生成 (= 初期値) の質で決まる。これは ODE (常微分方程式) の Lyapunov 安定性そのものでした。
本記事では:
- Hermes Agent の skill / autonomy 機構を 30 秒で説明
- 4 round のハンズオン観察 (= 同じモデルが initial value で挙動が変わる現象)
- 初期値問題 (ODE) としての解釈 ⭐
- 派生する phase-separated optimal model 戦略
を順に追います。途中で $1.28 で全 verify したコスト breakdown も出します。
2. Hermes Agent と "skill" の定義
Hermes Agent (NousResearch 製) は autonomy 重視の AI agent framework です。最大の主張は closed learning loop = 「経験 → 再利用可能 skill 化 → 別セッションで自律利用 → 改善 → ...」のサイクルが回ること。
skill 自体はシンプル:
~/.hermes/skills/<category>/<name>/SKILL.md ← Markdown ファイル 1 個
そして 3 つのオペレーション:
-
L1: agent が経験から skill を自発生成 (=
skill_manage(action="create")) -
L2: agent が skill を自己改善 (=
skill_manage(action="edit")) -
Cross-session reuse: 別セッションで agent が skill を自発発見・利用 (=
skill_view(name))
3 つが回れば closed loop = headline 機能の verify です。
データ流の全体像:
ポイント: LLM が intelligence、Hermes は dumb plumbing。framework は model-invariant で、変わるのは LLM の judgment 品質だけ。embedding なし、fine-tuning なし、RL なし。
3. ハンズオンの観察 ── 4 Round
Round 1: L1 ✅ (gpt-oss-120b:free)
OpenRouter 無料枠 gpt-oss-120b:free で L1 を試行:
docker exec hermes /opt/hermes/.venv/bin/hermes chat -Q -q \
"新しい Python の ML プロジェクトを /tmp/mlproj-test に...
完了したら ml-project-bootstrap という名前で skill として保存して"
結果: 完走。~/.hermes/skills/software-development/ml-project-bootstrap/SKILL.md v1.0.0 が生成。category software-development/ も agent が autonomous に選択。
ただし、生成された skill には致命的欠陥がありました:
# v1.0.0 の pyproject.toml テンプレート
[build-system]
requires = ["uv"]
build-backend = "uv.build" # ← uv-build パッケージの install 手順が抜けてる
これは uv sync --dev 実行時に必ず ModuleNotFoundError: No module named 'uv.build' で落ちる、生まれた瞬間から壊れた初期値です。
Round 2: L2 ❌ (gpt-oss-120b:free、60 iter loop)
L2 を同じ free モデルで実行:
docker exec hermes ... -q \
"ml-project-bootstrap を使って ... + 改善点あれば skill を update して"
結果: 失敗 (60 iter 上限到達)。agent は build error を認識 (= cognition layer ✅) し、pyproject.toml を 15 回以上書き換えてループに陥りました:
agent は最後の summary で 「Skill update: SKILL.md を以下に置き換えるべき」と修正案を文章で書いたものの、skill_manage(action="edit") の tool call は最後まで発火せず。認知層は OK、行動層が止まった状態でした。
Round 3: L2 ✅ (Sonnet 4.6 paid)
config.yaml の model を anthropic/claude-sonnet-4.6 に切替えて再試行。
結果: 数分で完走、しかも build-system を hatchling に切替えて根本解決。skill version を v1.0.0 → v1.1.0 に semantic bump。uv sync --extra dev + ruff + mypy strict + pytest 100% coverage 全 pass まで verify 込み。
cost: 約 $0.30。
Round 4: 同じ弱モデルで再 reuse ✅ (gpt-oss-120b:free)
config を gpt-oss-120b:free に戻し、今度は v1.1 (Sonnet 改善済) を reuse:
結果: 40 messages で完走、/tmp/mlproj-test5/ に full project + tests pass。
| 観察項目 | Round 2 (= v1.0 broken) | Round 4 (= v1.1 fixed) |
|---|---|---|
| モデル | gpt-oss-120b:free | gpt-oss-120b:free (同一) |
| 初期値 | broken | fixed |
| 実行時間 | 20 分 (60 iter 上限) | 数分 (40 messages) |
| build error 解決 | ❌ 永遠にループ | ✅ 即動作 |
| 結果 | 失敗 | ✅ 成功 |
同じモデルが、初期値の質だけで天と地ほど挙動が変わる。これが核心の観察です。
4. ⭐ 初期値問題 (ODE) としての解釈
ここが本記事の central insight。
ODE での初期値問題は:
y'(t) = f(t, y(t)) (= 力学 / dynamics)
y(t_0) = y_0 (= 初期値 / initial condition)
これを Hermes skill ecosystem に投影すると:
skill(n+1) = L2_improvement(skill(n), experience(n)) (= 力学 = agent の L2 能力)
skill(0) = L1_creation(initial_task) (= 初期値 = L1 出力)
完全に同型です。
| ODE | Hermes skill ecosystem |
|---|---|
y_0 (初期値) |
L1 で生成された skill v1.0.0 |
f (力学関数) |
agent の L2 capability (skill 改善能力) |
trajectory y(t)
|
skill version 列 (v1.0 → v1.1 → ...) |
| Lyapunov 安定性 | 初期 skill の小さな欠陥が将来縮退するか拡大するか |
| カオス (蝶の効果) | 初期 skill の defect が agent 行動を不安定化 |
4 つの観測命題
L1 quality L2 capability System stability
y_0 ◯ (= clear, valid) + f ◯ (= capable) → ✅ stable, fast convergence
y_0 ◯ + f △ (= weak) → 🟡 stable but slow / occasional drift
y_0 ✗ (= broken) + f ◯ → 🟡 dynamics で修正可だが cost 高
y_0 ✗ + f △ → ❌ unstable, runaway divergence
ハンズオンの結果と並べると:
| Round | 初期値 y_0 | 力学 f | 結果 | 命題 |
|---|---|---|---|---|
| Round 2 | ✗ (broken v1.0) | △ (gpt-oss-120b) | ❌ 60 iter loop | y_0 ✗ + f △ |
| Round 3 | ✗ (broken v1.0) | ◯ (Sonnet 4.6) | 🟡 補正成功 | y_0 ✗ + f ◯ |
| Round 4 | ◯ (good v1.1) | △ (gpt-oss-120b) | ✅ 40 msgs 完走 | y_0 ◯ + f △ |
つまり 「y_0 ✗ + f △ の組み合わせが最も危険」、これが Round 2 で実証された不安定軌道です。
重要な含意 ── 修正 cost の非対称性
- 良い y_0: 弱い f でも安定。修正 cost ほぼゼロ
- 悪い y_0: 強い f が要る。修正 cost 高い
- agent self-correction の限界: f (= LLM の L2 能力) は SFT 量で決まり、上限あり。人間レビューの抜本性に勝てない
→ 「初期値の質を保証する唯一の方法は人の枝切り (HITL)」
これは AI 開発の 1 つの教訓: autonomy の自走は制御工学的に open-loop で不安定、HITL が closed-loop 制御の missing feedback 項です。AWS Labs の AI-DLC が phase ごとに人介入点を明示する設計なのも、同じ理由でしょう。
5. 派生する戦略 ── Phase-separated Optimal Model
ハンズオンで empirical に確認した戦略:
Routine reuse phase : gpt-oss-120b:free ($0) ← 日常運用
L2 phase (skill 改善) : Haiku 4.5 paid ($0.10) ← cost-effective L2
Comprehensive bootstrap : Sonnet 4.6 paid ($0.30) ← skill ライフタイムで 1〜2 回
L2 capability gradient の実測 (= cross-model 比較):
| モデル | L2 cognition | L2 action 発火 | Quality | Cost |
|---|---|---|---|---|
gpt-oss-120b:free |
✅ | ❌ (60 iter で諦め) | n/a | $0 |
claude-haiku-4.5 |
✅ | ✅ (skill_manage 3 calls) | 良好 | ~$0.10 |
claude-sonnet-4.6 |
✅ | ✅ (1 call で全面 rewrite) | semantic version + 包括的 | ~$0.10-0.30 |
→ L2 capability 閾値は free と Haiku の間にある = cheap paid (Haiku) で十分、Sonnet は本当に重要な bootstrap だけ。
ハンズオン Total Cost (= 8 日間、29 sessions)
state.db (Hermes が自動記録する SQLite) から SQL 集計:
Sonnet 4.6 paid (2 sessions、L2 + smoke) : $0.97
Haiku 4.5 paid (3 sessions、reuse + L2 + smoke) : $0.31
Free models (29 sessions、gpt-oss / hermes3 / gemma) : $0
─────────────────────────────────────────────────────
Total : $1.28
$1.28 で Hermes Agent の closed learning loop 全 verify + 初期値問題 framing の empirical 立証。極めて cost-effective です。
Free tier の運用脆弱性 (= 副次の警告)
検証中、gpt-oss-120b:free 以外の free モデル (Gemma 4 31B / Llama 3.3 70B / Qwen 3 80B) は全部 rate limit blocked (HTTP 429)。OpenRouter の per-model RPM cap (= 高需要時 8 req/min) や upstream provider (Google / Meta) の混雑が原因。production 評価で free tier 依存は脆弱、本番運用は paid 推奨です。
6. まとめ
AI Agent の skill ecosystem は初期値問題: Initial Value (L1) + Dynamics (L2) → Stable trajectory。弱モデルは初期値も力学も汚染するため二重リスク、強モデルは二重投資。最適 = phase-separated。
短く:
- ✅ Hermes Agent の closed learning loop は本物 (= headline 主張は実証済)
- ⚠️ ただし autonomy だけでは不安定 (= initial value の汚染が trajectory を破壊)
- ✅ HITL (= 人の枝切り) を外部から強制が現実解 — git ベースの skill review が de facto pattern
- ✅ Phase-separated optimal model strategy で $1 以下/skill ライフタイム で運用可能
次に試す価値がありそうなこと:
- 同じ ODE framing を他 agent framework (LangChain / AutoGen / CrewAI) で検証
- skill quality 自動評価 metric の実装 (= y_0 の health monitoring 機構)
- HITL gate を framework に組み込む拡張 PR
関連リンク
- NousResearch/hermes-agent — 検証対象の本家
- awslabs/aidlc-workflows — HITL 中枢の対極設計
- 関連 upstream Issue (= 私のハンズオンで confirmed):
ハンズオン記録の全 git history (4 commits) + 詳細 docs (3 MD files) は手元に揃ってます。需要あれば公開検討します。
📝 Tags: AI, LLM, agent, Hermes, OpenRouter, Sonnet, ODE, mathematical-modeling