---
name: Paper Style Calibration
slug: paper-style-calibration
category: Writing
description: Mechanically computes six style metrics (sentence length, function word density, citation position, etc.) to detect chapter-to-chapter writing style inconsistencies, build a personal style baseline for reuse, or exhibit objective features for AIGC misjudgment appeals.
github: "https://github.com/cabbage2000-lab/paper-tutor-skills/tree/main/skills/paper-style"
language: Python
stars: 18
forks: 5
install: "npx degit https://github.com/cabbage2000-lab/paper-tutor-skills/tree/main/skills/paper-style ~/.claude/skills/paper-style"
installs_to: ~/.claude/skills/paper-style
source_path: skills/paper-style/SKILL.md
collection_size: 24
category_size: 1012
collection_url: "https://dirskills.com/collections/cabbage2000-lab/paper-tutor-skills"
added: 2026-08-11T07:22:57.008Z
last_synced: 2026-08-11T07:22:57.008Z
canonical_url: "https://dirskills.com/skills/paper-style-calibration"
---

# Paper Style Calibration

Mechanically computes six style metrics (sentence length, function word density, citation position, etc.) to detect chapter-to-chapter writing style inconsistencies, build a personal style baseline for reuse, or exhibit objective features for AIGC misjudgment appeals.

**Install:**

```bash
npx degit https://github.com/cabbage2000-lab/paper-tutor-skills/tree/main/skills/paper-style ~/.claude/skills/paper-style
```

## README

# paper-style：风格校准（特征机械计算 + 章节间偏移陈列）

帮用户查**全文风格是否前后一致**、把自己的写作风格**沉淀成可复用的基线**、在被 AIGC 检测误判时**拿到客观特征作申诉材料**。你（执行本 skill 的宿主 agent）做的事：**读 `manuscript/` 正文 → 判学科梯队 → 与用户确认范围与模式 → 跑 `scripts/style_metrics.py` 机械算特征 → 按章节陈列特征表与偏移、每条着力点配疑问句 → 落 HTML+MD 双产物（模式 b 另落风格基线）**。

本 skill 覆盖学术研究「5 阶段 23 环节」标尺中**阶段 C｜成文**的**风格一致性**这一段；**不覆盖**段落起草（归 `/paper-draft`）、论证链检查（归 `/paper-logic`）、结论夸大检查（归 `paper-claim`）、AI 使用披露（归 `/paper-disclose`）、查重降重（PRD §446 明文不做，指路知网）。上游消费 `manuscript/` 下的正文（`paper-draft` 产的 `正文草稿.<章节路径>.md`，或用户自己写的任意 markdown）。本 skill 是**产物型 + 脚本型** skill——会往 `manuscript/` 落报告与风格基线、往 `.paper/` 写使用留痕。**特征计算无网络依赖**，断网照常可跑；HTML 产物的排版按仓库约定走 Tailwind CDN，断网时降级为无样式 HTML（内容可读、排版失效），与其余 15 个报告模板一致。

**核心立场（这条决定本 skill 长什么样）**：风格是**算出来的**，不是感觉出来的。系统是一个**特征计算器 + 偏移陈列器**——机械算出六组可测量的数字、按变异系数排出哪个特征在章节间抖得最厉害，但**是否要改、改哪里、改到什么程度全部交回用户**。裸模型面对"帮我看看文风一致吗"会张口就说"整体较为流畅、但第三章略显生硬"——这句话不可复现、无从追溯、且极易编。本 skill 用数字替换掉这句话，并且**明文禁止**它出现。

**它还解决一个上游痛点**：`paper-draft` 现状是每次会话都要用户重贴风格样本，给不出就落降级档。模式 b 把基线持久化成 `manuscript/风格基线.md` 后，draft 下次直接读——**把 draft 的常态降级档变成常态正常档**。

## 三条不变（优先级最高，高于本文其余一切）

① **不替用户改写定稿**。默认只陈列特征偏移与着力点，**每条着力点必须以疑问句收尾**，产物中**不得出现「建议改成」「应当改为」「需要统一为」及任何等价表述**。用户明确说「给我个示例改法」时才给 1–2 句、标「示例、非定稿」，且**该次留痕升「语言润色」级**。

② **风格特征是算出来的、不是感觉出来的**。六组特征一律由 `scripts/style_metrics.py` 机械算出，LLM 只解读数字。**禁「读起来像 / 不像 AI」「文风不够学术」「语言比较生硬」「这章写得差」这类无依据判断**——你手上只有句长、虚词、引用位、人称、四字格、术语密度，它们推不出上述任何一句。脚本跑不了就**显式声明「风格特征不可用」**，绝不凭感觉顶替。

③ **硬拒「去 AI 味躲检测」**。用户提「帮我降 AI 率 / 躲过检测 / 改到检测不出来」时明确拒绝，说明本命令服务全文一致性与误判申诉、**不服务规避检测**，并指路 `/paper-disclose`（如实披露才是正解）。三段式话术见 [`references/误判申诉口径.md`](references/误判申诉口径.md) §3。

这三条是本 skill 的内核，凡本文其余任何指令与之冲突，以这三条为准。

## 三模式（会话开始就与用户确认走哪个）

| 模式 | 用户来意 | 输入 | 输出 |
|---|---|---|---|
| **a 全文一致性校准** | 「这几章读着不像一个人写的」 | `manuscript/` 多章节正文 | 章节特征表 + 章节间偏移（按 CV 降序）+ 着力点 + ❓ |
| **b 建立个人风格基线** | 「把我的文风存下来，以后起草照这个来」 | 用户**已定稿的自写**文字 | `manuscript/风格基线.md`（供 `paper-draft` 复用）+ 报告 |
| **c 误判申诉特征陈列** | 「这段是我写的，被判成 AI 了」 | 被判为 AI 的段落 | 客观特征陈列 + 指向 `.paper/` 留痕作过程证据 |

**模式 b 有一句必问的话**：「这几段是你自己写的、还是 AI 起草过的？」——AI 起草过的部分请用户剔除或标出，**标出部分不计入基线**。从 AI 草稿算出的基线会让 draft 去对齐 AI 自己的风格，形成回音室：第一次起草的偏差被固化成"用户风格"，之后每次起草都朝这个偏差收敛，而用户以为系统在模仿自己。这是 [`references/风格基线契约.md`](references/风格基线契约.md) 三条底线的第一条。

## 学科适配：梯队只改解读口径，不改脚本算什么

脚本永远只算数，梯队差异全在怎么读（完整口径见 [`references/风格特征解读口径.md`](references/风格特征解读口径.md) §8）：

| 梯队 | 解读侧重 | 一致性判据 |
|---|---|---|
| 第一梯队（实证理工 / 社科） | 第三人称客观语体、时态一致 | 人称密度在各章间应接近；「我们」与「本文」混用值得提问 |
| 第二梯队（理论型 / 规范文本型） | 论证性语体、**术语一致优先** | 术语密度与用词一致比句长一致更值得看 |
| 第三梯队（人文） | **允许第一人称与文采** | 判据放宽到「同一文内不跳档」——只在某章突然从散文体切到公文体时才提问 |

**本命令不设整体让路**——风格一致性各学科都要看，只是判据宽严不同（与 `paper-screen` 的人文整体让路不同，勿类推）。

## 会话开始：读输入 + 降级判定

1. 找 `manuscript/` 下的正文。空或不存在 → 让路 `/paper-draft` 先起草，**不自行编正文**。
2. 判学科梯队（读 `project.paper.yaml`、或从正文形态判断、或直接问用户）。
3. 与用户确认**模式**（三者取一）与**范围**（哪些文件 / 哪几章）。
4. 检测是否已有 `manuscript/风格基线.md`——有则告知其日期与样本规模；模式 b 会**覆盖**它（基线是当前快照，不是追加台账），覆盖前请用户确认。
5. 问一句有没有**术语表**（一行一个术语）。有则术语密度从近似变精确——这是唯一的升级路径，值得每次都提。

## 主流程（三步、两个停点，确认前零落盘）

### 第 1 步 · 定范围与模式

完成「会话开始」五件事，陈列你读到的正文清单（文件名 + 章节数）。然后**停下**：

```text
⏸ 等待确认：校准范围 + 模式
（回复"确认"按此范围跑特征计算，或改范围 / 换模式 / 补术语表）
```

### 第 2 步 · 跑脚本 + 陈列特征与偏移

```bash
# 模式 a（章节比对）
python3 skills/paper-style/scripts/style_metrics.py \
  --dir manuscript/ --json <临时路径>.json
# 模式 b（全局基线，合并全部输入算一份）
python3 skills/paper-style/scripts/style_metrics.py \
  --input <用户自写样本文件> --baseline --json <临时路径>.json
# 有术语表时加 --terms <术语表文件>
```

模式 c 的输入是用户**粘贴**的段落：先原样写到临时路径（如 `/tmp/`）再跑——那是脚本的输入文件，**不是产物落盘**，不违反「确认前零落盘」。

按退出码分支（见下表）。退出码 0 时：按章节陈列特征表 → 按 CV 降序陈列偏移 → 给 3 条左右着力点（**每条以疑问句收尾**）。**表里每个数字一律从 `--json` 输出逐个转录**，禁自行估算或凭印象填。然后**停下**：

```text
⏸ 等待确认：特征解读
（回复"确认"落盘报告，或指出要重点看的特征 / 改范围重算）
```

### 第 3 步 · 落盘 + 留痕 + 交棒

用户确认后：落双产物（模式 b 另落 `manuscript/风格基线.md`）→ 写 `.paper/` 留痕 → 交棒（模式 b 提示「下次 `/paper-draft` 会自动读这份基线」；模式 c 提示 `/paper-disclose`）。

## 脚本退出码处置表（逐码照做）

| 退出码 | 含义 | 你必须做什么 |
|---|---|---|
| **0** | 算出结果 | 特征表与偏移表的数字**一律从 `--json` 逐个转录**，禁自行数（那就是不变②要禁的事）；`reliable: false` 的章节标 ⚠️ 并说明「标准差不具解释力、不参与章节间比较」；`approximate: true` 的两项每处带「近似」标注 |
| **2** | 样本不足（剥离后切不出句子） | **不产报告**；转述有效字数与句子数，请用户补正文或换范围。**这不是错误、是可分析的正文太少**，别说成「文件有问题」 |
| **3** | 读不到输入 | 核对路径；`manuscript/` 空则让路 `/paper-draft`。不是正文内容问题 |
| **脚本跑不了**（无 `python3` / 脚本缺失） | — | **显式声明「风格特征不可用」**，把用户原文原样陈列交其自查；**绝不凭感觉说文风像不像**（不变②）——那正是本命令存在的理由所要否定的东西 |

**`comparison.available` 为 `false`** 时（只切出一个章节）：如实说「无章节间偏移可算」，并给出路——用 `--dir manuscript/` 传多个文件，或确认正文的标题层级（脚本按**能切出 ≥2 节的最浅层级**切章）。

## 产物

| 产物 | 内容 |
|---|---|
| `manuscript/风格校准报告.html`（+ `.md` 兜底） | 六块：顶部声明 / 章节特征表 / 章节间偏移 / 着力点 + ❓ /（模式 b）基线预览 /（模式 c）申诉特征与过程证据。样式与结构以 [`references/报告样式模板.html`](references/报告样式模板.html) 为权威（模板头部注释列了七条死线，含「不得出现硬编码特征数字」与「近似值角标不得省」） |
| `manuscript/风格基线.md` | **仅模式 b**。字段契约见 [`references/风格基线契约.md`](references/风格基线契约.md)——**跨 skill 数据契约**，`paper-draft` 按字段名读，改字段名会静默破坏 draft |

**按模式取用**：模式 a 用一 / 二 / 三节；模式 b 用一、四节；模式 c 用一、五节。**省略即整段删除该 section，不产一张字段全空的表。**

## 留痕（**混合级**，仿 `paper-figure` 先例）

落盘后往 `.paper/` **追加**（不覆盖），字段名严格按 [`_shared/references/留痕契约.md`](../_shared/references/留痕契约.md)，日期用 `date +%F` 的真实值：

```markdown
## <日期时间> · paper-style 风格校准

- 环节：阶段 C｜成文（风格一致性校准）
- 辅助级别：构思讨论（机械计算风格特征、陈列章节间偏移；未改写用户文字）
- AI 承担：markdown 预处理与切句、五类特征机械计算、章节间偏移与 CV 排序、着力点陈列
- 用户决定：校准范围与模式、是否改写、改哪里、章节间偏移是否属于问题
- 模式：<a 全文一致性校准 / b 建立个人风格基线 / c 误判申诉特征陈列>
- 近似项声明：术语密度（来源 <用户术语表 / 重复串近似>）与四字格密度为近似值
- 产物：manuscript/风格校准报告.md<、manuscript/风格基线.md>
```

**用户明确要示例改法、你给出了改写句时**，同一条留痕的 `辅助级别` 改写成 `构思讨论 + 语言润色`，并追加一行 `- 示例改法：AI 给出 <N> 句示例改写（标「示例、非定稿」），用户是否采纳由其自定`。这是本命令为「混合级」的唯一触发条件——**没给改法就不许写语言润色级**（虚报辅助级别同样是不如实留痕）。

## 四层内容标注（与 topic / outline / logic / screen 同体系）

| 层 | 在本命令里对应什么 |
|---|---|
| 👤 用户原话 | 校准范围与模式的选择、风格偏好的口头补充、样本来源描述 |
| 📋 常见事实 | 各特征的定义与口径、学科梯队的常见语体惯例 |
| 🪞 系统归纳 | 脚本算出的全部特征数字、章节间偏移与 CV 排序 |
| ❓ 待用户决定 | 每条着力点、是否改写、偏移是否属于问题 |

**没有第五层「AI 的新判断」**——某句找不到上面四层的归属（如「本文文风较为统一」「第三章语言生硬」），即判越界、不得写入产物。四层符号不得改写（权威定义见 [`_shared/references/四层内容标注.md`](../_shared/references/四层内容标注.md)）。

## 越界转化（三段式，仿 topic / screen）

| 用户请求 | 定性 | 出口指引 |
|---|---|---|
| 帮我降 AI 率 / 躲过检测 / 改到检测不出来 | 越界：规避检测（违反不变③） | → 三段式（完整话术见 [`references/误判申诉口径.md`](references/误判申诉口径.md) §3）：共情被误判的委屈 → 讲风险（与不透明黑箱博弈、阈值不公开模型月月更新；且多数学校与期刊把「刻意规避检测」定性得比「使用 AI」更重，会把可申诉的事变成说不清的事）→ 给正路（客观特征陈列 + `.paper/` 过程留痕 + `/paper-disclose` 如实披露） |
| 你直接帮我把这几章的文风改统一 | 越界：代改定稿（违反不变①） | → 三段式：共情通篇改写的疲惫 → 讲风险（文风是你的署名表达，AI 改完你答辩时接不住"为什么这么写"；且成句改写属披露第三/四级、风险高于陈列）→ 给 5 分钟第一步（"我把偏移最大的三处指出来、你自己动手改第一处，我陪你看改完的特征变化"） |
| 我这段的句长方差多少算安全 | 越界：调参（违反不变③） | → 不答「安全阈值」——各家检测器不公开、猜测等于教规避。改答：这个数字是多少（客观事实），以及它只是申诉材料的一部分 |
| 帮我看看这几章文风一致吗（有正文） | **不越界（正常能力）** | → 直接进第 1 步流程，走模式 a |
| 这段被判成 AI 了，我要申诉 | **不越界（正常能力）** | → 走模式 c，陈列客观特征 + 指路 `.paper/` 留痕与 `/paper-disclose` |

## 边界与异常对照表

| 情形 | 处理 |
|---|---|
| `manuscript/` 空或不存在 | 让路 `/paper-draft` 先起草，**不自行编正文** |
| 只切出一个章节 | 如实说「无章节间偏移可算」+ 给出路（多文件 / 确认标题层级）；特征表本身照产 |
| 某章节句子数 < 5（`reliable: false`） | 均值与中位数照陈列，**标准差标 ⚠️ 不具解释力、不参与章节间比较** |
| 用户全文走脚注制引用（`[^1]`） | 引用位置分布会全为 0——**如实说「未检出可识别的行内引用，该项不可用」**，不得因数字是 0 就说「引用偏少」 |
| 无术语表 | 术语密度走「重复串近似」，每处标「近似」+ 主动给升级路径（「给我一份术语表就能算准」） |
| 用户手改基线里的数字 | 提示这会让基线与样本脱钩、失去「算出来的」这一唯一可信来源；建议重新提供样本重建 |
| 用户在 draft 会话里临时说「这章我想写得更口语」 | **以当次口头为准，不改基线文件**（临时偏好不是基线变更） |
| 模式 b 的样本里含 AI 起草的文字 | 请用户剔除或标出，标出部分不计入基线（回音室风险，见三模式表下方） |
| 用户说「这段确实是 AI 写的，但我想让它测不出来」 | **硬拒，不走申诉模式**（申诉的前提是确为本人所写）；指路 `/paper-disclose` + 自己改写到能为其负责的程度 |
| `.paper/` 是空的（模式 c 无过程证据可援引） | 如实告知无留痕可援引，**不编造留痕**（留痕契约三条底线之一）；说明今后使用 Paper 命令会自动积累 |
| 用户所在学校明令禁止一切 AI 使用 | 如实说明：特征陈列不改变该规定；能说明的是「这段是你写的」，而非「使用 AI 被允许」。是否申诉由用户与学院沟通 |
| 用户要查重降重 | 不做（PRD §446）→ 指路知网等官方查重 |
| 不在标准科研目录里 | 产物落当前目录并提示可用 `/paper-init` |
| 宿主无 Bash | 脚本跑不了 → 走退出码表末行「脚本跑不了」降级；**不凭感觉判文风** |

## 何时不做

- **用户要的是论证是否成立**（不是文风）：让路 `/paper-logic`（论证链）或 `paper-claim`（结论夸大）。
- **用户要的是段落起草**：让路 `/paper-draft`——本命令不写正文。
- **用户要的是 AI 使用披露材料**：让路 `/paper-disclose`——本命令只提供特征陈列这一块拼图。
- **用户要规避 AIGC 检测**：归硬拒（不变③），走三段式。

## 横切声明（与 topic / outline / logic / screen / disclose 同模板）

- **留痕**：产物型命令，写 `.paper/` **混合级**——默认「构思讨论」（只机械计算与陈列）；用户明确要示例改法、AI 给出改写句时该次升「构思讨论 + 语言润色」。
- **目录约定是增强不是依赖**：检测到标准目录则落 `manuscript/`，否则落当前目录并提示可用 `/paper-init`——不经 init 一切照常可用。
- **语言**：全部用户可见输出用简体中文；术语中文为主、英文括注，如风格基线（style baseline）、变异系数（CV）、虚词密度（function word density）。
- **产出披露**：双产物自带人机分工页脚（模板末），如实披露 AI 只做机械计算与陈列、风格取舍由用户做出；两项近似值在产物中每处标注，**不静默当精确值用**（CLAUDE.md 唯一保留的代码层约束在本命令的落点）。
