Community写作与编辑github.com

ne-slop-text

编写或修改文本,使其读起来像真人写的,而非互联网平均水平的产物。适用于信件、求职信、简历、个人简介、帖子、README、视频脚本等场景。

ne-slop-text 是什么?

ne-slop-text 是一项旨在消除 AI 文本“平庸感”(slop)的技能。其核心理念是,AI 平庸并非源于词汇,而是源于决策(如讲述什么、谁推动事件、如何结尾等)。该技能基于 StoryScope 理论(COLM 2026),通过哲学审题、循环偏离默认模型、最后表面润色这三步流程,将文本从 AI 的默认风格推向人类特有的表达。技能支持短文本(约 120 词内)和完整文本两种模式,完整模式会运行一个消耗约 6-8 次智能体调用、耗时 3-5 分钟的循环,通过共识报告和盲测不断优化。该技能适用于 Claude Code、Cursor 等 AI 编码助手,可在任何语言下使用,由用户提供任务或源文本触发。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/boris-timofeenko/ne-slop-text/tree/HEAD

Installed? Explore more 写作与编辑 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

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. 素材优先。 找到只有此人拥有的东西:一个具体片段;他们持有的一个观点;推动事件、而非他们自己的力量(某人推动、某物被继承、某物失败);一个保留或限制;他们自己的措辞。同一体裁的旧文本(以往的简历和信件)提供事实,而非语气。
  2. 缺失的素材。 如果文本很重要,问 1 到 3 个简短问题;语音回答最佳,保留转录作为素材。提出不暗示答案的开放问题:“实际是怎么发生的”、“有没有一个案例”、“你对 X 有什么看法”、“你还不能做什么”。如果你无法提问,则使用可验证的具体细节(姓名、数字、来源)并让空白可见。永远不要用平均值填补空白。
  3. 读者及其编码。 他们实际上要求了什么?他们使用什么词汇和玩笑?用他们自己的话来回答是鲜活的,当它指向一个点时(“您的招聘启事要求公正,所以我不会声称自己是最好:我还没见过其他候选人”)。将他们的词用作标签或标题则是平庸。
  4. 贴近素材呈现。 此人的思考顺序、他们的保留(“可能”、“总的来说”)、字面而非习语的翻译、第一人称加简短动词:“我领导 3 名 QA 工程师并签署发布”被评为鲜活;“领导一个 3 人 QA 工程师团队并拥有发布签署权”被评为平庸。
  5. 体裁存在于容器中(格式、长度、问候语、必填字段),而非每个句子中。列表放在该放的地方(技能部分、表格、附带的简历);一个句子承载一个片段或一个机制。
  6. 怀疑轻易出现的想法。 如果一个句子未经决策就出现,它很可能是平均值。

步骤 2. 循环:偏离默认(完整模式)

  1. 默认值。 生成 3 个全新的智能体,分别使用不同模型(例如 opus、sonnet、haiku)。为每个智能体提供相同的任务和上下文,使用 loop/default_prompt.md。它们不得看到本技能、草稿或彼此。
  2. 注释。 再生成一个全新的智能体,使用与写作者不同的模型,用 loop/questionnaire.json 注释草稿和默认输出,遵循 loop/annotator.md。输出:features.json。
  3. 报告。 python3 loop/consensus.py loop/questionnaire.json features.json D1,D2,D3 DRAFT TEXTS_DIR > report.txt 给出 P1(草稿做了每个默认都做的事,并且偏向机器化)、P2(按权重偏向机器化)、保留(偏向人类,不要丢失)、与默认共享的 4-gram 以及开头句子与默认的接近程度。
  4. 修订。 一个全新的智能体应用 loop/reviser.md 对草稿、报告和上下文进行处理。素材胜过权重:渲染了此人自己话的句子即使被特征标记也保留。
  5. 停止,最多 2 轮,或当 P1 为空时停止。文本不得变长。

成本:大约 6 到 8 次智能体调用,3 到 5 分钟。共识本身不是平庸:当上下文丰富时,每个默认也有具体片段。一个标记需要两者:默认一致,且特征偏向机器化。某些一致性只是体裁使然(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 ... 同一素材的多个处理版本,无并列排名,句子标记(平庸/鲜活)。至少比较两段;短片段无法区分。
  • 标记变成权重。 将用户的标记追加到 learn/marks.jsonl,并带上来自 learn/patterns.md 的模式标签,然后运行 python3 learn/update_weights.py。它会显示哪些模式已稳定,哪些问卷权重与其不一致;编辑 loop/questionnaire.json 以匹配。一个新模式被标记为平庸两次且从未标记为鲜活,则成为新特征。
  • 拒绝比表扬教得更多。 当用户编辑你的文本时,对比差异:他们删除的内容也是标记。

不该做什么(每项都经过测试)

  • 向体裁抛光(“让它更专业”):简历用语和独行英雄会回来,片段会被破坏。
  • 从好素材一次生成:模型会将声音溶解为平均值并丢弃观点。
  • 假装随意:以结构形式写的玩笑(“玩笑答案是……;真正的答案是……”),“添加个性”的重写。这是人们能识别的拟人化标记。
  • 从旧便签而非本人那里获取观点。便签说一件事;本人说另一件事。
  • 追求罕见词汇。鲜活的文本在词汇上很普通;其罕见之处在于决策。
  • 聪明的转折,即使是本人自己的(“像工程师一样对工程师说话”、“……团队把票子传给一个人”)。
  • 关于文本本身的文本(“X 优先,既然你明确要求了”)。

其他方法的适用处

  • ne-slop(父级技能,适用于任何创造性工作):步骤 1 是其针对文本的部分。真实的素材、许多小且明确的决策、几个不同的变体、由人选择、拒绝被记住、审视结果。
  • StoryScope:步骤 2 的理论和问卷权重的种子。
  • unslop:可移植性测试(这个句子是否适合另一个人或公司?)及其防止编造事实的护栏适用于步骤 1 和 3;其词汇列表服务于润色。
  • humanizer:其模式列表服务于润色。其带有“个性和灵魂”的重写被故意排除在外。

相关技能