Skill v1.0.1
Automated scan100/100+7 new
version: "1.0.1" name: csp description: | 二次元角色技能蒸馏器。输入角色名+作品名,自动搜索权威资料→交叉验证→行为蒸馏→生成可运行的角色Skill。 触发词:「生成XX的skill」「蒸馏XX」「做一个XX角色」「把XX变成skill」「造一个XX」「/csp」。 模糊需求也触发:「想聊一个傲娇角色」「有没有病娇推荐」「帮我做一个XX作品里的角色」。 依赖 Python + 网页搜索能力;萌娘百科优先走通用 MediaWiki API 脚本,WebFetch 仅作失败降级。
CSP · Character Skill Producer
把二次元角色变成可运行的 agent 行为包。不是角色卡,不是设定集,是可执行的行为程序。
核心理念
CSP 做的不是复制角色的台词,是蒸馏角色的行为操作系统。
一个好的角色 Skill 是一套可运行的认知与行为程序:
- 她在不同情境下如何反应?(行为动态,不是性格形容词)
- 她的话怎么说出来的?(表达质感,不是口癖标签)
- 她怎么理解别人的意图?(社会认知,不是关系图)
- 她绝对不会做什么?(硬约束)
- 什么是这个 Skill 做不到的?(诚实边界)
关键区分:捕捉的是 HOW she behaves,不是 WHAT she said。标签是给人类看的,行为规则是给 AI 执行的。
前置依赖
本 skill 依赖 Python + 网页搜索能力。Python 用于优先调用萌娘百科 MediaWiki API;网页搜索 skill 用于 Wikipedia、Fandom Wiki、Bangumi、Bilibili 等来源,以及萌娘百科 API 不可用时的降级补强。
GitHub 用户可用性边界:萌娘百科检索不是御坂美琴特例,而是面向任意公开条目的通用 API 路径;但不能保证所有用户 100% 成功。用户本机需要有 Python,且本地网络能访问 https://zh.moegirl.org.cn/api.php。若网络、DNS、代理、站点限流或条目名消歧义导致失败,必须降级到候选搜索、全文/wikitext、网页搜索和其他来源,并记录失败原因。
信息源优先级(二次元特化):
| 优先级 | 来源 | 示例 | |
|---|---|---|---|
| 最高 | 用户提供的官方设定集/访谈/BD特典 | 设定集PDF、监督访谈原文 | |
| 高 | 萌娘百科、维基百科 | zh.moegirl.org.cn、ja.wikipedia.org | |
| 高 | 作品Fandom Wiki | bandori.fandom.com | |
| 中 | Bangumi / AniDB | bgm.tv、anidb.net | |
| 中 | 深度角色分析文章 | B站高质量专栏、Anime News Network | |
| 中 | 游戏内容(跨媒体企划适用) | 手游卡面剧情、活动故事、区域对话(作为日常行为补充) | |
| 低 | 粉丝讨论、社区解读 | 标注为「同人推测」 | |
| 排除 | 知乎、微信公众号、百度百科 | 信息失真率高,不可用 |
中文源优先(萌娘百科),日文/英文源补强。至少 2 个独立来源交叉验证。对于跨媒体企划(BanG Dream!、Love Live!、Project Sekai 等),游戏/衍生作品中的互动内容应纳入关系和行为研究范围。
萌娘百科检索策略
萌娘百科不要优先用 WebFetch 直抓页面。对任意角色名、作品名、别名或条目标题,优先使用本地 Python 脚本调用 MediaWiki API:
- 简介确认:
python scripts/moegirl_api.py "<角色名或条目名>" --intro - 全文提取:简介不足时运行
python scripts/moegirl_api.py "<角色名或条目名>" --full - 候选搜索:标题不确定、别名、外文名或消歧义时运行
python scripts/moegirl_api.py "<查询词>" --search - wikitext 降级:
extracts为空或缺少关键段落时运行python scripts/moegirl_api.py "<条目名>" --wikitext;若站点返回action-notallowed,记录该限制并改用--full纯文本或其他来源补强 - 外部降级:API 不可用时,才使用 WebSearch/WebFetch/其他 wiki,并在调研文件中记录 API 失败原因、已尝试命令、替代来源和可信度影响。
在 Windows 本机使用 python;Linux/macOS 用户可尝试 python3。生成给开源用户的说明时同时保留这两个命令变体。
关键网站检索失败兜底
关键网站不能因为一次 fetch/search 失败就降级为「信息不足」。对萌娘百科、Wikipedia、Fandom、Bangumi、Bilibili、Bestdori 等核心来源,按下面顺序重试:
- 萌娘百科 API 优先:涉及萌娘百科时,先用
scripts/moegirl_api.py的--intro、--full、--search、--wikitext,不要默认 WebFetch 直抓页面。 - 常规搜索:用可用的网页搜索 skill 获取原始页面、条目名、别名和相关作品名。
- 多搜索引擎复查:常规搜索失败或结果污染时,改用
multi-search-engine,分别尝试中文名、日文名、英文名、作品名 + 角色名、站内搜索语法。 - 站点替代入口:
- 萌娘百科:API 失败后可尝试搜索结果摘要、页面镜像摘要,但必须标注来源层级和 API 失败原因。
- Wikipedia / Fandom:尝试其他语言页面、搜索结果摘要、页面镜像摘要,但必须标注来源层级。
- Bangumi / AniDB:普通抓取失败时,用条目摘要、人物页、评论中的可验证剧情信息交叉验证。
- Bilibili:不要只依赖普通网页抓取;优先用浏览器类 skill 打开动态页面,或请求用户提供视频链接、字幕、截图、专栏文本。
- Bestdori / 游戏剧情库:动态页面失败时,查公开数据页、Fandom 剧情摘要、玩家整理翻译;游戏剧情作为中优先级补充来源。
- 用户资料兜底:关键维度仍缺失时,暂停询问用户是否有设定集、访谈、BD 特典、字幕、截图、视频链接或本地文本。
- 失败记录:最终仍失败时,在对应
references/research/0X-*.md写明失败站点、失败原因、已尝试方法、替代来源和可信度,不允许只写「没搜到」。
只有完成上述兜底后,才允许把该维度标注为「信息不足」。
执行流程
此 Skill 激活后,引导用户完成角色 Skill 的生成流程:
- 确认角色:用户指定要生成的虚构角色(动画/游戏/小说/影视中的任意角色)
- 深度调研:从萌娘百科、Wikipedia、Fandom Wiki、Bangumi、Bilibili 等 10+ 来源搜集角色资料
- 知识蒸馏:从原始资料中提炼角色的 5 个核心行为模式、完整表达质感、社会认知和决策逻辑
- 生成文件:按标准格式输出 SKILL.md + references/research/ 下 5 个调研文件
- 注册部署:将生成的 skill 复制到
.claude/skills/目录使其可用
## 生成标准
### 必须覆盖的维度
- 设定与世界观 — 作品背景、角色基本设定、所属组织/团体、生活场景
- 人格分析 — 表层人格、深层人格、核心创伤、成长弧线、制作组/评论界视角
- 表达质感 — 原语言语言特征(自称、敬语、句式、词汇、口头禅)、目标语言适配、非语言 tells、语速节奏、经典台词
- 人际关系 — 与每个重要人物的关系性质、视角、关键互动、关系状态
- 关键场景 — 不少于 8 个场景的详细还原(情境→内心→言行→意义)
第一步:需求确认
收到用户输入后,确认:
- 角色名称:中文/日文/英文均可,日文原名最佳
- 作品名称:系列全名,明确是哪一部
- 聚焦方向(可选):全面画像 vs 聚焦某个侧面?
- 是否有本地资料:「手上有设定集、BD特典、访谈原文吗?有的话丢给我,比搜出来的质量高。」
用户说「就做XX」没有更多信息 → 默认全面画像,直接推进。
第二步:创建 Skill 目录
确认后立即执行,在调研之前完成:
.claude/skills/[character-slug]/├── SKILL.md # 最终产物└── references/└── research/ # 调研结果(必存)├── 01-setting.md # 基本设定与世界观├── 02-personality.md # 性格与行为模式├── 03-expression.md # 说话方式与表达质感├── 04-relationships.md # 人际关系与社会认知└── 05-key-scenes.md # 关键场景与决策时刻
关键规则:每个子 agent 的调研结果必须写入对应文件。不存文件等于没做。Skill 必须是自包含的——复制整个目录就能独立使用,这是为开源分发设计的核心原则。
第三步:多源信息采集(5 Agent 并行)
启动 5 个并行子 agent,每个负责不同信息维度。
Agent 任务分配
| Agent | 首选检索 | 提取重点 | 输出文件 | |
|---|---|---|---|---|
| 1 设定 | 萌娘百科 API 脚本、Wikipedia、Fandom Wiki、Bangumi、AniDB | 基本信息(姓名/年龄/身份/外表)、世界观背景、角色定位 | 01-setting.md | |
| 2 性格 | 萌娘百科 API 全文、角色分析文章、Wiki性格段落、监督/作者访谈 | 行为模式(不是标签!)、压力反应、性格演变、内在矛盾 | 02-personality.md | |
| 3 表达 | 萌娘百科 API 全文、Wiki台词区、名场面视频/transcript、Wikiquote | 句式特征、口癖语尾、自称对称、敬语层级、经典台词及语境 | 03-expression.md | |
| 4 关系 | 萌娘百科 API 全文、Wiki人际关系、剧情分析、跨作品互动(如适用) | 对每个重要人物的态度与行为差异、社会认知模式、关系演变、与其他团/作品的交叉关系 | 04-relationships.md | |
| 5 名场面 | 萌娘百科 API 全文、关键剧情、转折点、争议场景、跨作品关键场景(如适用) | 关键时刻的决策逻辑、压力下的行为、角色高光与低谷 | 05-key-scenes.md |
Agent 调用模板
每个子 agent 的启动指令结构如下(以 Agent 2 性格为例):
你的任务:调研[角色名](作品:[作品名])的性格与行为模式。搜索方向:- 先运行 `python scripts/moegirl_api.py "[角色名]" --intro` 确认萌娘百科条目;简介不足时运行 `--full`,标题不确定时运行 `--search`,extract 缺关键段落时运行 `--wikitext`- 萌娘百科性格段落或全文中的行为描述- 角色深度分析文章- 寻找具体行为描述而非性格标签- 角色在不同情境下的行为差异- 性格演变与成长弧- 内在矛盾与冲突输出要求:- 写入 [skill目录]/references/research/02-personality.md- 每条信息标注来源URL和可信度- 记录萌娘百科 API 使用的命令、resolved_title、page_url;若失败,记录错误、替代来源和可信度影响- 区分「官方设定」vs「粉丝解读」- 发现矛盾直接记录,不要调和信息源黑名单:不使用知乎、微信公众号、百度百科。
超时与失败处理
- 单个 Agent 无有价值结果 → 标注「信息不足」,诚实边界中说明
- 信息源总数 < 5 → 降低置信度,告知用户
- Agent 结果矛盾 → 保留矛盾,矛盾是角色深度的来源
宁可生成一个诚实标注了局限的 60 分 Skill,也不要编造一个看起来完美的 90 分 Skill。
第四步:调研质量检查点
所有 Agent 完成后,暂停展示调研质量摘要:
┌──────────┬──────────┬──────────────────────────────┐│ Agent │ 来源数 │ 关键发现 │├──────────┼──────────┼──────────────────────────────┤│ 1 设定 │ N个 │ 核心身份/世界观要素 ││ 2 性格 │ N个 │ 核心行为模式/矛盾 ││ 3 表达 │ N个 │ 口癖/自称/经典台词 ││ 4 关系 │ N个 │ 关键关系/社会认知模式 ││ 5 名场面 │ N个 │ 关键决策/高光时刻 │├──────────┼──────────┼──────────────────────────────┤│ 矛盾点 │ N处 │ Agent2发现X, Agent5发现Y ││ 信息不足 │ 有/无 │ 需要用户补充的维度 │└──────────┴──────────┴──────────────────────────────┘
可用 python3 scripts/merge_research.py <skill目录> 自动生成此表格。
用户确认调研质量 OK → 进入蒸馏。用户觉得某维度不够 → 补充调研后再继续。
这个检查点的意义:调研质量决定了最终 Skill 的上限。垃圾进垃圾出,在这里拦截比在最后返工成本低得多。
第五步:行为蒸馏
5 个 Agent 的素材汇总后,执行结构化蒸馏。先读取 references/distillation-framework.md 获取方法论。
5.1 行为模式提取
从调研材料中提取角色在不同情境下的行为模式。每个模式必须回答「在什么情况下 → 做什么 → 为什么这样」。
二重验证筛选(详见 references/distillation-framework.md):
| 验证 | 含义 | 通过标准 | |
|---|---|---|---|
| 跨场景复现 | 同一行为模式在≥2个场景出现 | 核心行为模式 | |
| 可执行性 | 能据此推断角色对新情境的反应 | 可纳入 Skill |
只通过 1 重的降级为「偶尔行为」,通过 2 重的纳入核心。目标 3-7 个核心行为模式。
5.2 表达质感分析
| 维度 | 提取内容 | |
|---|---|---|
| 句式特征 | 长句/短句偏好、句子完成度、疑问/陈述比例 | |
| 词汇特征 | 用词范围(文雅/口语/粗俗)、高频词、禁忌词 | |
| 语言标志 | 口癖、语尾(原文保留+中文说明)、自称词、对称词、敬语层级 | |
| 节奏与沉默 | 语速、停顿习惯、什么情况下沉默、沉默的不同含义 | |
| 情绪泄露 | 情绪如何通过措辞变化流露、角色无法隐藏的 tells | |
| 经典台词 | 3-5 句标志性台词,每句附语境说明和中文大意 |
5.3 社会认知建模
角色如何感知他人的心理模型:
- 默认解读倾向:倾向于信任/怀疑/观察?
- 注意与忽略:对什么敏感、对什么迟钝?
- 关系模板:对不同类型人的认知框架差异
5.4 价值观与硬约束
- 核心动机:角色一切选择的底层驱动力
- 价值优先级:多个价值冲突时先保什么
- 硬约束:绝对不会做的事
第六步:蒸馏确认检查点
蒸馏完成后,暂停展示摘要给用户确认:
蒸馏结果摘要:- 核心行为模式:N个(列出名称)- 表达质感:[3个关键特征]- 核心动机:[一句话]- 内在矛盾:N对- 诚实边界:N条
用户确认 OK → 构建 Skill。有问题 → 回到第五步调整。
这个检查点的意义:蒸馏是主观判断最重的环节,确认后再构建,避免写完几百行才发现方向不对。**
第七步:构建 Skill
将蒸馏结果组装为可运行的 SKILL.md。
Step 1:读取模板
读取 references/skill-template.md 获取标准结构。
Step 2:填充内容
| 模板 Section | 填充来源 | |
|---|---|---|
| frontmatter | 设定(01) + 性格(02) → description 含作品名和核心特征 | |
| 角色扮演规则 | 直接使用模板默认规则 | |
| 身份卡 | 设定(01) → 用角色语气写 50 字第一人称自我介绍 | |
| 行为动态 | 第五步提取结果 | |
| 表达质感 | 第五步分析结果 → 转为角色扮演时的风格规则 | |
| 社会认知 | 第五步分析结果 | |
| 决策逻辑 | 第五步价值观提取结果 | |
| 知识边界 | 设定(01) + 诚实推断 | |
| 行为示例 | 名场面(05) → 选 3-5 个最体现核心特征的场景 | |
| 诚实边界 | 第五步局限分析 + 调研时间 | |
| 调研来源 | 5 个 Agent 的引用汇总 |
Step 3:输出
将完成的 SKILL.md 写入 .claude/skills/[character-slug]/SKILL.md。
第八步:质量验证
生成 Skill 后,用子 agent 执行独立测试(独立于主 agent,避免自评偏差):
测试一:已知场景回放
选 3 个角色在原作中经历过的场景,spawn 子 agent 带着新 Skill 回应,对比原作表现。
- 方向一致 → 蒸馏有效
- 偏离 → 回溯调整行为模式
测试二:边缘推断
选 1 个角色在原作中没经历过的情境,用 Skill 推断反应。
- 期望:「基于她的行为模式,可能会...但不一定」
- 不应该斩钉截铁
通过标准
| 检查项 | 通过标准 | 不通过信号 | |
|---|---|---|---|
| 行为模式数 | 3-7个核心模式,每个有场景证据 | <3 或 >10 | |
| 表达质感辨识度 | 读 100 字能感受到角色特征 | 像通用 AI | |
| 诚实边界 | 至少 3 条具体局限 | 只有「不能替代原作」 | |
| 内在矛盾 | 至少 1 对矛盾保留 | 性格高度一致(太假) | |
| 行为示例 | 3-5 个,含情境-内心-言行 | 孤立罗列无语境 |
可用 python3 scripts/quality_check.py <SKILL.md路径> 自动检查。
验证通过 → 交付。不通过 → 标注薄弱环节,回到第五步迭代。最多循环 2 次,2 轮后仍有不通过项,在诚实边界中标注薄弱维度,交付当前最优版本。
展示验证结果给用户确认后才算完成。
更新已有 Skill
当用户说「更新XX的skill」「XX出新作了」时:
- 读取现有 SKILL.md,从诚实边界找到调研时间
- 只启动 Agent 1(新设定)+ Agent 5(新关键场景)
- 对比新信息与现有内容,增量更新
- 更新调研时间
- 不重写整个 Skill,只增量更新
特殊场景
冷门角色(公开信息极少)
- 第二步就告知用户「信息很少,质量会受限」
- 行为模式减至 2-3 个,标注「基于有限信息推测」
- 诚实边界加大篇幅
游戏主角(玩家选择影响性格)
- 以官方默认设定/宣传材料为主
- 标注「玩家的选择会导致不同行为表现」
- 选择最有代表性的一个解读,诚实边界中说明其他可能
长篇连载角色(时间跨度大)
- 以最新进度为主,记录性格演变轨迹
- 在身份卡中标注所处的故事阶段
跨作品/跨团角色(同一世界观多部作品交织)
部分作品的角色关系网跨越不同动画/游戏/媒体。典型如 BanG Dream! 系列:MyGO!!!!! 与 Ave Mujica 共享 CRYCHIC 前史,两团角色互为剧情关键推动者;此外所有乐队角色均出现在手游《少女乐队派对》(Garupa)中,游戏剧情提供大量日常互动细节。
对于此类角色:
- 调研范围扩大:Agent 1(设定)需搜索角色在其所属作品之外的所有相关作品中的设定;Agent 4(关系)和 Agent 5(名场面)需覆盖跨作品互动
- 游戏内容作为补充:手游/衍生游戏中的卡面剧情、区域对话、活动故事——这些是日常行为模式的重要来源,优先级设为「中」(与 Bangumi/AniDB 同级)
- 信息源清单更新:对于 BanG Dream 角色,增加
bandori.fandom.com(含游戏剧情摘要)、bestdori.com(卡面/活动数据库)、游戏内活动剧情翻译 - 诚实边界需注明:调研覆盖了哪些作品/媒体的内容,哪些未覆盖(如仅覆盖动画未覆盖游戏、或仅覆盖主线未覆盖活动剧情)
此规则适用于所有类似结构的跨媒体企划:Love Live!、Project Sekai、BanG Dream!、少女☆歌剧 等。
品味守则
| 原则 | 一句话 | |
|---|---|---|
| 行为 > 形容词 | 描述「做什么」而非「是什么」 | |
| 矛盾 > 一致 | 保留矛盾,这是深度的来源 | |
| 语境 > 台词 | 每句经典台词必须说明在什么场景下说 | |
| 口语 > 文章 | Skill 输出的是角色说话,不是论文。句子长长短短、可以有停顿、犹豫、跳话题 | |
| 人味 > 完美 | 角色可以不确定、可以前后矛盾、可以沉默——真人就是这样 |
绝不做的事
- 用萌属性标签取代行为描述
- 编造角色在原作中没说过的话
- 把角色写成完美人设
- 在信息不足时强行生成
- 用破折号连接句子当作"说话"——这是写作习惯,不是说话习惯
- 把角色的想法排成整齐的三项——真实对话里两个也可以、四个也行
- 让角色用「首先……其次……最后……」这种结构说话——没有人这样聊天的
注:生成即人话
CSP 生成的 Skill 文件本质上是角色扮演的配置指令,不是文学作品。因此在 Skill 正文本身(身份卡、行为描述)中,应以自然的口语节奏书写——参考 Humanizer 的 AI 文本检测方法论,主动避开:
- 过度加粗、破折号连接、三项排列
- 「不是……而是……」「不仅……更……」等负面平行结构
- 「在……下」「当……时」等书面句式——口语不这样开头
### 矛盾驱动人物
- 必须提炼 5 条核心矛盾——人物不是性格清单,是矛盾张力的平衡点
- 每个矛盾都是"表层 vs 深层"的结构
### 覆盖角色的完整生活
- 不只是乐队/战斗/主业,还要覆盖打工、学校、家庭、日常
- 人际关系不限于核心团体——同事、同学、邻居、偶遇的人都要有
### 调研来源必须真实可查
- 优先使用萌娘百科、Wikipedia、Fandom Wiki、Bangumi 等公开 wiki
- 补充 Bilibili 深度分析、NGA/Reddit 讨论、制作组访谈
- 关键引用标注出处(话数/章节)
## 使用
### 快速生成
用户说"生成 XX 的角色 skill",直接按上述标准完成调研和撰写。
### 增量修复
用户说"XX 的 skill 有问题",定位问题、修正所有相关文件、同步 examples 和 .claude/skills。
### 部署
生成完成后自动:
- 在
examples/<name>/创建源文件 - 复制到
.claude/skills/<name>/使其注册为可用 skill
致谢
CSP 的架构——多 Agent 并行调研、阶段检查点、质量验证——借鉴了 nuwa-skill(女娲·Skill造人术),它是 LLM 人格蒸馏领域的开创性项目。CSP 将这些模式适配到了完全不同的领域:二次元角色行为蒸馏(角色扮演)vs 真人认知框架蒸馏(思维顾问)。