Skip to content

セッションと配信

源码版本v2026.7.20

職務

二つの役:① セッション(Session)——「メッセージの出所」(プラットフォーム、chat、送信者)を安定した key にまとめ、対話をディスクに永続化し、agent が再起動を跨いでコンテキストを継続できるようにする。② 配信台帳(Delivery Ledger)——agent の最終返信に「送達義務」を1件記録し、クラッシュ時に未配信の返信を識別して再送し、ユーザーに最終的に届ける。どちらもゲートウェイ層にあり、agent とは疎結合。

主要ファイル

データフロー

  1. アダプタがプラットフォームイベントを受け取り、MessageEvent:1759 経由で SessionSource を持ち出す。
  2. SessionSource:149 が安定した chat/sender id をハッシュする(gateway/session.py:40)。
  3. SessionContext:299 を構築し、session key を得る(パス安全校験:109 経由でディスクパスに使う)。
  4. session key がどのファイルから履歴を読むかを決め、agent に渡してコンテキストを継続する。
  5. agent が最終返信を出した後、ゲートウェイは record_obligation:155 で記帳 → 送信 → mark_delivered
  6. 送信中のクラッシュなら、次回起動時に sweep_recoverable(gateway/delivery_ledger.py:203) が attempting 状態かつ所有プロセスが死んだ義務を走査し、再送または失敗マークを付ける。

まとめ

セッション層は「このメッセージがどの継続対話に属するか」を担い、ハッシュ + パス校験で外部識別をディスクファイルに安全に写像する。配信台帳は「agent が送りたかった最終返信が本当にユーザーに届いたか」を担い、sqlite 状態機械でクラッシュ回復する。どちらも best-effort だが不可欠な信頼性層。

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