観測(2026-08-21、実機)
セッション側に届いた行:
liplus-chat-room · マスター: マスター: ハロ~
発言者名が二重になっている。
原因
pushToChannel が params.content を ${user}: ${content} として組み立てている一方、params.meta.user にも同じ名前を入れている。ホストは <channel source> と meta.user を自分で描画するため、content に混ぜた名前がそのまま二つ目として現れる。
発言者はメタデータで運ぶものであり、本文へ混ぜるものではない。混ぜると本文が発言そのものでなくなり、エージェントが引用や解析をするときに名前が本文の一部として扱われる。
参照実装(github-webhook-mcp local-mcp/src/index.ts)が content に要約文字列を組み立てているのは、あちらが webhook イベントという発言者のいない通知を扱っているため。発言者のある会話をそのまま真似たのが誤り。
直し方
content は本文のみにする。発言者は meta.user が運ぶ。
対象ファイル
sidecar/src/index.ts
sidecar/test/round-trip.test.mjs
完了条件
params.content が本文と一致する。
params.meta.user が発言者を運ぶ。
- テストが本文への名前混入を検出する。
観測(2026-08-21、実機)
セッション側に届いた行:
発言者名が二重になっている。
原因
pushToChannelがparams.contentを${user}: ${content}として組み立てている一方、params.meta.userにも同じ名前を入れている。ホストは<channel source>とmeta.userを自分で描画するため、contentに混ぜた名前がそのまま二つ目として現れる。発言者はメタデータで運ぶものであり、本文へ混ぜるものではない。混ぜると本文が発言そのものでなくなり、エージェントが引用や解析をするときに名前が本文の一部として扱われる。
参照実装(
github-webhook-mcplocal-mcp/src/index.ts)がcontentに要約文字列を組み立てているのは、あちらが webhook イベントという発言者のいない通知を扱っているため。発言者のある会話をそのまま真似たのが誤り。直し方
contentは本文のみにする。発言者はmeta.userが運ぶ。対象ファイル
sidecar/src/index.tssidecar/test/round-trip.test.mjs完了条件
params.contentが本文と一致する。params.meta.userが発言者を運ぶ。