Skip to content

Skill 管理

編排器面板的管理 Skills按鈕打開一個子面板,裡頭可以安裝、編輯、遷移、刪除 Skill。本頁逐一過一遍每個入口。

在哪裡找

打開擴充套件抽屜 → 多智慧體編排 節 → 點面板底部附近的管理 Skills。子面板以彈窗形式覆蓋在編排器設定之上。

子面板概覽

Skill 管理頂部有三個 tab:

  • 已安裝 —— 你 data/<user>/skills/<scope>/ 下有什麼。按作用域過濾(全域 / 預設 / 角色卡)或選全部
  • 瀏覽出廠 —— default/skills/global/ 自帶的 24 個 Skill,每行顯示你本地副本是匹配、有差異,還是沒裝。
  • 匯入 —— 從檔案、URL,或角色卡 / 預設裡抽出 Skill 的入口。

Skill 管理子面板,已安裝 tab

Tab 1 —— 已安裝

每行顯示:

  • name —— Skill frontmatter 裡的 name。點擊打開內嵌編輯器。
  • description —— frontmatter 裡的一行摘要。
  • scope —— 作用域 chip(global / preset/<api>/<name> / character/<file>)。
  • size —— 檔案數 + 總位元組數。
  • 被參照 —— 當前編排器 profile 中可見清單參照了該 Skill 的 agent 數量 chip。

行內動作(右側):

動作作用
檢視SKILL.md 的唯讀 Markdown 渲染。
編輯打開內嵌編輯器(見下文 內嵌編輯器)。
遷移到……原子級跨作用域 move。參照(僅按名字)依然有效。
改名在當前作用域內原子改名。目錄與 frontmatter name 同步更新。指向舊名的參照變灰(見 失效參照)。
刪除刪除 Skill 目錄。參照繼續變灰,而不是阻斷派遣。

批次選擇

頂列切到多選模式後,每行多一個核取方塊。勾選至少一項後,工具列會多一個**把所選打包進預設……**動作 —— 見下文 嵌入匯出

Tab 2 —— 瀏覽出廠

「瀏覽出廠」tab 把你本地每個出廠 Skill 的副本和 default/skills/global/ 裡的版本對比。每行顯示三種狀態之一:

標記含義
已安裝(一致)本地副本與出廠版本逐位元組一致。
已安裝(你的版本有差異)本地副本存在,但雜湊與出廠版本不匹配 —— 你(或某次迭代工作台會話)改過它。
未安裝本地沒有副本。點擊安裝把它落到 global

瀏覽出廠,混合狀態

tab 頂部的全量匯入出廠按鈕,是對每個「未安裝」或「有差異」行點安裝的便捷等價 —— 它會用出廠版本覆蓋全部 24 個出廠 Skill。

覆蓋是破壞性的

全量匯入出廠不會合併 —— 它直接覆蓋。如果你本地改過 event-summary-rules-zh,匯入出廠版本會沖掉你的修改。按鈕標籤會在點擊前明確告訴你即將覆蓋多少個同名 Skill。

Tab 3 —— 匯入

四個入口:

從檔案匯入

上傳一個包含單個 Skill 目錄的 .zip。伺服器校驗封存,預覽每個 Skill 的衝突狀態(每 Skill: / 相同 / 不同),然後等你對每個衝突做決定再提交。

從 URL 匯入

貼上一條 https://... URL,指向一份原始 SKILL.md。伺服器拉下來後作為單檔案 Skill 安裝(無子檔案)。多檔案 Skill 用從檔案匯入走 zip 路徑。

只接受 HTTPS、只接受原始 SKILL.md

URL 匯入器有意做窄 —— 它只抓一份 Markdown 檔案。再複雜(多檔案、二進位)的就走 zip 路徑。匯入面保持小而可預測。

匯入出廠

跟「瀏覽出廠」tab 的全量匯入出廠是同一個動作,這裡列出便於發現。

從角色卡 / 預設抽取

匯入帶 embedded_skills_source 欄位的角色卡(PNG)或預設(JSON)時,Luker 會自動彈出預覽對話框:

嵌入匯入預覽

對話框逐項列出每個嵌入的 Skill 及其衝突狀態。對每個衝突,你可選跳過(保留本地版本)或替換(用嵌入裡的版本)。內容相同的項(相同)會靜默不操作;新條目()直接安裝。

抽取後角色卡 / 預設磁碟檔案裡的嵌入負載被移除 —— Skill 現在住在 skills/character/<file>/skills/preset/<api>/<preset>/ 裡。這樣避免「過期嵌入」陷阱:內聯負載與已落地的檔案版本不一致。

內嵌編輯器

點擊 Skill 行的編輯會打開彈窗內編輯器:

內嵌 Skill 編輯器

  • 左欄:檔案樹(SKILL.md + 任何子檔案)。點擊切換。
  • 右欄:Markdown 編輯器,frontmatter 區段有 YAML 感知高亮。
  • 頂列:檔案路徑、未儲存標記、儲存(走 .staging/ 並原子提交)、新增檔案(在你指定的路徑建立一份新子檔案)。

寫入跟安裝走同一套 .staging/ 紀律:新內容先經過校驗(路徑安全、大小限額、frontmatter 解析),全部通過後 staging 檔案原子地替換原檔案。失敗的寫入對原檔案零影響。

SKILL.md 是特殊的 —— 你能編輯它但不能從編輯器裡刪它(它是必需入口)。Skill 本身可透過行內動作整體刪除。

不想手動改?

AI 迭代工作台 也能替你寫和修改 Skill —— 用一句話描述變更,工作台透過相同的安裝路徑起草。要新建一個 Skill、或者把已有 Skill 重寫一遍而不想自己敲 Markdown 時很省事。

嵌入匯出 —— 到預設和角色卡

Skill 在跟它所依賴的產物(角色卡、預設)一起分發時最有用。某張角色卡需要某條口吻規則,某個預設是為特定子代理調出來的 —— 兩者都能把 Skill 內聯打包。

打包進預設

在編排器面板裡,補全預設助手 會派生出一份 -orchestrator 預設。派生緊接著,助手在工具列給出一條為該預設打包 Skills連結,點開後會進入 Skill 管理並自動開啟多選模式。挑你想要的 Skill,點把所選打包進預設……,再選目標預設。

打包器把這些 Skill 寫進預設的 extensions.luker.embedded_skills_source 欄位。下一次儲存預設時,嵌入隨 JSON 一起被持久化。其他 Luker 使用者匯入這份預設時會看到上文描述的嵌入抽取對話框。

打包進角色卡

在角色卡編輯器裡,出廠 Skill 區段也是同樣的邏輯:選 Skill、打包,它們寫進 data.extensions.luker.embedded_skills_source。PNG 匯出時嵌入序列化進卡的元資料,分發這張卡也就分發了 Skill。

內聯 vs zip 的閾值

小且只含文字的 Skill 走 inline-files-v1 格式(Markdown 內容直接內嵌)。更大或帶二進位的 Skill 自動升級到 archive-base64-v1(zip + base64 + sha256)。打包器按每 Skill 自動決定,你不用選。

作用域遷移

透過行內動作遷移到……,你隨時可以把 Skill 從 globalpresetcharacter(或反向)挪。遷移是一次原子檔案系統重新命名 —— 沒有拷貝,沒有中間狀態。

這為什麼安全:編排器 profile 只按名字參照 Skill,永遠不帶作用域前綴。名為 voice-rules 的 Skill 不管當前在哪個作用域,都按後者優先(character > preset > global)解析。遷移不破壞任何參照;它只改變 Skill 何時可見。

典型遷移:

  • globalcharacter —— 你寫了一條寫作規則、用在多張卡上,後來發現某張卡需要一份專門變體。把它遷到那張卡的作用域,讓更通用的版本留在 global。兩者共存;卡片載入時按卡的版本勝出。
  • presetglobal —— 你打包在某個預設裡的 Skill 後來發現到處都有用。把它提升到全域。
  • characterglobal —— 某個角色卡專屬 Skill 最終泛化了。提升它。

失效參照

當你改名或刪除某個被編排器 profile 參照的 Skill,profile 的 skills.visible 清單仍然保留舊名。執行時找不到它,於是 agent 靜默看不到(沒有錯誤、沒有阻斷派遣)。

在編排器設定編輯器裡,失效參照變灰,並帶 tooltip 「該 Skill 未安裝」。兩次點擊就能修:要麼在 profile 裡改名,要麼重新加上這個 Skill。

這種「軟失敗」紀律是有意的。它意味著:缺失的 Skill 永遠不會阻斷 agent 派遣;增加 / 刪除 Skill 不需要同步編輯 profile。

相關

基於 SillyTavern 建構