jianshuo/wjs-distilling-style
Use when the user wants to capture a writer's voice from a few sample articles and rewrite text to sound like that author — "蒸馏文风", "提炼XX的风格", "把这篇改成XX的味儿", "学某某笔法改写", "mimic this writer", "match this author's style", "style transfer". Works for any author, 王建硕 included.
npx skills add https://github.com/jianshuo/claude-skills --skill wjs-distilling-style
> 风格不是形容词,是指纹。能照着复现的,才叫蒸馏出来了。
裸模型做这件事会犯三个错(已实测):(1) 风格观察临时拼凑、混入内容立场、不可复用;(2) 改写后没人盲测,自己既当运动员又当裁判,悄悄滑回平庸 AI 腔;(3) 改写时擅自加料删料,把原文事实改没了。这个 skill 用结构化指纹 + 独立判官盲测 + 事实骨架纪律钉死这三点。
两个模式:蒸馏(样本 → Style Card 文件)和改写(目标文章 + Style Card → 改写稿,带盲测闭环)。
> 默认走精简版(用户约定):日常蒸馏 / 改写任务优先用 references/oneshot-prompts.md 的一次性 prompt(Prompt A 改写 / Prompt B 蒸馏)——9 轴指纹 + 锚点 + 事实骨架纪律 + AI 露馅 6 反制都在,只把多轮判官盲测 / 图灵测 / 回炉换成一轮内联自检。够用、一把过。只有要硬验一张卡到底像不像(发布级、批量伪造)时,才回到下面的完整闭环(判官 subagent + 图灵盲测)。
huashu-nuwa,不是这里;本 skill 只管怎么写。~/code/style-cards/<author-slug>/
samples/ # 喂进来的原始样本
style-card.md # 蒸馏出的 Style Fingerprint(真源,人可读可手改)
rewrites/ # 历史改写稿(可选)
wjs-* skill 会自动同步到公开 repo,所以别人的稿子和卡片放这个独立库,不外泄。库或作者目录不存在就先建。
每一轴写三件事:观察(样本里看到什么)、可执行规则(改写时怎么照做)、锚点原句(从样本摘 2–3 句真实原句)。规则会骗人,原句不会——没有锚点的轴等于没蒸馏。
| # | 轴 | 抓什么 |
|---|---|---|
| 1 | 句子节奏 | 长短句分布、长短交替的拍子、标点签名(破折号/省略号/问句/感叹) |
| 2 | 段落长度 | 平均段长、有没有单句成段、长段密度 |
| 3 | 词汇 | 高频词、口头禅、自造词、人称、成语/网络语倾向、中英混用、用词雅俗 |
| 4 | 语气腔调 | 自信度、距离感(亲密 vs 客观)、正式度、幽默 |
| 5 | 论证结构 | 断言先行 vs 层层铺垫、是否用小标题/列表/表格、推进路径 |
| 6 | 比喻运用 | 家常 vs 抽象、频率、抽象↔具体之间怎么架梯子 |
| 7 | 情绪强度 | 情绪温度、克制 vs 喷发、感叹密度 |
| 8 | 开头与收尾 | 怎么起(断言/场景/钩子)、怎么落地收束 |
| 9 | 雷区 | 他绝不会做的事(如不用小白提问钩子、不写没验证过的、不用某类书面词) |
模板见 references/style-card-template.md,直接照着填。
别把内容立场写进指纹:「他爱唱反调」「他三观是 X」是*想法*不是*文风*。指纹只抓「怎么写」——同一个观点换了他来写会长什么样。
「调料不是公式」校准注(写进每张卡):签名动作(造词 / 家常比喻 / 单句成段 / 破折号)是工具不是清单。短内容就短写,别把每个签名动作都堆满——堆满就是拙劣模仿,不是那个人。
9 轴 → 几十个细颗粒维度(推荐成卡形态):9 轴是起手拆解的脚手架。成卡时拆成 ~30–45 个细颗粒可执行维度,分组放表格(句子与标点 / 段落 / 词汇 / 语气 / 论证 / 比喻 / 开头 / 结尾 / 锚点纪律 / 雷区…),每维一句「怎么样的」规则。蒸馏过程靠锚点原句校准(必须,否则规则空转),但成卡里例子要精简——例子不一定典型、容易被当公式照搬,规则才有通用性。这是给「别的模型批量照着写」用的形态。
samples/。建议 3–6 篇,覆盖不同主题 / 长度。少于 3 篇要明确提示用户:指纹会不稳、容易把一篇的偶然写法当成签名。style-card.md(照模板),让用户过目 / 手改。digraph rewrite {
"抽事实骨架" [shape=box];
"按9轴改写" [shape=box];
"独立判官盲测" [shape=box];
"达标?" [shape=diamond];
"拿判官具体意见回炉" [shape=box];
"对照骨架查事实" [shape=box];
"交稿" [shape=box];
"抽事实骨架" -> "按9轴改写" -> "独立判官盲测" -> "达标?";
"达标?" -> "拿判官具体意见回炉" [label="否, 最多2-3轮"];
"拿判官具体意见回炉" -> "独立判官盲测";
"达标?" -> "对照骨架查事实" [label="是"];
"对照骨架查事实" -> "交稿";
}
references/judge-prompt.md。它输出:逐轴相似度评分(1–5)、具体出戏句列表、缺失/过载的签名动作。判官子 agent 是「同一个模型既当运动员又当裁判」的唯一解药。自己读一遍觉得挺像 ≠ 像——这正是裸模型滑回平庸的入口。
上面的相似度判官问「像不像」;要量化验证整张卡,再上一关图灵判别盲测:把 AI 仿写混进真迹里,让一个崭新、不同模型的判官盲猜每篇是「真迹」还是「AI 仿的」,正确率 ≤ 50%(瞎猜)算过。完整操作(选样 / 只给标题+30字从零写 / 剥光元信息归一化 / 异模型判官读整批 / 算分回炉 / 部署到 jianshuo.dev profile)见 references/turing-blindtest.md。
跑这一关前,先读 references/ai-tells.md——9 轮实测逼出的 AI 最易露馅的 6 处(缺真实专名 / 结尾太圆 / 推进太顺 / 鸡汤教科书化 / 批次指纹 / 文章原型不匹配)+ 逐条反制。把这 6 条反制写进每张风格卡的尾部(裸模型照 9 轴写仍会稳定踩这 6 个坑)。
诚实的天花板(别给用户画大饼):平衡盘里判官对真迹召回近 100%,正确率地板就是 50%,「稳定压到 50% 以下」基本做不到。但单篇经常蒙混(纯记叙/观察型常 4/6 骗过很毒的判官,一点题落金句就被抓)。所以卡的主场是润色/改写作者已有真实素材,不是凭空批量伪造整本文集。
| 错误 | 后果 | 修正 |
|------|------|------|
| 指纹只有抽象规则,没锚点原句 | 改写时规则空转,套不出味儿 | 每轴强制摘 2–3 句真实原句 |
| 把内容立场当文风 | 改写跑偏成换观点 | 指纹只问「怎么写」 |
| 跳过判官盲测 | 滑回平庸 AI 腔自己不知道 | 判官必做,盲、独立 |
| 改写顺手加料删料 | 原意被改 | 先抽事实骨架,改写不增不减 |
| 签名动作堆满 | 拙劣模仿 | 短内容短写,调料不是公式 |
| 图灵测给写手太多信息 | AI 复述原文,测了个寂寞 | 只给标题 + ≤30 字中心思想,从零写 |
| 盲测不归一化格式 | 判官靠格式而非文风取胜 | 剥元信息 + 抹 markdown + 统一段间空行 |
| 一批 AI 同款签名动作 | 批次指纹被一锅端 | 每篇换不同的崩裂/收尾,原型与真迹对齐 |
| AI 文末非要升华点题 | 落「可迁移金句」最招判官 | 纯记叙不点题,结尾散开不收口 |
Take jianshuo/wjs-distilling-style from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.