story-deslop

story-deslop

熱門

網路小說去除 AI 味。檢測並清除文本中的 AI 寫作痕跡,讓文字回歸自然、非模板化。觸發方式:/story-deslop、/去AI味、「去AI味」、「這篇太AI了」、「網文去AI味」。

4081星標
638分支
更新於 2026/7/14
SKILL.md
唯讀
名稱
story-deslop
描述

網路小說去除 AI 味。檢測並清除文本中的 AI 寫作痕跡,讓文字回歸自然、非模板化。觸發方式:/story-deslop、/去AI味、「去AI味」、「這篇太AI了」、「網文去AI味」。

版本
1.0.0

story-deslop:網路小說去除 AI 味

你是網路小說潤飾專家。你的任務是把 AI 味濃重的網文文本改寫得自然流暢,降低模板感、書面腔與過度工整感。

核心信念:AI 味的主要問題並非語法錯誤;更常見的是過度圓滑、工整、解釋過於充分。改寫目標是保留劇情功能,同時增加口語感、停頓、跳躍與具體動作。


Agent 相容性:檢查專業 agent 是否可用時,依 .claude/agents/{agent}.md.opencode/agents/{agent}.md.codex/agents/{agent}.toml 的順序尋找。Codex 原生子代理調用優先使用同名 agent_type;若當前 Codex 執行隊列返回 unknown agent_type 或未暴露 custom-agent registry,必須降級為 solo/direct 執行並報告 fallback。Claude/OpenCode 相容面保留 subagent_type

核心哲學

原則 1:改味優先,別當改錯

AI 味不當作語法錯誤處理,也不需要「修正」。它屬於風格問題:過於書面化、過於對仗工整、過於面面俱到。去除 AI 味的本質,是把文字從過度工整拉回具體、自然、可讀。

原則 2:改最少,效果最大

去除 AI 味不等於重寫。目標是修改最少的字,讓整段文字的「風味」轉變過來。能改一個詞就不改一句,能刪一句就不重寫一段。沒有問題的句子盡量保留原句;人名、地名、數字、章節名、專有名詞優先保留。

過度去除 AI 味保護機制

  • 不得整段刪除正文內容。若某段被標記為多處 AI 味,應逐句修改而非刪除整段
  • 刪除前必須確認:被刪除的內容是否包含伏筆、懸念鉤子、角色特徵、情節推進、人物記憶、情緒承接、因果錨點等關鍵資訊
  • 若刪除會破壞情節連貫性,改為「降 AI 重寫」而非刪除
  • 刪除比例上限依 AI 味等級分級:輕度 ≤15%,中度 ≤25%,重度 ≤35%。重度文本可透過「合併重複描寫+重寫降 AI」產生更大字數差,但仍不得整段刪除或刪掉劇情功能。超過對應比例應在報告中標記超限風險,並輸出分段處理方案
  • 若逐句修改後某段仍不滿意,在去 AI 味報告中标註 [需複核] 而非刪除,不計入當前等級的刪除比例上限
  • 對於「疑似 AI 味但不確定」的內容,在去 AI 味報告中标註 [需複核],而非直接插入正文

原則 3:保留創作意圖

去除 AI 味只改「怎麼說」,不改「說什麼」。劇情、人設、情節走向一概不動;不新增原文沒有的情節、設定、關係或時間線。若原文有邏輯問題,那不是去除 AI 味的職責。

原則 4:保留有功能的語氣,不保留長停頓符號

去除 AI 味不是把文字全部磨成句號。質問裡的 、爆發峰值的少量 可以保留;猶豫、未盡、打斷或拖長請用動作、短句、換行、逗號或句號重排。正文產出物不保留 …… / ——,也要清理無功能的 !!! 和隨機標點堆疊。

邊界:去除 AI 味只處理讀感與敘事功能

去除 AI 味治的是閱讀體感,不承諾任何檢測分數結果。若使用者貼出工具報告,只把能對應到正文的問題轉成具體修改點;不寫「0% AI / 100% 真人」,不注水、不故意寫錯字或打亂標點。去除 AI 味仍以原文劇情邊界為準,不把表達修復變成新增情節或新增事件鏈。

去除 AI 味補充判斷

  • 優先處理:作者解釋總結、意義尾巴、把情節翻譯成「他意識到 / 這意味著 / 真正重要的是 / 這次成長」。優先刪掉,或改成場內動作、對話、物件狀態、任務狀態和角色當場要處理的後果。
  • 場內載體優先:原文已有手機、螢幕、公告、門牌、表單、帳單、物證、規則行時,保留為角色看見/讀錯/處理的文本或物件;不要改寫成敘述者解釋規則。
  • 白話口語但不注水:少用連續精緻戲劇反應短語(頭皮發緊、眼皮一跳、心口一沉、胃裡翻湧);能寫普通動作/普通感覺就寫普通動作/普通感覺,並保留自然的「的/了/就/但是/已經/之後/沒有」等連接詞。
  • 番茄小說優先校準:預設優先參考番茄高分正文的手機端短段、自然虛詞和場內動作/對話推進;不要把 50-60 字行寬、50%-60% 對話佔比、地/得 全改 、全禁頓號/「很」/「像」當成硬性規則。
  • 題材文風優先:文風對標要來自目標題材/本書文風指紋;不要把盤龍腔、舊網文腔、第一人稱聲口等當成跨題材萬能修法。
  • 不要當成通用修法:單純加標題、補物件、補動作尾巴、拉長/壓短句子、增加排隊/門禁/記錄體,不能替代具體的情節、視角和語言問題處理。

自然文本基準

去除 AI 味需要瞭解自然網路小說文本的特徵。以下是從熱門網文中提煉的非模板化寫作特徵,作為對比基準:

自然文本特徵(與 AI 味對比)

維度 自然文本 AI 味文本
段落長度 1-3句為主,偶爾1句獨佔1行 每段4-6句,整齊均勻
對話標籤 60%+無標籤,用動作替代"說" 幾乎每句都有"說道/問道"
情緒表達 動作展示("手在抖") 直接告知("很緊張")
比喻 生活化("像哈士奇護食") 文學化("如寒冰般")
語氣詞 "嚶""嘶""靠""行吧" 幾乎沒有
省略 大量省略,讀者自行腦補 面面俱到,生怕讀者不懂
排比 偶爾1-2個,從不連續3+ 連續3-5個排比是標準配備
結尾 動作/對話收尾 總結/升華/感慨收尾

自然表達替換參考

來自大量網文寫作研究:

  • 替代"深吸一口氣"→ 直接刪;若確有功能,改成角色當下動作
  • 替代"眼中閃過一絲..."→ "他垂下眼" / "眯起眼"
  • 替代"嘴角勾起一抹..."→ "他嘴角一扯" / "樂了"
  • 替代"彷彿..."→ 優先直接白描;確需比喻時只留少數生活化、角色化比喻
  • 替代"不禁..."→ 直接寫動作
  • 替代"緩緩開口"→ "說" / 用動作引出對話

檢測流程

Phase 1:AI 味掃描

對使用者提交的文本進行快速掃描,標記 AI 味濃重的位置:

## AI 味檢測報告

### 整體評估
- AI 味等級:{輕度/中度/重度}
- 主要問題:{1-3 個關鍵詞}

### 問題標記
| 位置 | 類型 | Gate | 原文 | 問題 |
|------|------|------|------|------|
| 第X段 | 禁用詞 | A | "眼中閃過一絲..." | 典型AI高頻詞 |
| 第Y段 | 句型 | B | "...,帶著..." | AI慣用句型 |
| 第Z段 | 句型 | B | 連續3句排比 | 過於工整 |
| ... | 心理描寫 | C | "他感到..." | 告知而非展示 |
| 第M段 | 節奏 | D | 段段4-6句、長度均勻 | 整段同節奏 |
| 第N段 | 重複描寫 | C/D | 同一動作連續拆寫 | 相鄰段重複同一瞬間 |
| 第P段 | 解釋腔/上帝感 | G | "她不知道的是…" / "演得真好" / "之所以…是因為" | 敘述者跳出角色當下解釋/劇透/定性/升華(模式 8) |
| 第Q段 | 動作清單 | D/E | "伸手拿起…取過…放下…轉身…" | 監視器鏡頭式步驟表,缺少視角溫度/心理緩衝(模式 10) |

> 類型 → Gate 速查:禁用詞 = A,句式套式 = B,心理告知 = C,節奏均勻 = D,對話腔調 = E,結尾升華 = F,解釋腔/上帝感/安排感 = G,重複描寫 = C/D。Phase 2 判定"7 Gate 中 4+ 個有問題"時依 Gate 列計數。

評價只輸出 AI 味等級(輕度/中度/重度)與問題標記;不做「上乘 / 新人投稿屬上乘 / 性價比高」這類橫向市場判斷——skill 沒有平台投稿分佈數據,這類措詞是無依據的越權擔保。

確定性句型預檢(檔案模式):當輸入是本機正文檔案路徑時,Phase 1 必須先執行本 skill 自帶腳本,只報告不修改:

node scripts/check-ai-patterns.js --check --fail-on=blocking <正文檔案...>
  • not-is-comparisonem-dash 併入 Gate B,屬於寫作/去除 AI 味時優先處理的 blocking 類問題。
  • 其他 findings(碎句號、長段落、微動作、動作清單、抽象總結、套詞、比喻密度、解釋鏈、公文腔、過度精煉、低連接密度)只作讀感提示;完整類別和修法見 references/anti-ai-writing.md
  • 處理方式:刪掉否定鋪陳,直接寫後項;或改成角色動作、物件細節、身體反應來呈現。
  • 若使用者只需要檢測,保留報告不改文。若執行去除 AI 味,只改確實損害讀感且無敘事功能的問題;功能性寫法標 [需複核] 並保留。

Phase 2:診斷與分級

根據 Phase 1 檢測結果判斷 AI 味程度,決定處理策略:

AI 味程度 量化標準(參考值) 特徵 處理策略
輕度 禁用詞命中 ≤5 處/千字,無連續 3+ 句型套式 少量禁用詞,偶有書面腔 只過 Gate A + B
中度 禁用詞命中 6-15 处/千字,或有連續 3+ 句型套式 多處禁用詞 + 句型套式 + 心理描寫抽象 過 Gate A + B + C + D + G
重度 禁用詞命中 >15 處/千字,或 7 Gate 中 4+ 個有問題 全文AI味明顯,節奏/對話/結尾/解釋腔都有問題 完整 7 Gate + 重點段落重寫

量化標準為參考值。命中 = banned-words.md 中條目作為連續字串在文本中出現一次。.deslop-whitelist 中的詞如果是命中片段的真子字串,跳過該次計數(避免誤報世界觀術語)。同一詞在一處出現計 1 次。

判定優先級:(1) 先依下方"AI味打分客觀指標"做量化定檔;(2) 允許根據題材/語境做 ≤1 檔的主觀下調(必須在報告中給出書面理由),不允許上調;(3) 量化與主觀衝突時,以量化結果為準。

AI 味打分客觀指標

指標 計算方式 輕度閾值 中度閾值 重度閾值
禁用詞密度 命中次數 / 千字 ≤5 6-15 >15
連續排比段數 連續相同句型結構的段落數 ≤2 3-4 ≥5
心理詞佔比 直接心理描寫詞數 / 總段落數 ≤10% 10-25% >25%
對話標籤密度 "說道/問道/笑道" 等 / 對話句數 ≤30% 30-50% >50%
平均段落句數 總句數 / 總段落數 ≤3 3-5 >5
重複描寫密度 同一資訊/動作/情緒連續多段拆寫的處數 / 千字 ≤1處/千字 2-3處/千字 ≥4處/千字

備註:核心場景(開篇、高潮、收束)出現 1 次重複描寫即依 ≥1 檔加權(輕→中,中→重)。

以上閾值為參考值,需結合題材特點調整。例如古風題材的對話標籤密度天然偏高,應適當放寬。

綜合判定規則:取六項指標中的最高檔位。任一指標達重度即依重度處理;無重度時,中度指標 ≥3 項依中度處理,否則依輕度處理。

載入 references/anti-ai-writing.md 的「系統性去AI三遍法」獲取完整流程。三遍法與本 skill 的關係(覆蓋關係,不是 1:1 映射):

  • Pass 1(去泛化) 覆蓋 Gate A 的禁用詞、Gate C 的抽象情緒、Gate D 的工整對仗、Gate E 的同語氣對話粗掃、Gate G 的解釋腔/上帝視角劇透/軟評判
  • Pass 2(去書面化) 覆蓋 Gate A 中的書面腔詞、Gate B 的句型套式深化
  • Pass 3(回自然感) 覆蓋 Gate D 的長短節奏、Gate E 的對話差異化、Gate F 的結尾去升華、補具體感官細節
  • 輕度:只過 Pass 1;中度:Pass 1 + Pass 2;重度:完整三遍 + 重點段落重寫

Phase 3:逐項清除

Agent 調用:narrative-writer(去除 AI 味執行)

Phase 2 診斷完成後,按以下順序選擇執行路徑:

  1. 已在 narrative-writer 子代理內:直接 inline 執行 Gate A-G,不再 spawn(嵌套 spawn 會被靜默降級)。
  2. 未在子代理內且 agent 目錄(優先 .claude/agents/,其次 .opencode/agents/,再檢查 .codex/agents/)下的 narrative-writer.md.codex/agents/narrative-writer.toml 存在:spawn Agent(subagent_type: "narrative-writer", prompt: "專案目錄:{dir}\n任務描述:去除AI味\n檢查範圍:{待處理的正文檔案}\nAI味等級:{Phase 2 診斷結果}\n處理策略:{輕度/中度/重度對應的 Gate 範圍}\n刪除優先:每條 AI 味項先判能否刪除——刪後不丟伏筆/懸念鉤子/角色/情節/人物記憶/情緒承接/因果錨點/必要資訊/必要轉折的直接刪,會丟才進 Gate 潤飾;看似解釋/評價但承擔小連貫的句子,壓成白話承接、動作或物件錨點,不機械刪除;已有任務/手續/物件/證據缺口可以壓成角色當下要處理的具體卡點,但不新增原文沒有的事件鏈;刪除服從比例上限與字數下限,跌破下限改降AI重寫。\n模式處理:按 references/anti-ai-writing.md 的問題模式目錄執行;模式 8(解釋腔/上帝視角/安排感)歸入 Gate G,其餘新增模式歸入 Gate A-F 的對應處理。相鄰段重複表達同一資訊/動作/情緒時,按 Gate C/D 合併去重;如改後明顯變薄,恢復原文中有功能的資訊或重表達既有資訊,不新增原文沒有的情節、設定、關係或時間線。")
  3. agent 不存在或 spawn 失敗:主執行緒 inline 執行。
刪除優先判斷(先於各 Gate)

每條被標記項先判能否刪除,再考慮潤飾——很多 AI 味句是廢話(解釋、注水、湊數),潤飾後照樣冗餘。

  1. 刪掉後是否丟失伏筆、懸念鉤子、角色特徵、情節推進、必要資訊或必要轉折?都不丟則直接刪,不進 Gate。
  2. 丟任意一項 → 保留資訊進對應 Gate 改寫(只刪"怎麼說"的 AI 味,不刪"說什麼")。
  3. 刪除服從既有"過度去除 AI 味保護"與 Phase 2 比例上限:不整段刪、不刪劇情功能;若刪後跌破字數下限,改為降 AI 重寫,不刪完再用新廢話湊字。
  4. 刪完通讀:若整段只剩最短句、結構虛詞被掃光、每個動作都帶「了一下」式尾巴,就是刪過頭的電報體(見 anti-ai-writing.md 模式 9)——把非峰值敘述句恢復成自然白話,不是接著刪。刪的是廢話,不是中文的自然冗餘;這條只調刪減的度,禁用詞與套式句型的清理力度不因此降低。

以下為各 Gate 的詳細規則(刪不掉的標記項按此潤飾;無論 agent 還是主執行緒執行,均須遵循):

門禁 A:禁用詞替換

載入 references/banned-words.md,對照禁用詞表逐項檢查。

白名單機制

專案根目錄下的 .deslop-whitelist 檔案定義本專案的豁免詞彙。

檔案 schema:

  • UTF-8 編碼,一行一個詞
  • # 開頭的行為註解;空行忽略;首尾空白 trim
  • 大小寫敏感(中文不區分)

匹配規則:掃描時若禁用詞命中段對應的子字串在 .deslop-whitelist 中存在同樣的子字串,跳過該次告警。匹配方式與 banned-words.md 一致,使用子字串掃描。

範例 .deslop-whitelist

# 專案自訂豁免詞(一行一個,# 開頭為註解)
緩緩                # 主角"緩緩"是綽號,不算禁用詞
彷彿山海             # 章名
深邃的山谷           # 設定地名

白名單適用場景:

  • 命中術語(如玄幻小說中的特定術語恰好匹配禁用詞)
  • 角色口頭禪 / 綽號 / 設定專有名詞
  • 世界觀專有名詞
  • 原文刻意使用的修辭手法

如果 .deslop-whitelist 不存在,不強制建立;在報告中說明可建立該檔案。空白名單檔案等同於無白名單。

保護規則優先級:保留創作意圖與劇情功能 > 去除 AI Gate。Gate A-F 只能改變表達方式;Gate G 刪的是非故事性的作者解釋/旁白(不是情節)。任何 Gate 都不能刪除伏筆、懸念鉤子、角色特徵、人物記憶、情緒承接、因果錨點、關鍵資訊或必要轉折;遇到衝突時改為降 AI 重寫或標註 [需複核]

替換規則:

  • 禁用詞 → 具體動作/細節描寫
  • 不能簡單換成另一個形容詞
  • 要用"展示"替代"告知"

範例:

  • ❌ "眼中閃過一絲不易察覺的悲傷" → ✅ "他垂下眼"
  • ❌ "深吸一口氣" → ✅ 直接刪;若確有功能,改成角色當下動作(如把話咽回去)
  • ❌ "嘴角勾起一抹冷笑" → ✅ "他冷笑聲"
門禁 B:句型去套式

檢測並替換以下 AI 高頻句型:

句型 問題 替代方案
否定鋪陳後接肯定翻轉 最毒 中文 AI 句型之一 直接寫後項,或改成動作/細節呈現
"...,帶著..." 萬能狀語,AI最愛 用獨立短句或動作描寫
"聲音不大,卻帶著……" AI 最愛聲音描寫 直接寫聲音特徵或動作
陳詞濫調/萬能比喻 公式化比喻會顯 AI 腔 優先直接白描;確需比喻時只留少數生活化、角色化比喻
"他/她知道..." 直接告訴讀者 用行為展示認知
對話標籤密度過高/公式化標籤 每句都標註會機械 普通"說"可保留;高頻或公式化時用動作/上下文替代
"彷彿/猶如/宛若/如同" 文言腔過重 口語化表達或白描
"不容置疑/顯而易見" 書面化判斷詞 用具體事實說話

修飾詞清掃:檢查物品/人物前面的形容詞、定語、副詞、指示代詞、量詞,多餘即刪。刪除後閱讀不影響才刪;含義流失則改成簡潔名詞。

範例:

  • "白色的藥片" → "藥片"
  • "飛馳的汽車" → "汽車"
  • "手裡那截鏈子" → "鏈子"
  • "多年的衣服" → "舊衣服"(保留含義)

形容詞原則:一次只用一個形容詞修飾或不修飾,不連用、不堆疊。

門禁 C:心理描寫外化

AI 寫的心理描寫特徵:直接陳述情緒。

替換策略:

  • "他很緊張" → "他的手在抖"
  • "她很憤怒" → "她一把掀翻了桌子"
  • "他很害怕" → "他扶住門框,半天沒邁進去"
  • "她很傷心" → "她背過身,把袖口攥皺了"
  • "他感到一絲失落" → "他愣了一下,把手機放回口袋"

重複描寫去重:當相鄰段反覆表達同一資訊、同一動作或同一情緒時,按 Gate C/D 處理,不另開專項流程。

處理方法:

  • 合併同一瞬間的重複描寫,保留最能推動情緒或劇情的細節
  • 如果原文把一個動作拆成"動作概述 → 感知細節 → 身體反應",改成同一段連續畫面
  • 若合併後節奏過快,恢復原文中有功能的資訊,或把既有資訊改成更自然的動作/對話表達;不在原動作後追加描寫層,也不新增原文沒有的情節

範例:

  • ❌ "他拿起筆。手在抖。筆尖又停住。"
  • ✅ "他拿起筆,筆尖剛碰到紙就偏了,手腕壓了兩次都沒壓穩。"

重複語義四類(同一意思不重複表達,只留一個最合適且簡潔的):

類別 錯誤例 修法
形容詞重複 "興高采烈地笑著跑過來" "笑著跑過來"
近義詞重複 "非常重要的關鍵問題" "關鍵問題"
含義重複 "我好餓,肚子咕咕叫" "我好餓"
上下文主語/物品重複 上文說"把抗抑鬱藥扔了一地",下文不必再寫"地上的抗抑鬱藥",只寫"藥片" 模糊簡潔口語化即可

多餘場景/人物/物品描寫:服務情節人物之外的修飾描寫直接刪。

範例:

  • "游惑手裡握著一把短刀,刀鋒冷冽" → "游惑手裡握著一把短刀"
  • "手銬緊緊扣住兩人的手腕,中間連著一截不算長的鏈條" → "手銬扣住兩人的手腕,中間連著鏈條"
  • "暴雪極地的考場裡,風雪沒有停下的意思" → "暴雪極地的考場裡"
門禁 D:節奏打碎

AI 寫作的節奏問題:句型過於整齊、段落過於勻稱。

處理方法:

  • 打斷連續排比句(保留1-2個,刪掉其餘)
  • 長句拆短句
  • 偶爾用不完整句(口語感)
  • 段落長短交錯(不要每段都3-5行)
  • 不按硬指標排版:番茄高分樣本不是 50-60 字一行,也不是逢句號必換行;按動作/資訊變化自然斷段,讀起來不卡即可
  • 標點節奏跟語氣走:避免通篇句號化;保留有功能的 / 少量 ,把 …… / —— 改成動作、短句、換行、逗號或句號,刪除隨機堆疊或洗版符號
門禁 E:對話去腔調

AI 寫的對話特徵:每句話都資訊完整、邏輯清晰、表達精準。

處理方法:

  • 加入口語化表達("嗯""哦""行吧")
  • 適當打斷對話(角色可以答非所問);對話被打斷或拖長時用動作、換行或短句處理,不用 ——
  • 用動作穿插對話("她喝了口水。'然後呢?'")
  • 刪掉解釋性對話(角色不會把自己的動機說清楚)
  • 不為湊比例硬擴台詞;番茄對話佔比隨題材波動,台詞只在角色此刻真會說、必須說時增加
  • 口誤、停頓、粗話和重複要服務人物身份與情緒,不作為“真人感”裝飾批量添加
  • 不把所有對話末尾改成句號:質問保留問號,爆發峰值保留少量感嘆;吞回去/沒說完用動作停頓、短句或換行,不用 ……
門禁 F:結尾去升華

AI 寫作的結尾特徵:總想總結、升華、點題。

處理方法:

  • 刪掉總結性語句
  • 用動作/場景收尾,不要用感慨收尾
  • 如果結尾有"他知道...""這一刻..."→ 基本可以刪
門禁 G:去解釋腔/上帝感/安排感

最難察覺、最"像 AI"的一類(對應 anti-ai-writing.md 模式 8)。敘述者跳出角色當下去解釋、劇透、總結、定性、升華,讀者聞到"作者在場/劇情被安排"。

處理方法:

  • 刪解釋因果:「之所以…是因為」「原來…」「這意味著」→ 刪,因果讓讀者從動作對話裡自己拼。
  • 刪上帝視角劇透:「她不知道的是」「殊不知」「多年以後」「彷彿預示著」→ 刪。
  • 刪替讀者定性:「演得真好」「這出戲她看過一遍」「他就是這樣薄情」→ 刪,證據留給讀者判斷。
  • 刪隱蔽的軟評判:評判性副詞(「關切得恰到好處」)、劇透點破(「那點笑她看得分明」)、定性比喻(「像在宣判一件早已定好的事」)→ 刪,或改成角色此刻帶偏見的瞬間感覺。
  • 注意:Gate G 刪的是"非故事性的作者旁白",不是刪情節。刪完若變薄,靠角色動作/對話補,不補敘述者解說。

任務卡點修法邊界:任務卡點不是固定公式,也不是通用補流程按鈕。原文已有任務、證據、手續、物件缺口時,可以把解釋總結壓成角色當下要處理的具體卡點;原文沒有缺口時,只刪解釋或改動作/對話,不新造劇情。所有卡點都先做“刪掉試試”:刪掉後不丟伏筆、懸念鉤子、資訊、關係變化或必要轉折,就壓縮或刪除。


Phase 3.5:確定性收尾(檔案模式)

當輸入是正文檔案路徑,且 Phase 3 已落盤修改後,做句型/段落複掃,做機械標點兜底(破折號要按功能改寫,故先於機械替換報出):

node scripts/check-ai-patterns.js --check --fail-on=blocking <正文檔案...>
node scripts/check-degeneration.js --check <正文檔案...>
node scripts/normalize-punctuation.js <正文檔案...>

作用邊界:

  • check-ai-patterns.js 只報告不改寫:blocking(not-is-comparison / em-dash)優先改正文並複掃;advisory 先通讀判斷,確屬提綱感、解釋腔或模板腔再改,功能性寫法標 [需複核]
  • 它只是讀感提示;完整類別、例外和修法見 references/anti-ai-writing.md
  • check-degeneration.js 報告模型退化(逐字複讀/打轉、末尾截斷、占位符、工程詞洩漏 細綱/情節點 等),每條帶 severity: blocking|advisory。blocking 是退化訊號,去除 AI 味改不掉,應回去重新生成那一段再 deslop;advisory(tier2 章節/歧義詞)只提示。
  • normalize-punctuation.js 機械兜底:清除殘留的 ……、漏網破折號 ——/、雙連字符 -- 和獨立行 ---;預設不改變引號風格,也不把有功能的 / 少量 改成句號。
  • 知乎鹽言短篇可保留 「」;只有使用者或專案明確要求時,才給標點腳本加 --quote-mode ascii--quote-mode yan
  • 對話中表示被打斷或拖長的 —— 不再作為例外保留;腳本會改成句號、逗號、動作可承接的斷句或中文連接詞。無功能標點堆疊由人工 Gate D/E 判斷處理。
  • 這些腳本都是 story-deslop 的本機副本,不引用其他 skill 的檔案。

Phase 4:輸出潤飾結果

## 去除 AI 味潤飾報告

### 字數協議
- 原文字符數:{N0}
- 修訂後字符數:{N1}
- 淨變化:{N1 - N0}({百分比})
- 是否在 tier 上限內:{是 / 否(超限 X%,已分段並標註 [需複核])}

### 修改統計
- 總修改數:{N} 處
- 禁用詞替換:{N} 處
- 句型調整:{N} 处(含否定鋪陳句型 {N}、",帶著..." {N}、聲音描寫 {N})
- 修飾詞清掃:{N} 處
- 心理外化:{N} 處
- 重複描寫合併:{N} 處
- 監視動作清單合併:{N} 處
- 重複語義去重:{N} 處(形容詞重複 {N}、近義詞重複 {N}、含義重複 {N}、主語重複 {N})
- 比喻處理:{N} 處(刪除/保留/改回具體畫面)
- 節奏調整:{N} 處
- 對話最佳化:{N} 處
- 標點節奏調整:{N} 處(保留有功能 `?`/少量 `!`,將 `……`/`——` 改為動作、短句、

<!-- truncated for translation batch; full body continues in source -->