跳至內容

你的第一場真正對話,以及它之後存在哪裡

金鑰能用、模型也選好了。這篇帶你走一個家庭問題:怎麼問、怎麼追問、答案怎麼查證,還有動手改東西時發生了什麼事。
2026年9月12日
你的第一場真正對話,以及它之後存在哪裡
OdooBot
ask, then push back
Pi Agent 指南 · 第 4 篇

你的第一場真正對話,以及它之後存在哪裡

金鑰能用了,模型也選好了。接下來你要打字問點什麼。這篇帶你走一個家庭問題,從提問到拿到一個能用的答案——問題本身、讓它更具體的兩次追問、動手前該做的檢查,以及 Pi Agent 這段時間在你主機上存了什麼。

3 則訊息
一個問題加兩次追問
4 項檢查
動手照做之前,先跑這幾項
1 個主題
一個 session 一個主題——讓清單保持好用的規則
第一個問題

打得出字跟問得到有用答案,是兩件不同的事

這裡不需要什麼特殊語法。決定你拿到的是有用答案還是空泛建議的,是你在問之前先講了多少。

講白一點

「推薦一台冷氣」就跟傳訊息給水電工說「我家水槽壞了」一樣。你拿到的會是一個猜測,或是反問。「廚房水龍頭關緊了還是會滴水,用了大概十年」才問得到答案。模型能處理的,只有你擺在它面前的事實。

  1. 步驟 1

    點左上角的 New session

    對話清單最上面會多出一列,中間對話區會清空。不要把新主題丟進舊的 session——它的歷史紀錄會增加你的用量,也會讓模型分心。

  2. 步驟 2

    在左下角選單選模型

    Composer 是最下面那個大的輸入區:模型選單在左下角,Send 在右下角。選第 3 篇設好的那個 OpenRouter 模型——例如 anthropic/claude-sonnet-4,就是你填進 models[].name的那個精確值。模型 ID 會變動,找不到的話去看目前的目錄。

  3. 步驟 3

    打這個問題

    你問我家客廳的燈是小米的型號。晚上十點過後,我想讓 Home Assistant 把它慢慢調暗到 20%。該怎麼設定?請用繁體中文回答。

    五個事實,簡短講清楚:裝置、時間、目標亮度、平台、回答用的語言。正是這些限制條件,讓回覆會是具體的,而不是一堂智慧照明概論課。

  4. 步驟 4

    按 Enter,或點 Send

    Composer 按 Enter 送出,Shift+Enter 換行;如果你的版本不一樣,就用畫面上看得到的 Send 按鈕。

一則英文的 Pi Agent 對話。上方藍色氣泡是問題:用兩句話說明你能為一個家裡已經在跑 Home Assistant 的人做什麼。下面標著 GPT-5.6 Sol 的回覆,用兩句話講設定與排除 Home Assistant 問題。回覆下方一行小字寫著 1,094 in、53 out、$0.0071,旁邊有 Copy 按鈕,右邊是時間戳 05:24 AM。底部工具列寫著 GPT-5.6 Sol、medium、default、Compact,上方是訊息框跟 Send 按鈕。
一個答案,附一張收據這是比上面更短、更籠統的問題——但每一則回覆計費的方式都一樣。GPT-5.6 Sol
  • 1,094 in · 53 out ——送進去的比回來的多得多。大部分是每次請求都會帶的固定指令,不是你打的那句話。
  • $0.0071 ,換來兩句話的答案。第 6 篇會講這個數字受什麼影響;現在先注意到它一直都會顯示出來。
  • 左下角的 GPT-5.6 Sol,右下角是 Send。最底下這一條——模型、 medium, default, Compact ——是你打字之前換模型的地方,不是打完之後。

一個有用的答案,會把「22:00 觸發」跟「調暗到 20%」這個動作分開來寫,提供你能看懂的 UI 步驟或 YAML,並且反問它缺少的實體細節。

有個細節值得知道: 從 Home Assistant 2024.10 起,新的 YAML 用的是複數形式的鍵 triggers:actions:conditions:。單數形式現在還能用,但新的自動化已經不建議這樣寫——如果答案給你的是單數形式的鍵,這就透露出它的訓練資料有多新。

注意一件事: 沒有 發生:你連一個開關都還沒動過。這是顧問模式——模型提案,你來檢查跟測試。

追問

第一個答案是個起點,不是結論

在同一個 session 裡再送兩則訊息,就能把那個回覆變成真的能動手做的東西。

你問這個自動化要怎麼加進去?我沒寫過 YAML,請一步一步教我,用繁體中文回答。
你問這個方案有什麼缺點?如果我看電視的時候自己調了燈光,漸暗的動作會不會蓋掉我剛調的?請用繁體中文回答。

第一句講清楚你的經驗程度,要求換一種格式——你應該會拿到 UI 操作步驟,像是 設定 → 自動化 → 新增自動化 ,而不是沒解釋的程式碼。第二句測試一個失敗情境,這是值得養成的習慣:一個夠好的答案會解釋如果有人在漸暗過程中途調了燈光會怎樣,以及是不是需要一段 conditions: 。不過一次只問一件事——一則訊息塞三個不相干的問題,換來的答案你根本沒辦法逐項檢查。

這幾句話幾乎哪裡都能用:

追問會揭露什麼
「有什麼缺點?」失敗情境跟取捨
「有沒有更便宜、更簡單或更快的做法?」一個實際的替代方案
「用白話再講一次。」一個沒有術語、更清楚的版本
「舉一個具體的例子。」抽象的概念怎麼套用到實際情況
「如果〔你的條件〕,這個還成立嗎?」在你真實的限制條件下站不站得住
檢查答案

寫得順暢,會讓站不住腳的說法聽起來很有說服力

四項檢查,用在真的重要的答案上,不用每句話都查。

有沒有給出具體的數字、步驟或名稱?

「估算容量並列出假設條件」是可以檢驗的。「選一台合適的變頻機」不是。

有沒有回應你給的條件?

你給了預算,它卻推薦超出預算的東西;你提到小孩在睡午覺,它卻完全沒提噪音。把你給的每個條件對照回覆裡的每一句話。

有沒有明顯的偏頗?

模型會反映出訓練資料的缺口,所以品牌、投資或營養方面的答案,可能帶著狹隘的地區觀點。要求它給出反面的說法。

有沒有跟另一個模型比對過?

第二個模型的意見不一致,能揭露問題;但兩個模型意見一致,不代表就是對的。牽涉到採購、健康、財務或安全的事,一律去查第一手資料。

自信滿滿地講錯的時候

現在任何一個模型都可能一臉自信地講出假的東西,透過 OpenRouter 接的那些也不例外。這叫幻覺(hallucination)。

講白一點

想像有人非常自信地跟你指路,指向一條根本不存在的街。他們不是在說謊。他們自己不知道講錯了,講話的語氣也完全看不出破綻。對的時候跟錯的時候,聽起來一模一樣。

這裡有一個真實的例子。模型可能會給你 light.slow_dim 當成 Home Assistant 的一個動作。根本沒有這個動作——漸變要用的是 light.turn_on ,搭配官方文件記載的 transition 選項。這裡印出來是當成失敗案例,不是要你照抄。同樣的毛病也會捏造產品型號、把一個品牌的功能安到另一個品牌頭上,或給出模型訓練當下才算新、現在已經過時的資訊。

  • 查證會改變你行動的那些事實。 型號、指令、價格、法規——花三十秒去對照目前的第一手資料。
  • 問另一個模型。 它能揭露不確定的地方,但不算獨立的證據。
  • 聽起來越篤定,越要保持懷疑。 聽起來違反直覺,但幻覺出來的說法,往往比真話聽起來更篤定。要求它給出來源跟假設,再去查證。
要套用任何生成出來的自動化之前: 如果你看得懂,就自己手動驗證跟測試。如果看不懂,就要求它逐行解釋——絕對不要套用你沒能力檢查的程式碼。特別仔細讀 actions: 區塊跟它指定的 entity_id
絕對的底線。 牽涉健康、法律、財務、電力、瓦斯、門鎖或警報的決定,AI 只能拿來做初步討論——絕對不能當成最終決定。找有資格的專業人士,並且保留不靠 AI、行為可預測的安全控制機制。
當它開始動手

叫它動手改東西,對話的樣子就會變

上面講的都是建議。叫 Pi Agent 動手碰一個檔案,你拿到的就不是文字段落,而是工具卡片——一個動作一張卡,各自有自己的耗時跟費用。

一則進行到一半的 Pi Agent 對話。請求要它在專案資料夾裡建一個叫 notes.md 的檔案,寫三點關於它能做什麼,再讀回來。下面是兩張綠色工具卡,write notes.md 花了 5 秒、read notes.md 花了 2 秒,各自有自己的 token 與費用列,底下寫著 Waiting for model。頂部工具列顯示累計 $0.02;左邊 EXPLORER 面板還顯示 No files found;訊息框則變成一個「立即引導/排隊追問」欄位,帶著 Steer、Follow-up 跟紅色的 Stop 按鈕。
工作進行中兩個工具、兩張卡片、兩筆分開的費用——訊息框也變成了一組控制項。
  • write notes.md 標明了工具跟檔案: 5 秒,1,180 in · 70 out · $0.0080。
  • read notes.md 是第二次來回: 2 秒,1,265 in · 18 out · $0.0069。你下了一個指令,計費的請求卻有兩次。
  • $0.02 在頂部工具列,是這個 session 的累計金額,不是這一則訊息的。
  • Steer、Follow-up 跟紅色的 Stop 在工作進行中會取代訊息框:改變當下的執行方向、排到之後再處理,或直接結束它。
  • Waiting for model… 在第二張卡片下面。工具都跑完了;解釋這些工具做了什麼的回覆還沒送到。

當一個回應不安全、不相關,或建立在你看得出來是錯的前提上時,就用 Stop。但不要用碼表決定要不要停:固定的等待時間分不出「模型比較慢」跟「請求失敗」,而且會推理的模型本來就比較慢。先去查附加元件的 log,看有沒有 402 Payment Required, 429 Rate Limit ,或額度用盡的訊息。

session 是什麼

不是聊天紀錄——是一份專案檔案

同一則 Pi Agent 對話,執行結束後的樣子。一行收合的文字寫著 Process details、2 messages、2 tool calls。底下模型回報已經建好帶三個項目點的 notes.md,一個小小的 notes.md 檔案標籤,還有一行費用 187 in、57 out、1,152 cache R、$0.0032。左邊 EXPLORER 面板裡,notes.md 這個檔案已經出現。
同一次執行,跑完了整個過程收進一行摘要,左邊出現一個真實存在的檔案。
  • Process details · 2 messages · 2 tool calls 一行就是整次執行。展開它能看到跑了什麼。
  • EXPLORER 裡的 notes.md,前一張截圖裡這裡還顯示著 No files found。這是你主機上真實存在的一個檔案。
  • 1,152 cache R ——部分輸入是從快取拿的,不是全額計費,所以這一步比較便宜。

這一切現在都是 session 的一部分,「session」這個詞到這裡就不只是「聊天」的意思了。一個 session 裝的是這場對話裡的每一個事件——訊息、回應、思考資料、工具卡跟 diff——外加模型資訊、載入了哪些 Skill、工作目錄,以及 system 指令。

講白一點

它比較接近一份專案檔案,而不是聊天紀錄。它裝著整段對話、你用的模型、它指向的資料夾,跟給它的規則。關掉它,下週再打開,會從存檔的狀態接續下去——像文件重新打開那樣,不是像一個人記得你那樣。

這很重要,因為模型本身什麼都不記得。每一輪,Pi Agent 都會重新組出這次請求:

flowchart TD
  A["你打了一則訊息"] --> B["Pi Agent 組出一次請求:
你的訊息,加上這個 session
相關的既有歷史紀錄"] B --> C["模型只讀
這次請求裡有的內容"] C --> D["回覆跟它的事件
被附加進 session 檔案"] D -->|"同一個 session,下一輪"| A D -.->|"換成一個新 session"| E["一次請求,裡面
沒有這段歷史紀錄"]
為什麼開新的 session 會忘記沒有什麼是「被想起來」的。存起來的歷史紀錄,會在模型的 context 限制內,每次請求都重新送一次。

所以歷史越長,輸入用量越多、延遲也越大,不管模型多強都跳不過這件事。比較早的細節可能會被擠出有效的 context 範圍——大家說「模型忘了」,指的就是這個。發生的時候,要求它給一份摘要,檢查過,再拿這份摘要開一個新的 session。

上面截圖裡的左欄,就是那份清單。每個 session 一列:標題、多久之前動過,還有訊息數—— 2 msgs 旁邊是 8 msgs。盯著這個數字看。這是你最接近的一個估算:在這個 session 裡下一個問題大概要花多少錢——因為存起來的歷史紀錄就是每次都要重送的東西。

Session 就是你主機上的檔案:

/data/pi-agent/sessions/<工作目錄的編碼>/<時間戳>_<uuid>.jsonl

一個 session 一個檔案,一個事件一行——這就是 .jsonl 的意思。 /data/pi-agent/ 是附加元件自己的資料,跟 /config/ 存放你 Home Assistant 設定的地方是分開的。這份資料會不會被納入備份,要看附加元件的備份行為,所以要真的做一次測試備份、驗證還原有沒有成功,不要用猜的。第 14 篇會講這個。

檔案在本機,請求要出去。 session 存在你自己的硬體上,但你每問一次,提示跟相關歷史都會送到雲端的供應商那邊。刪掉 session 只是刪掉 Pi Agent 自己那份——供應商那邊留不留,要看它自己當下的政策。
讓清單保持好用

新主題,開新 session

用了一週之後,一個燈光故障跟一個日落自動化擠在同一個 session 裡,那個又臭又長的 session 開始變慢。這條規則就是用來防止這種事的。

情境這樣做為什麼
還在同一個主題在同一個 session 裡繼續問之前的內容還用得上
要轉去不相關的工作開一個新 session新主題用不到舊的內容,卻要為它付錢
從同一個起點比較不同模型如果你的版本有 Fork 或 Duplicate,就用它,各自再選一條路線兩邊都從一模一樣的歷史紀錄開始
已經很長了,或者早前的細節已經丟失做一份摘要、檢查過,拿它開新 session簡短的摘要能留出空間給新工作
實驗結束了重要就先匯出,再刪掉雜物堆積會讓真正在進行的工作變得難找
講白一點

fork 就像把筆記本影印到你現在寫到的這一頁。你在影本上繼續寫;原本那份維持原樣。要嘗試一件不確定成不成的事之前,值得先這樣做。

給每個 session 一個你之後搜尋得到的標題——「客廳燈 3——無法使用」比「檢查燈」好用——而且要在工作結束時才改名,因為原因常常不是你一開始猜的那樣。

控制項因版本而異。 New session、Rename、Duplicate、Fork、Delete、Export、Tag、Label 不是每個 pi-web 版本都有。以你自己版本上實際看到的為準。

Export 會給你一個能存在 pi-web 之外的檔案。 .jsonl 是存檔用的版本:結構化的事件紀錄,可能包含訊息、角色、思考過程、工具呼叫跟路徑。 .md在支援的版本裡,是一份看得懂的逐字稿。這兩種格式都可能包含提示詞、檔案內容、路徑跟機密資料——分享之前先讀過、把敏感的部分遮掉。

把 Delete 當成不可逆的動作看待。 Pi Agent 可能沒有垃圾桶或復原功能。要刪掉任何之後可能還會用到的東西之前,先匯出這個 session,確認存檔真的打得開。
訊息送出去了,什麼反應都沒有
照順序查:Composer 下面的模型選單可能還沒設——打開它,選你設定好的模型。接著打開 Models,確認那個供應商有金鑰、模型 ID 也精確對得上目前的目錄。再來檢查瀏覽器的 Console 跟 Network 面板: 401 Unauthorized 代表金鑰失效或過期;網路錯誤代表連不到供應商。發求助訊息時不要把機密資料貼進去。
一場對話該多長?
私人問題的話,10 到 30 輪算是正常的深入討論;技術性的工作可能會到 50 到 100 輪。沒有一個可靠的輪數上限——用量取決於累積的 token 跟模型本身。超過大約 150 輪,或明顯變慢的時候,就用一份確認過的摘要開新 session。
接下來

接下來往哪走

繼續

你已經對話過一次了。第 5 篇會拆解它是怎麼運作的。

下一篇會打開這篇收起來的兩樣東西:某些模型在給出答案之前回傳的思考塊,以及檔案變動前顯示的 diff。

打開完整教學手冊

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

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

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

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