ne-slop-text 是做什麼的?
Slop 就是平均:當模型用最可能的選擇填補空白,或當被要求「讓它變得更好」時所寫出的東西。它存在於決策中(說了什麼、誰推動了事件、如何結尾、列出了什麼、命名了什麼),而不是在詞彙上。換詞無法解決問題:StoryScope(Russell 等人,COLM 2026)僅憑話語特徵就能以 93% 的 F1 分數區分 AI 與人類故事,而專業的表面改寫僅將偵測率從 95.5% 移動到 93.9%。模型聚集在同一個區域;人類則分散各處。因此,這項技能不套用固定食譜。它會針對每項任務,找出預設模型的落點,並利用該人物的素材將草稿從那裡移開。
此管道的發現與測試方式:docs/evidence.md。以下路徑皆相對於此技能的目錄。
輸入
- 一項任務(寫什麼、寫給誰、為什麼)或一份原始文字(待修正的文本)。
- 背景資訊,可選:文件、事實、該人物自己的用語(語音逐字稿、聊天記錄、內部筆記)。
選擇模式
- 短文模式(約 120 字以下:聊天回覆、簡短訊息、標題):執行步驟 1,然後步驟 3。此長度下循環沒有訊號;在盲測中,100 字摘要的五種不同寫法無法區分。
- 全文模式(任何更長、要給他人看的內容):執行步驟 1、2、3、4。當文字很重要或用戶要求時,執行步驟 5。
步驟 1. 撰寫前的哲學
- 素材優先。 找出只有這個人擁有的東西:一個具體事件;他們持有的一個觀點;塑造事件但非他們本身的力量(有人推動、某物被繼承、某事失敗了);一個保留或限制;他們自己的措辭。同一文體的舊文本(過去的履歷和信件)提供的是事實,而非聲音。
- 缺失的素材。 如果文字很重要,提出 1 到 3 個簡短問題;語音回答最佳,保留逐字稿作為素材。提出不暗示答案的開放式問題:「實際上是怎麼發生的」、「有沒有這樣一個案例」、「你對 X 有什麼看法」、「你還做不到什麼」。如果你無法提問,請使用可驗證的具體細節(姓名、數字、來源)並保持缺口可見。絕不用平均值填補缺口。
- 讀者與他們的代碼。 他們具體要求了什麼?他們使用哪些詞語和玩笑?用他們自己的話回答,當它能表達觀點時就是活的(「您的廣告要求正義,所以我不會聲稱自己最好:我還沒見過其他候選人」)。將他們的用語當作標籤或標題則是 slop。
- 貼近素材呈現。 該人物的思考順序、他們的保留用語(「可能」、「整體而言」)、字面而非慣用語的翻譯、使用短動詞的第一人稱:「我帶領 3 名 QA 工程師並簽署版本發佈」被標記為活;「帶領一個由 3 名 QA 工程師組成的團隊並擁有發佈簽署權」則被標記為 slop。
- 文體存在於容器中(格式、長度、問候語、必填欄位),而非每個句子。列表放在該放的地方(技能區塊、表格、附件履歷);一個句子承載一個事件或一個機制。
- 懷疑來得太容易的東西。 如果一個句子不是經過決策產生的,那它很可能是平均化的結果。
步驟 2. 循環:遠離預設值(全文模式)
- 預設值。 在不同模型(例如 opus、sonnet、haiku)上產生 3 個全新代理(fresh agent)。給每個代理純粹的任務和相同的背景資訊,使用
loop/default_prompt.md。它們不得看到此技能、草稿或彼此。 - 標註。 再用一個與書寫者不同模型的全新代理,使用
loop/questionnaire.json並遵循loop/annotator.md來標註草稿和預設值。輸出:features.json。 - 報告。
python3 loop/consensus.py loop/questionnaire.json features.json D1,D2,D3 DRAFT TEXTS_DIR > report.txt給出 P1(草稿做了所有預設值都做的事,且偏向機器風格)、P2(按權重偏向機器風格)、Keep(偏向人類,不要丟失)、與預設值共享的 4-grams 以及開頭句子與它們的接近程度。 - 修訂。 一個全新代理根據報告和背景資訊,對草稿套用
loop/reviser.md。素材優先於權重:呈現該人物自己用語的句子即使被特徵標記也應保留。 - 停止:最多 2 輪,或當 P1 為空時停止。文字不得變長。
成本:約 6 到 8 次代理調用和 3 到 5 分鐘。僅有共識並非 slop:當背景資訊豐富時,每個預設值也可能有具體事件。一個標記需要兩者兼具:預設值達成一致,且該特徵偏向機器風格。有些一致只是文體本身(README 說明如何安裝);告訴修訂者容器是什麼。
步驟 3. 最後的潤飾
python3 lint/lint.py FILE --lang en(或 ru),然後閱讀 lint/en.md 或 lint/ru.md。只修正它標記的內容;此時不要重構。詞彙列表是最弱的訊號,也最快過時。
步驟 4. 輸出
提供給使用者:文字;修改了什麼及原因,用幾行說明;仍然可見的開放式問題和缺口。當使用了背景資訊時,提供「行文 ← 來源」的對應表。絕不編輯使用者的原始檔案;草稿寫在它們旁邊。
步驟 5. 學習
- 重要文字的盲測:
python3 tools/blind.py out.html key.json "標題" "副標題" name=path=label ...對同一份材料的多種處理結果進行排名,不可並列,句子標記(slop / alive)。至少比較兩段;短片段無法區分。 - 標記成為權重。 將使用者的標記附加到
learn/marks.jsonl,並加上來自learn/patterns.md的模式標籤,然後執行python3 learn/update_weights.py。它會顯示哪些模式已穩定,以及哪些問卷權重與它們不一致;編輯loop/questionnaire.json來匹配。一個被標記為 slop 兩次且從未被標記為 alive 的新模式會成為一個新特徵。 - 拒絕比讚美教得更多。 當使用者編輯你的文字時,進行 diff:他們刪除的內容也是一種標記。
不該做的事(每一項都測試過)
- 朝著文體方向打磨(「讓它更專業」):履歷用語和孤獨英雄會回來,事件也會被扭曲。
- 從好的素材一次生成:模型會將聲音溶解到平均值中並丟失觀點。
- 刻意表現隨意:作為結構寫出的笑話(「玩笑的答案是……;真正的答案是……」)、「增加個性」的改寫。這是人們能識別出的人性化簽名。
- 從舊筆記而非從該人物當下獲取觀點。筆記說了一回事;該人物說了另一回事。
- 追求罕見詞彙。活的文字在詞彙上很普通;罕見的是其中的決策。
- 機智的轉折,即使是該人物自己的(「像工程師一樣和工程師說話」、「……然後團隊把票轉給另一個人」)。
- 關於文字本身的文字(「先說 X,因為你明確要求了」)。
其他方法的適用場景
ne-slop(父技能,適用於任何創意工作):步驟 1 是其針對文字的部分。真實素材、許多明確的小決策、數個不同的變體,由人選擇,拒絕被記住,檢視結果。- StoryScope:步驟 2 背後的理論以及問卷權重的種子。
- unslop:可移植性測試(這個句子是否適合另一個人或公司?)及其防止虛構事實的護欄屬於步驟 1 和 3;其詞彙列表提供給 lint。
- humanizer:其模式列表提供給 lint。刻意排除其帶有「個性與靈魂」的改寫。