说人话
把机器写的中文,改成人写的中文;也帮你从零写出不像机器写的长文。
核心立场
AI 味的本质不是"用词不当",而是内容不够、靠句式撑场面。
所以改写的第一动作永远是删,不是换。先删掉 15%-30% 的空词,
再谈润色。删完如果句子还站不住,说明原文本身没有信息——这时要向用户指出,
而不是靠修辞把它糊起来。
"严谨"不等于"AI 味"。论文该严谨,但不该有"综上所述"式的空转复述;
学术规范和机器腔是两回事,别把书面语当 AI 味一起清掉。
何时使用
改写类
- 用户递来一段 AI 生成的文字,要求"说人话""去 AI 味""改自然点"
- 需要检测一段文本是否由 AI 生成、AI 味有多重
- 需要把书面语改写成口语(口播稿、短视频脚本、社群文案)
- 需要给长句瘦身、调整段落节奏、提升可读性
生成类
- 写文章:博客、资讯、评论
- 写论文:摘要、关键词、引言、论证正文、结论、参考文献
- 写小说:世界观设定、人物塑造、情节推进、对话
- 其他长文本,需要控制篇幅、结构、语气
不适用:纯英文文本、代码、诗歌(诗歌的非常规句法是艺术手法而非 AI 味)。
模式路由
接手任务先判断是哪一类,走不同流程:
用户给了现成的文字,要改 → 改写模式(下面「工作流程」五步)
用户给了主题,要你从零写 → 生成模式(见「生成模式」一节)
用户给了一段文字说"扩写" → 生成模式,原文作为素材
用户说"检测一下" → 只跑体检,进改写模式第 2 步后停下
两种模式共用同一套质量标准:写完/改完都要过 AI 味体检。
生成物尤其容易带 AI 味——从零写没有原文约束,很容易一路滑进套路句式,
所以生成不是终点,生成 + 体检才是完整流程。
怎么把文字交给它
这是最容易卡住的一步,按下面的顺序判断,不要让用户自己去猜。
判断流程
用户给的是文件(有路径) → 直接传路径
用户粘贴了一大段文字 → 短(<300 字)用 --text;长(≥300 字)先落盘再传路径
用户说"帮我看看这篇文章"但没给内容 → 必须先问,不要凭空扫描
下面统一把脚本路径写成 SKILL,代表技能目录本身(即本 SKILL.md 所在目录)。
脚本都放在 SKILL/scripts/ 下,运行时展开成该目录的真实绝对路径即可。
必须用绝对路径。技能装在自己独立的目录下,运行时的工作目录通常不是技能目录,
写相对路径 scripts/ai_smell_scan.py 必然报"找不到这个文件"。
技能可装在任意位置(用户级、项目级或自定义目录),只要保持 scripts/、references/ 子目录结构不变,路径自动跟着走,无需写死安装位置。
方式 1 · 传文件路径(优先)
用户已经指定了工作区里的文件时用这个。
python "SKILL/ai_smell_scan.py" "文件路径"
方式 2 · --text 直接传文字
用户在对话里粘贴的短文本用这个,省去建临时文件的麻烦。
python ".../ai_smell_scan.py" --text "这里粘贴原文"
超过 300 字不要走这条路——命令行对引号、换行、特殊字符很敏感,容易传丢。
改用方式 3。
方式 3 · 先落盘再扫描(长文本)
- 把用户给的文字原样写入临时文件,例如工作区下的
tmp/shuorenhua_input.txt - 再按方式 1 传路径
- 报告也用
--out落到同目录,方便后面复扫对比 - 任务结束后删掉临时文件
python ".../ai_smell_scan.py" "输入.txt" --out "报告.md" --top 15
方式 4 · 管道(脚本内串联)
cat 文章.txt | python ".../ai_smell_scan.py" --stdin
超长文本(>3000 字)
整篇扫会让报告冗长、重点被稀释。按段落或章节切成 2-4 份分别扫描,
每份单独看指数,定位到最差的那一块再细改。
命令用不了时
python 命令不存在就换 python3;再不行用 WorkBuddy 托管的 Python 绝对路径。
脚本只依赖标准库,不需要装任何东西。
生成模式
从零写长文。通用机制(字数控制、分段生成、设定卡、一致性校验)见
references/longform-workflow.md,各文体写法见对应分册。
开工前四问
用户通常只说"帮我写一篇 X"。缺的信息按默认值补,不要连珠炮反问,
最多问一次:
| 参数 | 默认值 |
|---|---|
| 主题 | 唯一必须确认的,没有就停下来问 |
| 目标受众 | 对该话题感兴趣的普通读者 |
| 篇幅字数 | 文章 1500 字 | 论文 3000 字 | 小说 2000 字 |
| 风格语气 | 文章:自然口语 | 论文:严谨书面 | 小说:叙事白描 |
执行
1. 先分配字数
python "SKILL/text_stats.py" --plan article --target 1500
--plan 可填 article / paper / fiction。
2. 长文分段写。超过 2000 字不要一次生成,否则后半段质量必然崩:
出大纲(章节 + 每节要点 + 字数)→ 给用户确认 → 分节写作 → 拼接通读 → 体检核算
大纲是唯一强制确认点,必须让用户过目。
3. 写小说先建卡。世界观卡 + 人物卡(字段见 longform 第五节),
每写一段前对照人物卡的"绝不会做的事"一栏。没有卡,长篇必崩一致性。
收尾(必做)
python "SKILL/ai_smell_scan.py" 成稿.md --genre paper --top 15
python "SKILL/text_stats.py" 成稿.md --target 1500 --sections
| 文体 | 扫描参数 | 指数目标 |
|---|---|---|
| 小说叙事 | --genre fiction |
< 20 |
| 文章(博客/评论) | --genre article |
< 25 |
| 论文 | --genre paper |
< 30 |
| 资讯稿 / 技术文档 | --genre tech |
< 35 |
字数达标率 ±10% 内即可交付;偏差超 30% 先问用户是改目标还是改范围。
红线
- 论文严禁编造引用、数据、实验结果。没给文献就用占位符
[待补充:XX 领域实证研究],交付时逐条列出待核实项。 - 不许为了凑字数注水。重复表述、堆形容词,读者一眼看穿。
- 生成模式同样遵守"先删后改":越改越长说明方向错了。
工作流程
> 下面是改写模式的五步流程,与上一版完全一致。
第 1 步 · 拿原文,定档位
动手前确认两件事,信息不足时按默认值执行,不要反问用户:
- 说话人是谁(专家 / 朋友 / 编辑 / 客服 / narrator)——决定口吻
- 口语度档位——默认「自然口语」
| 档位 | 适用 | 做法 |
|---|---|---|
| 轻度润色 | 技术文档、报告、论文 | 只删冗余、拆长句,不动术语,不加口语词 |
| 自然口语(默认) | 公众号、博客、邮件、说明文 | 换大词、调节奏、适度用"你"和问句 |
| 强口语 | 口播稿、短视频脚本、小说对白 | 短句为主,口语连接词,允许不完整句 |
第 2 步 · 机器体检
按上一节选好输入方式后执行扫描:
python "SKILL/ai_smell_scan.py" "输入.txt" --genre paper --top 15
脚本输出:AI 味指数(0-100)、节奏硬指标、词条命中清单、句式模板、
排比三连、重点嫌疑句 Top N。先把报告给用户看,再动手改。
一定要带 --genre
不同文体的判定标准不同,扫错了文体就会误报。实测:
一篇用了 GPT-4、Transformer、BERT 的正常论文段落,按通用模式扫是 31 分("英文夹生"误报 10 次),
加 --genre paper 后 15 分。
| 参数值 | 适用 | 差异 |
|---|---|---|
general |
默认,不确定时用 | — |
article |
博客、资讯、评论 | 句长阈值收紧 |
paper |
论文 | 豁免"英文夹生"(术语要保留);放宽长句阈值 |
tech |
技术文档 | 豁免"英文夹生" |
fiction |
小说 | 剔除引号内对白只扫叙事;豁免"引号金句" |
小说那一项尤其重要:对白本就口语,混在一起会把叙事部分的问题稀释掉。
实测一段塞了严重 AI 味叙事的小说,整体扫只有 22 分(判为"像人写的"),
加 --genre fiction 后升到 30 分并精准定位到那两段烂叙事。
python "SKILL/ai_smell_scan.py" "小说.md" --genre fiction --top 10
脚本报错时已经自带人话说明,直接照着「怎么办」那一行处理即可,
不要把原始报错甩给用户,参见文末「报错对照表」。
指数参考:≥70 重度(通篇重写)|50-69 中度(重点段落动刀)|
30-49 轻度(局部润色)|<30 微调即可。
第 3 步 · 人工判读(机检查不出的部分)
读 references/ai-tells.md,逐项人工判断:
- 逻辑是否成立、事实是否准确
- 是不是"正确的废话"(说了等于没说)
- 口吻是否统一,说话人是否清晰
- 信息密度是否过低
- 语义层是否空飘(缺锚点 / 无立场 / 占位例子),见
ai-tells.md六、rewrite-playbook.md三 - 叙事文是否触犯文风五律(句长匀速 / 抽象标签 / 五感缺失 / 对白完整 / 逻辑过满),见
ai-tells.md七、writing-fiction.md五 - 语境是否得体
机检只是指路牌,最终判断必须由通读后做出。
第 4 步 · 改写
按 references/rewrite-playbook.md 的五步法执行:
拆骨架 → 砍空词 → 换词 → 调句 → 加人味。
三条铁律:
- 信息守恒:不增删事实、数据、论点。只换说法、调结构、改节奏。
- 不虚构人味:不许编造个人经历、情绪、场景细节来"显得像人写的"。
- 口吻统一:整篇一个说话人,不能一会儿端着一会儿贫。
改完用 playbook 里的「改写后自检清单(18 项)」逐条过。
第 5 步 · 复扫对比
改写稿写回文件,重跑扫描脚本,对比 AI 味指数是否下降。
目标:轻度润色降至 30 以下,自然口语 / 强口语降至 25 以下。
指数是辅助指标,不是目的。为了降分而损伤原意时,以原意为先。
输出模式
按用户需要选择,用户没说就用模式 B:
| 模式 | 输出 | 适用 |
|---|---|---|
| A · 只体检 | 体检报告 + 问题清单,不改原文 | 用户只想看看哪有问题 |
| B · 全文改写(默认) | 体检摘要 + 完整改写稿 | 最常见需求 |
| C · 逐段对照 | 原文 / 改后逐段并列,附改动理由 | 用户想对照学习或需逐条确认 |
| D · 只改嫌疑句 | 只输出 Top N 嫌疑句的改写,其余不动 | 原文整体还行,局部有病 |
模式 C 的改动理由要写到症状名,例如"删空转过渡 + 拆长句",
不要写"优化表达"这类空话。
资源
| 文件 | 用途 |
|---|---|
scripts/ai_smell_scan.py |
AI 味扫描器,输出 AI 味指数与嫌疑句。三种输入(文件 / --text / --stdin);--genre general/article/paper/tech/fiction 按文体调整判定标准(小说剔除对白、论文与技术文档豁免英文术语);支持 --json、--out、--top;报错全为中文人话 |
scripts/text_stats.py |
长文字数统计与分节核算。支持 --target(差值与达标率)、--sections(分节字数表)、--plan article/paper/fiction(篇幅分配建议) |
references/ai-tells.md |
症状清单:十大症状、词条黑名单与替换表、句式模板、结构套路、分文体尺度 |
references/rewrite-playbook.md |
改写手法:五步法、语义层去味、30+ 正反例对照、长短句手册、口语度三档、自检 18 项、禁区 |
references/longform-workflow.md |
生成模式总纲:开工四问、字数控制、分段生成、设定卡、回环体检、一致性清单 |
references/writing-articles.md |
文章分册:博客/资讯/评论三种类型的标题、导语、分节、结论写法与差异 |
references/writing-papers.md |
论文分册:摘要四要素、关键词、引言、论证正文、结论、GB/T 7714 参考文献、禁编造引用红线 |
references/writing-fiction.md |
小说分册:世界观渗透、人物两根支柱、因果链情节、对话区分度、一致性三道防线、文风去味五律(长短句/抽象→动作/五感/对白重构/逻辑留白) |
assets/demo_ai_text.txt |
典型 AI 味样本,可测试脚本或演示效果 |
脚本仅依赖 Python 标准库,自动识别 UTF-8 / GBK / UTF-16 编码。
报错对照表
脚本的报错已经是人话,这里说明每一条背后的原因和处理方式。
遇到脚本报错,照着「怎么办」处理,不要原样转述给用户,更不要让用户去看 traceback。
| 提示 | 原因 | 怎么办 |
|---|---|---|
| 找不到这个文件 | 路径写错,或工作目录不对 | 用绝对路径;路径含空格/中文时用英文双引号包起来 |
| 这是个文件夹,不是文件 | 传了目录 | 指向具体的 .txt / .md 文件 |
| 这个文件是空的 | 文件 0 字节 | 确认是不是存错文件了 |
| 这个文件看着不是纯文本 | 传了 Word / PDF / 图片 | 先把文字复制出来存成 .txt |
| 这个文件太大了 | 超过 8 MB | 截取需要改的部分,或分段检测 |
| 读不了这个文件 | 被别的程序占用 / 权限不足 | 关掉占用程序,或复制一份到别处 |
| 没告诉我要检测哪段文字 | 三个输入通道都没给 | 见「怎么把文字交给它」 |
| 命令写得不对 | 参数写错 | 见该节的正确写法示例 |
| 只找到 N 个中文字符 | 中文太少(<20) | 不是错误,只是提醒;本工具针对中文设计 |
| 扫描没跑完,脚本内部出错了 | 脚本 bug | 把报错行报给开发者,不要为难用户 |
| 没告诉我统计哪个文件 | text_stats.py 没给输入 |
给文件路径,或改用 --plan 只看规划 |
| 不认识的文体 | --genre 或 --plan 的值写错 |
ai_smell_scan.py 支持 general / article / paper / tech / fiction;text_stats.py 只支持 article / paper / fiction |
退出码:0 正常 | 1 输入/用法问题 | 2 文件读不到 | 3 报告写不进去 | 99 脚本内部错误。
常见坑
- 别用相对路径调脚本。技能装在独立的技能目录下,运行时的工作目录
通常不是技能目录,相对路径必然报"找不到这个文件"。一律用绝对路径。 - 别靠加"啊、呢、吧、啦"制造口语感——最低级的伪装,越加越假。
- 别统一改掉所有书面语——正式场合需要庄重,看文体定档。
- 别强行拆必要的长句——法律条文、技术定义、严密论证的长句是合理的。
- 别动专有名词、术语、代码、数据、人名、地名。
- 改后字数通常应更少。变多说明在注水,回去重砍。
生成模式专属
- 别把"严谨"当 AI 味清掉。论文的术语、限定条件、逻辑连接词是必要的。
要清的是空转过渡和炫技大词,不是书面语本身。 - 别一次生成 2000 字以上。必然前详后略、后半段崩。走分段流程。
- 别编造参考文献和数据。这是论文写作里最严重的事故,见论文分册红线。
- 别为了降 AI 味指数删掉论文的结论段。结论是论文结构的必要部分。
但结论里写"综上所述"仍会被抓——这是对的,论文也不该这么开头。 - 别不带
--genre就扫。论文会被英文术语误伤,小说会被对白稀释,见第 2 步。 - 别让所有人物说一样的话。写小说先定好每个人的句式长短和用词层次。
- 别写完就交。生成物必须回环体检,这是本技能区别于普通写作的关键一步。