Skip to content

エージェント主ループ

源码版本v2026.7.20

職務

run_conversation は Hermes の中心:ユーザーメッセージを受け取り、イテレーション予算が尽きるかタスクが完了するまで、モデル + ツールを繰り返し呼ぶ。同時にコンテキスト構築、ツールディスパッチ、停止条件判定、失敗時のフォールバックを協調させる。

ファイル全長は約 5800 行、ロジック密度が高い——このページでは主線だけを見る。詳細はサブページに分割する。

主要ファイル

データフロー

  1. run_agent.py AIAgent は薄い転送器、実依存注入は init_agent で済む。
  2. 呼び出し側が user_message を渡すと、run_conversation はまず build_turn_context でこのラウンドのコンテキスト(api_messages)を組み立てる。
  3. while 主ループに入る:中断チェック → 予算減算(iteration_budget.consume())→ api_messages 構築/消毒 → 事前圧縮 → /steer テキスト排出 → MoA 集約 → API 呼び出しリトライ副ループへ。
  4. モデル応答後、レスポンス検証と finish_reason 処理を行う。失敗時は agent._try_activate_fallback() に回る。
  5. 圧縮閾値に到達したら context_compressor でスペースを回収。
  6. ループ退出後(予算尽き/タスク完了/中断)に最終メッセージを返し、ゲートウェイ層が配信する(ゲートウェイ層参照)。

まとめ

主ループは編成だけを担う:ラウンド駆動、予算管理、リトライとフォールバック。真の能力は機能層のツールとスキルから来て、マルチプラットフォーム配信はゲートウェイ層に、自己進化は学習ループが担う。

公式の中文紹介を対照したい場合は、README.zh-CNwebsite/i18n/zh-Hans/ を参照。

非公式コミュニティ学習サイト。MIT ライセンスの NousResearch/hermes-agent ソースに基づく。