不是潤飾外掛, 是給 agent 的編輯規則。
用 Claude Code、Codex 這類 agent 起草的文字,常常有一種認得出來的「生成感」:模板開頭、消費者顧問腔、過度分層的大綱、看起來很平衡實則什麼都沒判斷的收尾,還有破折號、彎引號、刪節號這些排版痕跡。anti-vibe-writing 就是專門處理這件事的最後一道工序——不改稿子的意思,只去掉讓它讀起來像被系統組裝出來的習慣。
它本質上是一套 SKILL.md 加上 references/、assets/ 目錄的 Markdown 規則,不綁定特定 agent。Claude Code、Codex、Kimi,只要能讀檔案或接受一段指令,都能套用。規則把英文與中文的「AI 味」當成兩種不同問題處理:英文套 patterns-to-remove.md,中文套 chinese-patterns-to-remove.md,因為翻譯腔、四字成語堆砌、「賦能/打通/閉環」這類顧問黑話,是中文獨有的痕跡,英文規則抓不到。
改寫本身分六道工序執行,一次只做一件事,而不是一次性的模糊重寫——這也是規則裡明講的立場:幾次窄範圍的編輯,比一次含糊的重寫更有效。
意圖與立場
結構與流暢
具體語言
節奏與溫度
格式清理
完整性檢查
目標只有一個:讓 AI 說話,倍兒地道。
不用裝任何東西, 丟給 agent 一段連結就好。
整套規則就是 Markdown 檔案,沒有任何程式要編譯、沒有依賴套件。README 列了三種上手方式,從「完全不用先做任何事」到「長期讓 agent 照這套規則走」。
# 不用先 clone,把倉庫連結貼給任何能上網或跑 git 的 agent
把 https://github.com/weijt606/anti-vibe-writing 發給 agent,
讓它自己讀 SKILL.md 和 references/,照著配置改寫你的稿子。長期照這套規則走:裝進 Claude Code
如果你想讓 /anti-vibe-writing 變成常駐指令,clone 倉庫或只複製 skills/anti-vibe-writing/ 這個目錄,放進 Claude Code 的技能資料夾:
git clone https://github.com/weijt606/anti-vibe-writing.git
mkdir -p ~/.claude/skills && cp -r anti-vibe-writing/skills/anti-vibe-writing ~/.claude/skills/只想用一次:複製現成的提示詞區塊
不想裝也不想 clone,打開 skills/anti-vibe-writing/assets/rewrite-prompt-template.md——裡面有英文的 Full Rewrite / Light Cleanup 區塊,以及中文的「中文改寫(帶負向約束)」區塊,複製對應語言那段連同草稿一起發給任何 agent。
每份參考檔案都對應一個判斷。
SKILL.md 本身只是入口,實際規則分散在 references/ 跟 assets/ 底下十幾份檔案。下表依「判斷 → 模式 → 改寫 → 把關」四個階段分組。多數情況只需要知道:先分英文/中文,再挑一個聲音模式,改完跑一次最終清單。
判斷 · 01
語言分軌
英文 / 中文雙軌
中文 AI 味與英文 AI 味是兩種不同問題,分別套用 patterns-to-remove.md 或 chinese-patterns-to-remove.md。
判斷 · 02
scenario-presets.md
場景硬約束
推特、微博/小紅書、部落格/公眾號、播客、專業報告、Reddit 六種場景,各自的長度、結構、emoji 政策寫死在這份文件裡。
模式 · 03
預設(乾淨模式)
安全基線
不用使用者聲明就會執行,去掉 AI 味、還原成專業保守的版本,適合多數產品與文件情境。
模式 · 04
人味兒質感模式
個人語氣
選擇性注入倒裝、語氣詞、殘句、非標準標點,靠「放鬆一點 / 像本人寫的」這類訊號觸發。
模式 · 05
隨手打子檔
手機手感
人味兒模式底下再鎖一層,只在使用者明確要求時開啟,絕不碰數字、名稱、連結,也不做會改義的錯字。
模式 · 06
學習模式
Host Profile
從使用者提供的真實樣本萃取一份可重複使用的風格檔案,讓之後的稿子讀起來像「那個人寫的」。
判斷 · 07
優先順序規則
衝突仲裁
Host profile 的禁忌詞 > 場景預設的格式約束 > Host profile 的聲音訊號 > 人味兒慣例,四層衝突時照這個順序決定。
改寫 · 08
human-passes.md
六道工序
意圖與立場、結構與流暢、具體語言、節奏與溫度、格式清理、完整性檢查——六個 pass 依序跑過一遍。
改寫 · 09
排版形式對照表
格式降噪
把滿屏加粗、每小段一個標題、提示框、分隔線這些 AI 排版習慣,換成一個人真的會打進訊息裡的樣子。
把關 · 10
final-pass-checklist.md
最後把關
改寫後逐條核對,並用一行 grep 指令抓破折號、刪節號、固定黑話這些完全確定的痕跡,最多修兩輪。
把關 · 11
標點痕跡清單
排版訊號
破折號(— ——)、英文彎引號、刪節號、句中的箭頭符號全部列入必查清單,Reddit 等論壇的 automod 已經把破折號密度當 AI 訊號。
不同任務,該用哪個組合?
| 你在寫什麼 | 建議模式 | 對應場景預設 |
|---|---|---|
| 公司文件、產品文案、技術備忘 | 預設(乾淨模式) | 專業報告場景預設 |
| 創辦人筆記、個人部落格 | 人味兒質感模式 | 部落格 / 公眾號場景預設 |
| 系列社群貼文,聲音要一致 | 學習模式 + 場景預設疊加 | 依平台選對應場景預設 |
| 中文推特短貼,需要隨手感 | 人味兒質感模式 + 隨手打子檔 | 推特場景預設 |
每條規則, 都寫明從哪來。
anti-vibe-writing 的 README 有一段罕見的坦白:哪些 pattern 不是原創,而是研究了幾個開源 de-AI / humanizer 專案跟一篇文章後,改寫進自己結構裡的。原始分析與措辭歸原作者所有。這比大多數 skill 倉庫更誠實,也讓人能追到每條規則的第一手來源。
英文句子級痕跡,借自 30 條規則的 humanizer
回避系動詞、否定式排比、同義詞循環、假範圍、結構預告——這五個英文層的判斷依據,啟發自 blader/humanizer 這個 MIT 授權的 skill,原作收錄了 30 條 pattern。
來源 · README 參考與致謝 · blader/humanizer(MIT)
五維打分,借自 stop-slop 的檢測邏輯
final-pass-checklist.md 裡那套可選的五維打分(直接、節奏、信任、真人感、密度),來自 hardikpandya/stop-slop 這個 AI slop 檢測 skill。
來源 · README 參考與致謝 · hardikpandya/stop-slop(MIT)
中文「回避是」與同義詞循環,借自中文版 humanizer
op7418/Humanizer-zh 本身是 blader/humanizer 的中文改編,24 條 pattern。啟發了中文軌裡「迴避系動詞『是』」與「同義詞循環」這兩條判斷規則。
來源 · README 參考與致謝 · op7418/Humanizer-zh(MIT)
翻譯腔層,借自一篇中文翻譯腔拆解文章
用身體動作詞寫抽象概念、形容詞加冒號替讀者下判斷、抽象名詞當主語——這些翻譯腔的辨識方式,啟發自 yage.ai 一篇專門拆解「AI 中文翻譯腔」的文章,寫進了 chinese-patterns-to-remove.md。
來源 · README 參考與致謝 · yage.ai《AI 中文翻譯腔》
「改寫心態」一節,來自 X 上一則討論串
身分設定、負向約束這類去 AI 味的提示詞技巧,影響了規則裡「改寫時不當資深文案 / 營銷專家,換成朋友或公眾號編輯的口吻」這一節,以及中文改寫提示詞區塊。
來源 · README 參考與致謝 · X @dotey
看 agent 怎麼抓出一段生成感。
以下是倉庫 examples/09-sentence-tells-en.md 裡的真實範例,場景是一段產品落地頁文案,模式是預設的乾淨模式。這個例子刻意示範的是 1.3.0 版才加入的「句子級」痕跡——把明顯的顧問黑話都拿掉之後,還會留下來的那種更難察覺的生成感。
$ You ›
幫我改一下這段落地頁文案,乾淨版就好:
claude: Claude ›
跑 Pass 1、3、5 就夠了,這段不需要重組結構。
ok: Our database is the source of truth for your app's state. Reads
ok: are sub-millisecond, and replication is automatic. It handles
ok: caching, indexing, and backups.
ok: It also does vector search: store embeddings next to your rows
ok: and query both in one call.
claude: Claude ›
hl: 改了什麼(一個痕跡對一個修法):
· 否定式排比 ——「這不只是…而是…」的開頭整段刪掉,直接從論點起頭
· 回避系動詞 —— serves as / boasts / features 都換成 is / are / handles
· 同義詞循環 —— engine / platform / system 統一叫「database」,只講一次
· 假範圍 —— "everything from caching to indexing to backups" 拆成平白列舉
· 破折號插入語 —— 「— the system —」整段拿掉
· 結構預告 —— "Let's dive into what that means" 刪掉,下一句直接講意思
Clean is not the goal. Sounding like the person who meant it is the goal.
這個例子為什麼值得看
改寫前的版本用四種說法稱呼同一個產品、迴避「is」三次、預告了一個從沒兌現的段落。改寫後的版本更短,反覆用同一個「database」也不覺得彆扭,把預告換成真正的解釋——把 embeddings 存在 row 旁邊,一次查詢兩者。去掉的不是文采,是拖延讀者理解的習慣動作。
不是寫作工具。知道邊界再上路。
把規則改成你自己的聲音。
整套規則就是 Markdown,沒有需要編譯的東西。你可以直接打開 references/ 底下任何一份檔案改動,或依 CONTRIBUTING.md 的規範提 PR。
進階玩法地圖
**1. 用學習模式建自己的 host profile。**貼幾段自己過去寫的東西,說「學我的風格」,agent 會依 learning-mode.md 跟 style-extraction-prompt.md 萃取一份可重複使用的 host-profile-template.md,之後每次改寫都對照這份檔案的句子節奏跟標點習慣。
**2. 補一個場景預設。**目前只有六種:推特、微博/小紅書、部落格/公眾號、播客、專業報告、Reddit。缺 LinkedIn 或 Discord 這類場景時,依 scenario-presets.md 現有格式加一段硬約束就是新場景。
3. 追一條規則的演化史。CHANGELOG.md 記錄了每個版本新增了什麼:1.2.0 加中文軌,1.3.0 加英文句子級痕跡,1.4.0 加隨手打子檔,1.5.0 加標點痕跡層,1.6.0 把最終清單升級成「自檢 → 定點改」的必跑步驟。想懂某條規則為什麼存在,先查它是哪個版本加的。
**4. 接進非 Claude Code 的 agent。**Codex 用 AGENTS.md,其他 agent 通常有 system prompt 或自訂指令的位置,把 SKILL.md 跟對應語言的 pattern 檔案貼進去就行,規則本身不綁平台。
**5. 往上游讀真正的原始分析。**這個 skill 借鑑的幾個專案(blader/humanizer、hardikpandya/stop-slop、op7418/Humanizer-zh)本身也是開源的,想理解某條判斷背後更完整的推導,直接讀原始倉庫比讀二手改編更準。
最該讀的三份延伸閱讀
① SKILL.md——完整核心哲學、六道改寫工序、優先順序規則。 ② references/scenario-presets.md——六種場景的具體硬約束與禁忌。 ③ CHANGELOG.md——每個版本新增規則的完整記錄。
Several narrow editing passes work better than one vague rewrite.