リリースノートには、二度読まないと本当に何が起きたかわからない種類の PR がある。Hermes Agent v0.8.0 のノートにあったのはこれだ。
GPT/Codex ツール利用ガイダンスの自己最適化 —— エージェントは自動行動ベンチマークを通じて、GPT と Codex のツール呼び出しにおける 5 つの失敗モードを診断し、パッチを当てた。OpenAI モデル上の信頼性が劇的に改善した。(#6120)
最初に読んだとき、「自己最適化」という言葉を多少ゆるく使った文だろうと思った。二度目に読んだとき、文字通りだと気付いた。エージェントは自分自身に対してベンチマークスイートを走らせ、OpenAI モデルが自分のツールをどう呼んでいるかの中から体系的な失敗を見つけ出し、それを直すためのターゲット付きガイダンスを生成し、直しが本当に効いていることを計測した。最終承認は人間が出した。ただし、診断とパッチ当てというステップそのものが自動化されていた。
これは掘り下げる価値がある話だ。なぜなら、ひとつのリリースに一行で紛れ込んで、今後のリリースがどんな姿を取れるのかを書き換えてしまうタイプの能力だからだ。
具体的にどんな問題だったのか
Hermes Agent と OpenAI 系モデル——GPT-5、Codex——の組み合わせは、しばらくの間、目に見えてぐらついていた。ユーザーからの声はこうだった。Anthropic の Claude はスムーズに動くのに、GPT-5 は引数の形が違うものを出してきたり、ステップを飛ばしたり、マルチツール呼び出しの途中で「自分が直前に何をやったか」を見失ったりする。これは微妙なバグではない。目の前で起きているのを見ることができる。だが、手で直そうとすると気が狂うほどやっかいだ。失敗モードはモデル固有で、プロンプトの言い回しに対して直感では追いきれないぐらい敏感に反応する。
PR の説明によれば、繰り返し出てくるパターンは 5 つあった。
- •破壊的ツール呼び出しの前に、推奨されている事前チェックを飛ばす。
- •スキーマが構造化オブジェクトや数値を期待している場所に、生の文字列で引数を投げてくる。
- •連鎖した呼び出しのなかで、どのツール呼び出しが既に成功したかを見失い、重複して呼ぶ。
- •ガイダンスがリトライするよう言っていても、一時的なエラーの後にリトライを拒む。
- •長いコンテキストを与えられたとき、「計画を実行する」モードから「計画を立て直す」モードに流れていく。
どれも理論上の話ではない。それぞれに GitHub の issue の長い尻尾が付いていた。
それらを直したループ
PR #6120 のアプローチには動く部品が 3 つある。
一つ目、自動行動ベンチマークスイート。テストハーネスが、5 つの失敗モードそれぞれを誘発するように設計された合成シナリオ群に対してエージェントを走らせる。シナリオごとに、モデルが何をしたか、何をすべきだったか、その差分が既知の失敗パターンのどれかに該当するかをベンチマークが記録する。
二つ目、ガイダンス生成のステップ。ベンチマークが失敗を検出すると、ハーネスは候補となるガイダンス文字列を吐き出す。システムプロンプトに追加するための、短い、モデル固有の指示で、失敗したパターンをピンポイントで狙う。「もっと注意しろ」みたいな話ではない。「破壊的なツールを呼ぶ前に、同じ引数で対応するプレビューツールを呼び、その出力を報告すること」といった具体性だ。候補は、観測された具体的な失敗に対して生成される——汎用の評価表に沿って書かれているわけではない。
三つ目、再ベンチマークのステップ。生成された候補ガイダンスはそれぞれ、同じシナリオスイートに対してもう一度テストされる。スコアを改善したものは残る。他のシナリオを劣化させたものは捨てられる。生き残った文字列は集約されて、Hermes が出荷する GPT/Codex 用のシステムプロンプトに組み込まれる。
なぜこれは別の種類の話なのか
これまで、エージェントフレームワークに同梱されるプロンプトは人間が書いていた——時には一人、時には小さなチームで——会話に自分の目を走らせながら、「何が効き、何が効かないか」についての意見を育ててきた。このやり方には 3 つの問題がある。たくさんのモデルにスケールしない。モデルが更新されたときに安価に走り直せない。そしてアウトプットが、実際の証拠と書き手の迷信を一緒くたにエンコードしたプロンプトになってしまう。
「人間が書き、人間が評価する」ループを「ベンチマークが候補を書き、ベンチマークがそれを評価する」ループに置き換えるのは、AI を監視なしで自分自身をチューニングさせるのと同じ話ではない。最終的なガイダンスは依然として人間が承認する。だが、パターンを見つけて修正案を出す、という実作業が計測可能で再現可能なものになった。GPT-6 が出てきたら、同じハーネスをもう一度走らせればいい。新しい失敗モードが報告されたら、新しいシナリオを追加して、ループをもう一度回せばいい。モデルの実際の振る舞いとプロンプトを同期させ続けるオーバーヘッドは、桁がひとつ下がる。
v0.8.0 の他の関連改修も同じ方角を指している。思考のみのプレフィル継続(#5931)は、モデルが推論ブロックを出力しながらコンテンツブロックを出さずに固まる、という具体的なケースを処理するものだ。実行規律ガイダンス(#5414)はシステムプロンプトに汎用ルールを追加する——「本当に何かが変わらない限り、計画を立て直さない」。ツール呼び出し引数の型強制(#5265)は JSON スキーマが数値や真偽値を期待している場所で、文字列を静かに変換して、ベンチマークが捕まえていた引数型の失敗を覆い隠す。この 3 つの PR はチェンジログ上ではバラバラに見える。PR #6120 と併せて読むと、それらが意図的なキャンペーンの表面に出ている部分だとわかる——計測して、直して、また計測することで、特定のモデルファミリー上でのエージェントの信頼性を押し上げるキャンペーンだ。
そこに潜む静かな含意
この話がただの良いリリースではなく、蝶番の瞬間に感じられる理由は——人間がプロンプトを手書きするのをやめたとき、エージェントエンジニアリングはどんな姿になるかを、ここがうっすら示しているからだ。Hermes のようなリポジトリは、12 社のプロバイダと 30 のモデルを相手にしなければならない。それぞれの振る舞いを手で追うのは、もう不可能な規模だ。代わりに「モデル X にはどうプロンプトを書くか」をベンチマークハーネスで解くチューニング問題として扱うなら、モデル動物園の規模に合わせて拡張していけるプロセスが手に入る——溺れる代わりに。
どれも v0.8.0 の見出しではなかった。見出しは「知性のリリース」で、デモはライブモデル切り替えだった。だが床下で静かに動いているのはこちらだ——Hermes はこれで、自分がサポートする全モデル上でエージェントを賢く保ち続ける手段を、誰かがモデルごとに週末を 1 つ潰してシステムプロンプトを調整し直さなくても済む形で、持ったということだ。こういう能力は次のリリースでも機能として出てくることはない——その代わり、このあと 6 リリース連続で「Hermes 上の GPT の信頼性が上がり続けている」という形で姿を現す。
リリースノートを趣味で読むタイプの人間なら、これこそ注視すべき類の形だ。