計詳解)
AI改寫為什么必須驗證avoid-ai-writing保留性校驗器validate.js與編輯契約設(shè)計詳解【免費下載鏈接】avoid-ai-writingSkill that audits and rewrites content to remove AI writing patterns. Use it with your favorite agents including Claude Code, OpenClaw, Codex, and Hermes.項目地址: https://gitcode.com/gh_mirrors/avo/avoid-ai-writing當(dāng)讓 AI 幫你做AI 改寫去除 AI 寫作腔時最大的風(fēng)險不是沒改干凈而是改壞了——引用被改寫、代碼被碰亂、鏈接被刪掉。avoid-ai-writing是一個開源的 AI 寫作審計與改寫技能它不僅帶有一個檢測引擎還內(nèi)置了保留性校驗器 detector/validate.js每次改寫后把原文和改后文喂給它機器化地檢查承諾不動的內(nèi)容是否真的沒動。為什么 AI 改寫必須驗證模型是個好編輯但也是個手快的編輯。它可能順手優(yōu)化了你不希望動的引用塊那是別人的話改了就是篡改重排了表格或代碼塊結(jié)構(gòu)化內(nèi)容被改寫等于損壞丟掉了某個數(shù)字、路徑或 URL技術(shù)文檔里的細節(jié)是事實不是裝飾。更關(guān)鍵的是 detector/README.md 里那句話Edit mode writes to files, so a violation there is silent and destructive. 編輯模式直接寫文件違規(guī)是靜默且破壞性的。在 edit 模式下AI 直接修改文件一旦碰壞了受保護內(nèi)容你往往要到 review 時才會發(fā)現(xiàn)。所以 SKILL.md 里寫下的承諾——不要編輯引用、代碼塊、表格或歸屬他人的文字、保留原文結(jié)構(gòu)、意圖和所有具體技術(shù)細節(jié)——必須有人強制執(zhí)行。這個人就是validate.js。編輯契約SKILL.md 里的三道閘門項目的核心規(guī)則寫在 skills/avoid-ai-writing/SKILL.md 的 Editing contract 一節(jié)可以理解為三層閘門用戶授權(quán)范圍User-authorized scopedetect模式只報告不改動普通清理請求只授權(quán)最小、定向的文字修改重建結(jié)構(gòu)必須用戶明確要求。源文忠實Source fidelity所有事實性補充必須來自源文或用戶的明確更正保留數(shù)量、單位、否定、因果和確定性程度不編造。受保護內(nèi)容Protected content引用、歸屬段落、代碼、表格、URL、路徑、標識符、frontmatter 在普通清理中保持原樣通用的改文風(fēng)請求不構(gòu)成修改這些內(nèi)容的授權(quán)。技能提供三種模式rewrite默認返回改寫文本、detect只檢測不改動、edit原地編輯文件且拒絕處理源碼、配置和生成數(shù)據(jù)文件。校驗器正是為這套契約兜底的。validate.js 校驗項全覽Errors 與 Warningsvalidate.js的設(shè)計哲學(xué)寫得很直白錯誤error阻斷意味著改寫動了不該動的內(nèi)容警告warning提示意味著改動通常合理但偶爾是失誤。級別錯誤/警告碼檢查內(nèi)容 errorcode-block-count/code-block-modified圍欄代碼塊數(shù)量變化或內(nèi)容被修改 errorfrontmatter-modifiedYAML frontmatter 被改動、新增或刪除 errorblockquote-modified引用塊內(nèi)容被修改或刪除他人的話 errortable-modified表格內(nèi)容被修改或刪除對齊重排除外 errorinline-code-missing行內(nèi)代碼被移除 errorurl-missing/path-missingURL 或文件路徑丟失或被改 errorheading-count/heading-level標題數(shù)量或?qū)蛹壗Y(jié)構(gòu)變化重構(gòu)超綱 errorresidual-grew改寫新增了 AI 模式清 10 個留 3 個可以添 2 個不行 warningheading-text標題措辭變化修復(fù) Title Case、去 emoji 屬正常 warningnumber-missing原文數(shù)字消失數(shù)字改寫成文字時合理 warninglarge-shrink字數(shù)縮減超過 40%提示可能丟內(nèi)容實現(xiàn)上有幾個巧思見 detector/validate.js圍欄掃描器而非正則fenceSpans() 按 CommonMark 規(guī)則處理圍欄的開閉與長度匹配避免一行npm test 意外打開永不閉合的圍欄這類誤報。代碼遮罩掃描正文構(gòu)造前先maskCode()屏蔽代碼區(qū)域否則代碼里的 URL 會被計兩次、代碼塊里的|會被誤認為表格行。CRLF 歸一化Windows 文檔換行統(tǒng)一成\n后再比對防止frontmatter 被改寫但校驗卻通過。兩個豁免carve-outs校驗器不能對自己的技能文檔開火——SKILL.md 本身就要求剝掉 URL 上的 AI 跟蹤參數(shù)如utm_sourcechatgpt.com和把 Title Case 標題改成句子式并去掉 emoji所以這兩類改動被從比對中扣除詳見 detector/README.md。實際怎么用命令行CI 友好node detector/validate.js before.md after.md退出碼語義明確0表示保留性檢查通過1表示存在阻斷性錯誤可直接用作流水線門禁detector/validate.js#L489-L502。編程調(diào)用const { validate, formatResult } require(./detector/validate.js); const result validate(originalText, rewrittenText); if (!result.ok) console.error(formatResult(result));在技能工作流中SKILL.md 建議 edit 模式結(jié)束后運行該校驗SKILL.md 機械檢查一節(jié)。而獨立的 skills/preservation-verifier/SKILL.md 技能則把它組織成一個完整的驗證環(huán)節(jié)返回PASS / REVIEW / FAIL三種結(jié)果——FAIL時指認修復(fù)責(zé)任方改寫器或文件編輯器且修復(fù)循環(huán)最多一次重入修復(fù)后仍需復(fù)驗二次失敗即停止上報絕不無限循環(huán)。注意CI 里常用的avoid-ai-writing-gate檢測門禁只檢查單個快照不會運行validate.js它需要原文和改后文兩個版本——自動化改寫流程中請單獨運行保留性校驗。設(shè)計亮點小結(jié) 承諾 → 代碼把文檔里的自然語言承諾變成確定性、可測試的機器檢查回歸測試見 detector/validate.test.js。寧軟勿堵會阻斷合法改寫的校驗器比只報軟信號的校驗器更糟——所以縮進代碼塊、標題措辭、數(shù)字丟失都是 warning 而非 error。零依賴Node ≥ 18 與瀏覽器 IIFE 雙端可運行與patterns.js同款結(jié)構(gòu)無構(gòu)建步驟。單向約束改寫可以留下未清除的模式但絕不能新增模式residual-grew。參考路徑 保留性校驗器源碼detector/validate.js檢測引擎detector/patterns.js引擎文檔含validateAPI 說明detector/README.md技能主文件與編輯契約skills/avoid-ai-writing/SKILL.md獨立驗證技能skills/preservation-verifier/SKILL.md模式參考references/patterns.md【免費下載鏈接】avoid-ai-writingSkill that audits and rewrites content to remove AI writing patterns. Use it with your favorite agents including Claude Code, OpenClaw, Codex, and Hermes.項目地址: https://gitcode.com/gh_mirrors/avo/avoid-ai-writing創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考