跳过主要内容
返回插件列表
D

dsh-humanizer

deep-ios/dsh-humanizer

中文文本人味化 bundle 插件:强制深层改写工作流(十维叙事审计 + 功能路径 + 15 层分布)+ 内容忠实守卫。编辑辅助,非 AI 检测器。

安装

dsh plugin --profile web add github:deep-ios/dsh-humanizer

README

dsh-humanizer

CI npm

你让模型写了一段中文。读起来很顺,但总觉得哪里不对。dsh-humanizer 是 DeepSeek Harness 的一个插件,管的就是这个"哪里不对"。

它不做词表替换。它给模型一套诊断和改写流程:从叙事结构、语言层次到三轮改写,每一层都有对应的检查方法,每一步都有程序守门。改完的东西,读者看不出是模型写的,内容也没有跑偏。

它不是 AI 检测器。

问题在哪

生成模型写中文,句子可能各不相同,底下的决策却是重复的:怎么开头、怎么举例、怎么收尾、情绪用什么承载、论证走哪条路。重复的次数多了,读者就感觉到了。这种感觉就是"AI 味"。

换词碰不到这一层。把"此外"换成"另外",把"值得注意的是"删掉,模型会在同一个分布里挑出下一批词,路径没变,机器腔还是机器腔。

要改的是路径,不是词。

它改出来的东西长什么样

一段"AI 味"的中文,常见是这样:

夜深了,他独自坐在窗前,望着窗外的城市,心中充满了复杂的情绪。他想起这些年的经历,那些曾经的梦想,如今都已渐行渐远。他不禁感到一丝惆怅,但同时也明白,人生就是这样,总要学会告别。窗外的风轻轻吹过,仿佛也在叹息。他暗暗下定决心,明天,一定要重新开始。

经过这套工作流改完,可能是这样:

烟灰缸里已经堆了三根。他把第四根按灭,又拉开抽屉,里面是那叠没写完的信,最上面一张写着日期,三天前的。

他合上抽屉,没有锁。窗外的城市还亮着,和他没什么关系。

天亮的时候,他出门前把信带上了。

两个版本的事实一样:一个人在夜里想起过去,做了个决定。改动发生在决策层:

原版改版改了什么
"心中充满了复杂的情绪""他不禁感到一丝惆怅"烟灰缸、三根烟头、没写完的信、三天前的日期情绪由物件和行为承载,不再由旁白命名(心理代理→物件自证)
"窗外的风轻轻吹过,仿佛也在叹息""窗外的城市还亮着,和他没什么关系"环境不再映照心理,保持冷漠(环境映心→环境本身)
"人生就是这样,总要学会告别""和他没什么关系"主题升华换成局部判断,不给读者上课(升华→判断有代价)
"他暗暗下定决心,明天,一定要重新开始""他出门前把信带上了"决心宣言换成动作选择,让结果自己说话(宣言→动作落点)

这个对比是这套工作流的全部追求:句子换了,事实没丢,情绪还在,但读者不再觉得背后是台机器。

怎么改

分两半。

模型做人味。十维叙事审计、十五层语言分析、功能路径诊断、三轮改写、三重审核,这些都是模型的判断。判断依赖语境:这个排比在这里有没有用,这个心理动词要不要换成动作,程序答不了。

程序守内容。三个工具,只做确定性的事:分布画像、内容忠实守卫、工件质量门禁。程序不判断像不像人,只核对数字还在不在、格子填没填。

程序为什么这么少?程序规则是固定规则,规则越多越僵化。把"逐项判断"写成正则,得到的是一台机械替换机,恰好是这套方法最反对的。

十条铁律

这些不是建议,是底线。违反任何一条,这一次作废重来。

  1. 禁止略读。每个工件逐格填,每格引用原文。不许用"已检查""无异常"填空。
  2. 禁止概括。不写"整体偏 AI 味"这种总评,要落到某一章、某一层、某一句话。
  3. 禁止打卡式。改写要逐条引用工件的某一行,复核要真的调 humanize_validate_artifact。
  4. 禁止"是/否"式判断。写不出原因,等于没判断。
  5. 禁止英文思考。思考、字段、标签、理由一律中文,原文术语除外。
  6. 禁止跳章。诊断有固定顺序,缺一章不准进改写。
  7. 禁止整体化判断。十五层一层层过,十维一维维过,不许合成一个判断。
  8. 禁止配额化。这是最重要的一条:把任何手法做成每章配额,配额就是新指纹。
  9. 禁止一次做完。一次一步,做完报"第 N 步完成,下一步第 N+1 步"。

十步

每一步只产出一个工件,过 humanize_validate_artifact 门禁才进下一步。一次做完等于偷工减料。

做什么产出
0接单卡:任务边界 + 内部基线 + 执行表字段§06.1/6.2、§11接单卡
1十维叙事设计,逐维审计(论证文本改走 §08)§09、§08工件 A
2功能路径图:八类路径逐形态§05工件 B
3十五层语言分析:逐细分项 + 句式使用率,不压缩层级§04工件 C
4认识与来源图§06.4工件 D
5问题清单:合并 A/B/C/D§06.6问题清单
6改写轮一:只改材料/叙事/论证工件 A 到 D修改记录
7改写轮二:只改信息焦点/照应/句法工件 A 到 D修改记录
8改写轮三:只改词汇/搭配/虚词工件 A 到 D修改记录
9复核§15/§17/§13/§18复核报告
10交付改写稿 + 全部工件

三轮改写的顺序不能颠倒:先动材料和叙事,再动信息组织和句法,最后动词汇。顺序反了,改出来的是"看着自然、分布依旧"。

方法论

为什么这样设计、与其他同目标产品的区别、每一条论断背后的研究依据,先读 docs/WHY.md。方法正文在 references/,随包分发 19 章,每章回答一个问题,模型执行到哪一步读哪一章。

它回答什么
01 体系目标与边界这件事同时追求五个目标,也有六件事承诺不了
02 人类作者感什么让文本背后"有个人",而不是一台无位置的说明装置
03 复杂度模型复杂度不等于更像人,每一种复杂度都要来自真实需求
04 十五层语言分析从语素构词到篇章话语,十五层一层层过
05 功能路径诊断表面不同的句子,底下可能是同一条功能路径
06 完整诊断流程任务边界、内部基线、篇章任务图、认识来源图、修复尺度
07 改写决策与候选十步决策顺序,候选要来自不同组织来源
08 文章类方法论证文本专用:论证图、三段式、模板表达、专业文章保护
09 十维叙事审计小说的十个维度,加三十项核心信号
10 三重审核与原理层自检读者盲审、编辑盲审、最小差异对照、留出测试
11 执行表五张可直接填写的表,强制逐格填
12 执行提示全文可以直接交给模型的完整提示
13 禁止与回退十二类禁止逐条讲清原理与误判;回退触发条件与操作规程
14 检测原理七类检测信号,以及为什么表层换词绕不过它们
15 完成判据十三条,全部满足才算完成
16 问题对照库十六类常见问题的证据、误判和处理
17 复核清单字词、句法、信息、段落、全文五级复核
18 实战迭代经验章节任务四类轮换、七类高危模式、脚本核验清单

安装

一行命令,两种途径任选:

# npm 源(推荐)
dsh plugin --profile web add dsh-humanizer

# Git 源(从 GitHub 拉取,始终最新)
dsh plugin --profile web add "github:DEEP-IOS/dsh-humanizer"

装完重启 web。bundle 层栈在 boot 时合成,Node half 改动需要重启才生效。

使用

对模型说「用 humanizer 处理这段文本」。工作流常驻 system prompt,模型按十步执行,用 humanize_reference 读方法论章节。

工具作用
humanize_profile(text)分布画像:全文与逐段的句长、短长句占比、连词密度、§18 特征字计数、内容锚点
humanize_guard(original, rewritten)内容忠实守卫:锚点保真 + 禁止条件扫描
humanize_validate_artifact(artifact, source)工件门禁:拒占位空话、空数组、假证据、短判断
humanize_reference(name)读取 references/ 章节全文或小节(如 04#4.7

命令行冒烟:

node scripts/guard-humanizer.mjs profile ./文本.md
node scripts/guard-humanizer.mjs guard ./原文.md ./改写稿.md

边界

不是 AI 检测器。不输出概率,不识别作者,不要求把文本提交给任何外部检测。不承诺任何检测器给出某个分数。目标只是让文本经得起读者和编辑的眼睛。

开发

pnpm test

确定性层(lib/guard.mjslib/reference.mjs)零依赖。测试用 Node 内置的 node:test

命名

与 dsh-humanize(RLCR 编码工作流)不是同一个项目。本插件处理的是文本。

License

MIT

相关插件