酒館正規表示式教程:從入門到實戰的完整指南

酒館正規表示式教程:從入門到實戰的完整指南

酒館正規表示式教程:從入門到實戰的完整指南

Contents

酒館正則是一種自動執行的查詢替換規則,可摺疊思考鏈、清除 OOC 旁註、把狀態標記美化為可視介面。本教程從原理、執行時機、深度控制到測試工具完整講解,零基礎可上手,也適合進階除錯。

簡介

這篇教程教你如何在 SillyTavern(俗稱「酒館」)及相容酒館正則語義的平臺中建立、除錯和使用正則規則,把模型輸出的原始文本按你的需要摺疊、隱藏、替換或美化。適合剛匯入帶正則角色卡的新手,也適合想自行編寫或除錯複雜規則的進階玩家。

前置準備

開始之前,請確認以下環境與工具就緒:

不要求會寫指令碼;普通玩家日常就是從模板起步,改幾個變數就能跑。

分步教程

步驟 1:先分清三檔「執行時機」

這是第一次接觸酒館正則時最該先搞清的一件事。不同介面會把它做成「兩個核取方塊」或「三檔下拉」,本質相同:

執行時機你螢幕看到的模型下一輪看到的聊天檔案存的可撤銷
雙向(雙向顯示+提示詞,兩個核取方塊都開)已替換已替換已替換不可逆
僅顯示(不改提示詞)已替換原始文本原始文本關掉規則即恢復
僅提示詞(不改顯示)原始文本已替換原始文本關掉規則即恢復

注意點:美化類正則(把 <status> 替換成帶花邊的狀態列)走的是「僅顯示」,不會汙染聊天記錄,也不額外消耗 token;刪除思考鏈或清理 OOC 通常走「雙向」,改動是永久的、沒有撤銷鍵。所以第一次編輯規則時,先在管理頁確認它落在哪一檔。

不同介面表述略有差異:Foreverse 教程用「雙向 / 僅顯示 / 僅提示詞」三檔,小酒窩教程用「短暫 + 僅格式顯示 + 僅格式提示詞」的組合表達。兩者不是衝突,把「兩個核取方塊同時開」對應到「雙向」即可。看實際落盤的欄位名比死記標籤更可靠。

步驟 2:新建第一條正則

以「隱藏狀態列」為例,這是小酒窩教程和 TavernWeave 教程都示範過的入門場景。假設模型穩定輸出:

<status>
地點:學生會辦公室
時間:14:30
</status>
  1. 開啟全域性正則管理頁(SillyTavern 路徑:設定 → 角色卡與酒館 → 酒館全域性設定 → 「預設 / 正則 / 宏」→ 管理全域性正則)。
  2. 點「新建正則」。
  3. 查詢正規表示式填:/<status>[\s\S]*?<\/status>/gm(匹配 <status>...</status> 整段,非貪婪)。
  4. 替換為留空——留空即刪除命中內容。
  5. 勾選「僅顯示」檔,回到聊天即可看到狀態列只在 UI 層被隱藏,記錄原樣保留。

關鍵注意點:[\s\S] 是為了跨行匹配;*? 而非 * 是為了非貪婪,避免把連續多個狀態塊當成一個大塊。

步驟 3:理解「作用範圍」與「深度」

酒館正則的第二層控制是「誰的訊息被處理」和「第幾樓開始處理」:

注意點:深度數值是「從當前最新一層往回倒數」,聊天樓層不同,門檻樓層會隨之移動。GrayWill-ST 倉庫在 v0.40 更新裡明確提到過舊正則的「生效層數」有過 bug,並升級到新版本酒館配套正則修復,說明深度邏輯有一定版本敏感性,排障時要先核對版本。

步驟 4:用宏和轉義模式處理動態變數

如果你要寫通用規則(而非只作用於一張卡),文字裡會不可避免地出現 {{user}}、{{char}}:

這些能力來自 AIO Hub 的文本處理文件,語義與主流酒館前端一致。

步驟 5:藉助模板與測試沙箱

不想從零寫正則時,編輯器通常內建以下工具:

關鍵注意點:指令碼處理會引入額外執行能力,匯入帶指令碼的預設時,宿主通常會自動執行「風險掃描」。看到警告不要直接忽略,檢查它實際訪問了哪些變數。

步驟 6:掌握優先順序與預設管理

步驟 7:區分正則與指令碼的適用場景

很多「正則寫不出效果」的問題,根源其實是工具選錯。對照下表判斷:

你想完成的事推薦工具原因
匹配、隱藏、提取、清理、簡單替換正則純文本處理,正則最短路徑
判別、變數、持久化、非同步請求、監聽酒館助手指令碼需要程式邏輯與生命週期
文本變互動(如 <choice> 變可點選按鈕)正則 + 指令碼正則先出結構,指令碼再繫結事件
從已有變數渲染面板指令碼資料已在變數裡,不必再讓模型重抄

TavernWeave 教程給出的口訣是:「找出來、藏起來、換個樣子 → 正則;點了以後做事、資料變化後重新整理、失敗後反饋 → 指令碼;模型輸出要變成可互動介面 → 正則 + 指令碼」。這條口訣只是入門判斷,結構化 JSON 也可以直接交給指令碼解析,不必為了省幾行程式碼強行塞給正則。

另一個重要原則:顯示層和真實資料要分層。例如變數卡要求模型輸出 <UpdateVariable>...</UpdateVariable> 供變數系統解析,你可以用「僅顯示」正則把它對玩家隱藏——但不能使用「雙向」在寫盤前刪掉,否則頁面乾淨了,變數卻不再更新。這一點在小酒窩教程和 TavernWeave 教程中都被反覆強調。

常見問題排查

先按「現象」反查「常見原因」,再決定改哪一層:

現象常見原因
頁面看得到,但按鈕點不動正則只生成了 HTML,沒有指令碼繫結點選事件
按鈕第一次有效,重新整理後失效只在首次載入時繫結,未重新處理渲染
點選一次執行多次監聽器重複註冊,或缺少執行鎖
狀態列一直顯示舊資料只初始化讀取一次,未監聽變數變化
正則把正文也隱藏了匹配範圍過大或邊界不明確
變數更新突然失效正則破壞了更新塊,或執行順序不對
UI 變了,重新整理後恢復只改了 DOM,沒寫回真實狀態
變數已變化,UI 沒變寫入成功,但沒有重新讀取與渲染

另一類高頻卡點是**「明明改好了,模型下一輪卻按舊文本繼續」**——這多半是因為規則處於「僅顯示」檔,螢幕看著改了,模型根本沒收到。檢查該條規則卡片上的「執行時機」標籤即可。

還有一條經驗:如果一條正則越寫越長、不斷增加分支,先回頭統一輸入格式(讓模型用固定標籤包裹),而不是繼續在正則裡堆條件。

FAQ

Q:酒館正則和 SillyTavern 正則是同一個東西嗎? A:語義基本一致。SillyTavern 是官方桌面宿主,AIO Hub、各移動端酒館也沿用同一套「作用位置 + 執行時機 + $1/{{match}} 引用 + 深度範圍」的約定。檔案層面,AIO Hub 自帶原生 JSON 與 SillyTavern 預設兩種匯入匯出,可以直接互換。

Q:匯入帶正則的角色卡,會不會亂改我的聊天記錄? A:美化類規則通常走「僅顯示」,只替換渲染層,聊天檔案裡存的仍是模型原話,HTML 模板也不佔 token。會永久改動記錄的是「雙向」檔——替換髮生在寫盤之前,沒有撤銷鍵。在全域性正則頁掃一眼每條規則的時機標籤,就能知道誰會動記錄。

Q:正則寫壞了會把聊天弄崩嗎? A:不至於崩。最壞情況是顯示被替換成空,渲染側通常有兜底會回退顯示原文,不會白屏,也不會吞協議正文。修復路徑是回管理頁把嫌疑規則關掉——「僅顯示」檔的錯誤不碰記錄,關掉即恢復。真正要小心的是「雙向」檔。

Q:深度設成 4 是什麼意思?為什麼 96 樓的狀態列沒了、100 樓的還在? A:這是小酒窩教程示範過的典型場景。當「最小深度 = 4」時,規則只在第 4 樓及更早生效(即倒數第 5 層往前),最近 4 層被保留。如果你的聊天當前最後一層是 100 樓,那麼 96 樓被清、97–100 樓保留——這就是「不傳送 4 樓外狀態列」的實際表現。

Q:$1、$2 和 {{match}} 有什麼區別? A:$1、$2 是正則捕獲組的反向引用(對應模式中第幾個括號分組),{{match}} 引用整個命中片段。二者常與宏 {{user}}、{{char}} 組合使用。

Q:正則和酒館助手指令碼到底該用哪個? A:看你要完成的事。只做文本匹配、隱藏、替換、清理 → 正則;需要判別、變數、持久化、非同步請求、UI 事件 → 指令碼;「文本變可互動介面」需要兩者配合。參見上文對比表。

Q:從別人那裡拿到的正則 JSON,怎麼確認它安全? A:先看內容——匯入前用純文本開啟 JSON,確認沒有 script 欄位或可疑的 JS 片段;宿主在匯入帶指令碼能力的規則時通常會做風險掃描,看到警告不要跳過。寧可先只開「僅顯示」檔試跑,確認無誤再切換到「雙向」。

Q:能一鍵匯出「讀者視角」看到的效果嗎? A:可以。⋮ 選單的高階區通常有「匯出可讀文本(正則後)」,匯出的就是替換後的顯示態,比截圖分享更方便。部分教程提到的網頁版酒館正則測試器也能離線做替換前後對照。

Q:為什麼我看別人分享的正則規則編號和預設對不上? A:不同的預設包會自帶自己的優先順序編號體系(預設 100 起步),模組化預設(如 GrayWill-ST)還要求「隱藏攻擊正則 + 酒館助手指令碼」配套安裝才能正常跑 meta 功能。逐條按名稱或查詢串搜尋,比按編號硬對更可靠。

CTA

想要一份能直接跑起來、涵蓋思考鏈摺疊 / OOC 清理 / 狀態列美化的正則預設作為對照參考,可以先到 tuniang.ai 看看;上面的模板都可以單獨關掉、逐條拆解,不影響你已經調好的規則。

Sources