一份 Home Assistant 備份,就已經帶走了 Pi Agent 幾乎所有的東西
你的對話、供應商金鑰、Skill 跟 rclone 授權,全都放在 Home Assistant 主機上的同一個資料夾裡。你可能早就在跑的備份能把這個資料夾連同其他一切一起帶走——但前提是你有選這個 add-on,而且你證明過一次這份存檔真的能還原。這篇要講清楚什麼會被帶走、什麼被刻意排除,以及那五分鐘怎麼把一份備份變成一份真正的復原計畫。
一張壞掉的 SD 卡,代價比以前更高了
你的 Home Assistant 主機已經在管燈光、門鎖跟能源儀表板。以前弄丟它,頂多是花一個晚上重新配對裝置。Pi Agent 加上了一層重建起來難得多的東西:你每一次的對話、你設定過的每一把供應商金鑰、你裝過或寫過的每一個 Skill,還有上傳到 Google Drive 的 rclone 授權。加起來可能是好幾週的心血。
有四種狀況常見到值得先做好準備:
- 儲存裝置故障。 SD 卡或硬碟可能毫無預警地變得讀不出來。
- 升級失敗。 一次 Home Assistant 版本更新或 add-on 更新,可能讓服務起不來,沒有最近的備份,要 rollback 會很困難。
- 手滑誤刪。 在 File editor 或 SSH 裡打錯一個指令,就把你需要的設定砍掉了。
- 換主機搬家。 從 Pi 4 換到 Pi 5、從 Pi 換到 NUC,或搬到另一棟建築物,這種操作之所以行得通,就是因為有備份存在。
Home Assistant Backup 會把你選的系統設定、資料庫、共用資料,加上每個你選的 add-on 的 /data/ 目錄,打包成一個 .tar 存檔。Pi Agent 就是為了搭上這班順風車才以 add-on 的形式運作,這樣它的資料才能跟著同一個存檔走。不需要另外設第二套備份系統,也不需要再多寫一個排程工作。
成果會進存檔;工具鏈不會
把它想成搬家。你會打包相簿跟文件,不會打包自來水,因為新家本來就有水龍頭。Pi Agent 的備份劃的就是同一條線:你的對話跟金鑰是相簿,它下載下來的 Python 環境是自來水。
你完全不用透過 SSH 打開這個資料夾,但看過它的結構,這條界線就一目瞭然了。
| 在 /data/pi-agent/ 底下 | 裝著什麼 | 會進存檔嗎? |
|---|---|---|
| sessions/*.jsonl | 每一次對話,一個 Session 一個檔案 | 會 |
| models.json | 供應商設定跟你的 API 金鑰 | 會 |
| skills/ | 你安裝或自己寫的 Skill | 會 |
| auth.json | OAuth 登入 token,檔案權限 600 | 會 |
| home/pi-cwd-YYYYMMDD/ | coding agent 建立的工作目錄 | 會 |
| projects/<name>/final.mp4 | 完成的影片、script.md 跟配音輸出 | 會 |
| rclone/rclone.conf | 你的 Google Drive 授權 token | 會 |
| venv/ | 影片工具用的 Python 環境 | 不會 |
| playwright-cache/ | Playwright 用的 Chromium 瀏覽器 | 不會 |
| projects/<name>/clips/*.webm | Playwright 錄下的原始畫面 | 不會 |
| projects/<name>/segments/*.mp4 | ffmpeg 產生的中間段落 | 不會 |
這四項排除是刻意的,理由是大小。 venv/ 跟 playwright-cache/ 加起來大約用掉 720 MB。把它們包進去,每份存檔都會多將近 1 GB,保留十份備份就多花大約 10 GB,去存那些會自己重新下載的檔案。clips 跟 segments 可以從你留下來的腳本跟旁白重新生成。
有一個後果會讓人意外。那個空的標記檔 .video-tools-installed 是 會進存檔——但光還原它,並不會跳過那次下載,因為啟動檢查同時也要找那個 Python 執行檔。
flowchart TD
A["還原之後 add-on 啟動"] --> B{"Is .video-tools-installed there?"}
B -->|"是,它是從存檔裡帶回來的"| C{"Is venv/bin/python3 there?"}
B -->|"任何"| D["重新下載,3-8 分鐘"]
C -->|"否,venv 被排除在外了"| D
C -->|"是"| E["跳過,立刻就緒"]
D --> F["Log 顯示 video-tools-init done"]
五個步驟,大約五分鐘
-
步驟 1
打開備份頁面
前往
Settings → System → Backups。第一次可能是空的,也可能已經顯示某個既有排程做出來的東西。2023 年之前的版本,這個功能放在Settings → System → Server Controls;那條路徑現在已經不存在了。 -
步驟 2
點 Backup now,再點 Manual backup
在資料選擇畫面,第一次全部保持勾選:設定、每個 add-on、共享資料夾跟媒體。這樣才能把 Woow HA Pi Agent 跟它的
/data/pi-agent/包進存檔裡。之後你可以拿掉大型媒體來縮小檔案——但要讓 Pi Agent 保持勾選。 -
步驟 3
取一個你認得出來的名字
把預設那個版本加時間戳記的通用名稱,換成有意義的:
2026-08-14-full、before-pi-agent-upgrade、provider-keys-configured。半年後,這是唯一能告訴你該挑哪一份存檔的東西。 -
步驟 4
下載 Backup Emergency Kit
2025 年後的 Home Assistant 版本會自動產生一把加密金鑰,並提供給你 Backup Emergency Kit,一個裝著那把金鑰的 .txt 檔。把它放進密碼管理器,或印出來。讓它遠離主機跟存檔本身——不要放在跟它能解鎖的檔案同一個雲端資料夾裡。
-
步驟 5
選擇目的地,再把一份副本帶離這台裝置
本地儲存、Nabu Casa、掛載的網路儲存空間,或像 Google Drive Backup 或 Samba Backup。家用備份通常花 1-10 分鐘。出現在清單裡之後,用它的選單下載那個
.tar,把這份副本存到別的地方。
這把加密金鑰不是一個能重設的密碼。它是保險箱唯一的鑰匙。如果保險箱跟鑰匙都弄丟了,沒有任何人——包括 Home Assistant 本身——能幫你打開。沒有官方的後門。
沒測試過的備份只是個猜測
一份你從沒還原過的存檔,就像一支從沒有人檢查過的滅火器。它掛在牆上看起來很安心。而你會在唯一一個「知道太晚了」的那天,才發現它到底能不能用。
在一台 不是 你正式主機的機器上測試:另一台 Pi、一台閒置的 NUC、一台 Home Assistant OS 虛擬機,或一台跑 Home Assistant Supervised 的小型 VPS。還原會覆蓋現有資料,所以在正式機上測試失敗,可能會讓你兩份都沒了。
在那台機器上裝好 Home Assistant,打開 Settings → System → Backups,上傳 .tar 從右上角選單,打開它的卡片,選 Restore backup。被問到的時候輸入 Emergency Kit 裡的金鑰;沒有那把密鑰,還原沒辦法繼續。讓它重啟,接著給 video-tools-init 3-8 分鐘的時間。
現在打開 pi-web,檢查四件事。少檢查一項都不算真正測試過:
- Session 清單 ——之前每一次對話都在。
- Models 面板 ——每個供應商都在,而 Test 在每一個上都測試成功。
- Skills 面板 ——每個已安裝的 Skill 都出現。
- 一次新對話 ——選定的供應商能回答一個簡單的問題。
如果十分鐘後影片管線還是沒反應,或 log 顯示的是錯誤而不是 video-tools-init done,就強制乾淨重建:打開 reset_video_tools 在這個 add-on 的 Configuration 分頁上,同一個頁面也放著 log_level 跟 timezone,接著存檔重啟這個 add-on。這個開關不是新的;0.13.0 只是後來加上了自動清理,讓 add-on 事後自己把選項改回 false 。比較舊的版本會讓它一直開著,得自己手動關掉。
- Configuration 是最上方四個分頁之一——Info、Documentation、Configuration、Log。這個 add-on 讓你設定的每一項,都藏在它後面。
- Options 面板是一份簡單的欄位清單,在畫面下方
groq_api_key這裡被截斷了。這裡的東西不會有人幫你重建。 - 眼睛圖示 在每個已填欄位旁邊,能用明文顯示那把金鑰。這個畫面一鍵就能揭露的東西,一份沒加密的存檔,會揭露給任何拿到它的人。
存檔裡的憑證是明文儲存的
Pi Agent 把供應商金鑰以明文存在 models.json,而 rclone 把它的 Google Drive refresh token 存在 rclone.conf。這個 add-on 備份時兩者都會被包進去。這在還原那天很方便,其他每一天都很危險。
所以每一把金鑰都在密碼管理器裡留一份副本——1Password、Bitwarden、iCloud 鑰匙圈——理由有兩個:
建立每把金鑰時就幫它標籤:用途、日期、供應商網站。每次在 Models 面板換金鑰時就更新它。離開這台裝置的每份存檔都要加密,絕對不要把備份附在支援請求裡。
models.json ,透過 Models 介面設定,還有你的密碼管理器裡。別的地方都不行。有兩種時刻,備份就不再是可有可無的了
每次 add-on 更新之前
Pi Agent 的 add-on 頁面沒有 Downgrade 按鈕,add-on 商店通常也只提供目前的版本。如果一次更新改變了行為、或直接起不來,升級前的那份備份就是實際上唯一的回頭路。
- Current version ——這裡是 0.12.0。把它寫進備份名稱裡,讓這份存檔自己說清楚它能還原到哪個版本。
- Autoupdate 應該保持關閉。一次自動到來的更新,背後不會有一份剛做好的備份撐著。
- 有一個 沒有 Downgrade 按鈕 在這個頁面上。這個缺失,就是備份存在的全部理由。
| 轉變 | 改了什麼 | 沒備份的風險 |
|---|---|---|
| ~ v0.13.0 | API 金鑰從 add-on 設定搬進了 pi-web 的 Models 面板 | 這是一次沒有自動遷移的硬切換。先把每把金鑰記下來,再一一重新輸入一遍。 |
| ~ v0.10.0 | coding agent 的工作目錄搬到了 /data/pi-agent/home/ | 舊的 pi-cwd-* 目錄可能在升級過程中被移除、弄丟。 |
| 影片管線重構 | video-tools 的 venv 結構可能會改變 | 管線可能會短暫用不了。重建通常就能解決;備份保護的是你的專案資料。 |
整套流程就一行: Settings → System → Backups → Backup now → Manual backup,取名叫「Before upgrade <日期>」,等它跑完,再回到 add-on 頁面點 Update。
搬到新主機
機制一樣,但風險更高,因為新機器會變成正式環境。在舊主機上做最後一次乾淨的備份,接著 停止使用它 ——在那之後開始的對話不會在存檔裡。在新硬體上安裝 Home Assistant,但先不要裝 任何 add-on;還原時會把 Pi Agent 跟它的資料一起帶回來。輸入金鑰,再給影片工具 3-8 分鐘的時間。這段期間聊天功能跟 Session 紀錄照樣能用。
能不能只備份 Pi Agent?
能不能直接 rsync /data/pi-agent 到另一台主機就好?
models.json 跟 sessions/*.jsonl 的格式在不同版本之間可能會變,所以舊資料放進較新的 add-on 可能讀不了;手動複製的版本很容易漏掉像 options.json;而且可能留下一個標記檔,卻沒有完整的環境。單獨複製一個資料夾出來,拿去分享一個 Skill 是合理的——把 skills/<a-skill>/ 打包成 zip——因為 Skill 是 Markdown,不是綁定版本的狀態。金鑰還原了,但 Models 測試失敗
備份跑的時候 Pi Agent 會不能用嗎?
能從備份裡讀出一段舊對話嗎?
.tar,去 data/pi-agent/sessions/ 底下找 .jsonl 檔案。每一行都是一則 JSON 訊息,文字編輯器就能顯示。你不用還原整個 Home Assistant,就能救回一段舊的提示。這些檔案裝著私人的對話內容——用完之後要安全地刪除。接下來往哪走
你已經有了一個復原點。現在該用上它了。
第 15 篇要講升級這個 add-on:版本之間到底改了什麼、按 Update 之前怎麼讀更新說明,以及當你升到的新版本跟你離開的舊版本行為不一樣時該怎麼辦。
打開完整教學手冊《Pi Agent 入住指南》系列第 14 篇,由 WoowTech 渥屋科技 製作。
內容出自 Woow HA Pi Agent 入住指南,依 CC BY 4.0 釋出。
The Smart Space Solution · 智慧空間解決方案 · © 2026 WOOW Technology Co., Ltd.