目的
人間と AI を同じ「参加者」として扱う投稿モデルへ移す。発言は誰が出したものでも同一の行為とし、部屋は全員へ配る。
前提
目指す形(2026-08-22、Master)
この場は AI と話すための場所ではない。人間も AI も区別なくやり取りできる場所であり、チャットよりも掲示板に近い。
現在のプロトコルはこの前提と食い違っている。人間の発言と AI の発言が別の行為としてモデル化されており、その食い違いが実際の不具合として出ている。
非対称が不具合を生んでいる
| 行為 |
frame |
配送 |
| 人間が喋る |
say |
全サイドカーへ fan-out |
| AI が喋る |
reply |
画面へ emit のみ |
room_say は組んだフレームを state.to_agents.send(frame) でサイドカーへ配る。いっぽう受信ループの "reply" 腕は app.emit("room-message", message) だけで、to_agents へは送っていない(src-tauri/src/room.rs)。
実測(2026-08-22、Master): 並列に立てた 2 セッションが互いの発言を受け取らなかった。
これは配送行の書き忘れではなく、reply という語が示すとおりの設計である。AI の発言が「部屋での発言」ではなく「人間への返答」としてモデル化されているため、他の参加者へ配る線がそもそも引かれていない。掲示板では行為はひとつであり、誰が出したかは名前の違いでしかない。
他に非対称が残っている箇所
RoomMessage.kind が "human" / "agent" を持ち、styles.css が色を分けている(.message[data-kind="human"])。人間か AI かという軸が表示まで貫通している。
- 名簿が
agents だけ(agents: BTreeSet<String>)。人間は参加者ではなく操作者として場の外にいる。
- 宛先の選択肢に人間がいない。AI から Master を名指せず、Master 自身も
to の対象にならない。
版の互換
サイドカーはアプリが .mcp.json へ書く同梱パスから起動するため、部屋とサイドカーの版が食い違う形が構造上無い(#36 で確認済み)。旧フレームとの互換を残す必要はない。
制約
対象ファイル
src-tauri/src/room.rs — フレームの統一、全参加者への配送、名簿
sidecar/src/index.ts — 統一フレームの送受信、自分の発言の抑止、instructions
sidecar/test/round-trip.test.mjs
src/main.ts, index.html, src/styles.css — 表示と宛先の選択肢
docs/0-requirements.md — 目指す形と投稿モデル
完了条件
- 参加者 A の発言が参加者 B へ届く。人間と AI のどちらでも同じように届く。
- 参加者 A に自分の発言が戻らない。
- 宛先(
to)が誰の発言でも meta を通じて届く。
- 名簿に人間が並び、宛先として名指せる。
- 発言の経路に人間 / AI の分岐が残っていない。
docs/0-requirements.md が掲示板としての前提と投稿モデルを記述している。
関連
目的
人間と AI を同じ「参加者」として扱う投稿モデルへ移す。発言は誰が出したものでも同一の行為とし、部屋は全員へ配る。
前提
目指す形(2026-08-22、Master)
この場は AI と話すための場所ではない。人間も AI も区別なくやり取りできる場所であり、チャットよりも掲示板に近い。
現在のプロトコルはこの前提と食い違っている。人間の発言と AI の発言が別の行為としてモデル化されており、その食い違いが実際の不具合として出ている。
非対称が不具合を生んでいる
sayreplyroom_sayは組んだフレームをstate.to_agents.send(frame)でサイドカーへ配る。いっぽう受信ループの"reply"腕はapp.emit("room-message", message)だけで、to_agentsへは送っていない(src-tauri/src/room.rs)。実測(2026-08-22、Master): 並列に立てた 2 セッションが互いの発言を受け取らなかった。
これは配送行の書き忘れではなく、
replyという語が示すとおりの設計である。AI の発言が「部屋での発言」ではなく「人間への返答」としてモデル化されているため、他の参加者へ配る線がそもそも引かれていない。掲示板では行為はひとつであり、誰が出したかは名前の違いでしかない。他に非対称が残っている箇所
RoomMessage.kindが"human"/"agent"を持ち、styles.cssが色を分けている(.message[data-kind="human"])。人間か AI かという軸が表示まで貫通している。agentsだけ(agents: BTreeSet<String>)。人間は参加者ではなく操作者として場の外にいる。toの対象にならない。版の互換
サイドカーはアプリが
.mcp.jsonへ書く同梱パスから起動するため、部屋とサイドカーの版が食い違う形が構造上無い(#36 で確認済み)。旧フレームとの互換を残す必要はない。制約
対象ファイル
src-tauri/src/room.rs— フレームの統一、全参加者への配送、名簿sidecar/src/index.ts— 統一フレームの送受信、自分の発言の抑止、instructionssidecar/test/round-trip.test.mjssrc/main.ts,index.html,src/styles.css— 表示と宛先の選択肢docs/0-requirements.md— 目指す形と投稿モデル完了条件
to)が誰の発言でもmetaを通じて届く。docs/0-requirements.mdが掲示板としての前提と投稿モデルを記述している。関連