第 15 章

從 GitHub 裝別人做好的 Skill

上一章講完 Skill 是什麼,這一章直接動手。教你打開 Skills 面板、用內建搜尋在 skills.sh 目錄找一個現成 skill、按 Install、看它出現在系統提示裡。做完你的 AI 就多了那項新本事,全程不用寫程式、也不用 SSH 進 HA 主機。panel 是「搜尋為主、貼網址為輔」的商店介面,不是單純的 URL 輸入框——這是新手最容易誤解的地方,看到搜尋框以為壞了就不知道下一步該做什麼。

為什麼第一件事是「裝別人做好的」

第 14 章把 Skill 講成「教 AI 一項專門手藝」,也提到「網路上很多人已經幫你把手藝寫好,塞進 GitHub 上等你去撿」。那一章講的是概念,這一章告訴你怎麼撿。

從別人的 skill 裝起有三個好處:

  • 不用會寫程式——skill 就是一個資料夾+一份 SKILL.md 說明書,寫的人已經打包好,你只需要「貼網址、按裝」兩步。
  • 先體驗才知道值不值——與其花一小時看範例學怎麼寫,不如花三分鐘裝一個現成的,用它一個下午確認 Skill 這套機制是不是你要的,再決定要不要投入時間自己寫(第 16 章會教)。
  • 看好作品當教材——你裝進來的 skill,其實就是一份「別人怎麼寫 SKILL.md」的活範例。之後要自己寫的時候,去 /data/pi-agent/skills/ 底下打開 SKILL.md 抄結構抄語氣,比看空白模板快十倍。

還有一個容易被忽略的動機:Skill 是 Pi Agent 生態系的核心,而不是可有可無的花邊。同一顆 AI 大腦(例如 GLM-4.6),有沒有裝對 skill,做同一件事的結果會差很多。裝了 home-assistant-best-practices 之後,AI 幫你寫自動化會直接跟你講「這裡用 helper 比 template sensor 好」;沒裝的話,AI 會用它自己(可能過時的)習慣硬寫。這不是誰比較聰明的問題,是「有沒有把家裡的規則告訴它」的問題。

觀念:裝 skill 之於 AI,等於裝 HACS integration 之於 HA。原廠有東西可以用,但生態系裡總有更貼近你需求的社群作品——會挑會裝的人,可以直接跳過原廠的粗糙預設,用到大家幫你磨過的成品。

Skill package spec 的四種寫法

Pi Agent 底層是 @earendil-works/pi-coding-agentpi CLI),Skills 面板的「Add skill」按鈕其實就是 pi install <package-spec> 的圖形化版本。package spec 有明確格式,不是任你亂貼。以下四種是官方 packages.md 列的合法來源:

來源類型寫法範例底層動作裝到哪
npm 套件 npm:@scope/[email protected]
npm:my-pi-skill
npm install ~/.pi/agent/npm/
Git(git: 前綴) git:github.com/user/repo@v1
git:[email protected]:user/repo
git clone(吃 shorthand) ~/.pi/agent/git/<host>/<path>
Git(協定完整 URL) https://github.com/user/repo
ssh://[email protected]/user/repo
git clone 同上
本地路徑 /absolute/path
./relative/path
寫到 settings、原地讀取 原路徑不搬
注意:常有人以為可以貼 owner/repo 這種裸縮寫(像 gh repo clone 那樣)——Pi Agent 不吃。要用 GitHub shorthand 一定要加 git: 前綴變成 git:github.com/owner/repo;不然只有 https://http://ssh://git:// 這幾個協定 URL 才被接受。

四種背後其實共用同一個機制:把資源展開後,讓 pi~/.pi/agent/skills/~/.pi/agent/npm/~/.pi/agent/git/ 三個位置的 skill 目錄(有 SKILL.md 的資料夾),註冊成 session 開場時可用的 skill 集合。Woow 的 add-on 額外做了一件事:把 $HOME/.pi/agent/skills 用 symlink 指到 /data/pi-agent/skills,讓 UI 與 CLI 在 HA volume 上共用同一份狀態(這叫「skills 路徑橋」,寫在 docs/ARCHITECTURE.md)。

提示:沒有 ~/.pi/agent/skills/ 這個目錄本身「不裝 npm/git 包」——它是留給你手動丟 SKILL.md 的地方(第 16 章會教)。npm 與 git 裝來的 skill 分別去 npm/git/ 目錄,別去 skills/ 底下找。
Skills 面板:搜尋、Add skill 與已裝清單
圖 15-1Skills 面板:上方有搜尋框(打關鍵字如 reacttestingskills.sh 目錄)、右側「Add skill」按鈕開對話框讓你貼 npm:git: package spec;下方列出已裝的 skill,每列可切 enable/disable、Check updates、Remove。

Pi Agent 是怎麼下載這些 skill 的

知道背後在跑什麼,會讓你比較安心,也在出事的時候比較好排查。Pi Agent 拉遠端 skill 的方式很傳統:npm: 就是 npm install、對 git: 就是 git clone

Woow 的 add-on 基底映像從第一版就把 gitopenssh-clientcurljqca-certificates 這幾個裝在 Containerfile 的第一段 apt-get install(不是後來版本才加上去的功能——註解直接寫明「are needed by the provider check, the models.json merge and the skills CLI, which shells out to git and ssh」)。所以你按「Install」的當下,容器裡跑的實際指令視 spec 而定:

# 你貼 npm:@foo/bar
pi install npm:@foo/bar
# 底層:npm install,落在 ~/.pi/agent/npm/@foo/bar/

# 你貼 git:github.com/user/repo@v1
pi install git:github.com/user/repo@v1
# 底層:git clone --branch v1,落在 ~/.pi/agent/git/github.com/user/repo/

# 你貼 https://github.com/user/repo
pi install https://github.com/user/repo
# 底層:git clone,落在 ~/.pi/agent/git/github.com/user/repo/

在 Woow 的 add-on 裡,$HOME/.pi/agent/skills 是一個指到 /data/pi-agent/skills 的 symlink(skills 路徑橋,見 ARCHITECTURE.md 第 148 行說明「Pinning HOME into the volume is what makes the CLI and the web UI agree on state」)。UI 與 CLI 因此對「哪些 skill 已裝」看到的是同一份狀態,不會出現「命令列裝了但 UI 找不到」這種鬼故事。你在 UI 上做的其實是 pi install 的圖形化版本,這點知道之後很多疑問就自然消解了:

  • 為什麼有 npm:git: 兩種前綴?因為底層是兩套完全不同的套件管理系統,pi 用前綴決定要叫誰。
  • 為什麼私人 repo 有可能通?因為 openssh-client 有裝、~/.ssh/config 被讀,SSH URL 走你的 key(見下節)。反而是 HTTPS 私人 repo 卡在沒有 UI 填 PAT——這是 UI 限制,不是後端不支援。
  • 為什麼裝了不會自動更新?Git ref 被 pin 死(pinned tags/commits)。pi update --extensions 或 UI 上的「Check updates」才會去看有沒有新版;設定成 @v1 之類的 ref 更是刻意不動。
  • 為什麼安裝失敗會留下爛掉的資料夾?0.83.0 已經修掉這個 bug(CHANGELOG「Fixed failed Git package installs leaving partial directories that blocked clean retries」)。舊版遇到就手動 rm -rf 那個路徑重試。
觀念:整個 /data/pi-agent/ volume 都會被 HA snapshot 涵蓋(第 20 章),這代表你的 skill 收藏(包含 skills/npm/git/、以及決定「哪些有 enable」的 ~/.pi/agent/settings.json)主機還原後都會回來,不用重裝一次。

動手裝一個真實 skill

我們用一個常見的公開 repo 當示範:mattpocock/skills(Matt Pocock 是 TypeScript 圈的知名教學者,這個 repo 是他公開的 skill 集合)。它跟家庭情境沒直接關,但它是個「絕對裝得起來」的 baseline,用來讓你熟悉流程剛剛好。

  1. 打開 Pi Agent 工作區

    從 Home Assistant 側邊欄點「Pi Agent」進到主介面(第 3 章教過的路徑)。你會看到左邊是 Session 列表、中間是對話區、右上有一排小圖示——那排小圖示就是面板切換列

  2. 切到 Skills 面板

    頂端工具列有 Extensions/Skills/Prompts/Themes/Plugins 這幾個資源分頁,找到「Skills」點下去(tooltip 顯示 Skills,i18n key 是 i18n.skills)。畫面切到 Skills 管理面板:上方是一個搜尋框,placeholder 寫著「e.g. react, testing, deploy」(i18n key i18n.skillSearchPlaceholder);右上角一個「Add skill」按鈕;下方是已裝清單(第一次進去空的,會顯示「No skills found」,並附一個連 skills.sh 的提示「to discover and install skills for your agent」)。

  3. 兩條路:先試搜尋,找不到再手動 Add skill

    路 A(推薦):直接在搜尋框打 mattpocock 或關鍵字,pi-web 會打 /api/skills/search 去查 skills.sh 目錄,找到就顯示卡片、右邊一顆「Install」按鈕,按下就裝。路 B:按「Add skill」按鈕開對話框,裡面一個輸入框,placeholder 是 npm:@scope/package——這時候你可以貼任何合法的 package spec(見上一節四種格式)。

  4. 貼上合法的 package spec

    如果走路 B,貼這行任一皆可:

    git:github.com/mattpocock/skills
    # 或協定完整 URL
    https://github.com/mattpocock/skills
    # 或指定 tag / commit
    git:github.com/mattpocock/skills@main

    不要貼裸 mattpocock/skills——pi 不吃這種縮寫。要用 GitHub shorthand 一定要加 git: 前綴。同時對話框旁邊會有 scope 切換(global 對應 ~/.pi/agent/settings.json、project 對應 .pi/settings.json)——沒特別想法就選 global。

  5. 按 Install 開始下載

    按「Install」按鈕(i18n key i18n.install;下載中顯示「Installing…」)。這時候實際跑的是 pi install,後端 POST 到 /api/skills/installbody: {cwd, package, scope})。時間 5-30 秒視 repo 大小與網路而定。不要按取消也不要重整頁面,讓它跑完;成功會跳一個 toast「Package installed.」(i18n key i18n.packageInstalled)。

  6. 看到 skill 出現在列表就成了

    安裝完面板下方多一個項目,每列右邊有 enable/disable 開關、「Check updates」與移除。裝在哪個實體路徑:npm 包在 ~/.pi/agent/npm/…、git 包在 ~/.pi/agent/git/<host>/<path>/…——UI 的「Installed path」欄位(i18n key i18n.installedPath)會直接告訴你。

  7. 用 Reload session 或開新 session 驗證 skill 有進到 system prompt

    Skills 面板右上通常有「Reload session」按鈕(i18n key i18n.reloadSession),按了會重跑 skill 掃描並提示「Session reloaded.」。或者按左上「New session」開新對話——system prompt 是 session 開場決定的、不會中途重讀。然後點右上「System prompt」面板(唯讀)往下捲,你應該能看到 <available_skills>…mattpocock-skills…</available_skills> 區塊(pi 遵循 Agent Skills 規格)。看到自己剛裝的名字,就代表 pi 認得它、AI 在這個 session 「知道」它可以用。

提示:如果 System prompt 面板裡沒有你剛裝的 skill 名字,先試「Reload session」而不是 F5——enableSkillCommands 開了的話 skill 還會註冊為 /skill:name 斜線命令,在對話輸入框打 /skill: 就會列出所有可用 skill 供你選(見 skills.md「Skill Commands」節)。

git: 縮寫與 ref pin(不是裸 owner/repo)

Pi 的 git: 前綴解鎖兩種能力:host/user/repo 縮寫SSH shorthand。以下同一個 mattpocock/skills repo 的六種等價寫法都會 clone 到 ~/.pi/agent/git/github.com/mattpocock/skills/

你貼什麼結果
git:github.com/mattpocock/skillsHTTPS clone,抓預設分支
git:github.com/mattpocock/skills@v1HTTPS clone,pin 到 v1 tag
git:[email protected]:mattpocock/skillsSSH clone(用 ~/.ssh/config 的 key)
https://github.com/mattpocock/skillsHTTPS clone;不用 git: 前綴
ssh://[email protected]/mattpocock/skillsSSH clone;不用 git: 前綴
mattpocock/skills不吃——沒有前綴的裸縮寫會被拒絕

重要規則(packages.md git 節白紙黑字):

  • 沒有 git: 前綴時,只有協定 URL被接受:https://http://ssh://git://
  • 加了 git: 前綴才能用 host/user/repouser@host:path 這類 shorthand。
  • Ref 一律 pin 死。@v1 就是永遠 v1pi update --extensions 不會把 @v1 移到 v2,只會把 clone 對到你設定的 ref。想升就 pi install git:host/user/repo@new-ref 覆蓋。
  • SSH URL 自動用你 SSH agent 或 ~/.ssh/config 的 key;CI 環境可以設 GIT_TERMINAL_PROMPT=0GIT_SSH_COMMAND="ssh -o BatchMode=yes" 快速失敗。

非 GitHub 平台完全支援——直接把 host 換掉:git:gitlab.com/user/repogit:codeberg.org/user/repogit:git.your-domain.tw/user/repo。這跟「GitHub 才有特權」相反——git: 縮寫不預設 GitHub,任何 host 都吃。

觀念:這個縮寫格式跟 npmuvgit+ 語法族系相近,但不完全一樣。gh repo clone owner/repo 的裸縮寫是 gh CLI 自己實作的假設,pi 明確拒絕這樣做,避免「這個 foo/bar 到底是 npm 還是 GitHub」的歧義。

不同來源的差別與踩雷點

裝 skill 看似只是「貼 spec、按 Install」,但每種來源背後的 auth 與更新機制差很多。這節把各種情境攤開來,讓你選對路。

來源類型 會不會通? 為什麼 解法
公開 GitHub repo(HTTPS,https://…git:github.com/… 會,一貼就通 公開 repo 的 git clone https://… 完全不需要 auth 直接用,這是 90% 的情境
公開 npm 套件(npm:@scope/pkg 會,跑 npm install 作者已把 skill 打包發佈到 npm registry 能用 @version pin 版本;生態系不夠成熟,多數 skill 還是走 git
私人 GitHub repo(HTTPS) 不會通 UI 沒有欄位填 PAT,非互動式的 git clone 遇到需要密碼就死 三選一:(1)fork 成 public;(2)改走下面 SSH;(3)SSH 進 HA host 手動 git config --global credential.helper store 快取密碼
私人 GitHub repo(SSH,git:[email protected]:owner/repo 會通,pi 官方支援 openssh-client 有裝、~/.ssh/config 有被讀(docs/packages.md:「SSH URLs use your configured SSH keys automatically」) HA host 產 key、貼 public key 到 GitHub Settings → SSH Keys、key 放在 /data/pi-agent/home/.ssh/(因為 HOME 被 pin 到 volume),先 ssh -T [email protected] 把 host key 加進 known_hosts
非 GitHub 平台(GitLab/Bitbucket/Codeberg/自架) 會通,用 git:host/user/repo 或完整 https://… Pi 的 git shorthand 不預設 host,任何 host 都吃 直接貼,跟 GitHub 一模一樣的體驗
本地路徑 會,寫到 settings 原地讀 不搬檔——settings.json 記絕對路徑,pi 每次啟動去掃 SSH 進 HA host 用 scp/Samba 丟到 /data/pi-agent/ 底下再貼路徑;第 16 章會教
注意:SSH 私人 repo 支援是官方 feature,但在 HA add-on 裡不算「按裝就通」——你要處理 SSH key 產生、GitHub 綁定、known_hosts 授信、還要記得 key 要放在 /data/pi-agent/home/.ssh/(因為 HOME 被 pin 到 volume,不是 /root/.ssh/;見 docs/ARCHITECTURE.md)。這條路第一次設定 30 分鐘、之後才一勞永逸。除非你已經是走 SSH 管 git 的人,一般家用建議先走「fork 成 public」的路線——五分鐘搞定,之後直接按裝就通。

裝完 skill 該做的三件事

Skills 面板上多了一列不代表「這就結束了」。認真用一個 skill,還有三件事要做:

  1. 開新 session 測試 skill 有反應

    剛剛第 7 步在 System prompt 看到 skill 名字,只代表 pi-web 「認得」它,還沒證明 AI 真的會用。開一個新 session,用測試句直接點名這個 skill:例如「請你用 skill 名字 幫我做 XX」。AI 如果有回應、有動用工具,就代表 skill 通了。如果 AI 說「我沒看到這個 skill」或直接無視,回頭排查(見「troubleshoot」)。

  2. 讀 skill 的 SKILL.md 搞懂它能做什麼

    裝完最容易忽略的事就是不讀說明書SKILL.md 才是主說明書(不是 README.md)——pi 讀的 frontmatter namedescriptionallowed-tools 都在裡面,也會告訴你觸發情境、需要的工具、環境變數。花 5 分鐘讀完比在對話裡瞎試半小時有效。UI 上點該 skill 列會展開細節、或用 Installed path 找到實體路徑打開:/data/pi-agent/home/.pi/agent/git/<host>/<user>/<repo>/SKILL.md(git 包)或 …/npm/…(npm 包)。

  3. 沒幫上忙就移除,別留在那裡佔 tokens

    Skill 只要出現在 <available_skills> 塊裡,就會占用 system prompt 的 tokens——這是每一次對話都要吃的固定成本。用一個星期發現這個 skill 你根本用不到,或者它跟你其他 skill 職能重複,就大方地移除。留著只是花你 API 的錢還讓 system prompt 變雜亂,讓 AI 挑錯 skill 的機率變高。移除方法看下一節。

提示:剛開始玩的時候容易犯的錯是「看到有人推薦的 skill 就全裝」,結果 System prompt 塞了 20 個 skill,AI 每次要挑哪個都想很久。實務建議是先只裝 1-2 個真的會用到的,用熟了再慢慢加,遇到不順再淘汰。

移除 skill 的兩種方式

移除 skill 有兩條路,各有各的場合:

方式 A:從 Skills 面板 UI 刪(走 pi remove)

打開 Skills 面板切到那個 skill 的列,右邊有「Remove」按鈕。按下跳確認對話框、按確定,後端跑 pi remove <spec>:從 settings.json 拿掉登錄、把 ~/.pi/agent/git/…~/.pi/agent/npm/… 底下的資料夾刪乾淨。UI 冒出「Package removed.」toast(i18n.packageRemoved)。這是 99% 情境該用的方式——不會漏刪 settings 也不會刪錯路徑。

方式 B:SSH 進 HA host 跑 pi remove

UI 掛了、或某包壞到 pi-web 讀不到列表、或要一次刪很多個——走 terminal 跑 CLI 而不是自己 rm -rf

# SSH 進 HA host(Advanced SSH & Web Terminal add-on)
podman exec -it pi-web bash          # 進到 pi-web 容器
# 或走 HA add-on 的 Terminal

# 看目前裝了哪些
pi list

# 刪一個 npm 包
pi remove npm:@foo/bar

# 刪一個 git 包
pi remove git:github.com/user/repo
注意:rm -rf 資料夾不會settings.json 的登錄清掉——下次 pi 啟動看到 settings 寫「有這個包」但檔案不在,會嘗試重裝或報錯。永遠優先用 pi remove。真的要手動清就記得同時編輯 ~/.pi/agent/settings.json

刪完 reload session(或開新 session),System prompt 就不會再有那個 skill。舊 session 不受影響——skill 內容在開場就嵌進 system prompt 了,之後刪 skill 跟舊 session 的 context 無關。

常見卡關

  1. 貼了 URL 按確認完全沒反應

    四個常見原因:(1)你貼了裸 owner/repo——pi 不吃這種縮寫,改成 git:github.com/owner/repo。(2)URL 打錯字——最容易是漏掉 https:// 或 owner 拼錯,新分頁貼 URL 檢查一次。(3)repo 是 private 或已刪除——無痕視窗開那個 URL,看得到才是 public。(4)你剛按 Install 但沒等後端跑完——面板下方會有「Installing…」狀態文字,等它變綠色勾勾。

  2. 裝到一半跳 fatal 401 或 Authentication failed

    這就是私人 repo的招牌錯誤——Pi Agent 沒有 auth 設定,遇到需要密碼的 repo 就是死路。解法:把 repo fork 成 public(在 GitHub 網頁上 Fork 那顆按鈕、然後到 fork 的 Settings 把 Visibility 改成 Public),然後改裝你 fork 過來的 public 版本。這是為什麼上面「來源對照表」那格特別強調——因為這是新手最常撞的坑,遇到就當「重複別人的 repo 一次」處理,不要糾結 auth 怎麼設。

  3. Clone 明明完成了但 Skills 面板不出現

    先按面板右上「Reload session」(i18n key i18n.reloadSession)——這比 F5 更精確,因為 skill 掃描是「開 session」才會做,重整頁面不會重掃。還是不出現按 F12 打開 devtools,切到 Console 看有沒有紅字,再看 Network 分頁那個 /api/skills?cwd=… 請求(Woow 的 acceptance suite 有測這個 endpoint,正常應該 200)——如果它回 4xx/5xx 就是後端問題。403 特別要留意:這代表你目前的 cwd 不是「trusted project」也不是預設的 pi-cwd-YYYYMMDD/ 資料夾——見 ARCHITECTURE.md「Allowed cwd roots」節。

  4. Skill 裝完了但 AI 好像完全忽略它

    先確認 skill 有進到 System prompt(右上面板往下捲找 <available_skills>)。有的話問題就在觸發強度——這個 skill 的 SKILL.md 裡的 description 寫得太模糊,AI 判斷不出你在做的事情該不該叫它。臨時解法:對話裡直接點名「請用 skill 名字 幫我」。長遠解法:讀那個 skill 的 README 看有沒有「Trigger phrases」建議、或者第 16 章教你怎麼寫更清楚的 description。

  5. Clone 卡在 50%、進度條不動

    網路問題居多。可能是 HA 主機連 GitHub 慢、或 repo 太大(少數 skill repo 有含大型 asset,數十 MB 起跳)。解法:等 3-5 分鐘看看會不會自己完成。真的太久就取消,SSH 進 HA host 手動跑 CLI:pi install git:github.com/xxx/yyy——terminal 會顯示每一步的狀態,卡在哪裡看得比 UI 進度條清楚(因為 UI 與 CLI 共用 skills 路徑橋,CLI 裝好 UI 就會看到)。不要自己在 ~/.pi/agent/git/git clone——會缺 settings.json 的登錄,UI 認不到。

  6. 裝進來的 skill 名字重複、跟原有的撞名

    Pi 用 SKILL.md 的 name 欄位當 key(不是資料夾名,見 docs/skills.md「Frontmatter」小節:「Pi does not require this to match the parent directory」)。兩個 skill 撞名時,pi 有 dedup 機制,同 scope 只留一份、跨 scope 走「project 蓋 global」。解法:不要手動改資料夾名——那不解決問題。改去 ~/.pi/agent/settings.json 把其中一個包從 packages 陣列拿掉,或直接用 UI 的 disable 開關關掉衝突的那個。

  7. 裝完想更新到最新版

    UI 有更新按鈕:每個 skill 列右邊有「Check updates」(i18n.checkUpdates),按一下 pi 會打 /api/skills/check 比對本地與 upstream 的 versionHash;如果有新版,同一列冒出「Update」按鈕(走 /api/skills/update)。SSH 進 HA host 也可以:pi update --extensions 一次盤點所有 git/npm 包,或 pi update npm:@foo/bar 只更新一個。pin 死 ref(@v1)的包不會被自動移到新 ref,只會重整 checkout;要換 ref 用 pi install git:host/user/repo@new-ref 覆蓋。

  8. Skill 資料夾長超級大、占很多硬碟

    正常 skill 幾百 KB 到幾 MB,如果 du -sh /data/pi-agent/git/github.com/<user>/<repo> 是幾百 MB 甚至 GB,通常是 repo 帶大型 asset(範例影片、pre-trained model)。看 README 用途——用不到直接 remove,用得到但不想占硬碟就把 SKILL.md 和最小資料夾複製到 /data/pi-agent/skills/<name>/(skill hand-authored 位置),然後把原本的 git 包 remove,再用本地路徑(/data/pi-agent/skills/<name>)重新裝一次。詳見第 16 章

常見問題

要怎麼找到好用的 skill?有清單可以逛嗎?
目前沒有「Pi Agent 官方 skill 商店」——Skill 是散在各人 GitHub 上的。找法:(1)skills.sh 是社群整理的精選站,可以逛主題分類。(2)GitHub 上直接搜 topic:claude-skilltopic:pi-agent-skill。(3)在 Reddit 的 r/ClaudeAIr/homeassistant、Twitter/X 找 #skills 話題。優先挑跟 HA、smart home、家庭情境相關的——通用型的 skill(例如 general coding、markdown 格式化)對家用場景幫助有限。
裝了 skill 對話品質會變好嗎?
只有在特定情境會變好,日常閒聊沒差。Skill 的價值是「在對的時機幫 AI 補上該知道的規則或工具」,例如你在寫 HA 自動化的時候有 home-assistant-best-practices 就幫很大;但你在問「今天要下雨嗎」這種天氣查詢,一堆 skill 掛在那反而讓 AI 選擇困難。所以裝 skill 是「解決特定痛點」的工具,不是「開了讓 AI 全面變聰明」的魔法。買菜刀不會讓你自動變會做菜,你要真的用它切東西才有意義。
Skill 會不會自動更新?作者改了我這邊也會跟著改嗎?
預設不會自動更新,但你可以主動觸發。裝的那一刻是把某個 ref 的 snapshot clone 下來,作者之後在 upstream 改什麼你不會被動接收。要看有沒有新版:UI 每個 skill 列有「Check updates」按鈕,或 CLI 跑 pi update --extensionsPin 死的 ref(@v1)連 update 也不會移到新 tag,只會重整到你設定的 ref——想升就明確 pi install git:host/user/repo@new-ref。這個機制是刻意的:避免「作者半夜 push 了 breaking change 你早上起來自動化就爛掉」的情況。
一次可以裝幾個 skill?有沒有上限?
技術上沒有硬性上限——資料夾要多少個都行,硬碟裝得下就好。實務上超過 5-10 個就會開始出問題:System prompt 變超長吃 tokens、AI 挑 skill 挑不定、彼此規則衝突。老手的建議是控制在 3-7 個,且每個都有明確不重疊的職能。與其裝 10 個「不知道什麼時候會用到」的 skill,不如裝 3 個「幾乎每天用」的 skill。
裝了不同 skill 會不會互相衝突或搶著回應?
會,這是裝多之後的典型副作用。舉例:你同時裝了 A skill「教 AI 寫自動化要用 helper」跟 B skill「教 AI 寫自動化直接用 template sensor」,AI 每次收到相關問題會兩邊都想採用,最後不是給你混合物、就是選一邊放棄另一邊。判斷方式:讀你裝的每個 SKILL.md 的 description,看有沒有兩個描述涵蓋一樣的觸發情境。有的話留一個就好。這也是為什麼建議「先只裝 1-2 個用熟再加」。
裝進來的 skill 在哪個實體檔案裡?我想手動偷改一下
看 source:npm 包/data/pi-agent/home/.pi/agent/npm/<pkg>/git 包/data/pi-agent/home/.pi/agent/git/<host>/<user>/<repo>/你手寫的/data/pi-agent/skills/<name>/(透過 skills 路徑橋 symlink 到 $HOME/.pi/agent/skills/,兩個路徑指同一份檔案)。UI 的「Installed path」欄位(i18n.installedPath)會直接告訴你確切路徑。從 HA host 用 Advanced SSH add-on 進去 cd 過去就能改。手動改是允許的——但 pi update 對 git 包會 reset 掉你的改動;長期改就 fork 成自己的 repo 再裝。
把 API 費用花在 skill 上值不值?
Skill 本身不會多收你錢——它只是幾份 markdown 檔案,被塞進 system prompt 而已。多花的錢在「系統提示變長」——每一輪對話的 input tokens 都多算了幾百到幾千個 tokens(看 skill 大小)。以 GLM-4.6 這種便宜模型算,一個 skill 每對話多花不到 0.001 美金。你如果一天對話 100 輪,一個月頂多多 3 美金。省的話:只留真的用到的 skill、避免超長 skill(超過 5000 字的通常寫太細)、日常小事切非 reasoning 模型(第 12 章)。
可以把 skill 的資料夾複製到另一台 Pi Agent 用嗎?
可以,這是離線遷移的正規做法——但別只複製 skills/。從 A 主機把整個 /data/pi-agent/(包含 skills/home/.pi/agent/npm/home/.pi/agent/git/home/.pi/agent/settings.json)tar 打包,B 主機同路徑解開再 reload session 就會認到。settings.json 是關鍵——它記錄了「哪些 npm/git 包已安裝、pin 在哪個 ref、什麼 scope」,沒帶就等於沒裝。備份的話直接用 HA snapshot 更省事,第 20 章會講到 /data/pi-agent/ 整個目錄會被涵蓋。
還是遇到怪問題怎麼辦?
先翻第 22 章卡關手冊,它把常見症狀跟解法做了完整索引,包含 Skill 裝不起來的專節。還是找不到就把「你貼的 URL」「錯誤截圖」「pi-web 版本」貼到 GitHub issue 或 Discord 社群。不要只講「裝不起來」——附上你點了什麼、看到什麼、System prompt 有沒有東西,別人才有可能幫得上忙。這也是為什麼建議前面的 troubleshoot 你都要親自跑過一輪。