設定參數速查
Pi Agent 從 v0.13.0 之後,Add-on 的「Configuration」分頁只剩下 4 個開關。這附錄一次講清楚每個開關的意義、預設值、合法值、什麼時候該動、什麼時候不要動。日常你其實不會來這頁——但需要來的時候,這裡就是速查表。
什麼時候會來翻這頁
平常你根本不需要打開 Pi Agent 的 Add-on 設定分頁。裝好之後(第 2 章)、金鑰貼進去(第 6 章),就直接從側邊欄用起來,一年不用碰 Configuration。
但下面這幾個情境會逼你打開它:
- Log 找 bug:想看更詳細的訊息、把
log_level調到debug。 - 時區跑掉:發現 Logs 的時間比實際早 8 小時、想把
timezone設成Asia/Taipei。 - 影片管線壞了:Chromium 或 venv 環境爛掉,要重灌 video-tools(第 18 章會解釋為什麼)。
- 環境變數逃生口:家裡走公司 proxy、或想改 Chromium 下載鏡像,得塞
env_vars。
四個開關對應這四種情境,一個 section 講一個,格式一致:作用 / 預設 / 合法值 / 什麼時候動 / 踩雷 / 範例。
最重要的觀念:所有 API 金鑰都不在這裡
這是升級到 v0.13.0 之後最容易踩的坑。Add-on 的 Configuration 分頁沒有任何 API key 欄位——所有 provider(GLM、OpenAI、Anthropic、DeepSeek、Groq、MiniMax、OpenRouter)的金鑰全部搬到 pi-web 內建的 Models 面板裡管理(第 6 章教過),詳細版本變更記在第 21 章。
這附錄講的四個選項是「Add-on 容器層」的設定——影響的是整個 add-on 怎麼跑、log 長怎樣、時區怎麼算、影片工具要不要重灌,跟「哪家 AI、用哪把 key」完全兩碼事。
| 你想改的東西 | 去哪裡改 |
|---|---|
| 加一家 AI provider、換 API 金鑰、改 baseUrl | pi-web → Models 面板(第 6 章) |
| 裝 skill、刪 skill | pi-web → Skills 面板(第 14 章) |
| Add-on log 詳細度、時區、重灌 video-tools、環境變數 | 本附錄講的 Add-on Configuration 分頁 |
選項 1:log_level——訊息詳細度
| 項目 | 內容 |
|---|---|
| 作用 | 控制 Add-on 在 Logs 分頁印出多少細節,也影響 pi-web 後端的 log 冗長度。 |
| 合法值 | error、warn、info、debug(由少到多) |
| 預設 | info |
| 是否需重啟 | 是。改完儲存後 add-on 會自動重啟套用。 |
什麼時候該調
- 日常:保持
info,該有的訊息都在,也不會太吵。 - 找 bug:調
debug——每一次 HTTP 請求、每一個 skill 掃描、每一個 provider 呼叫都會印出來。抓完 bug 記得調回去。 - 只想看警告:
warn——只印 warning 以上,適合系統跑穩之後日常巡檢。 - 極簡:
error——真的只留錯誤。不建議長期用,因為 warning 常常是「快壞掉了」的預兆。
debug 開太久 log 檔會爆多——每分鐘可能幾千行。HA 的 log 是輪替的(超過大小會自動清),但如果你 SSH 進去主機直接看檔案,可能發現硬碟被吃掉幾百 MB。找完 bug 記得調回 info。範例
log_level: debug
用途:專門開來找「為什麼影片管線失敗」,可以看到 Playwright 啟動每一步、ffmpeg 每一個參數。找完之後改回:
log_level: info
選項 2:timezone——時區
| 項目 | 內容 |
|---|---|
| 作用 | 影響三件事:(1)Add-on log 的時間戳(2)Session 檔案與備份的日期命名(3)影片管線輸出的 SRT 字幕 cue timing 顯示。 |
| 合法值 | IANA 時區字串,例如 Asia/Taipei、Asia/Tokyo、America/New_York、Europe/London。 |
| 預設 | 空(等同 UTC) |
| 是否需重啟 | 是。改完儲存後 add-on 會自動重啟。 |
為什麼台灣使用者一定要設
不設的話 Logs 分頁時間會是 UTC,比台灣時間早 8 小時。你晚上 8 點按了個操作、去 Logs 找對應紀錄,會看到「中午 12 點發生」——很容易以為 log 掉了。設成 Asia/Taipei 就跟你腦袋裡的時間對得起來。
Session 檔案的日期也會受影響——不設時區的話,深夜 11 點開的 session 檔名日期可能已經跳到「隔天」(因為 UTC 已經過午夜),對照起來很混亂。
Taipei 而不是 Asia/Taipei 會 fallback 回 UTC,而且不會報錯——你以為設好了,其實沒生效。同理 +08:00、CST、GMT+8 這些寫法也不吃。標準寫法一律是 大洲/城市。常用 IANA 字串速查
| 地區 | IANA 寫法 |
|---|---|
| 台灣 | Asia/Taipei |
| 日本 | Asia/Tokyo |
| 香港 | Asia/Hong_Kong |
| 新加坡 | Asia/Singapore |
| 美東 | America/New_York |
| 美西 | America/Los_Angeles |
| 英國 | Europe/London |
範例
timezone: Asia/Taipei
選項 3:reset_video_tools——重灌影片工具
| 項目 | 內容 |
|---|---|
| 作用 | 下次 add-on 啟動時,把 /data/pi-agent/venv/、/data/pi-agent/playwright-cache/ 以及安裝哨兵檔 .video-tools-installed 全部打掉重灌,強制 video-tools-init 重跑一次完整下載(Chromium + Python venv ~720 MB)。 |
| 合法值 | true / false |
| 預設 | false |
| 是否需重啟 | 是。儲存後 HA Supervisor 會自動重啟 add-on 觸發重灌——不用手動按重啟。重灌完成後這個旗標會透過 Supervisor API 自動翻回 false,不會每次開機都重灌。 |
什麼時候該開
- 影片管線一直失敗、但看 log 看不出根本原因(第 18 章教過 video-tools 是什麼)。
- Chromium 版本太舊,某些網站截圖失敗(例如需要新版才能跑的網站)。
- venv 裡的 Python 套件跟 add-on 主程式對不起來(升級後偶爾會發生)。
- 一年一次的「大掃除」——就算沒事,趁著低峰時段跑一次順便升級 Chromium 也 OK。
video-tools-init s6-oneshot 檢查旗標、發現是 true、就把 sentinel 檔跟 venv/playwright-cache 全部刪掉重跑。重跑成功後,pi-web 會呼叫 Supervisor API 把這個選項自動翻回 false,你不會被卡在「每次開機都重下 720 MB」的迴圈。video-tools-init 是平行啟動的,就算下載失敗,聊天還是能用。範例(一次性使用)
reset_video_tools: true
儲存 → 等 Supervisor 自動重啟 → Logs 出現 video-tools-init 開始下載 → 完成後 Configuration 分頁重新載入,會看到這個值已經自己變回 false。之後不用管它。
選項 4:env_vars——環境變數逃生口
| 項目 | 內容 |
|---|---|
| 作用 | 塞任意環境變數給 pi-web 主程式讀。用來對付「add-on 沒開專屬設定,但底層工具吃某個環境變數」的邊緣情境。 |
| 格式 | YAML list,每一項是 {name: X, value: Y}。 |
| 名稱規則 | 正則 ^[A-Za-z_][A-Za-z0-9_]*$——大小寫英數與底線、開頭不能是數字。不合規的名稱(例如帶連字號 MY-VAR、有中文)init 腳本會跳過並印 warning 到 Logs,不會把整個 add-on 弄壞——但那條環境變數不會生效。 |
| 預設 | [](空 list) |
| 是否需重啟 | 是。改完儲存後 add-on 會自動重啟。 |
常見用途
| 變數名 | 做什麼 | 典型情境 |
|---|---|---|
HTTP_PROXY / HTTPS_PROXY | 叫 pi-web 走 HTTP proxy 出去 | 公司網路強制走 proxy 才能連外 |
NO_PROXY | 指定某些主機不走 proxy | 內網 HA API 不要繞 proxy |
PLAYWRIGHT_DOWNLOAD_HOST | 指定 Chromium 下載鏡像 | 直連 Playwright CDN 太慢,換成國內鏡像加速 |
OPENAI_BASE_URL | 改寫 OpenAI SDK 的預設端點 | 想把 OpenAI 官方 provider(沒自填 baseUrl 的那一家)導到內部閘道 / 反向代理 |
OPENAI_API_KEY、ANTHROPIC_API_KEY。這些變數 pi-web 不會讀,你以為設好了、實際上金鑰完全沒生效。所有 provider 金鑰都在 pi-web Models 面板裡管理,那是唯一正確的地方。OPENAI_BASE_URL 想成「一次改所有 provider」——它只影響 OpenAI SDK 在沒有自訂 baseUrl 時的預設值。pi-web 的 Models 面板裡,DeepSeek、Groq、OpenRouter、MiniMax、GLM 每一家 provider 都各自填了自己的 baseUrl,那個欄位優先,不會被這個環境變數蓋掉。真正被影響的只有「OpenAI 官方 provider(沒改過 baseUrl 那一家)」。想單獨改一家的端點,回 Models 面板改那一家的 baseUrl 欄位,不要用環境變數繞。範例
走公司 proxy:
env_vars:
- name: HTTP_PROXY
value: http://192.168.1.1:8080
- name: HTTPS_PROXY
value: http://192.168.1.1:8080
- name: NO_PROXY
value: 127.0.0.1,localhost,homeassistant.local
不需要就留空 list:
env_vars: []
完整設定範例
台灣一般家庭用戶最典型的設定長這樣,直接複製貼上就能用:
log_level: info
timezone: Asia/Taipei
reset_video_tools: false
env_vars: []
如果你在追蹤某個 bug、想開詳細 log 又要走公司 proxy:
log_level: debug
timezone: Asia/Taipei
reset_video_tools: false
env_vars:
- name: HTTP_PROXY
value: http://192.168.1.1:8080
- name: HTTPS_PROXY
value: http://192.168.1.1:8080
v0.13.0 之前的舊選項在哪裡(歷史參考)
從舊版升上來的老用戶會發現:Configuration 分頁少了一堆欄位。這不是壞掉——是搬家了。詳細的升級注意事項在第 21 章,這裡放對照表方便速查:
| v0.12.x 舊欄位 | v0.13.0 之後去哪裡設 |
|---|---|
api_key(GLM 主金鑰) | pi-web Models 面板 → GLM (zai) provider → API Key |
openai_api_key | pi-web Models 面板 → OpenAI provider → API Key 欄位 |
anthropic_api_key | pi-web Models 面板 → Anthropic provider → API Key |
deepseek_api_key | pi-web Models 面板 → DeepSeek provider → API Key |
groq_api_key | pi-web Models 面板 → Groq provider → API Key |
openrouter_api_key | pi-web Models 面板 → OpenRouter provider → API Key |
minimax_api_key | pi-web Models 面板 → MiniMax provider → API Key |
extra_allowed_hosts(v0.10.0 就已移除) | 不用設了——nginx 已改寫 Host: localhost,pi-web 一律通過驗證 |
常見卡關
-
改了設定完全沒反應
Configuration 分頁改完之後要按最下方的「儲存」按鈕。有些 HA 版本按鈕會被浮動元件擋住,往下捲一點就會看到。儲存後 add-on 才會重啟套用;沒按等於白改。
-
Add-on 重啟後選項變回預設值
通常是 YAML 格式錯——例如
timezone少了引號、env_vars的縮排不對。打開 Logs 分頁,往上滾找parse error或invalid config這類字串,會有一行指出是哪個欄位壞了。改完再儲存。 -
env_vars 加了但 pi-web 完全沒讀到
三種可能:(1)名稱有非法字元(含連字號、開頭是數字、有中文);(2)你設的環境變數不是 pi-web 會讀的——不是每個
OPENAI_*或ANTHROPIC_*都有效,pi-web 只讀特定幾個(proxy 系列、Playwright 系列、少數 SDK 的 baseUrl);(3)你想設的是 API 金鑰——那個永遠不會生效,回 Models 面板貼。 -
reset_video_tools 開了但 video-tools 沒重下載
正常流程是勾
true→ 儲存 → Supervisor 自動重啟 →video-tools-init檢查旗標 → 開始下載。如果儲存後沒動靜,先確認:(1)Configuration 分頁真的按到了「儲存」按鈕(有時被浮動元件擋住,往下捲);(2)打開 Logs 分頁看video-tools-init那幾行——如果只看到「exit <100ms」代表旗標沒被讀到;(3)真的都沒觸發時再從 add-on 頁面手動按「重新啟動」補一次。下載成功後回 Configuration 分頁重新載入,這個選項會自己翻回false。 -
timezone 設了
Taipei但時間還是 UTCIANA 格式一定要寫完整——
Asia/Taipei,不是Taipei、不是CST、不是+08:00。寫錯了系統會 fallback 回 UTC 而且不報錯,很容易誤判「已經設了」。改成正確字串、儲存、等 add-on 重啟完,再回 Logs 看時間戳是否對上。 -
debug log 太多,硬碟空間吃緊
把
log_level調回info或warn。HA OS 通常會自動輪替 log 檔,但如果你在 Supervised/Container 安裝上手動看/var/log,需要自己清一下舊檔。不要長期開debug,只在排錯時開。
常見問題
怎麼把 add-on 設定存起來下次還原?
有沒有地方可以看到目前 add-on 生效的完整設定 YAML?
/data/options.json(在 add-on container 內),那是 supervisor 實際 mount 進 add-on 的最終設定(JSON 格式)。第二種方式適合驗證「UI 上的 YAML 是否真的被解析成你想的樣子」。timezone 會影響 AI 回應的內容嗎?例如 AI 問「現在幾點」
timezone 選項。這個選項只影響 log 時間戳、session 檔名日期、影片字幕 cue timing三件事。想改 HA 主機時區要回 HA 的「設定 → 系統 → 一般」那邊改,兩個是分開的。我改壞了 Configuration,怎麼回到預設值?
log_level: info、timezone 空、reset_video_tools: false、env_vars: []。API 金鑰在 pi-web 那邊、不會被這顆按鈕動到,所以按了不用擔心金鑰不見。按完記得儲存。可以在 env_vars 裡塞 TZ 覆蓋時區嗎?
TZ=Asia/Taipei,某些底層工具(像 Python 的 datetime)會讀它。但強烈建議直接用 timezone 選項——那是 add-on 官方接口,會同時設好系統時區、log 時區、應用層時區三件事。env_vars 裡的 TZ 只影響部分場景,容易造成三個地方時區不一致,反而更難 debug。4 個選項可以在跑的時候動態改嗎?還是一定要重啟?
log_level/timezone/env_vars 在 pi-web process 啟動時讀環境變數;reset_video_tools 則是在 video-tools-init s6-oneshot 開機時讀 /data/options.json——都是自動的,不需要人工介入。