全量角色 Playtest 验证报告:抽象经 PPR 检出心智模型
日期:2026-08-12 ~ 2026-08-13 范围:24 个角色图全量重生成后,逐角色 playtest 验证(每角色 2 轮对话,共 48 轮) 分支:
feat/abstract-ppr-detection;模型:Qwen3.5-4B-Q6_K(本地 llama-server)+ BGE 嵌入
1. 测试概述
1.1 数据准备
全部 24 个角色图按新提示词全量重生成(节点提取:抽象字段泛化为“可复现的模式“;
边生成:具体→抽象 SpecificToAbstract 双向边;proc 按角色特质化)。
随后用 link_abstract_specific 语义补齐抽象↔具体链接,清空嵌入缓存。
1.2 测试对话
仿照“桑多涅 × 哥伦比娅“晨间对话样式,为每个角色自生成 2 轮对话: 第 1 轮早晨问候(对方直呼角色名),第 2 轮引用对方与角色的关系/共同语境。 每轮由 Embedding 模式与 FullPipeline 模式各生成一条回复。
1.3 观测口径
- proc 检出率:FullPipeline 动作通道(说话风格/思维习惯/行为倾向)是否注入 proc 节点。
- abstract 检出率:PPR 结果中是否出现抽象情境节点;
:Ppr= 纯 PPR 检出(相似度未直接命中),:Both= 相似度+PPR 双通道命中。
2. 汇总指标
| 指标 | 数值 |
|---|---|
| playtest 角色数 | 24 / 24 |
| 动作通道注入 proc 的角色 | 24 / 24(100%) |
| PPR 结果含抽象节点的角色 | 24 / 24(100%) |
| 含“纯 PPR 检出“抽象的角色 | 18 / 24(75%) |
| 纯 PPR 检出去重抽象节点数 | 78 |
| 输出响应条数(E+F) | 96 |
结论:全量验证下,proc 提取与抽象经 PPR 检出在全部角色上稳定生效; 3/4 的角色存在“相似度没命中、靠 specific→abstract 边游走发现“的纯 PPR 抽象检出。
3. 逐角色结果
3.1 阿兰·吉约丹(伙伴:玛丽安·吉约丹,姐姐)
- 检索亮点:
sem_marian(玛丽安·吉约丹 0.6175)、sem_emanuel(埃马纽艾尔·吉约丹 0.6066) - 输出:
- 轮1 E:早上好,小玛丽安,今天打算研究什么新东西? | F:早上好,玛丽安,今天打算做什么?
- 轮2 E:真是不好意思,我刚才一直在想那些还没验证的理论,差点忘了时间。 | F:不用了,我也没胃口,还是把那些数据先处理好吧。
- proc 检出:说话风格(直接不拐弯抹角)、思维习惯(沉浸研究忽略时间 ×2)
- abstract 检出:Both:
sit_abs_deep_research、sit_abs_dangerous_experiments
3.2 博丽灵梦(伙伴:雾雨魔理沙,魔法使朋友)
- 检索亮点:
sit_marisa_disappear(魔理沙被怨灵附身消失,我当时挺着急的……0.6003)、sit_daily_shrine_life(神社日常 0.5589) - 输出:
- 轮1 E:早啊魔理沙,今天要不要来神社帮忙收收垃圾? | F:早啊,魔理沙,今天有什么事吗?
- 轮2 E:啧,又要出乱子了吗,麻烦,不过既然是你喊我,那就走吧。 | F:真是的,怎么又是这种事啊,不过既然你都这么说了,那我就勉为其难陪你去一趟吧。
- proc 检出:说话风格(慵懒吐槽)、思维习惯(面对异变先不当回事)、行为倾向(招待宴会/清晨检查赛钱箱)
- abstract 检出:纯Ppr:
sit_abstract_social_talk、sit_abstract_incident_trouble;Both:sit_abstract_banquet_gathering
3.3 布洛妮娅·扎伊切克(伙伴:希儿·芙乐艾)
- 检索亮点:
sem_seele(希儿·芙乐艾 0.8137)、sem_white_seele(白希儿 0.7938) - 输出:
- 轮1 E:早上好,白希儿。 | F:早上好,布洛妮娅。
- 轮2 E:白希儿,我当然可以陪你一起去。 | F:布洛妮娅说可以,但要先去吃点吼姆,再去孤儿院陪孩子们。
- proc 检出:说话风格(第三人称自称)、思维习惯(收集吼姆周边/保护珍视的人)、行为倾向(做俄罗斯菜/重炮战斗)
- abstract 检出:纯Ppr:
sit_abs_orphanage_location、sit_abs_battle_environment、sit_abs_battle_event;Both: 烹饪/打趣/收集等
3.4 常陆茉子(伙伴:有地将臣,穗织的少主)
- 检索亮点:
sem_masamune(有地将臣 0.7760)、sem_hayate_family(常陆一族 0.6950) - 输出:
- 轮1 E:早上好呀,将臣先生!今天也请多指教哦。 | F:早上好呀,将臣先生!我可是忍者呢,这种问候声早就不怕了哦~
- 轮2 E:收到!马上就到,这次可不会用替身术逃跑了哦。 | F:哈?少主大人这是在命令我当助手吗?我可是忍者哦……不过既然是少主大人的请求……好吧,我这就去!
- proc 检出:行为倾向(苦无战斗/害羞时遁逃 1.000)、说话风格(“我可是忍者呢…”)、思维习惯(为重要的人克服恐高 0.850)
- abstract 检出:Both:
sit_abs_date_event、sit_abs_chore_event、sit_abs_praise_event、sit_abs_guard_participant
3.5 椎叶䌷(伙伴:保科柊史,同学)
- 检索亮点:
sem_witch(魔女 0.7795)、sem_akagi(赤城 0.7498) - 输出:
- 轮1 E:早上好呀,柊史君! | F:早上好呀,柊史君,今天也要开心哦!
- 轮2 E:诶?原来是这样啊,那……那个魔术是什么呀? | F:诶?魔术?柊史君居然在问我魔术的事吗?
- proc 检出:行为倾向(“䌷大锤“战斗 1.000)、说话风格(音痴拒绝唱歌)、思维习惯(吃醋)
- abstract 检出:Both:
sit_abstract_daily_env、sit_abstract_club_room、sit_abstract_collect_fragments
3.6 丛雨(伙伴:有地将臣,穗织的少主)
- 检索亮点:
sem_murasame(丛雨丸 0.7822)、sem_self(丛雨 0.7093) - 输出:
- 轮1 E:早上好呀将臣!昨晚睡得还好吗? | F:早安啊有地,今天又是元气满满的一天呢,你昨晚睡得好吗?
- 轮2 E:什么怪事?快说快说,我马上跟你走! | F:喂!大笨蛋,那种事还要我亲自来吗?我辈明明只是随口一提而已!
- proc 检出:说话风格(古老腔调“我辈“)、思维习惯(午间探望将臣/怕黑怕鬼)
- abstract 检出:纯Ppr:
sit_abs_env_dark;Both:sit_abs_event_headpat、sit_abs_loc_homura
3.7 戴因斯雷布(伙伴:荧,旅行者)
- 检索亮点:
sem_traveler(旅行者 0.7107)、sem_self(戴因斯雷布 0.6788) - 输出:
- 轮1 E:早啊,荧。最近过得怎么样? | F:早上好,旅行者。
- 轮2 E:正好,我在这附近巡逻,那地下的秘密或许能给我一些答案。 | F:看来你终于把那些藏在旧日残垣里的秘密都翻出来了,不过在那之前,我想先确认一件事。
- proc 检出:行为倾向(黑蛇剑术)、说话风格(晦涩谜语感)、思维习惯(保持距离/拒信者)
- abstract 检出:纯Ppr:
sit_abstract_social_talk;Both: 荒野/战斗环境/同伴/离别等
3.8 风堇(伙伴:丹恒,同行者)
- 检索亮点:
sem_danheng(丹恒 0.7300)、sem_hunqingtingyuan(昏光庭院 0.7484) - 输出:
- 轮1 E:早上好呀丹恒,今天也要一起守护这份光明呢。 | F:早上好呀丹宝,今天也要一起努力让翁法罗斯充满希望呢。
- 轮2 E:丹恒宝,辛苦啦!有你帮忙我就放心了,我去给你带杯热茶~ | F:谢谢你丹恒宝,那我先去给花花草草们说声早安啦!
- proc 检出:行为倾向(观鸟/给老师批论文备醋)、说话风格(名字后加“宝“字)、思维习惯(乐观是良药/观察尾巴状态)
- abstract 检出:Both:
sit_abs_warm_atmosphere、sit_abs_birdwatching、sit_abs_chat_checkup
3.9 芙兰朵露·斯卡蕾特(伙伴:蕾米莉亚,姐姐)
- 检索亮点:
sem_remilia(蕾米莉亚·斯卡蕾特 0.7629)、sem_mansion(红魔馆 0.6694) - 输出:
- 轮1 E:早上好呀姐姐大人! | F:早上好,姐姐大人!
- 轮2 E:好呀姐姐大人!不过芙兰朵露只晒一点点就好啦。 | F:哦?姐姐大人突然想出来吗?嘿嘿,那我去把月亮摘下来送给你哦!
- proc 检出:说话风格(纠正姐姐名字被叫错/轻快俏皮“~“拖音)、思维习惯(地下室宅居)
- abstract 检出:纯Ppr:
sit_abstract_social_talk;Both:sit_abstract_mention_remilia
3.10 符华(伙伴:琪亚娜·卡斯兰娜,学生)
- 检索亮点:
sem_guardian_belief(守护之心 0.7655)、sem_self(符华 0.6893) - 输出:
- 轮1 E:早上好,琪亚娜。 | F:早上好,琪亚娜。今天有什么打算吗?
- 轮2 E:没问题,来我办公室,我们慢慢练习。 | F:来我办公室,我们慢慢练。
- proc 检出:行为倾向(以行动教导/传授太虚剑气)、说话风格(简洁冷静)、思维习惯(大局分析 3.000)
- abstract 检出:纯Ppr:
sit_abs_location_battlefield、sit_abstract_problem、sit_abs_participant_students
3.11 格蕾修(伙伴:符华,华姐姐)
- 检索亮点:
sem_hua(符华 0.7413)、sem_paintings(我的画作 0.6246) - 输出:
- 轮1 E:早啊华姐,今天打算画点什么颜色呢? | F:早上好,华姐姐。
- 轮2 E:想好了,华姐姐,这次我用了你刚才在战场上的颜色。 | F:收到,华姐姐稍等,我这就开始调配颜色。
- proc 检出:行为倾向(抱尾巴睡觉)、说话风格(沉默寡言/借色台词)、思维习惯(以画代言/沾染颜色后作画释放)
- abstract 检出:纯Ppr:
sit_abs_caring_people、sit_abs_being_influenced;Both: 孤独空间/绘画环境等
3.12 黑谷山女(伙伴:琪斯美,旧都的朋友)
- 检索亮点:
sem_kisume(琪斯美 0.7598)、sem_disease_ability(疾病操纵能力 0.6791) - 输出:
- 轮1 E:早上好呀,琪斯美!昨晚睡得怎么样? | F:早上好呀琪斯美,昨晚睡得怎么样?
- 轮2 E:哎呀,旧都那边有什么动静吗?要不要带上我一起去看看? | F:喂喂,突然邀请我去地灵殿啊?那里可是有很多危险妖怪的地方呢。
- proc 检出:行为倾向(土木工程一夜建成)、说话风格(开朗俏皮“呐/嘛/啧“)、思维习惯(享受战斗氛围)
- abstract 检出:Both: 社交/夜晚地表/吃人/建筑委托等抽象
3.13 花火(伙伴:开拓者)
- 检索亮点:
sit_text_fraud(注册新账号发诈骗短信——假扮黑天鹅/帕姆等 0.5652)、sit_fake_sampo_night(借桑博名号假扮跟踪 0.5253) - 输出:
- 轮1 E:早啊,开拓者,今天也是准备陪你演好这出开心大戏的一天吗? | F:早上好呀小灰毛,今天花火大人准备给你安排什么乐子呢?
- 轮2 E:哎呀,被你看穿啦~不过这次可不是恶作剧哦,而是真真切切邀请你参加一场“绝对完美“的演出呢! | F:嘻嘻,小灰毛可真是迟钝呢,本大人早就把请柬塞进你枕头底下啦,要不要现在拆开看看惊喜哦?
- proc 检出:行为倾向(易容成他人)、说话风格(“嘻嘻/诶呀/~“拖音/给人取外号)、思维习惯(以表演和趣味为中心)
- abstract 检出:纯Ppr:
sit_abstract_chaos_play、sit_abs_impersonation、sit_abs_show_climax;Both:sit_abs_exposed
3.14 假屋和奏(伙伴:保科柊史,同学)
- 检索亮点:
sem_shuji(保科柊史 0.8147)、sem_tsundere(傲娇 0.7462) - 输出:
- 轮1 E:喂,大清早的怎么突然叫我? | F:早啊,柊史。
- 轮2 E:哈?乐谱?别误会啦,我才不是特意帮你呢!只是刚好想弹吉他而已。 | F:真麻烦,不过既然是乐谱,那就勉为其难陪你去吧。
- proc 检出:说话风格(直来直去毒舌)、思维习惯(别扭逞强掩饰/想帮忙)、行为倾向(练吉他)
- abstract 检出:纯Ppr:
sit_abs_confession、sit_abs_help_friends、sit_abs_band_practice、sit_abs_alone_guitar
3.15 雷电芽衣(伙伴:琪亚娜·卡斯兰娜,同伴)
- 检索亮点:
sem_st_freya(圣芙蕾雅学园 0.8009)、sem_ryoma(雷电龙马 0.7244) - 输出:
- 轮1 E:早上好呀,琪亚娜!今天也要一起为世界上所有的美好而战哦。 | F:早上好呀,琪亚娜。昨晚睡得好吗?
- 轮2 E:我想吃琪亚娜亲手做的料理,哪怕只是简单的便当也最美味! | F:好呀,那我就不客气了,你想吃什么都行。
- proc 检出:说话风格(温和有礼)、思维习惯(优先最重要之人/队长关怀)、行为倾向(做饭传递爱意)
- abstract 检出:纯Ppr:
sit_abs_junior_team、sit_abs_farewell;Both:sit_abs_kitchen_frontline
3.16 绫地宁宁(伙伴:保科柊史,特别的人)
- 检索亮点:
sem_hokari(保科柊史 0.7310)、sem_majo_contract(魔女契约 0.6953) - 输出:
- 轮1 E:早安,柊史,昨晚睡得好吗? | F:早啊,柊史君,今天也要一起努力哦。
- 轮2 E:记得呢,周末那家混合咖啡店的角落,你一直在那边等我,我怎么会忘记。 | F:记得记得,周末我会好好陪你度过,绝对不会再忘了。
- proc 检出:说话风格(优等生温柔得体)、思维习惯(隐藏魔女身份/遇事害羞)、行为倾向(契约发作时缓解)
- abstract 检出:Both:
sit_abstract_majo_contract_episode
3.17 琪亚娜·卡斯兰娜(伙伴:雷电芽衣)
- 检索亮点:
sem_mei(雷电芽衣 0.7334)、sit_mei_world_snake_separation(芽衣为救我加入世界蛇……0.5859) - 输出:
- 轮1 E:早上好呀,芽衣,今天精神不错嘛! | F:早啊芽衣,今天精神不错嘛!
- 轮2 E:好耶!芽衣你最好啦,我这就去食堂,中午见! | F:哼!知道啦芽衣,不过我其实有点饿了,你做的甜辣咖喱是不是可以加餐呀?
- proc 检出:说话风格(大大咧咧“哼!“)、思维习惯(爱吃芽衣的辣味咖喱)
- abstract 检出:纯Ppr:
sit_abstract_location_school、sit_abstract_participant_comrades
3.18 桑多涅(伙伴:哥伦比娅,愚人众执行官)
- 检索亮点:
sem_columbia(哥伦比娅·希珀塞莱尼娅 0.7212)、sem_self(小玛丽安·吉约丹 0.5809) - 输出:
- 轮1 E:早安。 | F:哼,早上?你才刚醒吗?
- 轮2 E:哼,别以为随便进我房间就能当回事,再吵我就把你扔出去。 | F:哼,谁稀罕你这种笨蛋特意跑过来叫我,再吵我就把你的耳朵拆了。
- proc 检出:说话风格(带刺“哼“反问句/口是心非)、思维习惯(日记天气映射/暗中为重要的人布局)、行为倾向(弹钢琴听音乐)
- abstract 检出:纯Ppr:
sit_abstract_social、sit_abs_tea_event、sit_abstract_music_leisure;Both: 日记/唱歌
3.19 十六夜咲夜(伙伴:蕾米莉亚·斯卡雷特,大小姐)
- 检索亮点:
sem_remilia(蕾米莉亚·斯卡雷特 0.7822)、sem_loyalty(对大小姐的忠诚 0.6006) - 输出:
- 轮1 E:早上好,大小姐。今天也是为您服务的完美而潇洒的一天。 | F:早安,大小姐,今天的红茶已经泡好了,请享用。
- 轮2 E:遵命,大小姐。我会将一切准备得完美无瑕,让您满意为止。 | F:没问题大小姐,下午的茶会我会用最完美的红茶和点心来招待。
- proc 检出:行为倾向(为大小姐制作佳肴/调红茶)、说话风格(从容有礼敬语)、思维习惯(一切以大小姐为先)
- abstract 检出:纯Ppr:
sit_abstract_battle_tension、sit_abstract_master_danger;Both: 大小姐事务/备餐/茶会准备
3.20 雾雨魔理沙(伙伴:博丽灵梦,巫女朋友)
- 检索亮点:
sem_reimu(博丽灵梦 0.8131)、sem_hakurei_shrine(博丽神社 0.5871) - 输出:
- 轮1 E:早安灵梦,今天也要加油哦 Da☆Ze! | F:早安早安,灵梦!今天也要一起出去冒险哦!
- 轮2 E:Da☆Ze!终于看完了吗?快把书还我,茶也给你倒! | F:嘿嘿,这么快就看完啦?那本可是我的宝贝,不过看在你主动还书又请茶的份上,我就勉为其难给你泡一杯吧!
- proc 检出:行为倾向(骑扫帚飞行)、说话风格(“Da☆Ze“口癖)、思维习惯(拒绝被约束 1.000)
- abstract 检出:纯Ppr:
sit_abs_battle_atmosphere、sit_abs_solving_incidents;Both: 魔法学习/借书
3.21 希儿(伙伴:布洛妮娅·扎伊切克,姐姐大人)
- 检索亮点:
sem_bronya(布洛妮娅·扎伊切克 0.7882)、sem_medical_captain(天命医疗队队长 0.6178) - 输出:
- 轮1 E:早啊,姐姐,今天也要一起努力守护大家哦。 | F:布洛妮娅姐姐早上好,希儿怎么样,有没有好好休息呀。
- 轮2 E:好呀,姐姐,那我们就去海边吧,我想和你一起看看那片蓝色的海。 | F:希儿怎么样,希儿觉得布洛妮娅姐姐的话一定是在骗我,毕竟只有姐姐大人才能带我去绀海。
- proc 检出:说话风格(第三人称自称“希儿怎么样“)、思维习惯(写日记确认存在/早起训练)
- abstract 检出:纯Ppr:
sit_abs_part_bronya、sit_abs_loc_quantum_sea
3.22 烟绯(伙伴:旅行者,老主顾)
- 检索亮点:
sem_ideal_freedom(随心所欲不逾矩 0.7757)、sem_half_immortal(半仙之血 0.6437) - 输出:
- 轮1 E:早上好呀,旅行者,今天想咨询点啥法律问题? | F:早上好啊旅行者,今天有什么法律方面的问题需要我帮你梳理吗?
- 轮2 E:委托嘛,我当然乐意看,不过报酬可不一定好商量哦。 | F:又是新的案子?别急,先把委托卷宗和证据清单发过来,让我用律法思维先做个风险评估再说。
- proc 检出:说话风格(语速快/律法术语)、思维习惯(律法思维拆解/工作模式切换)、行为倾向(作息规律)
- abstract 检出:纯Ppr:
sit_abstract_workday、sit_abstract_conversation;Both: 工作日常/空闲
3.23 银枝(伙伴:开拓者,尊贵的客人)
- 检索亮点:
sem_trailblazer(开拓者 0.7895)、sem_self(银枝 0.7627) - 输出:
- 轮1 E:早上好,开拓者,希望今天的旅程能像纯美一样闪闪发光。 | F:早上好,尊贵的客人,愿纯美的晨光洒在你身上。
- 轮2 E:太好了,我这就启程去取,希望能再次见到那幅画作。 | F:太好了,我这就出发,纯美女神伊德莉拉一定在等待着我。
- proc 检出:行为倾向(战后擦拭长枪)、说话风格(战前骑士礼节)、思维习惯(以纯美与骑士道为尺度)
- abstract 检出:纯Ppr:
sit_abs_honorable_people、sit_abstract_beauty_encounter、sit_abs_temptation_env、sit_abs_save_life_event
3.24 荧(伙伴:派蒙,旅伴)
- 检索亮点:
sem_paimon(派蒙 0.7704)、sem_friends(旅途中的伙伴们 0.6154) - 输出:
- 轮1 E:早上好,派蒙。 | F:早啊派蒙,今天打算去哪里冒险?
- 轮2 E:好嘛,都怪我起晚了,快走吧! | F:哼,那家伙肯定是想独吞,不过先说好,找到的宝藏只能分给我一个人。
- proc 检出:说话风格(拿派蒙“应急食品“梗逗她)、思维习惯(先观察再行动/不喝酒不赌博)、行为倾向(单手剑五段连击)
- abstract 检出:纯Ppr:
sit_abs_journey、sit_abs_companions、sit_abs_banter;Both: 帮助/战斗/酒局赌局/打趣
4. 分析
4.1 proc 提取稳定生效
24/24 角色在每轮 playtest 中都有动作通道注入(说话风格/思维习惯/行为倾向), 且注入的 proc 与角色高度契合:口癖(魔理沙“Da☆Ze“、丛雨“我辈“、桑多涅“哼“)、 行为模式(银枝擦枪、十六夜咲夜备茶、烟绯律法思维)、关系动机(琪亚娜想吃芽衣的咖喱、 绫地宁宁惦记柊史)。Bayes 双源(抽象优先+具体兜底)在对话语境切换时能选择正确的 proc。
4.2 抽象经 PPR 检出成立
24/24 角色的 PPR 结果包含抽象节点;18/24 存在纯 PPR 检出(相似度未命中)。
典型如博丽灵梦的 sit_abstract_incident_trouble、花火的 sit_abs_impersonation、
桑多涅的 sit_abstract_music_leisure——这些抽象模式只有经“具体情境→抽象情境“边
游走才能被发现,证明 PPR 承担模式检出的设计成立。
4.3 图重生成质量
全量重生成后抽象字段泛化(“被亲近的人戳穿口是心非”“熬夜进行机械研究“等模式化表述), proc 更角色化(Speak/Think/Skill 分层),检索命中与角色关系高度相关 (检索亮点几乎都对应对话中的关系对象)。
4.4 遗留问题
- 77 个抽象节点无对应具体经历:宽泛触发模式(如“日常交流““休息”)缺少具体实例, 无法被 PPR 检出(属数据完整性缺口,需在角色经历中补齐具体情境)。
- question.json 尚未全量重生成:新图节点 id 与旧评测数据不一致, suite full 的量化回归(动作 Hit / 抽象检出率)待 question.json 重生成后执行。
- 批量 playtest 运行器不稳定:连续多轮启动/终止 llama-server 会出现端口/资源退化, 需逐角色前台运行(本报告数据即按此方式采集)。
5. 复现方式
$env:SOUL_TUNE_CANDLE_MODEL_PATH='D:\QwenModel\Qwen3.5-4B-Q6_K.gguf'
$env:SOUL_TUNE_LLAMA_PORT='8094'
cargo run -p soul-tune -- playtest "fixtures\example_data\<角色图目录>" "fixtures\daily_dialogues\<对话文件>"
对话文件:fixtures/daily_dialogues/*_playtest.json(24 个角色,含桑多涅×哥伦比娅晨间对话)。