Skip to content

中継(relay.py)の自動インストールをやめ、/ndf:install_wrapper と /ndf:restart を足し、親から子へコマンドを送り込めるか調べる #928

Description

@takemi-ohama

何を変えるか

#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)

受け入れ条件(案。設計で確定する)

  • SessionStart hook が ~/.bashrc / ~/.zshrc と ~/.local/share/ndf/ へ何も書かない(relay.py install を hook から外す)
  • /ndf:install_wrapper で alias と本体を導入でき、同じコマンドで取り外せる。既に v10.17.4 の自動導入で足された囲み(# >>> ndf relay >>> 〜 # <<< ndf relay <<<)を取り外しの対象として扱える
  • 中継の下で /ndf:restart を呼ぶと、claude が終了→起動し直し、再開用のコマンドが人の入力なしで送られて次の会話が始まる。中継の外で呼んだときは、今までどおりの手順(再起動と貼り付けるコマンド)を 1 行で示して終わる
  • 項目 3 の調査の結果(送り込めるか・条件・送ってよい範囲・関門を越えないための制約)を本文へ記録し、送り込めるなら実装の範囲を決める(別の issue に分けてもよい)
  • 2 つ目以降の区間が、最初の区間の起動の方針の引数(devbase の 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)

関連

進行

モード: standard / 作業ツリー: .worktrees/feat/issue-928-relay-install-restart / 計画: issues/issue-928-implementation-plan.md

  • 要求と受け入れ条件 — 2026-09-23 21:34
  • 作業場所の用意 — 2026-09-23 21:36
  • 設計 — 2026-09-23 21:39
  • 素材の収集と出典の確定
  • ドキュメント再構成 — 2026-09-23 21:55
  • ドキュメントレビュー — 2026-09-23 21:56
  • 計画 — 2026-09-24 00:46
  • 実装 — 2026-09-24 00:48
  • 構造改善 — 2026-09-24 01:14
  • 実装レビュー — 2026-09-24 02:53
  • 完了判定 — 2026-09-24 03:00
  • Pull Request — 2026-09-24 01:13
  • 確定仕様化 — 2026-09-24 04:00
  • 後片付け — 2026-09-24 00:46
  • 配布 — 2026-09-24 04:10
  • 体裁レビュー
  • リリース後テスト — 2026-09-24 05:06
  • 振り返り

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions