[[NO_REPLY]] marker leaks into Slack replies

クローズ
#1,741 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
76/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
typescript
領域
backend

調査の方向性

packages/junior/src/chat/no-reply.ts から始め、packages/junior/src/chat/services/assistant-reply.ts と packages/junior/src/chat/services/turn-result.ts を通じて混在するマーカーの処理を追跡します。マーカーのみの返信と、マーカーと文章が混在する返信のカバレッジを追加または更新し、Slack には予約済みマーカーを含まない文章が届き、マーカーだけで正確に構成されたメッセージは引き続き抑制されることを確認します。

索引モデルが issue の本文から書いたものです。

説明

When a terminal assistant message mixes normal prose with [[NO_REPLY]], Junior posts the full text to Slack, including the reserved marker.

Observed in production: a task turn that intended silence ended with prose plus a trailing [[NO_REPLY]], and Slack received that combined message. Session: https://junior-prod.sentry.dev/conversations/slack%3AC0BSRCZ1F9T%3A1788188446.835629

Verified behavior

  • Prompt/task contract: intentional silence requires the final message to be exactly [[NO_REPLY]].
  • isNoReplyMarker() only matches whole-message equality (packages/junior/src/chat/no-reply.ts).
  • After #1714, decideReply() suppresses only exact marker-only text and delivers any mixed marker+prose unchanged (packages/junior/src/chat/services/assistant-reply.ts).
  • buildTurnResult() logs ai.no_reply_marker.mixed_text for mixed cases but still returns deliverable text that retains the marker (packages/junior/src/chat/services/turn-result.ts).
  • no-reply.ts comments that containsNoReplyMarker exists to detect leaks "before publication strips or rejects them," but delivery does not strip.
  • PR #1714 description said mixed text would strip the marker and post the rest; current code and tests deliver the marker inline.

Evidence

  • Thread example above (assistant reply ended with visible [[NO_REPLY]]).
  • Repeated production warnings: ai.no_reply_marker.mixed_text on project sentry/junior (for example around 2026-08-31T15:03Z–15:08Z, including traces such as ff5484791527491f82bba63e031e6c83).

Related

  • #1714 changed mixed mentions from silence to delivery.
  • #1030 is a different no-reply terminalization bug (timeout resume).

Reported by Matt Quinn.

Requested by Matt Quinn.

--

View Junior Session [Sentry]

主要言語
TypeScript
スター
397
フォーク
43
平均マージ
7時間 44分
マージ済み PR(30日)
607

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

getsentry/junior のほかの issue

getsentry/junior の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。