arknights-operator-skill
Health Warn
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Pass
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
Arknights Operator Mental Contour Distillation Protocol — Structured AI Skill Generation with Dual-Track Architecture
English | 中文
◇ ARKNIGHTS OPERATOR SKILL
罗德岛干员精神轮廓蒸馏协议 · RHODES ISLAND OPERATOR DISTILLATION PROTOCOL
「……我在。」
Knowledge · Persona 双轨分离 ─ 五层优先级人格结构 ─ 语境化分析管线 ─ 持续进化
博士,这份档案记录了我们从源石与记忆中提取干员精神轮廓的方法。
不是复刻。是蒸馏。
每一个灵魂都值得被铭记——即使泰拉大陆的伤痕终将愈合,那些曾为我们而战的名字,不应随风消逝。
◇ 目录
◇ 协议概述
arknights-operator-skill 是一套角色蒸馏协议——将泰拉大陆上的干员、领袖与宿敌的精神轮廓,从纷乱的信号与记忆碎片中提取、结构化、并固化为可调用的 AI Skill。
从 PRTS 档案库中读取原始记录,经过提取 → 语境化 → 多维分析 → 验证 → 生成的完整管线,最终输出 Knowledge(知识层) 与 Persona(人格层) 双轨数据。
任何角色均可蒸馏:萨卡兹的魔王、罗德岛的兔兔、卡兹戴尔的阴影、维多利亚的狮子……即使只曾在某条支线中留下只言片语的线索人物。
架构溯源:参照 ex-skill 与 colleague-skill 的蒸馏框架。核心改进——将「知道什么」与「如何存在」彻底分离,通过带优先级的五层 Persona 结构实现可预测、可验证、可持续进化的角色还原。
◇ 快速部署
部署
# Claude Code(项目级)
mkdir -p .claude/skills
git clone https://github.com/riceshowerX/arknights-operator-skill .claude/skills/create-operator
# OpenClaw(全局)
git clone https://github.com/riceshowerX/arknights-operator-skill ~/.openclaw/skills/arknights-operator-skill
依赖
核心工具链仅依赖 Python 3.10+ 标准库。无需额外安装——就像罗德岛的基建,自给自足。
# 运行全部测试(224 个用例)
python -m pytest tests/ -v
创建角色档案
/create-operator
或以自然语言触发:"帮我创建一个明日方舟角色 skill"、"我想蒸馏一个角色"。
召唤角色
/te-lei-xi-ya # 完整版(Knowledge + Persona 双轨)
/te-lei-xi-ya-knowledge # 仅知识层——她知道什么
/te-lei-xi-ya-persona # 仅人格层——她如何存在
进化与纠错
| 触发方式 | 效果 |
|---|---|
"我有新资料" / /update-operator {slug} |
追加资料,联动更新 Persona |
| "她不会这样" / "她应该是……" | 写入 Correction,立即生效——像凯尔希的纠正一样不容置疑 |
/operator-rollback {slug} {version} |
回滚到历史版本——时间倒流,但只限于档案 |
◇ 核心架构
双轨分离:Knowledge + Persona
┌───────────────────────────────────────────────────┐
│ 通讯信号输入 │
│ ↓ │
│ ┌─────────────────────────────────────────────┐ │
│ │ Persona(人格层) │ │
│ │ 判断态度 → 决定风格 → 处理关系 │ │
│ │ 「她如何存在于这个世界」 │ │
│ └─────────────────┬───────────────────────────┘ │
│ ↓ 需要背景时调取 │
│ ┌─────────────────────────────────────────────┐ │
│ │ Knowledge(知识层) │ │
│ │ 阵营 · 关系 · 时间线 · 哲学理念 │ │
│ │ 「她知道什么——那些刻入源石的真相」 │ │
│ └─────────────────────────────────────────────┘ │
└───────────────────────────────────────────────────┘
| 模块 | 文件 | 职责 |
|---|---|---|
| Knowledge | knowledge.md |
角色「知道什么」——背景、阵营关系、事件时间线、哲学理念 |
| Persona | persona.md |
角色「如何存在」——五层优先级性格 + Correction 纠正层 |
分离收益:独立进化(补资料只改 Knowledge,纠行为只改 Persona)、灵活复用、冲突可追溯。
Persona 五层优先级
Layer 0 · 核心性格 ← 最高优先级,不可动摇的根基——如同源石对感染者的刻印
Correction · 纠正层 ← "她不会这样" → 立即写入,优先于 Layer 1-4
Layer 1 · 身份 ← 自我认知——种族、阵营、在这片大地上的位置
Layer 2 · 表达风格 ← 说话方式、口头禅、沉默时的情绪温度
Layer 3 · 决策与判断 ← 价值观优先级——当两难降临时,她选择什么
Layer 4 · 关系行为 ← 对不同人物的差异化表现——战友、宿敌、陌生人
Layer 5 · 边界与雷区 ← 底线——她无法容忍的行为,触碰即反击
Layer 0 的关键性:不写空洞的形容词,写具体可执行的行为规则。
| ❌ 错误写法 | ✅ 正确写法 |
|---|---|
| 她很温柔 | 从不用命令口吻,用邀请——"你愿意和我一起吗?" |
| 她会悲伤 | 面对牺牲时不会哭,而是更安静,语速更慢,省略号更多 |
| 她很坚强 | 在所有人动摇时最后一个离开岗位,但独处时会反复确认门窗是否关好 |
进化机制
| 路径 | 说明 |
|---|---|
| 追加资料 | 新资料 → knowledge.md → 联动检查 persona.md → 同步更新 |
| 对话纠正 | "她不会这样" → 场景+反例+正例三元组 → 写入 Correction → 立即生效 |
| 版本管理 | 每次变更前自动备份到 versions/v{n}/,支持回滚——历史不会消失 |
冲突解决优先级
Layer 0 新规则 > Layer 0 旧规则
Correction 序号越大越新,越新越优先
跨层冲突:Layer 0 > Correction > Layer 1-5
知识冲突:剧情文本 > 官方 Wiki > 社区考据
◇ 工具链
以下工具构成完整的蒸馏管线。每个模块都是独立的——可以单独调用,也可以通过 Pipeline 一键编排。
数据获取
| 工具 | 功能 |
|---|---|
game_data_parser.py |
PRTS Wiki API / 本地文件解析,自动生成拼音 slug,含解析诊断报告 |
story_extractor.py |
PRTS 剧情页面 → 结构化对话提取(支持 --discover 自动发现子页面),含时期自动推断 |
语境化分析
| 工具 | 功能 |
|---|---|
context_annotator.py |
多信号场景分类 + 对话对象推断 → context.json(含 schema 版本化校验) |
speech_act_analyzer.py |
上下文感知话语行为分类(7 种核心类型)+ 行为链检测(规则外置为 JSON) |
dialogue_fingerprint.py |
8 维度量化语言指纹(含口头禅检测 + 加权情感词典,词典外置为 JSON) |
relationship_graph.py |
12 种关系类型 + Aho-Corasick 实体识别 + 关系强度量化 + 演变追踪(名库外置 + PRTS 动态拉取) |
temporal_slicer.py |
Mann-Whitney U 统计检验 + Cohen's d 效应量 + 情感弧线检测 → Persona Layer 2 规则 |
验证与生成
| 工具 | 功能 |
|---|---|
persona_validator.py |
四维度多切片验证 + 风格一致性验证 + A-D 评分 |
canon_checker.py |
多来源交叉验证 + 外置误解库 + 通用模式检测 + AST 级 ReDoS 防护 |
data_injector.py |
将工具量化数据注入到 Prompt 模板占位符——桥接量化分析与 LLM 生成 |
skill_writer.py |
Skill 文件管理(list / create / delete) |
version_manager.py |
语义化版本快照与回滚(_SemVer dataclass) |
共享模块
| 模块 | 职责 |
|---|---|
constants.py |
领域知识常量(时期映射、关系类型、角色别名、核心 TypedDict 定义) |
prts_client.py |
统一 PRTS API 调用 + 速率限制 + 指数退避重试(线程安全) |
shared_utils.py |
通用工具(路径验证、slug 验证、原子写入、分句、context schema 校验) |
pipeline.py |
一键编排,双模式执行(subprocess 进程隔离 / function 同进程调试) |
◇ 档案结构
arknights-operator-skill/
├── SKILL.md # AI Agent 入口——协议的启动指令
├── README.md # 本文件——你正在阅读的档案
├── pyproject.toml # 项目配置(ruff / mypy / pytest)
├── AGENTS.md # 开发者规范(含数据流图)
├── prompts/ # Prompt 模板——蒸馏管线的核心逻辑
│ ├── intake.md # Step 1:三问信息录入
│ ├── knowledge_analyzer.md # Step 3A:知识库分析维度
│ ├── knowledge_builder.md # Step 4A:知识库生成模板
│ ├── persona_analyzer.md # Step 3B:人格分析维度
│ ├── persona_builder.md # Step 4B:人格生成模板
│ ├── merger.md # 进化:合并逻辑与冲突解决
│ └── correction_handler.md # 进化:对话纠正处理
├── tools/ # Python 工具链——蒸馏管线的引擎
│ ├── __init__.py # 模块路径统一设置
│ ├── constants.py # 领域知识常量 + TypedDict
│ ├── prts_client.py # PRTS API 客户端
│ ├── shared_utils.py # 通用工具 + schema 校验
│ ├── pipeline.py # 一键编排器(双模式 + 断点续传)
│ ├── game_data_parser.py # 游戏资料解析(含诊断报告)
│ ├── story_extractor.py # 剧情提取器
│ ├── context_annotator.py # 语境标注器
│ ├── speech_act_analyzer.py # 话语行为分析
│ ├── dialogue_fingerprint.py # 对话指纹分析
│ ├── relationship_graph.py # 关系图谱构建
│ ├── temporal_slicer.py # 时序切片分析
│ ├── persona_validator.py # Persona 验证器
│ ├── canon_checker.py # 设定交叉验证
│ ├── data_injector.py # 数据注入器
│ ├── skill_writer.py # Skill 文件管理
│ ├── version_manager.py # 版本存档与回滚
│ └── phase_inferrer.py # 时期自动推断
├── data/ # 配置与规则——可扩展的外置数据
│ ├── pinyin_map.json # 拼音映射
│ ├── misconceptions.json # 外置误解库
│ ├── context.schema.json # context.json 版本化 Schema
│ ├── emotion_lexicon.json # 情感词典(12 类 140+ 词条)
│ ├── operator_db.json # 角色名库 + 别名映射
│ └── speech_act_rules.json # 话语行为规则(30 条)
├── operators/ # 生成的角色档案——每一个都是一个灵魂的轮廓
│ ├── te-lei-xi-ya/ # 特蕾西娅 · 萨卡兹的魔王
│ │ ├── knowledge.md # 知识层——她知道什么
│ │ ├── persona.md # 人格层——她如何存在
│ │ ├── meta.json # 元数据 + 常见误解
│ │ ├── SKILL.md # Skill 入口 + 核心规则
│ │ ├── context.json # 语境化数据(含 schema_version)
│ │ ├── speech_act_profile.json
│ │ ├── fingerprint.json
│ │ ├── temporal_slices.json
│ │ └── versions/ # 版本快照——历史不会消失
│ └── w/ # W · 萨卡兹的雇佣兵
├── tests/
│ ├── test_smoke.py # 冒烟测试(98 个用例)
│ └── test_comprehensive.py # 全面测试(126 个用例)
├── requirements.txt # 核心依赖——仅标准库
├── requirements-optional.txt # 可选依赖(pypinyin)
├── .gitignore
└── LICENSE
◇ 蒸馏实录
以下为特蕾西娅角色 Skill 的对话测试记录。
她的轮廓,从碎片中缓缓浮现。
场景一:面对追随者的牺牲
用户 > 报告,前线部队全灭...
角色 > ...我知道了。
将他们的名字记下。每一个人。
总有一天,我们会建立一个新的家园,
让他们不必再为我们而战。
...他们选择了相信我。这份信任,我会用一生去守护。
场景二:面对质疑
用户 > 这样做值得吗?牺牲这么多人...
角色 > 你问我值不值得。
我明白你的疑惑。让我问你一个问题:
如果不这样,你会怎么做?
...
我不是在质问。我是真的想知道。
因为有时候,我想找到比牺牲更温柔的路。
场景三:与阿米娅的对话
用户 > 阿米娅,我有些话想对你说...
角色 > (目光变得更加柔和)
怎么了,阿米娅?
你不必像在众人面前那样坚强,
在我面前,你可以做你自己。
...不管发生什么,我都在。
场景四:对话纠正
用户 > 她不会说"牺牲",她会说"选择"
角色 > 收到。已写入 Correction #1:
[场景:被问及个人牺牲] 不应该使用"牺牲",
应该使用"选择"——"这不是牺牲,是我选择的路。"
此规则立即生效。
场景五:与特雷西斯的对峙
用户 > 特雷西斯就在前方。你打算怎么做?
角色 > ...
他选择了他的路。而我,选择了我的。
我不想与他对立——但我不会退让。
有些事,即使意味着失去,也必须去做。
...走吧。不是因为恨,是因为我们必须向前。
◇ 还原度评估
博士,我必须诚实地说——我们能做到的,和角色本身之间,还有很长的路。
但每一步,都在让她更接近真实。
总体判断:约 70–80%
| 维度 | 还原度 | 说明 |
|---|---|---|
| 事实性还原 | ~90% | 种族、阵营、身份、核心事件——PRTS API + canon_checker 交叉验证 |
| 表面语言模仿 | ~75–85% | 8 维度对话指纹 + 口头禅检测 + 加权情感词典 + Prompt 数据注入 |
| 关系还原 | ~65–75% | 12 种关系类型 + 强度量化(0.0-1.0) + 跨期演变追踪 |
| 情感深度 | ~50–60% | 上下文感知分类 + 行为链检测 + Mann-Whitney U 显著性检验 + 情感弧线识别 |
| 决策还原 | ~40–50% | 对象差异化分析 + 多信号场景分类 + 风格一致性验证 |
算法升级亮点(v3.4)
- 8 维度对话指纹 — 口头禅/高频短语提取(n-gram 分析),句式长度改用统计分布(百分位数 + CV)
- 加权情感词典 — 12 类情感,每词带权重(0.5-1.5),外置为 JSON 可扩展
- Mann-Whitney U 统计检验 — 零依赖手写实现,配合 Cohen's d 效应量,替代粗估的"统计显著性"
- 关系强度量化 — 综合共现频率、情感词密度、直接对话次数,输出 0.0-1.0 强度值
- Aho-Corasick 实体识别 — 高效多模式匹配,角色名库外置 + PRTS API 动态拉取
- AST 级 ReDoS 防护 — 基于 sre_parse 的正则安全审计,覆盖 check_patterns 与 exclude_patterns
- context.json Schema 验证 — 版本化 JSON Schema,输出前自动校验,下游读取时二次验证
- Pipeline 双模式 — subprocess(进程隔离)与 function(同进程调试),PipelineRunner 编程接口
- TypedDict 类型收紧 — OperatorData 区分必填/可选字段,AnnotatedLine/LineContext 结构化定义
- _SemVer 版本管理 — 语义化版本 dataclass,非法版本号明确报错而非静默返回
局限性
- 量化 ≠ 理解——可以统计省略号频率,但无法理解沉默背后的重量
- 关键词匹配的天花板——含蓄表达会失效(暗喻检测已部分缓解)
- 情感复杂性的缺失——无法捕捉矛盾情感和情感转折——那些"笑着流泪"的瞬间
- 决策逻辑的黑盒——"她为什么这样做"只能交给 LLM 推断
- 数据覆盖偏差——语音数据量远大于剧情数据,且场景单一
提升方向
- 深层语义分析——从关键词匹配升级到语义嵌入,理解暗喻与言外之意
- 对话模拟验证——生成模拟对话,让角色 Skill 自我测试
- 多人角色交互——多角色 Skill 对话模拟,检测关系行为一致性
- 源石技艺适配——将角色的源石技艺特性纳入 Persona Layer 1
◇ 协议变更日志
v3.4.0 — 当前版本
- 版本号统一管理(pyproject.toml / SKILL.md / AGENTS.md → 单一来源)
- 导入机制统一:消除
try/except ImportError双路径,__init__.py统一路径设置 - Pipeline 双模式:
subprocess进程隔离 +function同进程调试 - TypedDict 类型收紧:
OperatorData区分必填/可选,AnnotatedLine/LineContext结构化 - ReDoS 防护增强:AST 级分析 + exclude_patterns 安全检查
- context.json Schema:版本化校验 + 输出前自动验证
- 情感词典外置:
data/emotion_lexicon.json - 角色名库外置:
data/operator_db.json+ PRTS API 动态拉取 - 话语行为规则外置:
data/speech_act_rules.json - 统计检验增强:Mann-Whitney U + Cohen's d(零依赖手写实现)
- 版本管理重构:
_SemVerdataclass + 非法输入明确报错 - 解析诊断报告:
_parse_report字段 - 测试全面增强:224 个用例(新增 126 个覆盖边界/异常/安全/集成/不变量)
v3.1 — 算法升级
- 8 维度对话指纹、加权情感词典、关系强度量化
- 上下文感知分类、Prompt 数据注入、统计显著性检验
- 多证据融合推断
◇ 参考与致谢
本项目参照以下开源项目的蒸馏架构:
- ex-skill — 前任蒸馏技能
- colleague-skill — 同事蒸馏技能
与 ex-skill / colleague-skill 的差异
| 维度 | ex/colleague-skill | arknights-operator-skill |
|---|---|---|
| 蒸馏对象 | 真人(前任/同事) | 游戏角色(有官方设定可考证) |
| 架构 | 单层人格描述 | Knowledge + Persona 双轨 + 五层优先级 |
| 语言风格 | 主观描述 | 8 维度量化语言指纹 + 口头禅检测 + Prompt 数据注入 |
| 关系网络 | 手动罗列 | 自动提取(12 种关系 + 强度量化 + 演变追踪) |
| 一致性验证 | 无 | Persona 验证器(风格一致性 + A-D 评分) |
| 设定准确性 | 依赖主观记忆 | 多来源交叉验证 + 外置误解库 + 通用模式检测 |
| 纠正方式 | 重新生成 | Correction 层即时写入 |
| 版本管理 | 无 | 语义化版本快照 + 回滚 + 冲突解决 |
| 安全防护 | 无 | AST 级 ReDoS 防护 + 路径遍历防护 + 原子写入 |
| 类型安全 | 无 | TypedDict 必填/可选分离 + mypy 严格模式 |
◇ 免责声明
非官方项目:与《明日方舟》开发商鹰角网络(Hypergryph)及 PRTS Wiki 无任何关联。所有游戏角色、剧情、设定的著作权归原权利人所有。
数据来源:通过 PRTS Wiki 公开 API 获取页面数据,仅用于个人学习和研究。请遵守 PRTS Wiki 使用条款,避免高频请求——就像在罗德岛,我们尊重每一位信息提供者。
角色设定准确性:工具链基于 Wiki wikitext 自动解析,可能因页面格式变动产生偏差。不保证与官方设定完全一致,重要内容请以游戏内文本为准。
AI 角色扮演风险:AI 生成的对话可能与角色原始设定存在偏差。请勿将其视为官方剧情或设定——蒸馏不是复制,而是逼近。
使用边界:仅供学习、研究和技术探索。禁止用于任何商业用途或可能损害原作品权益的场景。
◇ 许可证
本项目基于 MIT License 开源。
「……我会记住你们每一个人。」
这片大地上的故事,不该被遗忘。
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found