Hermes Agent完全ガイド 第7回:スキル — 自動学習の仕組みと使い方
Hermes Agent完全ガイド 第7回:スキル — 自動学習の仕組みと使い方
出典: note.com / 2026-03-23
メモリとスキルは何が違うのか
前回のメモリシステムは「事実」を覚える仕組みだった。「このユーザーはこういう好みがある」「このサーバーのIPはこれだ」。
スキルは違う。スキルは「手順」を覚える仕組みだ。
「note.comに記事を投稿する方法」「Minecraftサーバーを立てる手順」「GitHubのPRレビューの流れ」。こういった、一度成功した作業手順をSKILL.mdというドキュメントに残し、次回同じ種類のタスクが来た時に自動的に参照する。
メモリが「何を知っているか」なら、スキルは「何ができるか」だ。
スキルの正体はただのMarkdownファイル
スキルの実体は ~/.hermes/skills/ 以下に置かれたディレクトリ群だ。各ディレクトリにSKILL.mdというファイルが1つ入っている。
ディレクトリ構造はこうなっている。
~/.hermes/skills/
├── note-auto-post/
│ └── SKILL.md
├── fleet/
│ ├── tooltree/
│ │ └── SKILL.md
│ └── x-graphql-posting/
│ └── SKILL.md
├── creative/
│ ├── ascii-art/
│ │ └── SKILL.md
│ └── excalidraw/
│ └── SKILL.md
└── github/
├── github-pr-workflow/
│ └── SKILL.md
└── github-issues/
└── SKILL.md
カテゴリ(fleet、creative、githubなど)でフォルダ分けされている。うちの環境には105個のスキルが入っている。
SKILL.mdの中身
SKILL.mdはYAMLフロントマター + Markdown本文で構成される。
先頭のYAMLフロントマターに名前と説明を書く。
name: note-auto-post
description: note.comにcurl API直接投稿で記事を作成・公開まで完結するスキル
version: 1.0.0
その後にMarkdown本文が続く。ここに具体的な手順、コマンド、注意事項、トラブルシューティングを書く。
重要なのは、SKILL.mdは人間が直接読み書きできるただのテキストファイルだということだ。データベースでも暗号化ファイルでもない。viで開いて編集できる。
段階的開示 — トークン節約の設計
105個のスキルを毎回全部読み込んだら、コンテキストウィンドウが溢れる。
Hermes Agentはこれを「段階的開示」で解決している。
第1段階:skills_list。スキル名と説明文の一覧だけを返す。名前は64文字以内、説明は1024文字以内に制限されている。これが毎回のシステムプロンプトに注入される。
第2段階:skill_view。特定のスキルの全文を読み込む。タスクに関連するスキルが見つかった時だけ呼ばれる。
第3段階:リンクファイル。SKILL.mdの他にreferences/、templates/、scripts/、assets/というサブディレクトリにファイルを置ける。API仕様書、テンプレートファイル、実行スクリプトなどだ。これらもskill_viewで個別に読み込む。
つまり、普段は「名前と概要だけ」知っていて、必要な時だけ「全文を読む」。人間が本棚から必要な本だけ取り出して読むのと同じだ。
エージェントが自分でスキルを作る
ここがスキルシステムの核心だ。スキルはエージェント自身が作成・編集・削除できる。
skill_manageツールには6つの操作がある。
create — 新しいスキルを作成する。YAML frontmatter + Markdown本文を指定する。
edit — 既存のSKILL.mdを全面書き換えする。大幅な改訂の時に使う。
patch — SKILL.md内の一部分だけを差し替える。小さな修正や追記に使う。
delete — スキルごと削除する。
write_file — references/やscripts/にファイルを追加する。
remove_file — サブディレクトリのファイルを削除する。
典型的なフローはこうだ。
-
難しいタスクを5回以上のツール呼び出しで解決する
-
エージェントが「この手順をスキルとして保存しますか?」と聞く
-
ユーザーが「はい」と答える
-
エージェントがSKILL.mdを書いてskill_manage(action=“create”)で保存する
次回同じ種類のタスクが来た時、エージェントはskills_listの一覧からマッチするスキルを見つけ、skill_viewで全文を読み、その手順に従って作業する。
自動修正 — 使いながら育てる
スキルは作って終わりではない。使うたびに育つ。
エージェントがスキルを読んで作業し、手順が古くなっていたり、新しい落とし穴を発見した場合、その場でpatchする。
うちの実例を挙げる。note.comへの投稿スキルは、最初はブラウザ操作で投稿する手順だった。ところがChrome v146のバグでブラウザ起動が不可能になった。エージェントはcurl APIによる直接投稿方式を発見し、スキルを全面書き換えした。今では「ブラウザ不要。curl + Cookie認証のみ」という進化したスキルになっている。
別の例。X(Twitter)投稿スキルも、最初はBrowserbaseによるヘッドレスブラウザ操作だった。自動化検知でブロックされた後、GraphQL内部APIへのHTTP直叩きに進化した。スキルは作業履歴そのものだ。
セキュリティスキャン
エージェントが作成するスキルには、セキュリティスキャンが実行される。
skills_guardというモジュールが、SKILL.mdの内容とサブディレクトリのファイルを検査する。プロンプトインジェクションのパターン、APIキーの外部送信コード、不審なシェルコマンドが含まれていれば、作成をブロックしてロールバックする。
これはメモリシステムと同じ設計思想だ。エージェントが自律的に書き込むファイルは、必ずセキュリティチェックを通す。
スラッシュコマンドとしてのスキル
スキルはCLIやTelegramからスラッシュコマンドとしても呼び出せる。
/plan と打てば計画モードのスキルが発動する。/dogfood と打てばQAテストのスキルが読み込まれる。
仕組みは単純で、スキルの内容をユーザーメッセージとして注入する。システムプロンプトには入れない。理由はプロンプトキャッシュだ。前回解説した通り、システムプロンプトを変更するとキャッシュが無効になる。スキルをユーザーメッセージとして送ることで、キャッシュを壊さずにスキルの手順をエージェントに渡す。
バンドルスキルとユーザースキル
Hermes Agentには2種類のスキルがある。
バンドルスキル — Hermes Agentに最初から同梱されている。GitHub操作、Docker設定、ML訓練など、汎用的な手順が入っている。アップデートで自動的に追加・更新される。
ユーザースキル — エージェントまたはユーザーが作成したもの。自分の環境固有の手順、独自のワークフロー。バンドルスキルより優先される。
うちの場合、note-auto-post(note.com投稿)、x-graphql-posting(X投稿)、tooltree(ツール選択最適化)、fleet-registry(艦隊構成情報)などがユーザースキルだ。どれも汎用的なものではなく、うちの運用環境に特化した手順書になっている。
OpenClawとの比較
OpenClawにもスキルに近い概念はある。AGENTS.mdやプロジェクトのコンテキストファイルで、タスク固有の指示を与えることができる。
Hermes Agentのスキルシステムの特徴は、エージェント自身がスキルを作成・修正・削除できることだ。人間が手動で手順書を書く必要がない。エージェントが成功体験から手順を抽出し、失敗から修正を加える。
もう1つの違いは、105個のスキルをカテゴリ分類して段階的に開示する仕組みだ。普段は名前と概要だけ。必要な時だけ全文を読む。この設計がなければ、スキルの数が増えるほどコンテキストウィンドウを圧迫する。
実運用の教訓
3つ挙げる。
第一に、スキルは「5回以上のツール呼び出しで解決した複雑なタスク」に作る。2〜3回で終わる単純な作業にスキルは要らない。過剰なスキル作成は管理コストを増やす。
第二に、スキルは使ったら必ず検証しろ。古いスキルに従って失敗するケースがある。APIの仕様変更、ツールのバージョンアップ、環境の変化。スキルの中身が現実と乖離していないか、使うたびに確認する必要がある。
第三に、スキルのreferences/やscripts/ディレクトリを活用しろ。SKILL.mdに全てを詰め込むと長大になる。APIの仕様書はreferences/api.mdに、実行スクリプトはscripts/run.shに分離する。段階的開示の恩恵を最大化できる。
まとめ
-
スキルは「手順」を覚える仕組み。メモリの「事実」と補完関係にある
-
実体はSKILL.md(YAML frontmatter + Markdown)のテキストファイル
-
段階的開示で105個のスキルをトークン効率良く管理
-
エージェントが自分でスキルを作成・修正・削除できる
-
使うたびに自動修正される。成功と失敗の両方から学ぶ
-
セキュリティスキャンでインジェクション防止
-
スラッシュコマンドでCLI/Telegramから直接呼び出せる
次回は「第8回:落ちる問題と対策 — LaunchAgent/KeepAlive」。AIエージェントを24時間稼働させるための泥臭い運用ノウハウを共有する。
#HermesAgent #AI #OpenClaw #AIエージェント #スキルシステム
この記事は note.com から KTBLOG に移行されました。元記事: https://note.com/famous_prawn2009/n/na49bf2f079e2