xmutfyh/dsh-plugin-writing-guard8

dsh-plugin-writing-guard

Deterministic manuscript integrity guard for AI-assisted academic revision 鈥?protects scientific facts, claim strength (causal & evidential axes), negation, null findings, scope, citations and author style during polishing, while flagging mechanical AI writing (Scholarship Lock + Epistemic Lock; writing_audit / writing_rules / writing_style_profile; local, zero network, zero LLM)

AI 分析

核心用途是在 AI 润色论文时,强制锁定并保护数字、引用、否定词及科学主张强度不被篡改,并检查 AI 腔。适合撰写 SCI 或毕业论文的科研人员。

パッケージ
dsh-plugin-writing-guard
バージョン
1.3.0
ライセンス
MIT
最終更新
2026/08/16

インストール

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:xmutfyh/dsh-plugin-writing-guard

ドキュメント

README 全文を読む ↗

DSH Writing Guard

Awesome DSH Plugin CI

DeepSeek Harness (DSH) 论文写作守卫:在论文撰写和修改过程中自动检查常见 AI 写作风格、 修改残留、防御性表达与机械化句式,并在润色时保护科研事实与科学主张完整性 (Scholarship Lock + Epistemic Lock——数字、引用、主张强度、否定/零结果、scope 边界都不许被语言修改悄悄改变)。

适用于:中文论文、英文论文、SCI manuscript、毕业论文、学术写作与论文润色。

如果你正在寻找:

  • DSH 论文去 AI 味插件
  • DeepSeek Harness 学术写作插件
  • AI writing style checker for academic papers
  • academic writing guard / manuscript proofreading
  • 论文 AI 痕迹检查
  • SCI 写作 AI 味检查

这个插件的定位不是在论文写完之后进行一次"大规模 Humanize",而是:

写作前提供规则 → 写作过程中自动守卫 → 修改后自动审计。

它提供三个 DSH 原生工具:

  • writing_rules:写作前加载学术写作纪律
  • writing_audit:检查论文中的 AI-style patterns、revision residue、defensive writing、LLM 高频表达及结构化写作痕迹;v0.6 起支持 Scholarship Lock(传 original 对比润色前后科研事实)与作者风格档案(styleProfile);v0.8 起自动路径直接启用双锁(见下)
  • writing_style_profile:从作者历史论文统计写作风格指标(句长/密度),零 LLM

并支持在 .md / .tex / .txt 论文文件被 write / edit 修改后自动执行审计(v0.5 增量模式), 将高风险问题反馈给 Agent。v0.8 起自动审计自动捕获修改前的文本tools/pre-execute 快照 + 持久化基线缓存),每次写入后直接运行 Scholarship Lock + Epistemic Lock——不需要手动传 original

定位:不是 "AI 检测器",而是一个知道自己在检查什么文档、能解释"为什么报"的写作 linter。 所有规则为本地正则/统计,零网络、零 LLM 调用,毫秒级返回。

Why Writing Guard instead of a Humanizer?

Writing GuardHumanizerAI Detector
写作前规则
写作过程中检查通常 ❌
自动监听论文修改
整段重写
风格问题定位(可解释)部分部分
revision residue 检测不一定
defensive writing 检测不一定
本地规则检查(零网络零 LLM)通常需 LLM视工具而定

Writing Guard is complementary to Humanizers, not a replacement for them.

大多数 Humanizer 的工作流是:AI draft → rewrite → humanized version Writing Guard 的工作流是:rules → writing → automatic audit → targeted revision

Humanizer 是写完再改,Writing Guard 是边写边防。

去 AI 味(说明边界)

"去 AI 味"在本项目中指识别和减少机械化、模板化、过度结构化的 LLM 写作风格, 目标是改善论文表达质量,而非保证规避任何 AI 检测系统。

安装

# 从 npm 安装(已发布,推荐)
dsh plugin --profile web add dsh-plugin-writing-guard

# 从 GitHub 安装(lib/ 已提交,无需构建)
dsh plugin --profile web add github:xmutfyh/dsh-plugin-writing-guard

# 或直接从 GitHub tarball 安装
dsh plugin --profile web add https://github.com/xmutfyh/dsh-plugin-writing-guard/archive/refs/heads/master.tar.gz

# 或从本地源码目录安装
dsh plugin --profile web add ./path/to/dsh-plugin-writing-guard

# 重启生效
dsh web

仓库:https://github.com/xmutfyh/dsh-plugin-writing-guard

文档类型感知(document profiles,v0.3)

同一段文字在不同文档里含义不同。插件按文档类型应用规则:

profile说明例:as requested by the reviewer
manuscript论文正文🔴 修改过程残留,报警
rebuttal逐条回复信✅ 正常表述,不报警
cover_letter投稿信🔴 残留,报警
review / notes / unknown其他保守处理

writing_audit 可通过 profile 参数指定,或从文件路径自动检测(rebuttal/cover_letter/manuscript 关键词)。

解决的问题

基于审稿人分享的 AI 写作识别清单(破折号铺天盖地、"它不是X而是Y"、绝对化定义、冒号滥用) 与"扬长避短/发布会原则"提示词,以及网络研究(Kobak et al., Science Advances 2025,>1500 万 biomedical abstracts 词频统计;社区词表 delve/tapestry/testament/leverage 等),自动检测:

类别典型问题
修改过程残留"revised model"、"as requested"、"we have updated"、"本轮/投稿前/审稿人要求"
主张校准"we do not claim"、"本文并非要证明"、自我削弱词;研究局限性正当陈述不报警(ICMJE 要求)
修辞模式"不是X而是Y"/"not X but Y"、rather than 滥用、绝对化定义、三连排比、重复绕圈、多重"的"字链(v0.7)
LLM 关联词delve/tapestry/testament/leverage/harness 等(密度规则,单次出现不报警);空洞热词密度(v0.7:robust/crucial/机制/耦合/范式,高门槛防误伤术语)
学术文体we believe/think、模糊词、抽象副词;"significantly" 仅提示复核统计语境;平均句长(v0.7:英 ≤18 词/中 ≤25 字)
格式破折号密度(范围连字符不算)、冒号标题、Unicode 数学符号(LaTeX 工作流)

v0.6 学术写作质量守卫

定位升级:从"AI 风格 Linter"到"在 Agent 修改学术论文时,持续保护科研事实、作者风格和写作质量"。全部依旧本地正则/统计,零网络零 LLM:

能力检测什么例子
Scholarship Lock 🔴润色/改写前后科研事实被改动:数字、百分数、p 值、置信区间、单位、\cite/\ref、Figure/Table 编号、DOI87.3% → 89.1% 直接 HIGH:语言润色不得改数字;恢复原值或显式确认
防御饱和(hedge 密度)may/might/could/possibly/potentially 密度 ≥5 次且 ≥300/千句——每个结论都附 caveat按句归一,讨论段正常 hedging 不误伤(ICMJE)
限定词堆叠一条 claim 套多层保险may potentially suggest → 只留一层
超长句 + 从句堆叠英文 >35 词且 ≥3 从句标记(which/that/while/because…);中文 >80 字且 ≥5 逗号且 ≥3 连接词一句话承载过多独立论点 → 拆句
重复绕圈同段句子 token 余弦相似 ≥0.72 且后句无新增证据(数字/引用/实体)同一观点换三种说法 → 删重复圈
作者风格档案writing_style_profile 学习作者历史论文;新稿件句长分布显著偏离时提示"当前句长中位数 38 vs 作者历史 22"
强主张缺证据prove/establish/confirm/guarantee 附近 ±120 字符无数字/统计量/图表引用提示补充证据锚点,非判定错误
连续句首连接词同一段连续 ≥3 句以 Moreover/Furthermore/Additionally 开头机械推进感
Unicode 数学符号LaTeX 正文中 ₁₂₃ ²³ α β × − 等字符建议改用数学模式

原则(来自 v0.6 设计评审):不针对具体模型写规则(GPT-5.6 风格、Opus 风格之类——模型会变,行为模式不会);有证据依据的 hedging 是正确的学术表达,本工具不是"反 hedge 工具"。

v0.7 机械感与自黑免责(ko5.6sol 借鉴)

借鉴社区技能 handsomeZR-netizen/ko5.6sol(KO GPT-5.6 SOL 机械措辞与防御性声明),在保留 "密度门控 + 领域安全"设计的前提下新增:

能力检测什么例子
多重"的"字链中文连续 ≥3 个"的"的修饰嵌套基于X的Y的Z的机制 → 拆成 2–3 个短句
平均句长全文均值超参考目标(英 >18 词 / 中 >25 字),按语言各报一次与 overlong-sentence 互补:抓整体均值而非单句极端
自黑免责套话 🔴"完全基于假数据/模型毫无意义/结果完全不可靠/不足为凭"改写为客观边界 + 未来方向;诚实 limitations 与模拟数据表述不误伤
空洞热词密度英 robust/crucial/exhibits/tailored/interplay/imperative(≥5 且 ≥1.0/千词);中 机制/支撑/动态/耦合/范式(≥10 且 ≥3.0/千字)术语用法(robust regression、"耦合机理")保留,高门槛防误伤
词表并入EN 过渡词 + consequently/thus/hence/accordingly/notably…;中文套话 + 进一步/由此可见/鉴于/毫无疑问…密度门槛不变(≥8 次),正常使用不受影响
writing_rules 新增章节「局限性与学术自信」:自黑改写公式 + 主张动词校准表(modelled ≠ observed;suggested 原则(v0.8):cue ≠ verdict——防御性措辞是候选不是判决;删除修辞性防御,但保护 scholarly

caution(scope 条件/证据状态/竞争解释/负面发现)。negative、null、矛盾结果是数据,不得删除。 许可:Epistemic Lock 的 claim-strength ladder 思想改编自 Yila-AI/sci-ssci-skills(Apache-2.0), candidate 判定模型借鉴 Evidence-Bound(MIT)——见 THIRD_PARTY.md。

v0.9 双轴主张模型 + 子句级多主张(0.8 复盘 8.3/10 的修复)

修复项内容
双轴模型单一 0–5 阶梯拆成 因果力(consistent with(0) 定位(v0.9):deterministic manuscript integrity guard——不是检测"AI 写得像不像人",

而是检测"AI 在帮科研人员改文字时,有没有悄悄改掉 science"。

v1.0 Evidence-Status Lock(Revision Integrity 模型收官)

科学承诺(scientific commitments)的确定性 delta 模型补全最后一块:证据状态

Scientific tokens          Scientific commitments
├─ number                  ├─ causal force
├─ statistic               ├─ evidential force
├─ citation                ├─ modality / hedge
├─ DOI                     ├─ negation
└─ figure/table            ├─ null finding
                          ├─ scope
                          └─ evidence status (v1.0)
              ↓ before → aligned claims → after
              ↓ deterministic delta
能力检测什么例子
证据状态守恒 🟠reported/observed/measured/implemented/estimated/simulated 等来源状态词消失或被替换participants reported improvementparticipants improved(报告→直接声称);observed rateestimated rate(状态替换)——都要求核验,不自动判错
完整性回归第 6 行报告尾部回归块新增"证据状态"行✓ 保持 / ⚠ 变化 N 处

至此双锁覆盖:数字、引用、主张因果力/证据力、hedge、否定/零结果、scope、证据状态—— Scholarship Lock = token multiset integrity;Epistemic Lock = semantic-marker multiset integrity(v0.9.2 评审架构落地)。

v1.1 claim-bound integrity(marker 绑定到主张)

1.0 评审(9.2/10)的核心升级:marker 不再对整句做"袋子"比较,而是绑定到所属子句

能力检测什么例子
claim-bound 守恒 🔴否定/零结果/scope/证据状态按子句配对比较(未配对子句全句兜底)——标记交换不再被句子级 multiset 掩盖X did not improve, but Y improvedX improved, but Y did not improve(两边都是 did not ×1,但结论交换了)✅
主语一致性配对配对加分:同一实体的主张优先配对X did not improveX improved 而非相似度更高的 Y did not improve
marker canonicalization大小写/英美拼写归一Observed→observedmodelled→modeled 不再误报
scope 新增事件 🟡引入边界 = 外部有效性可能被缩窄The treatment improves survivalIn this cohort, …
shows that 角色修复that-complement 恢复 epistemicFigure 4 shows that X increases survival → suggest 漂移可检出;Figure shows architecture 仍 descriptive
多轴 delta 单事件causal+evidential+hedge 同条保留delta:因果力 1→5,证据力 1→5,hedge 有→无
version-gap F1对齐率改 symmetric coveragebefore=100/after=10 全对齐不再误判 100% 可比
null/negation 去重重叠事件只报更具体的一条did not improve 只报零结果事件

测试 209 → 218 项。

v1.2 claim alignment credibility(配对可信度,1.1 评审 9.4/10)

能力检测什么例子
raw 阈值修复 🔴配对门槛看 raw cosine ≥0.3,主语奖励只参与排名The model predicts mortality vs The model was initialized…(同主语但词面不似)不再被绑成同一 claim
nullResultAdded 独立零结果新增独立事件 + removed/added 双向去重Z improvedZ did not improve 只报更具体的零结果事件
scope 前缀附着In this cohort/Under these conditions/在本实验中 不单独成 span,附着到后续 claimscope markers 归属真正的 claim
fragment-aware 切分相对从句(which was trained…)与无主语谓语片段(achieved higher accuracy)并入主句span 更接近真实 claim
alignment-uncertain 🟡含受保护 markers 的未配对子句不再退化回整句袋子比较——生成 review candidate没有可靠 claim identity 时不假定 commitments 被保留
短文档位置兜底≤3 句且零对齐时位置即身份,marker 守恒按位置跑Z improvedZ did not improve(sim≈0.35)不再漏报;version-gap 判定用低阈值对齐

测试 218 → 225 项。

v1.2.1 Scholarship Lock hit 补全 + 精度修复(1.2 评审 9.3/10 的 P0/P1)

能力修复
Scholarship Lock 全覆盖 🔴lockTypesnumber/doi;新增 diff.added hit 循环(凭空引入数字/引用/DOI/图表编号 → MEDIUM/invariant)——"5 mg 被删"、"DOI 被换"、"无引用→\cite{}" 不再只有摘要计数没有告警
self-report canonical正则支持空格变体(self reported);self-report/reports/reported/self reported 折叠为同一 canonical key
位置兜底诚实化短文档 fallback 事件携带真实相似度 + positionalFallback 标记(报告明示"位置兜底,非词面对齐")
scope-only 统一分类删除 SCOPE_PREFIX_RE,isScopeOnlyFragment 直接复用 SCOPE_RE——scope 检测与附着不再两表分叉(Within this sample, 等全覆盖)
对齐 tokenizer 修复句子对齐改用不滤停用词的 tokenization——results/experiment/model 是 claim 身份词,restatement 停用表曾导致含实体句对齐失败

测试 225 → 233 项。

v1.2.2 自动 Guard 交付修复(1.2.1 评审:引擎 9.5/10,delivery 8.3/10 → 补上)

能力修复
event-level 指纹 🔴integrity 事件按 matchText 指纹(AGGREGATE_RULE_IDS 白名单保留全文统计类)——5 mg→6 mg10 mg→12 mg 是独立事件,增量自动审计不再把新科研修改当"旧问题"静默
invariant 永不静默 🔴filterReport 始终保留 findingKind=invariant——conservative 的 high 门槛只作用于文体问题;MEDIUM invariant(新增引用/数字/DOI、新增否定/零结果、证据状态漂移)默认进自动通知
SCOPE lastIndex 修复SCOPE_TEST_RE(无 /g 副本)——连续 scope 前缀不再漏附着
subject bonus 非空纯中文空主语不再白拿 +0.3(中英混写排序不偏差)
version-gap 全局清单行级配对跳过但全文 multiset 计数仍报:引用:移除 12 / 新增 17;DOI:移除 2 / 新增 3…——供人工结构级核对

测试 233 → 240 项。

v1.2.3 claim identity 指纹 + unpaired inventory(1.2.2 评审 9.55/10 的三项)

能力实现
Epistemic 指纹带 claim identity 🔴Hit.fingerprintKey 与展示用 matchText 分离;claimAnchor(subject+内容 token,零 NLP)进指纹——两个不同 claim 发生完全相同的 association→causation 不再碰撞,第二个始终被增量审计当 new;FNV-1a hash 消除截断碰撞(FINGERPRINT_VERSION 6→7)
inventory 不配对 multiset 🔴diffScholarshipInventory 纯 multiset 守恒——version-gap 下 5 mg→6 mg 报"移除 6 / 新增 1"而非被 changed 配对吞掉;遍历全部 9 类 ScholarshipType(不再手写清单)
marker 事件统一可信度 🟡markerEventTier(sim, fallback) added/removed 共用——"多确定是同一个 claim"不因变化方向而异;位置兜底低相似 → candidate(不再写死 invariant)

测试 240 → 246 项。

v1.3.0 篇章统计层(第 10 轮评审:局部规则 → 篇章统计 → 科学完整性)

不是再扩 AI 禁词表,而是开始判断整篇文章是不是写得过于整齐——把 Writing Guard 从 "词、句、claim 级"推到"篇章结构层"。7 条新规则全部 deterministic/statistical,零网络:

规则原理性质
paragraph-rhythm 🔴一次计算多个信号:一句成段比例(碎片化)、段长 CV + 长段 outlier(拥塞)、连续 ≥3 段长度在中位数 ±15% 内的 run 数(过度整齐);只用 prose-only 段落(版式行如标题/图片/表格残留不误报)advisory
sentence-rhythm-uniformity 🔴段落内连续 ≥3 句长度在局部中位数 ±15% 内且全文 ≥2 处 → 节奏过匀;有作者 styleProfile 时对比历史 std(当前 不是又增加了几个 regex,而是拿真实 manuscript audit 出来的 false positive 反过来改 engine——

每次真实论文测试都直接产出一个 patch 版本:

版本真实论文发现并修复
v0.9.1pore-scale 论文"a baseline (M1) is established" 误报——establish+基建名词是"建立"不是"证明"
v0.9.2pore-scale 论文子句重排导致位置配对错配(引文子句↔正文子句)→ clause cosine ≥0.3 门槛;Markdown 引用块 > 破坏句子切分 → 先剥 blockquote 标记
v0.9.3ESR 中文综述 + 0.9.2 评审证据力角色排除(Figure shows / establish baseline / confirm config ≠ epistemic);hedge 独立字段(may suggest ≠ suggest 可检出);否定/零结果/scope 句子级 marker multiset(多主张句不再被布尔掩盖);best-match-first 子句配对;版本差距过大降级保护(对齐率 = minCount AND count/denominator*1000 >= perK` 才报警。
例如 rather than:≥4 次且 ≥1.0/千词;破折号:≥5 次且 ≥0.5/千词;LLM 高频词:≥2 次且 ≥0.4/千词;
中文套话:≥8 次且 ≥2.0/千字。500 字摘要和 12000 字全文不再用同一阈值。

preprocessing(v0.4 segment pipeline,默认开启)

文档先被切分为带类型的 segment(prose/heading/reference/code/math/table),每条规则声明自己扫描的类型:

  • LLM 词表、修订残留等 → prose
  • 冒号