# Portability: UNIVERSAL
# Last validated: 2026-05-17
# Next review: 2027-05-17

MULTI-LLM プロトコル - 並列エージェントの調整
-----------------------------------------------------

現在: 2026-01-28 v1.1.71

複数の LLM の安全な並列作業のためのプロトコル V3
(クロード、ジェミニ、副操縦士、オラマ、パープレクシティ) 同じ
ファイルシステム。クロード+ジェミニエクスペリメントによって開発されました


重要: 正しく開始してください
------------------------
すべてのパートナーはスタンプ カードから開始する必要があります!

  # クロードが始まります
  bach --startup --partner=claude --mode=silent

  # ジェミニが起動
  bach --startup --partner=gemini --mode=silent

  # 新しいパートナー (自分の名前)
  bach --startup --partner=simonAI --mode=silent

  # 新しいパートナー (名前なし)
  bach --startup --partner=new --mode=silent

なぜですか?
- Partner_Presence DB での自動打刻
- パートナーの認識: まだオンラインにいる人を検出します
- プロトコル V3 は複数のパートナーに対して自動的に推奨されます
- タスク間チェックはパートナー チェックを思い出させます

CLI コマンド
-----------
bach llm presence [dir] [task]  プレゼンスの作成/更新
bach llm check [dir]            他のエージェントの検出
bach llm lock <datei>           ロックの取得
bach llm unlock [datei]         ロックの解放
bach llm handshake [dir]        ハンドシェイク プロトコルの開始
bach llm status [dir]           ステータスの表示

プロトコル V3 コンポーネント
------------------------

1。プレゼンス システム
------------------
各エージェントは作業ディレクトリにプレゼンス ファイルを作成します:

ファイル: .<agent>_presence (例: .claude_presence)

コンテンツ:
  エージェント: クロード
  ステータス: アクティブ|終了
  開始: 2026-01-28T01:00:00
  ハートビート: 2026-01-28T01:05:00
  作業中: TASK_DESCRIPTION
  現在のファイル: ファイル.txt
  lock_status: FREE|LOCKED|WAITING

ルール:
- ハートビートを 30 ～ 60 秒ごとに更新します
- ハートビートが 2 分より古い = エージェントが非アクティブ
- セッション終了時: ステータスを FINISHED

2 に設定します。ロック システム
-----------------
共有ファイルへの書き込みアクセス前:

ロック ファイル: <ファイル>.lock.<エージェント>
例: PROTOKOL.md.lock.claude

ワークフロー:
  1. list_directory - 外部の .lock.* が存在するかどうかを確認します
  2.「はい」の場合 -> 待機します (5 秒間のバックオフ、そして再度)
  3. いいえの場合 -> ロックを作成します
  4. バックアップ (<ファイル>.bak) を作成します。
  5. ファイルを編集する
  6. ロックをすぐに削除します

ロックの内容:
  エージェント: クロード
  ロックされた_at: 2026-01-28T01:00:00
  ファイル: PROTOKOL.md

タイムアウト: 5 分を超えるロックは「古い」とみなされます


3. 別のエージェントによって削除できます。
----------------
3.システムのバックアップ

共有ファイルに変更を加える前に:
- バックアップの作成: <ファイル>.bak
- 後から書くだけ
- バックアップは回復のために残ります
----------------------
4。ハンドシェイク プロトコル

エージェントが会うときの自動検出:

手順:
  1. エージェント A がプレゼンスを作成する
  2. エージェント A がエージェント B を検出します (detect_other_agents 経由)
  3. エージェント A が作成されました: .handshake_<agent_a>
  4. エージェント B がハンドシェイク要求を検出します
  5. エージェント B は、.handshake_<agent_b> に ACCEPTED を返します。
  6. どちらもプロトコル V3 を有効にします

ハンドシェイク ファイル:
  から: クロード
  へ: ジェミニ
  時間: 2026-01-28T01:00:00
  ステータス: 承認済み
  プロトコル: V3
-------------

COMMUNICATION
  bach msg send <partner> "Nachricht"
  bach msg list
  bach msg read <id>

メタ レベル (非同期):

リアルタイム (作業フォルダー内):
  ステータス用のプレゼンスファイル
  ファイル内通信 (タイムスタンプ付きエントリ)

ファイル内形式:
  [HH:MM] [エージェント] メッセージまたはアクション
-------------------------------------

ワークフロー: 共有ファイルの編集
   bach llm check

1。存在を確認します:
   bach llm lock DATEI.md

2。ロックの取得:

3.バックアップを作成します。
   (safe_write により自動的に)

4.ファイルを編集
   bach llm unlock DATEI.md

5.ロックを解除します:
   bach llm presence . "Fertig"

6。更新の存在:
----------------

サンプルセッション
bach llm presence . "Task_123"
bach llm check              # エージェント A が開始します

# -> "他のエージェントはありません"
bach llm presence . "Task_456"
bach llm check              # エージェント B が開始します

# -> "claude: ACTIVE"
bach llm lock SHARED.txt    # エージェント A が SHARED.txt を編集したい
# -> "ロックを取得しました"
bach llm unlock SHARED.txt

# ... 処理されました ...
bach llm lock SHARED.txt    # ロックが存在する場合、エージェント B は自動的に待機します

# -> A が完了するまで待機します
----------------

KNOWNエージェント

- クロード クロード (人類)
- ジェミニ ジェミニ (Google)
- コパイロット GitHub コパイロット
- ollam ローカル LLM
- perplexity Perplexity AI
------------------------

作業フォルダー内のファイル

.claude_presence プレゼンス クロード
.gemini_presence プレゼンスジェミニ
FILE.lock.claude クロードからのロック
FILE.lock.gemini Gemini からのロック
変更前のFILE.bakバックアップ
.handshake_claude ハンドシェイク信号
.handshake_gemini ハンドシェイクの答え
---------------

トラブルシューティング

問題: ロックがスタックする
解決策: 5 分以上経過したロックは古いとみなされます。
         そして自動的に無視されます。手動で削除してください。

問題: エージェントが他のエージェントを認識しない
解決策: プレゼンス ファイルを確認します。ハートビート電流?

問題: ロックにもかかわらず競合状態
解決策: ロックを作成する前に list_directory かどうかを確認してください。
         が実行されます。タイミングの問題?
-------
HANDLER

hub/multi_llm_protocol.py プロトコルの実装
-------
レッスン

レッスン #62: マルチ LLM 並列作業の基本
レッスン #63: マルチ LLM プロトコル V3
----------
bach --help partner   関連項目
bach --help messages       パートナー システム


メッセージ
------------------------------
スタンプ カード システム (v1.1.71)

自動認識のための DB ベースのパートナー プレゼンス。

テーブル: パートナー_プレゼンス
  id 整数主キー
  Partner_name TEXT パートナー ID (claude、gemini、user、...)
  ステータス TEXT オンライン|オフライン|クラッシュ
  Clocked_in TEXT 出勤時刻
  Clocked_out TEXT クロックアウト時間
  last_heartbeat TEXT 最後のアクティビティ
  current_task TEXT 現在のタスク
  session_id TEXT 関連セッション

自動:
- --startup 時: クロックイン (古いクラッシュしたセッションにマークが付けられている)
- --shutdown あり: クロックアウト
- 起動出力でのパートナー認識

マニュアル (オプション):
- ハートビート: bach llm の存在。 「タスク_XYZ」
- ステータス: bach llm ステータス
