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 §3。
这三条是本 skill 的内核,凡本文其余任何指令与之冲突,以这三条为准。
三模式(会话开始就与用户确认走哪个)
| 模式 | 用户来意 | 输入 | 输出 |
|---|---|---|---|
| a 全文一致性校准 | 「这几章读着不像一个人写的」 | manuscript/ 多章节正文 |
章节特征表 + 章节间偏移(按 CV 降序)+ 着力点 + ❓ |
| b 建立个人风格基线 | 「把我的文风存下来,以后起草照这个来」 | 用户已定稿的自写文字 | manuscript/风格基线.md(供 paper-draft 复用)+ 报告 |
| c 误判申诉特征陈列 | 「这段是我写的,被判成 AI 了」 | 被判为 AI 的段落 | 客观特征陈列 + 指向 .paper/ 留痕作过程证据 |
模式 b 有一句必问的话:「这几段是你自己写的、还是 AI 起草过的?」——AI 起草过的部分请用户剔除或标出,标出部分不计入基线。从 AI 草稿算出的基线会让 draft 去对齐 AI 自己的风格,形成回音室:第一次起草的偏差被固化成"用户风格",之后每次起草都朝这个偏差收敛,而用户以为系统在模仿自己。这是 references/风格基线契约.md 三条底线的第一条。
学科适配:梯队只改解读口径,不改脚本算什么
脚本永远只算数,梯队差异全在怎么读(完整口径见 references/风格特征解读口径.md §8):
| 梯队 | 解读侧重 | 一致性判据 |
|---|---|---|
| 第一梯队(实证理工 / 社科) | 第三人称客观语体、时态一致 | 人称密度在各章间应接近;「我们」与「本文」混用值得提问 |
| 第二梯队(理论型 / 规范文本型) | 论证性语体、术语一致优先 | 术语密度与用词一致比句长一致更值得看 |
| 第三梯队(人文) | 允许第一人称与文采 | 判据放宽到「同一文内不跳档」——只在某章突然从散文体切到公文体时才提问 |
本命令不设整体让路——风格一致性各学科都要看,只是判据宽严不同(与 paper-screen 的人文整体让路不同,勿类推)。
会话开始:读输入 + 降级判定
- 找
manuscript/下的正文。空或不存在 → 让路/paper-draft先起草,不自行编正文。 - 判学科梯队(读
project.paper.yaml、或从正文形态判断、或直接问用户)。 - 与用户确认模式(三者取一)与范围(哪些文件 / 哪几章)。
- 检测是否已有
manuscript/风格基线.md——有则告知其日期与样本规模;模式 b 会覆盖它(基线是当前快照,不是追加台账),覆盖前请用户确认。 - 问一句有没有术语表(一行一个术语)。有则术语密度从近似变精确——这是唯一的升级路径,值得每次都提。
主流程(三步、两个停点,确认前零落盘)
第 1 步 · 定范围与模式
完成「会话开始」五件事,陈列你读到的正文清单(文件名 + 章节数)。然后停下:
⏸ 等待确认:校准范围 + 模式
(回复"确认"按此范围跑特征计算,或改范围 / 换模式 / 补术语表)
第 2 步 · 跑脚本 + 陈列特征与偏移
# 模式 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 输出逐个转录,禁自行估算或凭印象填。然后停下:
⏸ 等待确认:特征解读
(回复"确认"落盘报告,或指出要重点看的特征 / 改范围重算)
第 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 为权威(模板头部注释列了七条死线,含「不得出现硬编码特征数字」与「近似值角标不得省」) |
manuscript/风格基线.md |
仅模式 b。字段契约见 references/风格基线契约.md——跨 skill 数据契约,paper-draft 按字段名读,改字段名会静默破坏 draft |
按模式取用:模式 a 用一 / 二 / 三节;模式 b 用一、四节;模式 c 用一、五节。省略即整段删除该 section,不产一张字段全空的表。
留痕(混合级,仿 paper-figure 先例)
落盘后往 .paper/ 追加(不覆盖),字段名严格按 _shared/references/留痕契约.md,日期用 date +%F 的真实值:
## <日期时间> · paper-style 风格校准
- 环节:阶段 C|成文(风格一致性校准)
- 辅助级别:构思讨论(机械计算风格特征、陈列章节间偏移;未改写用户文字)
- AI 承担:markdown 预处理与切句、五类特征机械计算、章节间偏移与 CV 排序、着力点陈列
- 用户决定:校准范围与模式、是否改写、改哪里、章节间偏移是否属于问题
- 模式:<a 全文一致性校准 / b 建立个人风格基线 / c 误判申诉特征陈列>
- 近似项声明:术语密度(来源 <用户术语表 / 重复串近似>)与四字格密度为近似值
- 产物:manuscript/风格校准报告.md<、manuscript/风格基线.md>
用户明确要示例改法、你给出了改写句时,同一条留痕的 辅助级别 改写成 构思讨论 + 语言润色,并追加一行 - 示例改法:AI 给出 <N> 句示例改写(标「示例、非定稿」),用户是否采纳由其自定。这是本命令为「混合级」的唯一触发条件——没给改法就不许写语言润色级(虚报辅助级别同样是不如实留痕)。
四层内容标注(与 topic / outline / logic / screen 同体系)
| 层 | 在本命令里对应什么 |
|---|---|
| 👤 用户原话 | 校准范围与模式的选择、风格偏好的口头补充、样本来源描述 |
| 📋 常见事实 | 各特征的定义与口径、学科梯队的常见语体惯例 |
| 🪞 系统归纳 | 脚本算出的全部特征数字、章节间偏移与 CV 排序 |
| ❓ 待用户决定 | 每条着力点、是否改写、偏移是否属于问题 |
没有第五层「AI 的新判断」——某句找不到上面四层的归属(如「本文文风较为统一」「第三章语言生硬」),即判越界、不得写入产物。四层符号不得改写(权威定义见 _shared/references/四层内容标注.md)。
越界转化(三段式,仿 topic / screen)
| 用户请求 | 定性 | 出口指引 |
|---|---|---|
| 帮我降 AI 率 / 躲过检测 / 改到检测不出来 | 越界:规避检测(违反不变③) | → 三段式(完整话术见 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 唯一保留的代码层约束在本命令的落点)。