移除正體中文(台灣)文章裡的 AI 味,並把中國用語校正成台灣慣用語。
本專案以 hardikpandya/stop-slop 的方法論為基礎,參考 Humanizer-zh-TW 的正體中文 AI 模式與人味概念,並結合 taiwan.md 的用語對照資料。針對中文語料中的寫作模式重新實作,再加入台灣用語、保真流程與確定性排版工具,沒有照抄或直譯任何一份來源。
英文 stop-slop 抓的是 "Here's the thing"、"not just X but Y"、em dash 濫用這類英文模式,直譯到中文沒有用。中文 AI 有自己的 tell:「不僅僅是 X,更是 Y」「值得注意的是」「賦能/抓手/閉環」、四字成語排比、「首先…其次…最後」骨架。
還有一層是歐化語法/翻譯腔——句法結構本身像翻譯,即使一個塑膠句都沒有。「透過…我們可以」「對於…來說」「使得」「…之一」「們」濫用,這些是中文 AI 最深的水印。一篇文章可以零塑膠卻整篇歐化。
而且台灣讀者看到的 AI 味,很多其實就是中國用語滲漏(視頻、代碼、賦能)。所以「除 AI 味」「去翻譯腔」與「正台灣用語」這三層會互相強化——這正是把 stop-slop 與 taiwan-md 結合的意義。
stop-slop-zh-tw/
├── SKILL.md # 核心規則
├── references/
│ ├── phrases.md # 中文 AI 贅詞、中國網路常用語、套話
│ ├── structures.md # 中文結構性陳腔濫調 + 歐化語法/翻譯腔
│ ├── terminology.md # 同形詞判斷 + 最高頻保底表 + 掃描器用法
│ ├── editing-workflow.md # 審閱模式、長文防縮水、保真與人味邊界
│ ├── typography.md # 中文全形標點、英文半形標點與中英空格
│ └── examples.md # before/after 改寫範例
├── data/
│ ├── terms.json # 完整用語詞庫(機器讀,不進 context)
│ └── term-sources.json # 詞條來源 ID、授權與追蹤限制
├── scripts/
│ ├── zh-tw-terms.mjs # 台灣用語掃描器(Node,零依賴)
│ ├── zh-tw-typography.mjs # 台灣中文排版檢查與安全修正
│ ├── text-regions.mjs # Markdown/URL/程式碼共用保護區
│ ├── file-utils.mjs # 原子寫回工具
│ ├── validate-terms.mjs # 詞庫結構與比對安全性驗證
│ └── build-terms.mjs # 從授權相容來源產生候選詞(供人工審)
├── tests/
│ ├── zh-tw-terms.test.mjs # 掃描器與詞庫回歸測試
│ ├── text-regions.test.mjs
│ └── zh-tw-typography.test.mjs
├── agents/openai.yaml # Codex skill 介面資訊
├── evals/ # 長文端對端驗證與可重現腳本
├── LICENSES/ # 第三方 MIT 授權文字
├── package.json # 公開驗證命令與 Node.js 需求
├── README.md
└── NOTICE.md # 授權與出處
- Node.js 18 以上;CI 會測試 Node.js 18、20、22。
- 執行期不需要第三方 npm 套件,也不需要先跑
npm install。 - 支援 Windows、macOS 與 Linux;文字檔統一使用 UTF-8 和 LF。
package.json只提供驗證命令,本專案不發布成 npm package。
skill 的安裝位置有兩種慣例:.agents/skills/ 是跨工具通用路徑,Codex 直接掃描;.claude/skills/ 是 Claude Code 專屬路徑。Claude Code 目前只讀後者,所以想讓一份檔案兩邊共用,就把資料夾放在 .agents/skills/,再從 .claude/skills/ 建連結指過去。
只用 Claude Code: 把整個資料夾放進專案的 .claude/skills/,Claude Code 會自動載入,不必額外設定。
你的專案/
└── .claude/
└── skills/
└── stop-slop-zh-tw/ ← 放這裡即可
跨工具共用(Claude Code、Codex 與其他支援 Agent Skills 的工具): 資料夾放 .agents/skills/,再讓 .claude/skills/ 連過去。
你的專案/
├── .agents/
│ └── skills/
│ └── stop-slop-zh-tw/ ← 資料夾放這裡
└── .claude/
└── skills/
└── stop-slop-zh-tw ← 連結指向上面
# macOS / Linux
mkdir -p .claude/skills
ln -s ../../.agents/skills/stop-slop-zh-tw .claude/skills/stop-slop-zh-tw# Windows(建 junction 指向實際位置)
New-Item -ItemType Directory -Force -Path ".claude\skills" | Out-Null
New-Item -ItemType Junction `
-Path "$PWD\.claude\skills\stop-slop-zh-tw" `
-Target "$PWD\.agents\skills\stop-slop-zh-tw"全域使用(所有專案共用): Claude Code 讀 ~/.claude/skills/,Codex 與其他工具讀 ~/.agents/skills/;也可以只放一份,另一邊建連結指向它。
# macOS / Linux
ln -s "$(pwd)/stop-slop-zh-tw" ~/.claude/skills/stop-slop-zh-tw# Windows(建 junction 指向實際位置)
New-Item -ItemType Junction `
-Path "$env:USERPROFILE\.claude\skills\stop-slop-zh-tw" `
-Target "D:\path\to\your-project\.agents\skills\stop-slop-zh-tw"Codex: 掃描順序是 $CWD/.agents/skills、沿路往上到 $REPO_ROOT/.agents/skills、$HOME/.agents/skills、/etc/codex/skills,最後是內建 skill。放進其中一層即可,不需要設定 CODEX_HOME。
Claude Projects: 把 SKILL.md 與 references 上傳到專案知識。
API / 系統提示: 把 SKILL.md 放進 system prompt,references 按需載入。
若只建立最小執行安裝,保留 SKILL.md、agents/、references/、data/、scripts/ 即可。重新散布時仍須一併保留 LICENSE、LICENSES/ 與 NOTICE.md;tests/、evals/ 和 plans/ 是維護與驗證資料,不是 skill 執行期依賴。
裝好之後,在 Claude Code 撰寫或貼上中文時會自動相關,你也可以直接下指令。常見用法:
| 你想做的事 | 這樣說 |
|---|---|
| 改寫一段 | 「用 stop-slop-zh-tw 幫我改這段」 |
| 審閱整篇草稿 | 「這篇有沒有 AI 味?照 stop-slop-zh-tw 抓一遍」 |
| 只找問題、不改稿 | 「只標出有 AI 味的地方,先不要改」 |
| 只校正台灣用語 | 「幫我把這段的中國用語校正成台灣用語」 |
| 只檢查排版 | 「檢查中文標點和中英文空格,不要改內容」 |
| 要分數 | 「依 stop-slop-zh-tw 的六維評分,並指出最該改的三處」 |
它會做三層處理:
- 除 AI 味 — 砍開場清喉嚨、贅詞、公式化結構(「不僅僅是 X,更是 Y」「首先…其次…」)。
- 去翻譯腔 — 抓歐化/西化語法(「透過…我們可以」「對於…來說」「使得」「們」濫用)。
- 正台灣用語 — 中國用語換台灣慣用語(視頻→影片、代碼→程式碼),技術名詞保留英文。
改寫前會先確認任務模式。只想找問題時,輸出位置、問題、理由與處理方向,不附改寫版;要求改寫時,長文預設保留段落規模和所有資訊點。交稿前會回頭核對數字、專名、引言、因果與作者立場,也不會替作者編造第一人稱經歷或資料。完整規則見 references/editing-workflow.md。
需要評分時,會依直接/節奏/信任/真實/密度/台灣味六個維度各評 1–10。分數只用來指出檢查方向,不作為自動重寫或刪減內容的門檻。
一個完整例子:
改前:
在當今這個 AI 飛速發展的時代,軟件開發早已不僅僅是寫代碼那麼簡單,更是一場關於工程效能的深刻變革。眾所周知,測試的重要性不言而喻。值得注意的是,很多團隊在這條路上交了不少學費。
首先,我們要對測試流程進行賦能,找到一個強抓手;其次,把 CI/CD 的閉環徹底打通;最後,讓質量意識在團隊裡真正落地。數據告訴我們,一個好的測試對象設計,能夠顯著提升代碼的性能與兼容性——這背後的意義,細思極恐。
過去,我們把測試信息存進數據庫,調試時盯著內存和緩存,配置默認跑在本地服務器上。如今,智能體(Agent)重新定義了這一切。它能分析、能編寫、能調試,賦能每一位開發者。可以說,這不是工具的升級,而是研發範式的顛覆。
總而言之,擁抱 AI、擁抱變化,未來可期。希望這篇文章能幫助到你,如果覺得有用,別忘了分享給更多的小夥伴!
改後:
AI 進展很快。軟體開發除了寫程式碼,也包含測試;很多團隊花了不少代價,才建立出合適的測試做法。
做法有三個環節:整理測試流程、串好 CI/CD、建立團隊的品質標準。原稿還主張「測試對象的設計會影響程式效能與相容性」,但沒有附資料來源。〔待作者補充:資料或案例〕
以前我們把測試資料丟進資料庫,偵錯時盯著記憶體和快取,設定預設跑在本地伺服器上。現在 Agent 接手了一部分工作:它會分析、會寫,也會偵錯,開發流程也跟著改變。
AI 會繼續改變我們寫程式的方式。
改了什麼:
- 中國用語校正(掃描器 + 語境判斷):
- auto 全套:軟件→軟體、代碼→程式碼、信息→資訊、數據→資料、數據庫→資料庫、調試→偵錯、內存→記憶體、緩存→快取、性能→效能、兼容→相容、默認→預設、服務器→伺服器。
- flag 判斷:質量→品質(quality 語境)、配置→設定、智能體→Agent(技術語境保留)、測試對象→受測對象(SUT,見下方取捨)、小夥伴→(刪)。
- 砍掉 AI 起手式與收尾: 「在當今這個…時代」「眾所周知」「不言而喻」「值得注意的是」「總而言之」「未來可期」「希望這篇文章能幫助到你,別忘了分享」全部移除。
- 打破公式化結構:
- 「不僅僅是 X,更是 Y」→ 直接列出軟體開發包含程式碼與測試。
- 「首先…其次…最後」的僵化骨架 → 收成一句「做法有三個環節」。
- 「這不是工具的升級,而是研發範式的顛覆」→ 改成具體的「Agent 接手部分工作,開發流程也跟著改變」。
- 去中國網路常用語: 賦能、抓手、閉環、落地、範式、重新定義、細思極恐 → 全換白話。
- 不替作者補經驗或來源: 「數據告訴我們」沒有交代數據來源,改寫時保留原本主張並標示待補,不擅自變成「我自己的經驗」。
- 空泛宣稱不硬補內容: 「這背後的意義,細思極恐」沒有資訊量,直接刪除;缺少的證據明確標示待作者補充。
自評(六維,1–10):
| 維度 | 分數 | 說明 |
|---|---|---|
| 直接 | 8 | 拿掉宣告式起手,直接陳述 |
| 節奏 | 8 | 長短句混搭,破除排比 |
| 信任 | 7 | 收掉鋪陳與討拍收尾 |
| 真實 | 8 | 像工程師口吻,非行銷稿 |
| 密度 | 7 | 四段砍成四段但每句有料 |
| 台灣味 | 9 | 無中國用語殘留,用「你」 |
合計 47/60;優先檢查「信任」與「密度」兩個較低的面向。
一個取捨先講:「對象」是 flag 詞(object→物件,但 target/測試對象要看語境),不會無腦校正。原文「測試對象設計」語意其實有點含糊——指 test double(測試替身)還是受測系統?從「設計得好能提升效能與相容性」判斷指的是受測系統,故改成「受測對象(SUT,System Under Test)」而非「測試物件」。若原意是 mock/stub 那類測試替身,再調整即可。
更多 before/after 見 references/examples.md。
撰寫、編輯、審閱中文文章時自動相關。也可直接說「用 stop-slop-zh-tw 幫我改這段」「除一下 AI 味」「校正台灣用語」。
- 預設用「你」而非「您」
- 技術名詞保留英文(Agent、MCP、Extension、PR、commit)
- 同形詞(框架、部署、分支)不過度校正
用語對照數以千計,不可能(也不該)全塞進會載入 context 的 skill 檔。本專案採 hybrid 架構:
- 判斷層(去 AI 味、去翻譯腔)靠 LLM,留在 phrases.md/structures.md,無法也不該 script 化。
- 查表層(正台灣用語)的完整詞庫放 data/terms.json,由掃描器 scripts/zh-tw-terms.mjs 讀取——詞庫不進 context,只回報實際命中的詞,所以詞庫再大也不膨脹。
- references/terminology.md 只留同形詞判斷、最高頻保底表(給不能執行 script 的 Projects/API 環境)與掃描器用法。
詞庫可用 match 指定比對策略:中文多字詞預設為 substring,明確技術詞組可用 phrase,英數詞使用 word 避免 emo 命中 emoji,少數複雜規則才使用 regex。單一中文字不能直接做全域子字串掃描;應改收完整詞組。
npm run validate這會執行 35 項 Node.js 測試、skill 結構檢查、210 筆正式詞條驗證及第二次長文端對端驗證。GitHub Actions 會在 Node.js 18、20、22 重複執行相同命令。
詞條驗證器會拒絕重複 from、不合法的 mode、沒有邊界策略的英數詞、單字級中文字,以及含多個替代選項的 auto 詞條。
正式詞條另須提供 source;來源 ID 與授權說明記錄在 data/term-sources.json。
排版工具會先保護 Markdown 程式碼、URL、連結目標、HTML 標籤、Email、路徑、dotted 技術識別字(.NET、net8.0、Testing.Platform)與數字型技術 token,再處理三項硬性規則:中文句子使用全形標點、英文句子保留半形標點、中英文之間使用一個半形空白。
node scripts/zh-tw-typography.mjs --check <檔案>
node scripts/zh-tw-typography.mjs --json <檔案>
node scripts/zh-tw-typography.mjs --dry-run <檔案>
node scripts/zh-tw-typography.mjs --fix <檔案>--check、--json 與 --dry-run 都不寫入;確認差異後才使用 --fix。
詞庫可從下列來源擴充(已標授權與可用性):
| 資源 | 內容 | 授權 | 對本專案 |
|---|---|---|---|
| taiwan.md | 3936+ 條,分 A–F 類 | CC BY-SA 4.0 | ✅ 本專案基礎,可併用 |
| aronhack 中國用語雷達 | 約 1000 條,繁體 key,含網路新詞 | 資料 CC0 | ✅ 可自由使用 |
| OpenCC | TWPhrases 簡→台詞庫,最成熟 | Apache 2.0 | ✅ 可用(須註明出處);為簡體 key,適合做前處理 |
| g0v 萌典 moedict-data-csld | 《中華大辭典》同實異名 CSV | 詞條 CC BY-NC-ND 4.0 | |
| 教育部兩岸常用詞語對照表 | 教育部辭典附錄,權威 | 版權所有 | |
| 維基教科書.大陸台灣計算機術語對照表 | 純資訊領域術語 | CC BY-SA 3.0 | ✅ 相容(註明+相同方式分享) |
授權提醒: 標
更新詞庫(維護者): 跑 node scripts/build-terms.mjs 會從 aronhack(CC0)抓資料,去重、過濾後把新候選詞寫到 data/terms.candidates.json(不覆蓋 terms.json)。候選一律需人工審——確認譯法、決定 auto/flag、剔除無關生活詞,再手動併入 terms.json。這道人工關卡是刻意的:來源資料含錯譯(如 進程→程序、鼠標→游標),自動併入會把錯誤帶進來。
目前有兩組合成長文案例。第二組會自動比對篇幅、章節、內容區塊、92 個數字 token、24 種技術保護字串、用語、排版與冪等性;完整報告見 evals/fresh-longform-application/comparison.md。
合成案例適合回歸測試,但不能取代真實文章與獨立人工審閱。因此目前適合視為公開 beta;在加入取得授權的真實語料、不同文體與外部盲測前,不宣稱已涵蓋所有中文寫作情境。
- 方法論與結構:hardikpandya/stop-slop(MIT)
- 正體中文 AI 模式與人味概念:kevintsai1202/Humanizer-zh-TW(MIT)
- 台灣用語:frank890417/taiwan-md / taiwan.md(CC BY-SA 4.0)
- 詞彙資料:aronhack/Chinese-Vocabulary-Radar(資料 CC0)
完整第三方授權、取用範圍與修改說明見 NOTICE.md 及 LICENSES/。本專案整體發行包依 CC BY-SA 4.0 釋出。