何を変えるか
#895 (v10.17.4 で本番配布)で入れた中継 relay.py の導入と使い方を、次の 3 点で改める(2026-09-23 利用者の指示)。
#
変更
今(v10.17.4)
変えた後
1
自動インストールの廃止
Claude Code の SessionStart hook(relay.py install)が、起動のたびに ~/.bashrc / ~/.zshrc へ alias claude=... を 1 度だけ足し、~/.local/share/ndf/relay.py へ本体を置く(NDF_RELAY_AUTO=0 で止まる)
hook からの自動導入をやめる。スラッシュコマンド /ndf:install_wrapper で利用者が明示的に導入する 。導入・更新・取り外しをこのコマンドが持つ
2
スラッシュコマンドによる再起動
再起動の契機は conductor が出す ndf-next のブロック(Stop hook の mark)と、文脈量の上限だけ
/ndf:restart を足す。 利用者(またはモデル)が呼ぶと、中継がランタイム(claude)を終了→起動し直し、再開用のコマンドを自動で送る 。再開用のコマンドは引数か、今の会話から作る(形は設計で決める)
3
親から子へ任意のコマンドを送り込めるかの調査
中継が子へ入力するのは /exit と次の区間の起動コマンドだけ
中継(親)が擬似端末を通して、子の claude へ任意のスラッシュコマンド・入力を送り込めるかを調べる。送り込めるなら、モデルからは叩けなかったコマンド (/exit・/clear・/compact・/model・/plugin など、組み込みの対話コマンド)をモデルの要求で実行できるようになる
背景
自動インストールは利用者のシェル設定を黙って書き換え、版を戻しても alias が残る (issues/approval-ndf-v10.17.4.md の「取り消しの手段とその限界」)。導入は利用者の明示の操作にしたい
再起動は /goal の区間の切れ目に限らず、プラグインの更新の反映や文脈を切りたいときにも欲しい。人が /exit → 起動 → コマンドの貼り付けをする手間を、1 つのコマンドに畳む
モデルは組み込みの対話コマンドを実行できない。中継が子の端末の入力を握っているので、そこから送れれば、モデルが「このコマンドを実行してほしい」と伝える経路(印のファイル・Stop hook など、development-workflow: 区間の切れ目の再起動と次のコマンドの入力を、tmux の上の中継で自動にする #895 の mark と同じ形)で実行できる
調査すること(項目 3)
受け入れ条件(案。設計で確定する)
関連
進行
モード: standard / 作業ツリー: .worktrees/feat/issue-928-relay-install-restart / 計画: issues/issue-928-implementation-plan.md
何を変えるか
#895(v10.17.4 で本番配布)で入れた中継
relay.pyの導入と使い方を、次の 3 点で改める(2026-09-23 利用者の指示)。relay.py install)が、起動のたびに~/.bashrc/~/.zshrcへalias claude=...を 1 度だけ足し、~/.local/share/ndf/relay.pyへ本体を置く(NDF_RELAY_AUTO=0で止まる)/ndf:install_wrapperで利用者が明示的に導入する。導入・更新・取り外しをこのコマンドが持つndf-nextのブロック(Stop hook のmark)と、文脈量の上限だけ/ndf:restartを足す。 利用者(またはモデル)が呼ぶと、中継がランタイム(claude)を終了→起動し直し、再開用のコマンドを自動で送る。再開用のコマンドは引数か、今の会話から作る(形は設計で決める)/exitと次の区間の起動コマンドだけ/exit・/clear・/compact・/model・/pluginなど、組み込みの対話コマンド)をモデルの要求で実行できるようになる背景
issues/approval-ndf-v10.17.4.mdの「取り消しの手段とその限界」)。導入は利用者の明示の操作にしたい/goalの区間の切れ目に限らず、プラグインの更新の反映や文脈を切りたいときにも欲しい。人が/exit→ 起動 → コマンドの貼り付けをする手間を、1 つのコマンドに畳むmarkと同じ形)で実行できる調査すること(項目 3)
AskUserQuestionの表示中で違うか)。development-workflow: 区間の切れ目の再起動と次のコマンドの入力を、tmux の上の中継で自動にする #895 の/exitの入力で使った経路を一般化できるかNDF_RELAY_QUIETを流用できるか)AskUserQuestionの承認)への答えを中継が代わりに送れてはならない受け入れ条件(案。設計で確定する)
~/.bashrc/~/.zshrcと~/.local/share/ndf/へ何も書かない(relay.py installを hook から外す)/ndf:install_wrapperで alias と本体を導入でき、同じコマンドで取り外せる。既に v10.17.4 の自動導入で足された囲み(# >>> ndf relay >>>〜# <<< ndf relay <<<)を取り外しの対象として扱える/ndf:restartを呼ぶと、claude が終了→起動し直し、再開用のコマンドが人の入力なしで送られて次の会話が始まる。中継の外で呼んだときは、今までどおりの手順(再起動と貼り付けるコマンド)を 1 行で示して終わるalias claudeが足す--dangerously-skip-permissionsなど)を引き継ぎ、区間ごとの引数(最初のプロンプト・--resume・-c・--session-idなど)は引き継がない。10.17.4 の囲みの知らせに、/ndf:install-wrapperで入れ直せば別のファイルが定義したalias claudeが戻る旨の案内がある(中継の導入が、別ファイルで定義された claude の alias を見落として上書きする(devbase の --dangerously-skip-permissions が落ちる) #936。要求の AC31)関連
docs/specifications/ndf-relay-segment-restart.md)進行
モード: standard / 作業ツリー:
.worktrees/feat/issue-928-relay-install-restart/ 計画:issues/issue-928-implementation-plan.md