Skip to content

relay: /goal の続きの応答では stop_hook_active が真になり、背景の作業が残る ndf-next の応答で Stop を止めて知らせる仕組みが働かない #1877

Open

Description

@takemi-ohama

何を見つけたか

/goal で始めた会話では、目標の判定が止めを拒んで応答が続いた後の Stop hook の入力で stop_hook_active が真になる。Claude Code 2.1.295 の claude -p --model haiku で、3 回の応答を要する目標を設定し、Stop hook の入力を記録して確かめた(1 回目 false、2 回目と 3 回目 true)。

plugins/ndf/scripts/relay_lib/mark.py の hold_once は active(stop_hook_active)が真なら止めない。そのため /goal の会話では、背景の作業が残っている ndf-next の応答で Stop を 1 度止めて作業の id と止め方を知らせる仕組み(hold_reason)が、目標の続きの応答で働かない。合図は書かれず(mark_skipped の held: false)、conductor は切り替わらない理由を知らされない。

どこで見つけたか

#1492 の設計(承認待ちの文で終えた応答の Stop を 1 度止める判定を relay.py mark に足す検討)で、stop_hook_active を「同じ応答の続き」の判定に使えるかを実測したとき。該当箇所は plugins/ndf/scripts/relay_lib/mark.py の hold_once と _skip_mark。

なぜこの変更の範囲外なのか

#1492 の受け入れ条件は、条件の Skill の読み込みと、ndf-next の無い応答の承認待ちの文の止めだけを扱う。ndf-next を出す応答の扱いは #1286 の範囲として外してあり、背景の作業の止めはその応答の側にある。根拠: Value 6(MVV 版 2。同じ原因の判定は共通の層へ寄せるため、#1492 の設計は stop_hook_active に頼らない形にする。既存の hold_once を直すかはこの課題で決める)

直さないと何が起きるか

ラッパーの下の /goal の会話で、背景の作業を残したまま ndf-next を出すと、切り替わらない理由が conductor へ届かず、止める手順(TaskStop)も示されない。conductor は同じブロックを出し直し続けるか、そのまま作業を続ける。影響はラッパーの直接の子で /goal を使う会話に限る。

由来

issue #1492

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions