跳至內容

看症狀,不看手冊:Pi Agent 不動的時候怎麼修

其他每一篇都在講事情順利時該怎麼做。這篇反過來:看螢幕上顯示的東西——一個紅色數字、一個轉個不停的轉圈圈、一支沒聲音的影片——再往回推。
2026年9月12日
看症狀,不看手冊:Pi Agent 不動的時候怎麼修
OdooBot
when it breaks
Pi Agent 指南 · 第 16 篇

看症狀,不看手冊:Pi Agent 不動的時候怎麼修

其他每一篇都在講事情順利時該怎麼做。這篇反過來:看螢幕上顯示的東西——一個紅色數字、一個轉個不停的轉圈圈、一支沒聲音的影片——再往回推。

3 項檢查
大約 80% 回報的問題
30 行
最先該讀的那部分 log
60 秒
Watchdog 探測——並重啟——的頻率
反過來讀

把這篇加書籤,不是讀一遍就收起來

問題不會照教學的順序來:一把用了兩個月都沒事的金鑰,某個週二早上突然回傳 401。所以這篇是照症狀來安排的。先跑三項檢查,再跳到跟你螢幕對得上的那一節。

flowchart TD
  A["出問題了"] --> B["三項快速檢查"]
  B --> C{"What is on screen?"}
  C -->|"401 / 402 / 429"| D["金鑰、額度,或速率限制"]
  C -->|"404"| E["Ingress 跟這個 add-on"]
  C -->|"轉圈圈或空白頁面"| F["沒有錯誤代碼"]
  C -->|"Skill 或影片步驟"| G["工作流程各節"]
  C -->|"每分鐘都重啟"| H["Watchdog 迴圈"]
  D --> I["最後 30 行 log"]
  E --> I
  F --> I
  G --> I
  H --> I
  I --> J["GitHub issue"]
該試哪扇門檢查排在最前面。log 是所有路徑匯合的地方。
有三層都得正常運作: 側邊欄的入口、它背後的 Ingress token,還有這個 add-on 的程序本身。少了入口不代表 add-on 掛了;狀態顯示綠色也不代表 Ingress 正常運作。各自分開診斷。
先做三項檢查

不到一分鐘,通常就夠了

  1. 檢查 1

    這個 add-on 還在跑嗎?

    打開 Settings → Add-ons → Woow HA Pi Agent。綠色的 Started 代表正在運作。如果顯示 Stopped 或紅色,點 Start,給它 30-60 秒完成初始化,再試一次。

  2. 檢查 2

    真的有選好一個供應商嗎?

    看訊息輸入框上方的模型選單。它應該顯示一個供應商跟模型,例如 GLM / glm-4.6。如果它是灰的,或顯示「No model」,打開 Models 面板,輸入金鑰,並確認 Test 成功。

  3. 檢查 3

    這個網路連得上網際網路嗎?

    打開 https://www.google.com 在新分頁打開。如果打不開,先修好網路連線。如果一般瀏覽都正常、只有某個供應商連不上,查一下它的官方狀態頁面,並確認你的網路政策允許連到它的 API endpoint。

為什麼每次都先跑這個: 在一組具代表性的十次「Pi Agent 壞了」回報裡,可能有八次最後查出來是 add-on 在 Home Assistant 更新後沒有乾淨重啟、金鑰不見了,或 Wi-Fi 斷線。不到 30 秒。
Home Assistant 裡 Woow HA Pi Agent 的 add-on Info 頁面:標題下面是 Current version 0.12.0,帶一個 Changelog 連結,一個綠色的 Rating 徽章旁邊是藍色的 Ingress 徽章,四個開關——Start on boot 開、Watchdog 開、Autoupdate 關、Add to sidebar 開——右側欄位列出 Hostname 跟 add-on 的 CPU、RAM 使用率都是 0%,底部一排是 Stop、Restart、Uninstall 跟 Open web UI 按鈕。
Info 頁面這裡幾乎每件事都會把你導回這個頁面——查狀態、查版本,或找一個開關。
  • 最底下那排按鈕: StopRestartUninstallOpen web UI。這裡會有 Stop,是因為這個 add-on 正在運作;已停止的話這裡會換成 Start——見上面的檢查 1。
  • Current version: 0.12.0 在標題下面,旁邊有個 Changelog 連結。現在就把這個版本號記下來;每個求助請求都會問到它。
  • Watchdog,在這張截圖裡是開著的——它會在這個 add-on 不再回應時把它重啟,而診斷重啟迴圈時,你就是要關掉這個開關。
  • 側邊欄開關,標示為 Add to sidebar 在這個版本上, Show in sidebar 則是文件裡的寫法。如果 Pi Agent 在跑,但左側選單裡沒有入口,就是這個開關。
數字代表什麼

401、402、429、404:四種不同的拒絕方式

講白一點

一間會員制的俱樂部。 401 是門房拒絕了你的卡片。 402 是吧檯說你的帳戶餘額是空的, 429 同一個酒保要你點慢一點。 404 則是沒有任何人在拒絕你——你只是走錯了自己家的門。

401 Unauthorized

右上角出現紅色的「401」或「Unauthorized」,而且沒有回覆:供應商拒絕了這組憑證。大約 90% 的情況是金鑰的問題。

原因發生機率修法
金鑰打錯或過期90%Models 面板:選那個供應商,輸入一把有效的金鑰,點 Test。看到通過才繼續下一步。
baseUrl 打錯5%對照供應商目前的 endpoint 改正它。絕對不要把 OpenRouter 的金鑰配上直連供應商的 endpoint,反過來也一樣。
供應商服務中斷5%查一下那家供應商的狀態頁面——GLM、OpenAI 跟 Anthropic 都有各自的官方狀態頁。等它恢復,或切換到另一個已設定好的供應商。
401 是供應商在拒絕這組憑證 ——不是你的網路、電腦,或這個 add-on 的問題。注意金鑰頭尾:不能有多餘的空格、換行,也不能少字元。金鑰長達 40-60 個字元,在瀏覽器裡選少了一小段很容易發生,也幾乎看不出來。貼進一個純文字編輯器裡檢查,但絕對不要把金鑰留在一個沒有安全防護的檔案裡。

402 Payment Required,或 429 Too Many Requests

一個 402,或訊息裡帶著 insufficient_balance、「insufficient balance」、「rate limit」或「quota exceeded」這類字眼。憑證可能是對的;只是這個帳戶沒有可用的額度、撞到配額上限,或正被限速。

insufficient_balancecreditsquota 指的是帳戶額度。 rate_limit 跟「too many requests」代表暫時性的限制:等一到兩分鐘,等待期間不要重複送出請求。

如果額度是空的,到負責你這條線路的供應商去加值——GLM 在 bigmodel.cn,OpenAI 在 platform.openai.com,Anthropic 在 console.anthropic.com,OpenRouter 在 openrouter.ai。不需要重啟;下一次請求就會用上新的額度。或者切到另一個已經設定並測試過的供應商跟模型,先確認過它的收費跟限制。

這兩個代碼都不代表 Pi Agent 壞了。 402 或 429 是供應商或你的帳戶在回應;AI 請求會消耗 token,也受計費跟速率限制約束。試用額度、每日上限跟重置週期,因供應商、線路跟帳戶而異,而且會變動——去看目前的儀表板,不要看舊的註冊優惠。測試過的第二個供應商,是最好的備援。

404 Not Found

選了側邊欄的 Pi Agent,或按了 Open Web UI之後,出現「404 Not Found」或「Ingress token invalid」。幾乎都跟 Ingress 有關——Home Assistant 用來代理 add-on 網頁介面的機制:它發出的是一張臨時門卡,門卡是會過期的。

情況你看到什麼修法
Ingress token 過期了剛才還好好的,回來就 404回到 Home Assistant 首頁,再點一次 Pi Agent;系統會發出一張新的 token。極少數情況需要 ha core restart
add-on 沒在跑整個打不開;Open Web UI 沒反應去 Info 分頁檢查狀態。如果是停止的,點 Start,等 30-60 秒。
側邊欄入口不見了Pi Agent 在跑,但左側邊欄什麼都沒有見下面的三項檢查。

側邊欄完全沒有入口

檢查該怎麼做
側邊欄開關Settings → Add-ons → Woow HA Pi Agent → InfoAdd to sidebar 在目前的介面裡, Show in sidebar 在文件裡的寫法。從 v0.8.0 開始,這個 add-on 通常會在啟動時透過 Supervisor API 自動註冊它;如果失敗了,手動打開這個開關。
管理員帳號這個面板用的是 panel_admin: true,所以只有管理員身分能看到這個入口——跟家人共用的一般帳號永遠看不到。 Settings → People → Users,選那個使用者,只有在這個存取層級合適時才開啟 Administrator。
重啟一次 Home AssistantSupervisor 偶爾會沒能把側邊面板跟 Core 註冊好。跑 ha core restart,或在介面裡用 Restart Home Assistant。
沒有錯誤可讀

轉圈圈一直轉,卻等不到回覆

沒有任何東西指出問題所在:訊息送出去了,右下角出現轉圈圈,然後什麼都沒回來。照順序檢查四件事。

  1. 第一

    確認基本狀況

    有選好模型嗎? Test 在 Models 面板裡對那個供應商測試成功嗎?只要有一個答案是否,先把設定修好。

  2. 第二

    給延遲留一點時間

    有推理能力的模型,可能要 30-60 秒甚至更久才開始回應。沒有一個放諸四海皆準的九十秒門檻——延遲取決於模型、線路、請求大小跟供應商的負載。把同一段提示送給另一個已設定的模型,就能分辨是哪種情況。

  3. 第三

    檢查網路是不是擋住了這個 endpoint

    公司的 VPN、學校網路、DNS 過濾,或地區政策,可能擋住了某個供應商的 baseUrl。打開 https://api.openai.com 在瀏覽器裡是基本的連線檢查,不是完整的 API 測試——也要去讀官方狀態頁面,並從發出請求的那台主機測試 DNS 跟 HTTPS。如果真的被擋住了,切換到另一條你的網路跟所在地能支援的線路。

  4. 第四

    給 Watchdog 一分鐘的時間

    很少見的情況,pi-web 還在跑,但不再回應。等它自動恢復:v0.10.0 加上的 Watchdog 每分鐘探測一次 /api/home ,並要求 Supervisor 重啟一個沒回應的 add-on。它會在 60 秒內察覺,所以總共給 60-90 秒,再重新打開 Pi Agent,讀一下 log。

如果請求還是一直完成不了,打開 Log 分頁,讀失敗那次嘗試前後的最後 30 行。複製下來,把任何敏感內容遮掉,拿去開一個 GitHub issue。

慢,不等於卡住。 不要一直按 Send:連按三次會產生三次計費的請求,讓佇列變長,還把 token 花在你最後會丟掉的答案上。要看供應商實際觀察到的狀態跟延遲來判斷,不要用自己心裡設的逾時標準。
一次做到一半的 Pi Agent 對話:一個要求建立 notes.md 並讀回內容的請求,接著兩張綠色的工具卡——write notes.md 花了 5 秒、read notes.md 花了 2 秒——各自底下有一行 token 跟成本,底下是一行 Waiting for model,訊息輸入框現在顯示 Steer now / queue follow-up,帶著 Steer 跟 Follow-up 按鈕跟一個紅色的 Stop,頂欄的 session 總計是 $0.02。
正常運作長什麼樣跑完的工具卡各自帶著計時跟成本,頂欄有一個 session 總計,Send 的位置換成了紅色的 Stop。
  • 每個 工具卡 都帶著它花的秒數—— write notes.md 5 秒, read notes.md 2 秒——底下還有一行 token 跟成本: 1,180 in · 70 out · $0.0080。有新的卡片持續出現,代表工作還在進行。
  • Waiting for model… 接在最後一張卡片下面。這一行是轉圈圈的老實版本:這一輪還沒結束,畫面上寫的就是它卡在哪裡。
  • session 總計 在頂欄——這裡是 $0.02——會隨著工作進行往上爬。一個還在變動的數字,就是有活動的有用跡象。
  • 訊息輸入框變成了 Steer now / queue follow-up ,帶著 SteerFollow-up ,跟一個紅色的 Stop。那個 Stop,而不是 Send,才是你想結束這一輪時該按的按鈕。

其他不太明顯的症狀

上面這幾節涵蓋了大約 90% 出錯的情況。剩下的:

你看到什麼修法
整個 pi-web 頁面都連不上——不是 404,根本沒有頁面在另一個分頁打開 Home Assistant 首頁。如果那個也打不開,Home Assistant 本身就掛了——先把它救回來。如果只有 Pi Agent 連不上,用上面 404 那節的檢查。
頁面打得開,但一直是空白或灰色F12 打開開發者工具,讀 Console。 Failed to load /_next/... 暗示是 Ingress 資源路由的問題——重啟一次這個 add-on。 ChunkLoadError 暗示瀏覽器快取過舊——用 Ctrl+Shift+R
Send 是灰的模型選單沒有選中任何項目——剛建立 Session 後常見這種情況。打開它,選一個已設定的供應商跟模型。
看起來一切正常,但 Log 分頁是空的log_level 設得太嚴格。預設值 info 會記錄重要事件; error 只記錄錯誤。平常用 infodebug 只有在追蹤問題時才用。
一個 Session 一開就立刻關閉,把你打回首頁這個 Session 的檔案可能不見了或壞了。每次對話都是一個 .jsonl 檔案,放在 /data/pi-agent/sessions/底下;內容無效會讓 pi-web 沒辦法載入它。從一份 Home Assistant 備份還原 sessions 目錄。
更新之後 Pi Agent 感覺變慢了第一次啟動可能會跑 video-tools-init 檢查,pi-web 也可能重建它的 .next 快取,所以第一次啟動比較慢是正常的。如果連續兩三次啟動都這樣,就讀 log,檢查系統資源。
Skill 跟影片

失敗發生在一連串工具鏈裡的時候

一次影片工作流串起 5-6 個工具——文字轉語音、Playwright 錄製、ffmpeg 合成、字幕渲染、rclone 上傳——所以問題在於它停在哪個階段。

講白一點

就像一支接力隊。棒子掉到地上,你不會重新訓練整支隊伍——你要查的是哪一棒的交接出了問題。有畫面沒聲音,代表配音那一棒根本沒起跑;有聲音沒字幕,代表是最後一棒出的問題。

失敗的階段可能的原因修法
script.yaml 卡住,或沒有可用的結構模型沒有照著結構化的腳本格式走透過一個已設定的供應商,換用一個目前有推理能力的模型,再要求它驗證 YAML 結構,重試一次。
Playwright 錄出來的影片整個是黑的或灰的Chromium 不完整,或 Playwright 快取壞了Configuration 分頁: reset_video_tools 改成 true,存檔,重啟。給那 720MB 的下載 3-8 分鐘。Supervisor 通常會自己把選項改回 false;如果 log 顯示自動改回失敗,就自己手動關掉。
有畫面,沒有配音edge-tts 連不上微軟的 TTS endpoint在 log 裡搜尋 edge-tts ——找逾時或網路錯誤。如果你的網路擋住了 speech.platform.bing.com,就照你的網路政策處理,或設定另一個支援的 TTS 工作流,不要對著一個被擋住的 endpoint 一直重試。
有畫面有配音,沒有字幕SRT 檔案存在,但 ffmpeg 沒把它渲染進去pitch_video 的 SKILL.mdffmpeg -vf subtitles= 這一步渲染字幕。在 log 裡搜尋 subtitles。少了 fonts-noto-cjk → 重新安裝或更新這個 add-on; reset_video_tools 不會重新安裝映像檔裡的套件。SRT 路徑錯了 → 拿去跟 script.yaml
影片完成了,但上傳失敗rclone 的 Google Drive 授權無效、被撤銷或過期了重新打開 rclone --config=/data/pi-agent/rclone/rclone.conf config 來測試或重新連接這個遠端。不要假設 token 有固定的存活期限;以 rclone 實際的錯誤跟供應商帳戶狀態為準。
起不來——沒有 pythonffmpegrclonevideo-tools-init 沒跑完,或 add-on 映像檔不完整缺少 Python 環境:設定 reset_video_tools,重啟,給那 720MB 的初始化 3-8 分鐘,同時盯著 video-tools-init 在 log 裡的動態。 ffmpegrclone 來自 add-on 映像檔——重新安裝或更新它。
要追蹤一次影片工作流: 設定 log_leveldebug,重啟,重現一次失敗的情況。每個階段就會記錄詳細得多的資訊。事後設回 info

一個 Skill 裝不上去,或啟動不了

症狀修法
用 Add from URL 什麼都沒發生兩種原因。一個無效的套件規格——Pi 不接受單獨一個 owner/repo ,例如 elmo/fridge-check;改用一個完整的網址,例如 https://github.com/elmo/fridge-check,或一個支援的 Git 規格,例如 git:github.com/elmo/fridge-check,並檢查有沒有多餘的空格或缺漏的字元。或者是私有倉庫:純 HTTPS 的 clone 沒辦法跳出來要求憑證,改用文件記載的 SSH 套件規格,並在容器裡設定好金鑰,或直接把倉庫改成公開。
clone 完成了,但 Skills 面板還是空的F5 重新整理,接著 Reload Session 或開一個新 Session。確認套件裡有一個 SKILL.md ——大寫的 SKILL,小寫的 .md ——放在一個 Pi 會掃描的目錄裡。如果一個倉庫把 Skill 放在不支援的巢狀結構裡,安裝會乾乾淨淨地成功,但什麼都發現不了。
Skill 列在清單裡,但 AI 從沒用過它讀一下 description 欄位在 SKILL.md裡。agent 靠它來判斷這個 Skill 適不適用,「幫忙處理家事」這種寫法幾乎給不了任何線索。把任務講清楚,具體點出哪些請求該觸發它。
description 寫得很好,還是被忽略檢查這個 Skill 有沒有出現在目前 Session 的可用 Skill 清單裡,重新載入 Session,明確要求 agent 使用它。接著換一個有推理能力的模型比較看看——輕量模型例如 GLM-4-Flash 可能沒那麼穩定地遵循複雜的系統指示。換模型救不回一個從沒被發現、或格式有問題的 Skill,所以要照這個順序檢查。
重啟迴圈

狀態顯示綠色,但 log 卻不斷重新開始

這個 add-on 顯示綠色,但 Log 分頁顯示 video-tools-initpi-web 大約每 60 秒重新啟動一次,對話在回覆到一半時就斷線。Watchdog 正在做它該做的事:它每分鐘探測一次,把沒回應的 add-on 重啟。但當啟動本身每次都失敗時,這個保護機制就變成了一個無窮迴圈。

步驟該怎麼做
找出重啟之前的那個錯誤讀最新的 Log 內容——就是重啟前的那幾行——找 ErrorFailedfatal。常見的元兇:一次被中斷的 video-tools-init 下載、一個已經被佔用的連接埠,或 pi-web 讀不到 models.json
只重置下載下來的工具如果 video-tools-init 有問題,設定 reset_video_tools 在 Configuration 分頁裡,重啟,讓初始化跑完——3-8 分鐘。它會重建 Python 環境跟 Playwright 快取;不會重新安裝屬於 add-on 映像檔的套件。
讀 log 的時候先關掉 Watchdog反覆重啟會把你需要的上下文都抹掉。 Settings → Add-ons → Woow HA Pi Agent → Info,把 Watchdog 關掉——跟側邊欄開關在同一個地方。失敗的程序就會保持停止狀態。
重新安裝,當作最後手段Info 分頁:Uninstall,再從商店重新安裝一次。 /data/pi-agent/ 底下的資料——Sessions、Skills、 models.json ——跟被替換掉的映像檔是分開的。 video-tools-init 可能會再跑一次,所以給它 3-8 分鐘,在依賴這個步驟之前先確認過你的備份。
做完之後把 Watchdog 重新打開。 一直關著的話,一次真正的當機就不會再觸發自動恢復。這是 v0.10.0 加上的保護機制,不是正常運作時該放著不管的設定。
log,以及怎麼問得好

大約 90% 答案真正藏在的地方

打開 Settings → Add-ons → Woow HA Pi Agent ,選 Log 分頁;面板會自動捲到最新的紀錄。log 可能長達好幾千行,所以先讀剛失敗那件事前後的最後三十行,只有在錯誤指向更早的初始化步驟時,才需要往前翻。

Home Assistant 裡 Woow HA Pi Agent add-on 頁面的 Log 分頁,選在 Info、Documentation、Configuration 之中,面板上方有個 Search logs 欄位。面板裡填滿了 nginx 存取紀錄——一個 GET /api/agent/running/events 請求回傳 200、瀏覽器 user-agent 字串、很長的 hassio_ingress 網址,還有一個客戶端提前關閉連線的警告——右下角有個 Live 標記。
Log 分頁請求紀錄,最新的在最下面,上方有個 Search logs 欄位,還有一個 Live 標記,代表這個畫面還在即時跟隨。
  • 大多是請求紀錄。 每一行都帶著客戶端位址、時間戳記、請求內容跟狀態碼—— "GET /api/agent/running/events HTTP/1.1" 200 這裡就是這樣。警告也混在同一串裡,就像 epoll_wait() reported that client prematurely closed connection 這一行,往上幾行就有。bashio 的啟動訊息跟 pi-web 的輸出,都交錯在同一個畫面裡。
  • 最新的在最下面。 從那裡開始看——最後 30 行通常就足夠寫一份第一次的回報。
  • Search logs在面板上方,是你輸入關鍵字的地方;瀏覽器自己的 Ctrl+F 對畫面上已經顯示的內容也管用。注意那些很長的 hassio_ingress 網址帶著一個 session 識別碼——貼到任何公開的地方之前先遮掉。

值得搜尋的關鍵字,以及對上了通常代表什麼:

關鍵字通常代表什麼
Error / ERROR一個一般性的錯誤——讀完整條訊息跟前後幾行
Failed / failed一個失敗的步驟,通常後面會接著原因
fatal嚴重到讓 add-on 程序整個結束
denied / Permission檔案或目錄的權限問題,可能跟 chmod 或 SELinux 有關
timeout連到某個供應商或其他上游服務時網路逾時
401 / 402 / 404對應到這篇文章前面幾節的 HTTP 狀態碼
ENOENT缺少檔案或指令——路徑錯了,或安裝不完整
EADDRINUSE連接埠已被佔用——通常是一個從沒結束的程序

想看更詳細的資訊,把 log_levelinfodebug 在 Configuration 分頁上改掉,存檔,Restart。重現一次問題 一次 ——比如那個會回傳 401 的請求——接著設回 info。debug 輸出一分鐘內可能長到幾千行;不要讓 /var/log 被塞爆。

如果還是需要幫忙

到這裡開一個 issue https://github.com/WOOWTECH/Woow_ha_pi_agent_add_on/issues,先搜尋一下既有的 issue——「401」、「video-tools」、「blank iframe」——可能已經有人回報過你遇到的症狀了。有四件事能讓一份回報變得有辦法回答:

  • 你的 Pi Agent 版本 從 Info 分頁最上面看,例如 0.13.1。
  • 你的 Home Assistant 版本Settings → About 或系統資訊頁面。
  • 最後 30 行相關的 log,用三個反引號包起來,這樣 GitHub 才會渲染成程式碼區塊。
  • 你已經試過的每一件事 ——「重啟過了、換了金鑰、Test 顯示成功,但送訊息還是回傳 401。」

可以的話用英文寫。維護者看得懂中文,但用英文寫的回報,其他地方可能幫得上忙的人也讀得懂;如果用英文不方便,中文也可以。

貼出去之前,每一行都先讀過。 issue 是公開的。debug 等級的 log 特別會帶著請求的中繼資料跟敏感值:有些錯誤會印出請求標頭,把金鑰暴露在 Authorization 那一行——把它換成 Bearer <REDACTED>。絕對不要貼出 API 金鑰、任何形式的家中對外位址(Nabu Casa 網址、DuckDNS 網址、公開 IP)、姓名地址電話這類個人資訊,或一份完整的 Session 檔案——那裡面裝著你跟 AI 的私人對話。把敏感值換成 <REDACTED>。如果真的不小心貼出了一把真實的金鑰,就當它已經外洩:立刻到供應商的儀表板撤銷它,換一把新的。
我遇到的症狀,這篇文章裡都沒講到
再跑一次那三項檢查。如果三項都通過:讀失敗前後最後 30 行 log,跟上面幾節比對;用完整的錯誤文字或元件名稱搜尋 GitHub Issues;接著照上面列的四項,開一個新的 issue。
GitHub issue 大概多久會有回覆?
沒有任何保證。這是一個社群開源專案,沒有服務等級協議,也沒有保證的回應時間——幾小時、幾週,或永遠沒回應都有可能。只寫「壞了」的回報最難幫上忙,所以要附上完整的診斷資訊。急的話,用這篇文章、GitHub Discussions 跟更廣泛的 Home Assistant 社群,不要只等一個 issue 的回覆。
有付費支援可以買嗎?
目前沒有正式的付費支援方案。Woow HA Pi Agent 是一個社群開源的 Home Assistant add-on,不是商業支援服務。急需協助的話,照著這裡的症狀檢查走一遍,再到 GitHub Discussions、官方 Home Assistant 論壇,或其他社群發問。可用性跟回應時間都沒有保證。
我發現一個錯誤,或有更好的修法。該怎麼貢獻回去?
三條路。開一個 pull request——教學檔案放在 Woow_ha_pi_agent_tutorial 這個倉庫裡,這一章是 ch22_troubleshoot.html。如果不想用 Git,開一個 issue,寫清楚是哪一節、提議怎麼修正。或者開一個 GitHub Discussion,適合需要先讓社群討論看看的做法。
更新這個 add-on 之前該檢查什麼?
先建立一份 Home Assistant 備份。讀一下 CHANGELOG.md,特別留意任何 BREAKING 的提示——v0.13.0 把 API 金鑰從 add-on 設定搬到 pi-web 的 Models 面板,要求重新輸入一次。像 0.10 → 0.11 這種較大的更新,考慮等個兩三天,讓早期的回報先浮出來。
我一升級到 v0.13,所有東西馬上都回傳 401。是壞掉了嗎?
不是——這是一次文件記載過的破壞性變更。在 v0.13.0,金鑰管理從 add-on 的 Configuration 分頁搬到了 pi-web 裡的 Models 面板。舊的欄位消失了,金鑰也沒有自動遷移,所以請求會一直回傳 401,直到你重新輸入為止。打開 Pi Agent → Models,重新輸入每個供應商的金鑰,確認 Test 成功。CHANGELOG 記錄了這次變更。
怎麼確認影片工具真的裝好了?
安裝 SSH & Web Terminal 這個 add-on。容器名稱因每次安裝而異,所以不要照抄 docker exec -it <discovered-container-name> bash 字面上的內容——跑 docker ps | grep pi_agent 先查出來,用回傳的確切名稱,可能長得像 addon_a1b2c3d4_woow_ha_pi_agent。在容器裡跑 which python3which ffmpegwhich rclonewhich chromium。每一個都應該回傳一個路徑,例如 /data/pi-agent/venv/bin/python3/usr/bin/ffmpeg。Python 或 Chromium 顯示「not found」代表 video-tools-init 不完整——用 reset_video_tools 重建下載下來的工具。少了 ffmpegrclone 則是 add-on 映像檔的問題:重新安裝或更新它。
圖片在手機上傳失敗,在電腦上卻正常
0.13.1 版修好了這個問題。比較舊的 nginx 設定把請求主體上限設在 1 MB,而手機照片通常是 3-5 MB,就會產生 413 Request Entity Too Large。在 0.13.1,請求上限變成 100 MB,單一檔案 25 MB。如果你的版本比 v0.13.1 舊,就升級。如果在 0.13.1 或更新版本上還是失敗,檢查那張圖是不是超過 25 MB,把它縮小。
更新會刪掉我的 Skill、Session,或設定嗎?
不會——正常的更新應該會保留它們。Sessions、Skills、 models.jsonrclone.conf 放在 /data/pi-agent/底下,這個 add-on 的持久化儲存空間;更新替換的是映像檔,不是那個目錄。像 venvplaywright-cache 這種可重新產生的元件,可能被排除在備份之外,需要時再重建,所以不要假設 /data 底下的一切都有備份。在 v0.10.0 之前,Pi 的工作目錄放在容器的根檔案系統裡,更新時可能弄丟;v0.10.0 設定了 HOME=/data/pi-agent/home ,讓那個狀態變得持久化。升級之前,保留一份最新的 Home Assistant 備份。
接下來

接下來往哪走

系列完結

十六篇文章、一個工作區,還有一頁你會一直回來查的東西

系列的最後一篇。完整教學手冊有這裡每件事的完整章節版本,還加上設定跟供應商金鑰的附錄。

打開完整教學手冊

Pi Agent 入住指南》系列第 16 篇,由 WoowTech 渥屋科技 製作。

內容出自 Woow HA Pi Agent 入住指南,依 CC BY 4.0 釋出。

The Smart Space Solution · 智慧空間解決方案 · © 2026 WOOW Technology Co., Ltd.

網誌: Pi Agent 指南
分享這個貼文