Skip to content

[Bug] サブエージェント(子セッション)のメッセージが親セッションの画面に漏れる #86

@ktmage

Description

@ktmage

Description

サブエージェント(子セッション)が実行されると、子セッションの全出力(テキスト、ツール呼び出し)が親セッションのメッセージ一覧にリアルタイムで表示されてしまう。セッションを切り替えて戻ると正しい折りたたみ表示(SubtaskPartView)に戻る。

Steps to Reproduce

  1. 親セッションでサブエージェント(Task ツール)を呼び出す操作を行う
  2. サブエージェントが実行を開始し、子セッションが作成される
  3. 親セッションの画面を表示したまま待つ

Expected Behavior

親セッションの画面にはコンパクトな進行カード(SubtaskPartView)のみが表示され、子セッションの個々のメッセージやパートは表示されない。

Actual Behavior

子セッションの message.updatedmessage.part.updatedmessage.removed の SSE イベントが親セッションのメッセージ一覧に反映され、子セッションの全出力がリアルタイムで表示される。セッションを切り替えて戻ると getMessages API で正しいメッセージリストが再取得され、表示が正常に戻る。

根本原因

useMessages.tshandleMessageEvent コールバックが SSE イベントをセッション ID でフィルタリングしていない。OpenCode サーバーの SSE ストリームは全セッション(親+子)のイベントを送信するため、子セッションのイベントが親セッションのローカル状態に混入する。

Environment

  • OS: macOS
  • VS Code version: 1.96+
  • OpenCodeGUI version: 0.4.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions