system-reboot-bringup
system-reboot-bringup Skill
この環境を再起動した後に、日常運用で使っている常駐プロセス群を復旧するための runbook です。
tmux 管理のプロセスを中心に、起動順・確認手順・ログ確認をまとめています。
対象プロセス(このスキルの範囲)
VOICEVOXAPI(http://127.0.0.1:50021)VacuumTube(remote debugging:9992、通常tmuxセッションvacuumtube-bg)whisper.cpp音声コマンド待受一式(whisper-server-ja,whisper-agent-ja)acaption字幕オーバーレイ +aseclock screenASEE Viewerウェブカメラ + 顔認識オーバーレイ(asee-bgtmux / port 8765)
前提
- KDE Plasma デスクトップにログイン済み
- 実際に有効な
DISPLAYを確認して GUI 操作できる(再起動後に:0/:1が変わることがある) tmux,curl,jq,python3利用可能
重要ルール
- 音声待受は
listenerとagentを同時起動しない(マイク競合) - 再起動後はまず
VOICEVOXとVacuumTubeの土台を復旧してからwhisper-agentを起動する - UX(音声・字幕・VacuumTube 操作)は自動テストだけで保証できないため、最後に必ず手動確認する
推奨の起動順(再起動後)
0) 有効な DISPLAY を確認(重要)
再起動後は DISPLAY が :0 になることがあるため、固定値 :1 を前提にしない。
for d in :0 :1 :2; do
echo "== $d =="
DISPLAY="$d" XAUTHORITY="$HOME/.Xauthority" xdpyinfo >/dev/null 2>&1 && echo ok || echo ng
done
ok になった値を以降のコマンドで使う(例: :0)。
export DESKTOP_DISPLAY=:0
export XAUTHORITY="$HOME/.Xauthority"
1) VOICEVOX (VOICEBOX) を起動(tmux 推奨, API :50021)
VOICEVOX も tmux で常駐化しておくと、作業セッション終了時に巻き込まれて落ちにくい。
tmux has-session -t voicevox-bg 2>/dev/null && tmux kill-session -t voicevox-bg || true
tmux new-session -d -s voicevox-bg \
"bash -lc 'export DISPLAY=${DESKTOP_DISPLAY}; export XAUTHORITY=\"$HOME/.Xauthority\"; exec \"$HOME/.voicevox/VOICEVOX.AppImage\"'"
確認:
curl -fsS http://127.0.0.1:50021/version
tmux capture-pane -pt voicevox-bg -S -40 | tail -n 20
補足:
VOICEVOXが起動していないと、whisper-agentは音声応答できない(字幕だけになる/フォールバックになる)
2) VacuumTube を起動(tmux 推奨)
tmux new-session -d -s vacuumtube-bg \
"bash -lc 'export VACUUMTUBE_DISPLAY=${DESKTOP_DISPLAY}; export XAUTHORITY=\"$HOME/.Xauthority\"; exec ~/vacuumtube.sh'"
確認:
pgrep -af '^/opt/VacuumTube/vacuumtube( |$)'
curl -fsS http://127.0.0.1:9992/json/version
起動直後の手動操作(必要な場合):
- アカウント選択画面で
YuisekinTVを選択 - 右上にタイル配置(
desktop-windows-layout/vacuumtubeスキル手順)
3) 音声待受 + 字幕オーバーレイ(tmux 管理)
yuiclaw voice-command operator が以下をまとめて管理します。
STT バックエンドは STT_BACKEND 環境変数で切り替えます(デフォルト: whisper):
STT_BACKEND |
起動するセッション | レイテンシ | 精度 |
|---|---|---|---|
whisper(既定) |
whisper-server-ja + whisper-agent-ja + acaption-overlay + asec-lock-screen |
~4500ms | 100% |
moonshine |
whisper-agent-ja + acaption-overlay + asec-lock-screen(server不要) |
~270ms | 96.6% |
whisper バックエンド(既定)
yuiclaw voice-command operator start-agent
moonshine バックエンド(高速・省メモリ・server不要)
STT_BACKEND=moonshine \
yuiclaw voice-command operator start-agent
moonshine は whisper-server-ja セッションを起動しません。モデルは voice_command_loop.py プロセス内にロードされます。
モデルサイズ変更(既定: base):
STT_BACKEND=moonshine MOONSHINE_MODEL_SIZE=tiny \
yuiclaw voice-command operator start-agent
状態確認:
yuiclaw voice-command operator status
よく使うログ:
yuiclaw voice-command operator logs-agent
yuiclaw voice-command operator logs-agent-tail
yuiclaw voice-command operator logs-overlay
補足:
- whisper 既定モデルは
ggml-small.bin - DJI マイクを明示したいときは
WHISPER_MIC_SOURCE=... yuiclaw voice-command operator restart-agent - moonshine バックエンドは音声キャプチャに
ffmpeg(parec不要)を使用します - biometric lock は既定で有効です。無効化したいときだけ
WHISPER_AGENT_BIOMETRIC_LOCK=0を付けます
4) ASEE Viewer(ウェブカメラ + 顔認識オーバーレイ)を起動(tmux 管理)
ASEE Viewer は repos/asee/tmp_main.sh が起動する Electron viewer + Python backend の組です。
repos/asee/tmp_main.sh restart を tmux セッション asee-bg から実行します。
内部では backend と Electron viewer を起動し、PID を /tmp/asee_tmp_main_8765.pids に保存します。
その後 layout --full-screen → --backmost で ASEE Viewer ウィンドウを全画面・最背面(壁紙代わり)に配置します。
tmux has-session -t asee-bg 2>/dev/null && tmux kill-session -t asee-bg || true
tmux new-session -d -s asee-bg \
"bash -lc 'cd ~/Workspaces/repos/asee && DISPLAY=${DESKTOP_DISPLAY} XAUTHORITY=\"$HOME/.Xauthority\" bash tmp_main.sh restart --port 8765 --cameras 0,2,4,6 --capture-profile 720p --opencv-threads 1 && bash tmp_main.sh layout --port 8765 --full-screen && bash tmp_main.sh layout --port 8765 --backmost; exec bash'"
tmp_main.sh の呼び出し内容(参考):
./tmp_main.sh restart --port 8765 --cameras 0,2,4,6 --capture-profile 720p --opencv-threads 1
./tmp_main.sh layout --port 8765 --full-screen
./tmp_main.sh layout --port 8765 --backmost
起動確認(起動完了まで 10〜20 秒かかります):
# tmux セッションのログを確認
tmux capture-pane -pt asee-bg -S -40 | tail -n 20
# video server の HTTP 応答を確認
curl -fsS http://localhost:8765/status
手動でウィンドウレイアウトを変更したい場合:
cd ~/Workspaces/repos/asee
# 前面に出す(ウェブカメラが見たいとき)
DISPLAY=${DESKTOP_DISPLAY} bash tmp_main.sh layout --port 8765 --frontmost
# フルスクリーン
DISPLAY=${DESKTOP_DISPLAY} bash tmp_main.sh layout --port 8765 --full-screen
# 左下コンパクト配置
DISPLAY=${DESKTOP_DISPLAY} bash tmp_main.sh layout --port 8765 --left-bottom
# 最背面に戻す(壁紙モード)
DISPLAY=${DESKTOP_DISPLAY} bash tmp_main.sh layout --port 8765 --backmost
停止したい場合:
cd ~/Workspaces/repos/asee && DISPLAY=${DESKTOP_DISPLAY} bash tmp_main.sh stop --port 8765
補足:
repos/asee/electronが公式 viewer で、ウィンドウ caption はASEE Viewer--cameras 0,2,4,6 --capture-profile 720p --opencv-threads 1を現行の実用構成として使う(実際のデバイス番号は環境依存)- 音声コマンド
システム、ウェブカメラが見たい等でも制御可能(whisper-agent運用中の場合)
まとめて確認(復旧完了チェック)
tmux ls | rg 'voicevox-bg|vacuumtube-bg|whisper-server-ja|whisper-agent-ja|acaption-overlay|asec-lock-screen|asee-bg'
curl -fsS http://127.0.0.1:50021/version
curl -fsS http://127.0.0.1:9992/json/version
curl -fsS http://localhost:8765/status
期待される tmux セッション(通常運用):
voicevox-bgvacuumtube-bgwhisper-server-jawhisper-agent-jaacaption-overlayasec-lock-screenasee-bg(起動スクリプト完了後は idle、ASEE プロセス自体は tmux 管理で稼働中)
注意:
whisper-listen-jaはagent運用中はSTOPPEDが正常asee-bgの tmux は起動コマンド実行後に idle になるのが正常(exec bashで待機している)
最小の手動確認(UX)
システム 状況報告と話しかける- 字幕オーバーレイ + VOICEVOX 応答が出ることを確認
YouTubeを小さくしてなど簡単なコマンドを試す
手動確認をお願いするときは、ASEE が見えていれば先に owner-attention-call を使う。
python3 /home/yuiseki/Workspaces/.codex/skills/owner-attention-call/scripts/call_owner.py \
--message "ユイさま、復旧後の動作確認をお願いします"
mode=speech なら音声で呼びかけ済み。mode=ntfy のときだけ追加で ntfy を使う。
トラブルシュート(再起動直後に多いもの)
1) whisper-agent は動いているのに喋らない
VOICEVOXが起動していないことが多い- 再起動後に
DISPLAYを取り違えてVOICEVOXが即終了していることもある - 確認:
curl -fsS http://127.0.0.1:50021/version
2) VacuumTube の CDP が見えない
~/vacuumtube.sh起動漏れ or:9992未設定- 確認:
curl -fsS http://127.0.0.1:9992/json/version
3) ASEE Viewer の video server に繋がらない
tmp_main.sh restartが失敗しているか、まだ起動中tmux capture-pane -pt asee-bg -S -40でログを確認DISPLAYが合っていないと Electron ウィンドウが開かない(step 0 で確認した値を使うこと)- 手動で再起動:
cd ~/Workspaces/repos/asee && DISPLAY=${DESKTOP_DISPLAY} bash tmp_main.sh restart --port 8765 --cameras 0,2,4,6 --capture-profile 720p --opencv-threads 1
4) ASEE Viewer ウィンドウが前面に出たまま戻らない
--backmostの KWin スクリプトが効いていない可能性- 手動で最背面に:
cd ~/Workspaces/repos/asee && DISPLAY=${DESKTOP_DISPLAY} bash tmp_main.sh layout --port 8765 --backmost
関連スキル
vacuumtube(VacuumTube の CDP 操作)audio-stt-whisper(whisper-agent 運用)audio-speak-voicebox(VOICEVOX + 字幕オーバーレイ)owner-attention-call(ASEE を見て音声呼びかけ / ntfy を自動切替)desktop-windows-layout(VacuumTube の右上配置など)