AIエージェントがPCスリープで作業停止する問題を完全解決する方法
テックジム東京本校では、情報科目の受験対策指導やAI駆動開発コースもご用意しております。
目次
- 1 この記事でわかること
- 2 はじめに:AIエージェントとスリープ問題
- 3 AIエージェントがスリープで止まる仕組み
- 4 解決策①:Windowsのスリープを無効化する
- 5 解決策②:macOSのスリープを無効化する
- 6 解決策③:AIエージェントをバックグラウンド実行する
- 7 解決策④:Windowsのタスクスケジューラを活用する
- 8 解決策⑤:Dockerコンテナで実行する
- 9 解決策⑥:クラウド・リモート実行に移行する
- 10 シナリオ別:おすすめの組み合わせ
- 11 スリープ防止と電力節約を両立するコツ
- 12 トラブルシューティング
- 13 まとめ:状況別おすすめ対策一覧
- 14 おわりに
- 15 ■ゼロから始めるClaudeCode講座のご案内
- 16 ■らくらくPython塾 – 読むだけでマスター
- 17 共通テスト「情報I」対策解説講座
- 18 実践で学ぶPython速習講座
- 19 ■テックジム東京本校
この記事でわかること
- AIエージェントがスリープで止まる根本原因
- Windows・macOSそれぞれのスリープ無効化手順
- コマンドラインで使える即効ツール・コマンド
- 長時間タスクを安全に完走させるベストプラクティス
- 電力消費を抑えながら作業を継続する省エネ両立テクニック
はじめに:AIエージェントとスリープ問題
Claude Code・Devin・AutoGen・CrewAIなどのAIエージェントを使って長時間タスク(コード生成・データ収集・ドキュメント作成など)を実行していると、PCが突然スリープに入って作業が中断される経験をした方は多いのではないでしょうか。
特に次のようなケースで被害が大きくなります。
- 深夜に数時間かかるバッチ処理を走らせていた
- SSHセッション越しにリモートでエージェントを動かしていた
- APIコールを大量に行うパイプラインを組んでいた
本記事では、エージェントをスリープで止めないための具体的な方法を網羅的に解説します。
AIエージェントがスリープで止まる仕組み
なぜスリープが発生するのか
OSは「一定時間ユーザー操作がない=使っていない」と判断し、電力節約のためにスリープへ移行します。AIエージェントはマウス・キーボード操作を伴わないため、OSからは「無操作状態」とみなされてしまいます。
ユーザー操作なし → OS: 無操作タイマー起動 → 設定時間経過 → スリープ
↑
AIエージェントの処理はここで強制停止
スリープ時に起きること
| 影響 | 詳細 |
|---|---|
| プロセス一時停止 | エージェントのPythonプロセス・Node.jsプロセスが凍結 |
| ネットワーク切断 | WebSocket・HTTP接続が切れてAPIタイムアウト発生 |
| SSHセッション切断 | リモート接続が切れてジョブが孤立 |
| ファイルI/O中断 | 書き込み途中のファイルが破損するリスク |
解決策①:Windowsのスリープを無効化する
方法A:電源設定GUIから変更(最も簡単)
Win + I→ システム → 電源とスリープ- 「スリープ」の項目を**「なし」**に設定
- 「ディスプレイ」は別途設定可能(スリープと独立)
ポイント: ディスプレイのスリープとPCスリープは別設定です。モニターだけオフにしてPC本体は動かし続けることができます。
方法B:powercfgコマンド(管理者権限なしでも使える)
コマンドプロンプトまたはPowerShellを開いて実行:
# スリープを無効化(AC電源時)
powercfg /change standby-timeout-ac 0
# スリープを無効化(バッテリー時)
powercfg /change standby-timeout-dc 0
# 現在の設定を確認
powercfg /query SCHEME_CURRENT SUB_SLEEP STANDBYIDLE
元に戻す場合:
# 20分に設定(分単位で指定)
powercfg /change standby-timeout-ac 20
方法C:caffeine.exeを使う(一時的に抑制)
タスクが終わったら自動で元の設定に戻したい場合は Caffeine や Don’t Sleep などのユーティリティが便利です。
# wingetでインストール
winget install Zhorn.Caffeine
起動しているあいだだけスリープを防ぎ、終了すれば設定が元に戻ります。
方法D:PowerShellスクリプトで一時的に抑制
# AIエージェントの実行中だけスリープを防ぐスクリプト
$wsh = New-Object -ComObject WScript.Shell
Write-Host "スリープ防止を開始しました。Ctrl+C で終了します。"
while ($true) {
$wsh.SendKeys("{SCROLLLOCK}")
Start-Sleep -Seconds 60
$wsh.SendKeys("{SCROLLLOCK}")
Start-Sleep -Seconds 1
}
このスクリプトは60秒ごとに無害なキーを送信し、OSのアイドルタイマーをリセットします。
解決策②:macOSのスリープを無効化する
方法A:システム設定GUIから変更
- Apple メニュー → システム設定
- ロック画面(macOS Ventura以降)または 省エネルギー
- 「ディスプレイがオフになるまでの時間」と「コンピュータがスリープするまでの時間」を**「しない」**に変更
方法B:caffeinate コマンド(最も手軽)
macOSには標準で caffeinate コマンドが搭載されています。
# スリープを無効化してエージェントスクリプトを実行
caffeinate -i python my_agent.py
# ディスプレイのスリープも防ぐ
caffeinate -dis python my_agent.py
# 特定のPID(プロセスID)に紐付けて実行
caffeinate -w $(pgrep python)
オプション一覧:
| オプション | 効果 |
|---|---|
-i |
システムのアイドルスリープを防止 |
-d |
ディスプレイのスリープを防止 |
-s |
AC接続時のシステムスリープを防止 |
-w PID |
指定プロセスが終了するまで継続 |
方法C:pmset コマンドで永続設定
# スリープを無効化(管理者権限が必要)
sudo pmset -a sleep 0
sudo pmset -a disksleep 0
# 設定確認
pmset -g
# 元に戻す(例:20分後にスリープ)
sudo pmset -a sleep 20
解決策③:AIエージェントをバックグラウンド実行する
スリープ対策と合わせて、プロセスをセッションから切り離して実行することで、ターミナルを閉じても作業が継続します。
tmux を使う(Linux・macOS・WSL)
# 新しいtmuxセッションを作成して起動
tmux new -s ai_agent
# エージェントを実行
python my_agent.py
# セッションをデタッチ(Ctrl + B → D)
# ターミナルを閉じてもプロセスは継続
# 後から再接続
tmux attach -t ai_agent
nohup を使う(シンプルな方法)
# バックグラウンドで実行してログを保存
nohup python my_agent.py > agent.log 2>&1 &
# プロセスID確認
echo $!
# ログをリアルタイムで確認
tail -f agent.log
screen を使う
# screenセッション作成
screen -S ai_agent
# エージェント実行後、デタッチ
# Ctrl + A → D
# 再接続
screen -r ai_agent
解決策④:Windowsのタスクスケジューラを活用する
長時間タスクをWindowsサービス的に動かすなら、タスクスケジューラが有効です。
設定手順
Win + R→taskschd.mscでタスクスケジューラを開く- タスクの作成 をクリック
- 全般タブ:「ユーザーがログオンしているかどうかにかかわらず実行する」を選択
- 条件タブ:「コンピューターをAC電源で使用している場合のみタスクを開始する」のチェックを外す、「コンピューターがアイドル状態の場合のみタスクを開始する」のチェックを外す
- 設定タブ:「タスクを停止するまでの時間」を「なし」に設定
解決策⑤:Dockerコンテナで実行する
AIエージェントをDockerコンテナ内で動かすことで、ホストOSのスリープ設定に依存せず、プロセス管理を安定させることができます。
# コンテナを永続的に起動
docker run -d \
--name ai_agent \
--restart unless-stopped \
-v $(pwd)/workspace:/workspace \
python:3.11 \
python /workspace/my_agent.py
docker compose を使う場合
# docker-compose.yml
services:
agent:
image: python:3.11
restart: unless-stopped
volumes:
- ./workspace:/workspace
command: python /workspace/my_agent.py
environment:
- OPENAI_API_KEY=${OPENAI_API_KEY}
docker compose up -d
docker compose logs -f
解決策⑥:クラウド・リモート実行に移行する
最も根本的な解決策は、ローカルPCに依存しないクラウド環境で実行することです。
主な選択肢
| サービス | 特徴 | 向いているケース |
|---|---|---|
| GitHub Actions | 無料枠あり・CI/CD統合 | コード生成・テスト自動化 |
| Google Colab | GPU利用可・ブラウザ実行 | 機械学習・データ処理 |
| AWS EC2 / Lambda | 高い自由度・スケーラブル | 大規模バッチ処理 |
| Replit | セットアップ不要 | 軽量スクリプト実行 |
| Modal | Python特化・高速デプロイ | AIエージェント実行 |
VPS(VPSサーバー)を活用する
# ローカルからVPSにSSH接続してエージェントを起動
ssh user@your-vps-ip
# tmuxで永続セッション作成
tmux new -s agent
python my_agent.py
# デタッチしてSSHを切断してもOK
シナリオ別:おすすめの組み合わせ
シナリオA:数時間のローカル処理(Windows)
# 1. スリープを一時無効化
powercfg /change standby-timeout-ac 0
# 2. エージェントをバックグラウンド実行
Start-Process python -ArgumentList "my_agent.py" -WindowStyle Hidden
# 3. タスク完了後に元の設定に戻す
powercfg /change standby-timeout-ac 20
シナリオB:長時間処理(macOS)
# caffeinate でエージェントをラップするだけでOK
caffeinate -i python my_agent.py
# 処理終了と同時にcaffeinateも終了 → 自動でスリープ設定が元に戻る
シナリオC:翌朝まで放置したい(Windows/Linux共通)
# tmux + nohup で二重保護
tmux new -s overnight_agent
nohup caffeinate python my_agent.py > overnight.log 2>&1 &
# tmuxをデタッチ(Ctrl+B→D)
スリープ防止と電力節約を両立するコツ
スリープを完全に無効化すると電力消費が増えます。次のポイントを押さえることで、作業を止めずに省エネも実現できます。
- ディスプレイのみスリープさせる:PCスリープとは別に設定できます。画面だけオフにしてCPU処理は継続。
- 電力プランを「バランス」に設定:「高パフォーマンス」ではなく「バランス」でも長時間タスクには十分。
- 不要なアプリを終了する:メモリ・CPU消費を抑えてエージェントに集中させる。
- UPS(無停電電源装置)を使う:突然の電源断からプロセスを守る。
トラブルシューティング
Q:設定したのにまだスリープに入る
A: グループポリシーが優先されている可能性があります。企業PCはIT管理者が設定をロックしていることがあります。その場合はクラウド実行に移行しましょう。
Q:caffeinate が効かない
A: macOS Ventura以降では sudo pmset の設定がsystem levelで上書きされることがあります。pmset -g で現在の設定を確認してください。
Q:エージェントが途中でクラッシュしてしまう
A: スリープとは別の問題です。チェックポイント保存・リトライロジックをエージェントのコードに組み込みましょう。
import pickle
import os
CHECKPOINT_FILE = "checkpoint.pkl"
def save_checkpoint(state):
with open(CHECKPOINT_FILE, "wb") as f:
pickle.dump(state, f)
def load_checkpoint():
if os.path.exists(CHECKPOINT_FILE):
with open(CHECKPOINT_FILE, "rb") as f:
return pickle.load(f)
return None
Q:SSH経由でつないでいるがセッションが切れる
A: ~/.ssh/config に以下を追加してKeepAliveを有効にしましょう。
Host *
ServerAliveInterval 60
ServerAliveCountMax 10
まとめ:状況別おすすめ対策一覧
| 状況 | おすすめ手順 |
|---|---|
| Windows・短時間タスク | powercfg でスリープ一時無効化 |
| Windows・長時間タスク | タスクスケジューラ + バックグラウンド実行 |
| macOS・どんな場合も | caffeinate -i python script.py |
| Linux・サーバー | tmux + nohup |
| 翌朝まで放置 | VPS・クラウド実行 |
| 企業PC(設定変更不可) | Docker + クラウド環境 |
おわりに
AIエージェントの長時間タスクをPCスリープで止めないためのポイントは大きく3つです。
- OSレベルのスリープを無効化する(powercfg / caffeinate / pmset)
- プロセスをセッションから切り離す(tmux / nohup / screen)
- クラウドやDockerに移行する(根本的な解決策)
タスクの規模や環境に合わせてこれらを組み合わせることで、AIエージェントを安心して長時間稼働させることができます。ぜひ本記事の手順を参考にして、作業の中断ゼロを実現してください。
関連記事:
- Claude Codeをバックグラウンドで安全に実行する方法
- AIエージェントのエラーハンドリングとリトライ設計
- コスト削減:AIエージェントのAPI呼び出し最適化テクニック
■ゼロから始めるClaudeCode講座のご案内
テックジム東京本校では「ClaudeCode」の体験講座を開催。
「その日のうちに動かす」 をゴールに、環境構築から実践まで。
毎週土曜日15時。参加は無料です。対面・ハンズオンだから初心者でも安心。
■らくらくPython塾 – 読むだけでマスター
共通テスト「情報I」対策解説講座
実践で学ぶPython速習講座
■テックジム東京本校
格安のプログラミングスクールといえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
対面型でより早くスキル獲得、月額2万円のプログラミングスクールです。
情報科目の受験対策指導やAI駆動開発コースもご用意しております。
