Skip to content

給一張角色卡做專屬編排

本章圍繞三個動作展開:

  1. 一句話為一張角色卡定制專屬的多智能體編排。 不需要手寫提示詞,也不需要逐個配置子代理,AI 迭代工作台會代為完成。
  2. 跑一次模擬,標註產出裡的 AI 八股,讓工作台據此改進編排提示詞與 Skills。 我們把焦點放在中文 RP 圈裡通稱為「八股」的那一類套話——例如「不是…是」、「嘴角的細微弧度」、「短暫的停頓」。
  3. 讓工作台再為這張卡寫一個自訂工具, 用以校驗角色卡要求的輸出格式是否完整。

範例選取了一張社群中「輸出格式嚴格、變數更新繁瑣」的同人卡。卡本身並不關鍵,方法對所有帶格式硬要求或帶專屬設定的角色卡均成立。


一句話定制專屬編排

匯入角色卡並選中後,從「擴展 → 多智能體編排」打開面板,點擊 打開編排編輯器

編排編輯器打開後

頂部第一欄標明當前角色卡、所用的執行模式,以及當前編輯的是「全域」還是「角色卡覆蓋」配置。本次工作目標是角色卡覆蓋——所有改動只作用於這張卡,不會污染其它卡。

右上角點擊 打開 AI 迭代工作台

工作台剛打開

工作台左側為對話區,右側即時呈現當前編排的流水線(主代理與全部子代理)。我們在輸入框寫下一句話:

請給本角色卡定制一個專屬編排,把全域的預設配置改成更貼合這張卡的版本。

輸入框裡寫好定制請求

點擊 發送。工作台讀取角色卡內容與世界書、列出當前可見的 Skills,隨後開始改寫主代理提示詞、新增對這張卡有意義的子代理、調整可見 Skills 集。每次改動都會彈出一張變更審閱卡片,綠色為新增、紅色為刪除;審閱一眼後點擊 應用到角色卡覆蓋 即落地。

一次變更審閱卡

如果需要細看,可在卡片內展開「逐行差異」;如果不想讀程式碼,卡片頂部一句話即指明改了哪個欄位。

提示

若不願意逐條手動審閱,可在輸入框下方勾選 自動套用變更。下一節「標註八股並改進」在自動套用模式下會更順暢。

數輪迭代後,工作台會用一段話總結改動內容與每條改動貼合這張卡的理由。

工作台跑完,AI 總結

至此,這張角色卡獲得專屬編排,下次給它發送訊息時即採用這套配置。


跑模擬,標註八股,讓工作台改進

定制完成並不意味著萬事大吉——AI 寫出的提示詞仍可能復發它自身的口頭禪。在中文 RP 圈裡,這類套話通稱「八股」。其中最常見的一種是序數與量詞構成的「計數體」

  • 動作切片:將一個連貫動作分成可數的細段,如「一寸一寸往回縫」、「鑽了半寸又停住」;
  • 節奏拍數:把聲音或呼吸量化為拍子,如「三下,停半拍,又三下」;
  • 程度量化:用「一點」、「半分」之類模糊數詞代替真正的感受動詞,如「忽然弱了一點」、「弱了半分」。

孤立出現一次沒有問題,但一段敘述反覆使用同類計數結構後,文本會退化為 AI 分鏡報告——讀者聽見的是計數,而不是「有人在經歷這一刻」。

工作台提供 模擬 功能:不真正向聊天寫入訊息的前提下,讓當前編排走一遍完整流程並展示產出。我們用它來抓八股。

提示

模擬繼承當前聊天的全部上下文:已發生的對話紀錄、當前啟用的世界書與 Skills、當前的預設與連線配置。換句話說,模擬所呈現的是「如果此刻在這張卡上真的發一條訊息,會得到什麼」,而不是脫離上下文的空跑。如果想換個上下文測試,先在主介面切換聊天或調整世界書再回到工作台。

回到工作台輸入框:

請用「我坐起身」作為使用者輸入,跑一次模擬,並展示給我審閱。

工作台調用模擬工具,跑完一輪完整的主代理與所有子代理。Director 模式跑全套需要幾分鐘,請耐心等待。模擬結束後彈出 模擬回顧 視窗:

模擬回顧彈窗:主代理輸出與各子代理追蹤

模擬回顧視窗預設即把各段落展開,向下翻就能看到主代理最終回覆全文。我們瀏覽這段文本,挑出「AI 味兒」較重的短語。

點擊 批註模式——切到開啟後,在產出文字裡用滑鼠選中任意一段,所選區域自動呈黃色高亮,旁側出現批註輸入框。在批註框內簡述不滿意之處即可(一兩個字通常足夠)。

本輪模擬標註了一處量詞計數八股

本輪基線中我們示範性地選了一處:

選中的片段批註
「連閃了五下」(頭頂警報燈的反覆閃爍)「五下」把視覺變化做次數化,「光閃 → 數次數」是把感官事件抽成資料點的典型

標註完成後點擊視窗底部 提交並繼續。工作台將這條批註視作「症狀」回饋給 AI——AI 看到的不是孤立的不滿意短語,而是帶上下文位置的問題清單,可據此反推根因。常見情況下,根因不在某個子代理寫得不夠細,而在於一條共性規律尚未被任何提示詞承接。

工作台根據批註做根因診斷

本次迭代中,工作台把這條批註歸入「量詞計數八股」一類——把活的體感、動作、時間、身體拆解為「數字 + 量詞」的可計數刻度。它沒有立刻動手,而是先與使用者確認:該規則是絕對禁律,還是需要保留例外?在使用者明確「無例外」後,工作台讀取 voice_critic 子代理實際載入的 SKILL(即 voice-critic-method-zh,而不是名字最相近的另一個),將規則補進 voice_critic 在執行時真正會讀到的位置,並將原句作為反例釘入其中,附以「獨立禁律、字面命中即記案、與上下文是否溫暖/詩化/物理寫實/口語自然無關」的明文。如此下一輪模擬時,voice_critic 才會真正掃到此類違例。

重要

工作台不會在主代理提示詞裡加「不要說 X」這一類字面禁令——這種打地鼠式修補治標不治本。它會去尋找觸發八股的根本原因(哪個子代理審稿寫得太粗、哪條 Skill 漏了禁律),從該處入手修復。

隨後再跑一次模擬

改完之後,再跑一次模擬,看看序數 / 量詞計數體有沒有變少。

新彈出的回顧視窗中,先前被標註的幾條八股短語應明顯變少甚至消失。

改進後的模擬回顧

把兩次回顧並排比較,差異肉眼可見——基線那一段反覆出現的「光閃 → 數次數」敘述節奏(「一下,兩下,停一會兒,再三下」、「閃了三下」、「連閃了五下」),到改進版基本退場。改進後這一輪的終稿裡,量詞計數(一下 / 一節 / 一刻 / 一檔 / 幾下 等)總命中僅餘 5 次,且都不再出現在節奏拍點上,而是落到「半度」、「一根管子」這種描述指代用法。如仍有殘餘,重複「標註—模擬」循環即可;兩到三輪通常已經足夠。


讓工作台寫一個自訂校驗工具

這張角色卡對輸出有硬要求:每條回覆結尾必須附帶 <overall> 總覽與 <UpdateVariable> 變數更新兩個標籤。主代理在專注於敘事時容易遺漏這兩個標籤,導致角色卡的狀態機讀不到本輪更新,下一輪的劇情上下文也隨之失準。

針對這類需求,我們無需親自寫程式碼或親自修改主代理提示詞,只需用自然語言把「想要什麼」告訴工作台

這張角色卡的輸出格式有要求,回覆結尾必須有 <overall><UpdateVariable> 兩個標籤——別讓它漏掉。

向工作台描述格式要求

工作台會自行判定如何落實——這是一個能由程式碼精確判定的格式檢查問題(字面比對),適合透過 自訂工具 解決;而被檢查與被提醒補全的執行者本就是寫正文的主代理,所以工具應當掛在主代理上、由主代理在收尾時調用。基於這一判斷,工作台會自動完成一組配套改動:

  1. 在這張卡的專屬編排裡新增一個工具。 工具採用 read 模式(唯讀、無副作用),內部一段 JavaScript 讀取本輪的草稿快照、掃描尾部標籤。
  2. 修改主代理的系統提示詞。 追加一條規則:生成的最後一步必須調用該工具,若結果顯示缺標籤則就地補全後再產出。
  3. 打開主代理對該工具的存取權限。 工具新建後預設即對主代理可見,無需再單獨配置。

判斷哪種機制最合適、由誰調用、需要同步改哪些位置——這些通常需要使用者自己提示的細節,工作台都會基於自然語言需求自行決定,無需我們事先以技術語言指明。

每條改動仍走變更審閱卡,綠色為新增、紅色為刪除。由於自訂工具會在你的瀏覽器中執行 JavaScript,工具首次落地時還會彈出一個安全確認對話框——可在其中展開「檢視程式碼」核對工具體的行為,確認是唯讀掃描、無副作用之後,點擊 匯入並套用工具

新工具的程式碼審閱與安全確認

套用變更後,回到主代理那欄查看 自訂工具 列表,新工具已在其中並預設勾選啟用。

工具已掛上

讓工作台再跑一次模擬,確認主代理確實按規則調用了工具:

再跑一次模擬驗證。

模擬追蹤裡出現 validate_output_skeleton 這一行調用

追蹤中可見 validate_output_skeleton 這一行——主代理在草稿寫到尾部之後調用該工具一次,工具返回檢查結果,主代理據此判斷是否需要補全標籤。


接下來

  • 這一流程同樣適用於「重輸出長度」「重 OOC 規範」「重世界觀禁詞」一類專屬約束——把「什麼是好」用一句話告訴工作台,由它替我們拼裝編排。
  • 想瞭解每個自訂工具在工具體內能取得的上下文(ctx.chatctx.characters 等),見 自訂工具
  • 想為工作台再裝一條全域通用的 Skill,見 用 Skills 調教 RP 輸出
  • 若對工作台改出的某個子代理不滿意,回到編排編輯器手動編輯即可——工作台旨在提效,並非必經之路。

基於 SillyTavern 建構