AI コーディングのセッションをスマホから再開する方法:Claude Code や Codex を最初からやり直さない
非アクティブになったセッションを、やり直さずに再開する方法。「再開」が実際に何を意味するのか、いつ使えるのか、使えないときはどうするのかを解説します。
- CLI
- 0.2.17
- プレビュー ref
- a2c45c8
本当につらい中断はクラッシュではありません。戻ってきて、次のことに気づいた瞬間です。
- セッションが 非アクティブ になっている
- それでも続きを進めたい
- でも、同じセッションを再開 しようとしているのか、うっかり新しいセッションを始めようとしているのかわからない
デスクトップなら、たいてい何とかなります。スマホだと、あきらめて最初からやり直しがちです。
つまり課題はシンプルです。
新しいセッションではなく同じセッションを、スマホから続ける。
よくある方法(SSH、新しいセッションを始める、要約をコピー&ペーストする)は、どれも何かを失います。
Happier は、コーディングエージェントをクロスデバイスで実行・オーケストレーションできるオープンソースのアプリで、「attach と resume」を厳密に区別し、再開に失敗したときに黙って新しいセッションを始めることはしません。
要点
- Attach = まだ動いているセッションに再接続すること。
- Resume = 非アクティブになったあと、同じプロバイダーのセッションを開き直すこと(プロバイダーが対応している場合のみ)。
スマホでは:
- どちらのケースかを見極めます。セッションがまだ動いている(attach)か、非アクティブか(resume)。
- Happier を使っているなら、セッションを開いて次のメッセージを送ります。対応している場合は、まず再開を試みます。
- 再開できない場合は、失敗時に安全側に倒れる(黙って新しいセッションを始めない)ツールが必要です。Happier ではこれがデフォルトの動作です。その時点で、attach する(実はまだ動いている場合)か、新しいセッションを始めます。
課題
AI コーディングエージェントで本格的な作業をしているとき、「セッションの継続性」は次の違いを生みます。
- 勢いを保てるか
- 文脈の説明し直しで 1 時間を失うか
ただし、すべてのプロバイダーのセッションが再開できるわけではなく、非アクティブな Happier のセッションがすべて再開できるわけでもありません。
そのため、目標は「いつでも再開する」ことではありません。目標はこうです。
何を再開しようとしているのかを把握し、新しいセッションを始めてしまって作業を分岐させない。
attach と resume(これで混乱の大半が解消します)
Attach
セッションがまだローカルで動いていて、実行中のプロセスに再接続したいだけなら attach を使います。
Resume
セッションが非アクティブで、プロバイダーが同じセッションを開き直すことに対応しているなら resume を使います。
Happier では、再開は厳密なワークフローです。
- 既存の Happier セッションを見つける
- ベンダー側で実際に再開できるか確認する
- プロバイダーのバックエンドに、同じベンダーセッションの再開を依頼する
- 失敗したらエラーを表示する(黙って新しいセッションを始めない)
この厳密さは意図的なものです。セッションの同一性と、信頼できるトランスクリプトをひとつに保てます。
セッションを再開できる条件
次の条件をすべて満たす場合にだけ、セッションを再開できます。
- 通常の Happier 管理のセッションである
- 現在非アクティブである
- アーカイブされていない
- Happier がセッションのメタデータに有効なプロバイダーの再開 ID を保存している
- 選択したバックエンドやプロバイダーが、そのセッションの再開に対応している
- 設定でそのバックエンドを無効にしていない
どれかひとつでも満たさない場合、Happier はそのセッションを 再開不可 として扱います。
Happier を初めて使う場合(概要と入手方法)
Happier は、Claude Code、Codex、OpenCode などの AI コーディングエージェント向けの オープンソースのコンパニオンアプリ(モバイル / Web / デスクトップ)です。
ここでのワークフローは、セッションを所有するマシン(ノート PC / サーバー / 開発マシン)でセッションを動かしたまま、スマホの Happier から再開したり続けたりするというものです。
このガイドでいえば、何かが非アクティブになるたびにやり直すのではなく、ひとつのセッション(とひとつのトランスクリプト)を保てるということです。
セットアップ:
- スマホから Happier を使う方法
- GitHub: https://github.com/happier-dev/happier
- インストール / ダウンロード: https://github.com/happier-dev/happier#how-it-works
- Discord(コミュニティとサポート): https://discord.gg/W6Pb8KuHfg
スマホでのワークフロー:非アクティブなセッションを再開する
1) セッションを開く
スマホで、続けたい非アクティブなセッションを開きます。
よく見る状態:
- 非アクティブ + 再開可能 + マシンに到達可能 → 入力できます。メッセージを送るとまず再開されます
- 非アクティブ + 再開不可 → 入力できません
- 非アクティブ + マシンがオフライン → 所有するマシンに到達できるまで入力できません
2) 次のメッセージを送る(入力できる場合)
セッションが再開可能なら、次のプロンプトを送るだけです。
Happier はまずプロバイダーのセッションを再開し、それからメッセージを届けます。
3) 入力できない場合は、代わりにどうするかを決める
セッションが再開できない場合の選択肢:
- 実はまだ動いている場合:所有するマシンのターミナルから attach する。
- 本当に終了している場合:新しいセッションを始め、関連するファイルや要約を渡す。
- マシンがオフラインの場合:まずマシンをオンラインに戻す。
Codex の注意点(再開が予想と違うことがある理由)
Happier では、Codex を複数のバックエンドで動かせます。
現在の Happier では:
- Codex のデフォルトは App Server(メタデータがあれば通常どおり再開できる経路)
- 素の MCP でも新規セッションは動きますが、ベンダー再開の経路ではありません
- 再開は厳密です。Codex の再開に失敗しても、Happier は新しいセッションで置き換えません
そのため Codex では、再開できるかどうかは次の点で決まります。
- セッションに有効な再開メタデータがあるか
- 現在のバックエンドの経路が、そのセッションの再開に対応しているか
- その再開経路に必要な依存関係がマシンにあるか
トラブルシューティング
症状:セッションは非アクティブだが、メッセージを入力できない
考えられる原因:
- ベンダー側で再開できない(非対応のバックエンド、再開 ID がない)
- セッションがアーカイブされている
- 所有するマシンがオフライン、または到達できない
対処:
- マシンがオンラインか確認する
- 再開できないなら、新しいセッションを始める(再開を期待して何度も試さない)
症状:再開するつもりが、新しいセッションが始まった
Happier では、明示的な再開は失敗時に安全側に倒れるように設計されています。
「新しいセッションになった」と感じる場合、たいていは次のどちらかです。
- 再開したのではなく、新しいセッションを作成した
- Happier 管理の同期セッションではなく、ダイレクトセッションやプロバイダーネイティブのセッションを開き直した
対処:
- 目的の既存 Happier セッション ID を操作しているか、もう一度確認する
症状:デスクトップでは再開できるのに、スマホではできない
考えられる原因:
- スマホで別のサーバーやプロファイルを使っている
- スマホに同じサーバーを追加していない、または信頼していない
対処:
- モバイルで同じサーバーやプロファイルに切り替えてから、もう一度セッションを開く
よくある質問
再起動後でも再開できますか?
場合によります。
再開できるかどうかは、マシンが再起動したかではなく、プロバイダーの対応と保存された再開メタデータで決まります。プロバイダーが同じセッションを開き直せるなら、再開できます。
なぜ再開は厳密なのですか?
「黙って新しいセッションを始める」と、継続性はあっという間に失われるからです。失敗時に安全側に倒れるのはその場では少しもどかしいですが、セッションの意味を保てます。