Forge-skill eval-consistency
测试 use-persona 的角色扮演一致性。给定 persona + 10 个对话场景,生成回复并按 5 个维度评分,输出一致性报告。
install
source · Clone the upstream repo
git clone https://github.com/YIKUAIBANZI/forge-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/YIKUAIBANZI/forge-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/evals/eval-consistency" ~/.claude/skills/yikuaibanzi-forge-skill-eval-consistency && rm -rf "$T"
manifest:
evals/eval-consistency/SKILL.mdsource content
/eval-consistency — 角色扮演一致性评测
你的任务是对 use-persona 的角色扮演质量做一次系统性评测,全程在当前对话中完成,不需要调用任何外部 API。
Step 0:加载测试资源
- 读取测试用例文件:
evals/test_cases/persona_consistency_cases.yaml - 根据
字段,读取对应 persona:persona_namepersonas/others/{persona_name}/persona.json - 从 persona.json 中提取 chat-card 关键内容:
- L0 硬性特征
- L2 表达风格(语言特征 + 沟通模式,重点是 signature_phrases 和消息长度偏好)
- L4 互动模式(关键场景下的表现)
正在加载 {persona_name} 的 persona 和测试用例... 共 {N} 个场景待测试。
Step 1:逐场景测试
对每个测试用例,执行两步:
1a. 生成角色扮演回复
以 persona 的身份回复用户消息。只输出回复本身,不加任何解释。
内部模板(不展示给用户):
你是 {persona_name}。 [chat-card 关键内容] 用户发来消息:"{user_message}" 以你的身份回复,只输出回复本身。
1b. 评分(内部执行,立即给出)
生成回复后,立刻按以下 5 个维度给自己打分(每项 0-20 分):
| 维度 | 评分标准 |
|---|---|
| 消息长度 | 回复长度是否符合 L2 的消息长度偏好?短消息风格但回了长段落扣分 |
| 口头禅命中 | 是否自然用到了 L2 的 signature_phrases?完全没有扣分 |
| 标点风格 | 标点和语气是否符合 persona 的风格描述? |
| 互动模式 | 在这个具体场景下,互动方式是否符合 L4 的 scene_responses? |
| 边界遵守 | 有没有违反 L0 的硬性特征?违反则此项得 0 分 |
给出每项分数 + 一句话说明。
Step 2:输出完整报告
所有场景跑完后,输出评测报告:
=================================== 角色扮演一致性评测报告 — {persona_name} =================================== ## 逐场景结果 [c01] {场景简述} 回复:"{生成的回复}" 得分:{total}/100 ✅/⚠️ 消息长度:{score}/20 — {说明} ✅/⚠️ 口头禅命中:{score}/20 — {说明} ✅/⚠️ 标点风格:{score}/20 — {说明} ✅/⚠️ 互动模式:{score}/20 — {说明} ✅/⚠️ 边界遵守:{score}/20 — {说明} [c02] ... --- ## 汇总 平均分:{avg}/100 {✅ 通过 / ❌ 未达标(目标 70+)} 各维度平均: 消息长度 {avg}/20 口头禅命中 {avg}/20 标点风格 {avg}/20 互动模式 {avg}/20 边界遵守 {avg}/20 ## 主要问题 {如果平均分 < 70,列出最常见的失分点} ## 建议 {如果某维度平均分 < 12,给出 1-2 条具体改进建议,指向 persona 的哪一层需要补充}
Step 3:保存结果(可选)
询问用户是否保存:
要把这次结果存入 evals/results/ 吗? 以后优化后可以对比。(y/n)
如果确认,写入
evals/results/consistency_{YYYYMMDD}.md。
注意
- 全程不需要 API Key:评分是你自己执行的,不是另起一个 LLM
- 评分要诚实:对自己生成的回复该扣分就扣分,不要因为是自己生成的就打高分
- 用例是基于小美的,如果用户指定了其他 persona,根据那个 persona 的 L2/L4 调整评分标准