角色管理
⚠️ 免责声明:本文档由 GLM4.7 自动生成,内容可能存在错误或不完整之处。请以人工书写的官方文档为准。
角色管理功能帮助你管理小说中的角色、敏感词、词汇等设定。支持多种分组显示模式和自定义分组规则。
打开角色管理
在 VS Code 左侧活动栏中,点击 角色图标(类似人形图标),即可打开角色管理面板。
视图类型
角色管理提供两个视图:
| 视图 | 说明 | 范围 |
|---|---|---|
| 所有角色视图 | 显示项目中加载的所有角色 | 全局角色库 |
| 当前文章角色视图 | 仅显示当前文档中出现的角色 | 当前文档过滤 |
两个视图可以同步显示设置(在设置中开启
allRoles.syncWithDocRoles)。
当前文章角色视图
当前文章角色视图专门显示当前文档中实际出现的角色,帮助你快速了解章节中涉及哪些角色。
视图位置
当前文章角色视图有两个显示位置:
| 位置 | 图标 | 说明 |
|---|---|---|
| 侧边栏 | 👤 | 在活动栏中显示,使用 docRolesView |
| 资源管理器 | 👤 | 在资源管理器面板中显示,使用 docRolesExplorerView |
两个视图功能完全相同,只是显示位置不同。
核心特性
按文档过滤
视图仅显示在当前文档中出现的角色。当你切换文档时,视图会自动更新为新文档中的角色。
按文档保存展开状态
每个文档都有独立的展开状态记录。当你:
- 展开/折叠节点 - 状态会保存到当前文档
- 切换文档 - 自动恢复该文档的展开状态
- 返回文档 - 展开状态与之前一致
继承展开状态
当打开一个从未访问过的文档时,可以继承上一个文档的展开状态。
在 VS Code 设置中配置 AndreaNovelHelper.docRoles.inheritExpandedFromPrevious:
| 设置值 | 效果 |
|---|---|
true(默认) | 新文档继承上一个文档的展开状态 |
false | 新文档使用默认折叠状态 |
自动刷新
视图会在以下情况自动刷新:
| 触发时机 | 效果 |
|---|---|
| 切换文档 | 更新为新文档中的角色 |
| 文档内容变化 | 重新扫描角色并更新列表 |
| 角色定义变化 | 更新角色属性显示 |
配置选项
在 VS Code 设置中搜索 AndreaNovelHelper.docRoles:
| 配置项 | 说明 | 默认值 |
|---|---|---|
inheritExpandedFromPrevious | 新文档是否继承上一个文档的展开状态 | true |
groupBy | 分组依据(与所有角色视图相同) | affiliation |
respectAffiliation | 是否遵循从属字段 | true |
respectType | 是否遵循类型字段 | true |
primaryGroup | 第一级分组方式 | affiliation |
useCustomGroups | 是否启用自定义分组 | false |
customGroups | 自定义分组规则 | [] |
display.colorizeRoleName | 用角色颜色标记名称 | false |
display.useRoleSvgIfPresent | 使用角色自定义图标 | false |
使用场景
场景 1:检查章节角色一致性
写作时打开当前文章角色视图,查看章节中是否遗漏了某个重要角色,或者角色出场顺序是否合理。
场景 2:快速定位角色信息
在视图中展开角色查看详情,确认角色的从属、类型等属性是否符合当前章节的设定。
场景 3:多章节角色管理
在多个章节间切换时,展开状态会自动保存和恢复,方便你保持每个章节的查看偏好。
分组模式
角色系统支持两种主要的分组模式:
标准分组模式
根据角色属性自动分组,支持三种分组依据:
按从属分组(默认)
第一级按 affiliation(从属/阵营)分组,第二级按 type(类型)分组:
📁 正义阵营
📁 主角
👤 张三
📁 配角
👤 李四
📁 邪恶阵营
📁 反派
👤 王五按类型分组
第一级按 type(类型)分组,第二级按 affiliation(从属/阵营)分组:
📁 主角
📁 正义阵营
👤 张三
📁 邪恶阵营
👤 赵六
📁 反派
📁 邪恶阵营
👤 王五不分组(扁平化)
所有角色平铺显示,不分层级:
📁 全部角色
👤 张三
👤 李四
👤 王五
👤 赵六自定义分组模式
根据用户定义的规则分组,支持按类型或归属模式匹配。
图形化管理(推荐)
使用快速设置可以图形化管理自定义分组规则,无需手动编辑配置文件。
打开方式:
- 使用命令
Andrea Novel Helper: 快速设置 - 选择 配置当前文章角色显示 或 配置全部角色显示
- 选择 管理自定义分组规则
管理功能:
| 功能 | 说明 |
|---|---|
| 查看规则 | 列出所有已创建的自定义分组规则 |
| 添加规则 | 创建新的自定义分组 |
| 编辑规则 | 修改现有规则的名称、匹配类型、匹配模式 |
| 删除规则 | 删除不需要的分组规则 |
| 重置为默认 | 恢复到默认的自定义分组配置 |
添加分组规则:
- 选择 添加新的分组规则
- 输入分组名称(如"主要角色")
- 选择匹配字段类型:
- 归属字段 - 按 affiliation 字段匹配
- 类型字段 - 按 type 字段匹配
- 输入匹配模式(用逗号分隔多个模式,如"主角,重要")
编辑分组规则:
- 选择要编辑的分组
- 可修改:
- 分组名称
- 匹配类型(归属/类型)
- 匹配模式(用逗号分隔的字符串)
- 或选择删除该分组
默认分组规则:
选择 重置为默认规则 会恢复以下默认配置:
[
{
name: "词汇敏感词",
matchType: "type",
patterns: ["词汇", "敏感词", "正则表达式"]
},
{
name: "主要角色",
matchType: "affiliation",
patterns: ["主角", "重要", "主要"]
},
{
name: "配角",
matchType: "affiliation",
patterns: ["配角", "次要", "其他"]
}
]手动配置(高级)
你也可以直接在 VS Code 设置中编辑 JSON 配置:
搜索 AndreaNovelHelper.allRoles.customGroups 或 AndreaNovelHelper.docRoles.customGroups:
[
{
name: "主角组",
matchType: "type", // 按 type 字段匹配
patterns: ["主角", "主角团"]
},
{
name: "势力A",
matchType: "affiliation", // 按 affiliation 字段匹配
patterns: ["正义阵营", "光明会"]
}
]规则结构:
| 字段 | 类型 | 说明 |
|---|---|---|
| name | string | 分组显示名称 |
| matchType | string | 匹配类型:type(类型)或 affiliation(归属) |
| patterns | string[] | 匹配模式数组,支持多个值 |
自定义分组效果
📁 主角组
📁 主角
👤 张三
📁 配角
👤 李四
📁 势力A
📁 主角
👤 张三
📁 反派
👤 王五
📁 其他
📁 词汇
📝 神剑
📁 敏感词
⚠️ 重复用词自定义分组规则原理(高级)
注意:本节详细解释自定义分组的工作原理,适合需要深入了解配置的高级用户。通过图形化管理(快速设置)和手动配置的效果是一样的,此处仅作为配置文件结构详解。
1. 背景与作用
自定义分组功能允许你脱离内置"类型 → 归属 → 角色"三级结构,按照自己的规则(类型、归属或正则)来对角色进行分组,便于阅读、编辑和管理。
2. 配置作用域
配置可分别作用于两种视图:
allRoles(全部角色视图)docRoles(当前文章角色视图,侧边栏 & Explorer)
配置路径(settings.json)示例:
"AndreaNovelHelper.docRoles.useCustomGroups": true,
"AndreaNovelHelper.docRoles.customGroups": [ /* 自定义分组列表 */ ],
"AndreaNovelHelper.allRoles.syncWithDocRoles": false,
"AndreaNovelHelper.allRoles.useCustomGroups": true,
"AndreaNovelHelper.allRoles.customGroups": [ /* … */ ]3. 分组规则项字段
每个分组项是一个 JSON 对象,关键属性:
| 字段 | 类型 | 说明 |
|---|---|---|
name | string | 组名,会展示在树视图顶层 |
matchType | string | 匹配类型:"type" | "affiliation" | "regex" |
pattern | string | 匹配模式(见下文详细说明) |
flat | boolean(可选) | 该组下是否直接平铺(一般不手动设置) |
ignoreType | boolean(可选) | 是否忽略二级"类型"分层 |
ignoreAffiliation | boolean(可选) | 是否忽略二级"归属"分层 |
pattern 字段说明:
- 当
matchType=type或affiliation时:- 支持 glob 模式(如
"战斗*") - 支持逗号分隔列表(如
"勇者公会,救世教会")
- 支持 glob 模式(如
- 当
matchType=regex时:- 必须是完整的 JS 正则字面量(如
/^.*魔法.*$/)
- 必须是完整的 JS 正则字面量(如
配置示例:
{
"name": "战斗角色",
"matchType": "type",
"pattern": "战斗*,Boss"
// 注意:一般不设置 flat,而是通过全局开关控制
},
{
"name": "魔法势力",
"matchType": "affiliation",
"pattern": "魔法森林,天空学院"
},
{
"name": "自定义关键词",
"matchType": "regex",
"pattern": "/^Reimu|Marisa$/"
}4. 匹配与分组流程
自定义分组的工作流程分为三个阶段:
阶段 1:匹配(Match)
- 依照
matchType,用真实的角色type、affiliation或regex去筛选整个角色列表 - 不受全局的
ignoreType/ignoreAffiliation开关影响,保证匹配准确
阶段 2:分组(Group)
- 按配置项的顺序创建顶层组
- 匹配到的角色按全局开关决定是否在同一组内直接平铺,或继续按二级维度(类型或归属)拆分
阶段 3:其他角色(Other)
- 将所有未命中的角色归入一个内置的"其他"分组
5. 忽略开关的效果(推荐使用)
全局开关是控制扁平化的主要方式:
| 开关 | 效果 |
|---|---|
ignoreType=true | 展示时不显示二级"类型"节点,所有角色直接平铺到所属顶层组 |
ignoreAffiliation=true | 展示时不显示二级"归属"节点;若一个分组的 matchType=affiliation,并开启忽略,则所有匹配角色也会直接平铺到该组下 |
重要提示:这两个开关不影响匹配,只控制展示层级。
推荐做法:一般不手动设置每个分组的 flat 字段,而是通过全局的 ignoreType 和 ignoreAffiliation 开关来统一控制所有分组的扁平化行为。这样更简洁且易于管理。
6. 同步与独立
- 当
allRoles.syncWithDocRoles=true,全部角色视图使用同一套docRoles.customGroups规则 - 若需两者分别管理,设为
false并分别配置
7. 完整配置示例
// settings.json
"AndreaNovelHelper.allRoles.syncWithDocRoles": false,
"AndreaNovelHelper.allRoles.useCustomGroups": true,
"AndreaNovelHelper.allRoles.customGroups": [
{
"name": "主角阵营",
"matchType": "affiliation",
"pattern": "勇者公会,救世教会"
},
{
"name": "反派",
"matchType": "type",
"pattern": "Boss,精英*"
}
],
// 推荐:通过全局开关控制扁平化,而不是手动设置 flat
"AndreaNovelHelper.allRoles.ignoreType": false,
"AndreaNovelHelper.allRoles.ignoreAffiliation": true // 所有分组都会扁平化,不显示归属二级节点8. 注意事项
- 正则模式要写完整字面量,不能省略
/.../ flat字段可选且不常用;一般通过全局ignoreType/ignoreAffiliation开关来控制扁平化- 如果一个角色同时命中多个组,按配置项先后顺序归入第一个匹配组
- 未在
customGroups中定义的角色会自动进入"其他"组 - 修改分组配置后,可通过命令面板 "配置:全部角色显示" 或 "配置:当前文章角色显示" 立即刷新视图
分级控制
通过以下设置可以控制分组层级:
遵循从属
- 启用:使用角色的
affiliation字段进行分组 - 禁用:忽略从属字段,该层级扁平化
遵循类型
- 启用:使用角色的
type字段进行分组 - 禁用:忽略类型字段,该层级扁平化
第一级分组
当"遵循从属"和"遵循类型"都启用时,决定第一级使用哪个字段:
| 设置 | 效果 |
|---|---|
| 归属优先 | 第一级按归属,第二级按类型 |
| 类型优先 | 第一级按类型,第二级按归属 |
特殊类型处理
以下角色类型会被特殊处理,单独显示在根目录:
- 敏感词 - 需要标记的词汇(如重复用词)
- 词汇 - 特殊词汇、术语
- 正则表达式 - 使用正则模式匹配
它们会被抽离到"词汇 / 敏感词 / 正则表达式"根节点下:
🔖 词汇 / 敏感词 / 正则表达式
📝 词汇
📁 正义阵营
📝 神剑
⚠️ 敏感词
📁 (未分组)
⚠️ 重复用词
🔧 正则表达式
📁 (未分组)
🔧 连续数字自定义分组模式下,特殊类型不会被抽离,而是按照自定义规则显示。
配置选项
在 VS Code 设置中搜索 AndreaNovelHelper.allRoles 或 AndreaNovelHelper.docRoles:
| 配置项 | 说明 | 默认值 |
|---|---|---|
groupBy | 分组依据:affiliation(按从属)/ type(按类型)/ none(不分组) | affiliation |
respectAffiliation | 是否遵循从属字段进行分组 | true |
respectType | 是否遵循类型字段进行分组 | true |
primaryGroup | 第一级分组:affiliation(归属优先)/ type(类型优先) | affiliation |
useCustomGroups | 是否启用自定义分组模式 | false |
customGroups | 自定义分组规则数组 | [] |
display.colorizeRoleName | 用角色颜色标记名称 | false |
display.useRoleSvgIfPresent | 使用角色自定义图标 | false |
syncWithDocRoles | (仅 allRoles)是否同步当前文章角色的显示设置 | true |
details.enableRoleExpansion | 是否允许角色节点展开查看详情 | true |
details.wrapColumn | 详情折行列数 | 20 |
快速设置
使用命令 Andrea Novel Helper: 快速设置 可以快速调整角色显示:
- 分组依据
- 遵循从属/遵循类型
- 第一级分组
- 自定义分组
- 显示选项
角色类型
| 类型 | 说明 |
|---|---|
| 主角 | 主要角色 |
| 配角 | 次要角色 |
| 联动角色 | 来自其他作品的角色 |
| 敏感词 | 需要标记的词汇(如重复用词) |
| 词汇 | 特殊词汇、术语 |
| 正则表达式 | 使用正则模式匹配 |
添加角色
方法一:从选中文本添加(推荐)
- 在文档中选中角色名称
- 右键点击选中的文本
- 选择 Andrea Novel Helper: 从选中文本添加角色
- 选择或创建角色文件
- 选择角色类型
- 填写角色信息:
- 从属标签(可选)
- 角色简介(可选)
- 颜色(可选)
- 确认添加
方法二:直接编辑角色文件
- 在角色管理面板中双击角色
- 或右键选择 打开源文件
- 按照文件格式添加角色
角色属性
基础属性
每个角色可以包含以下基础属性:
| 属性 | 类型 | 必需 | 说明 |
|---|---|---|---|
| name | string | ✅ | 角色名称 |
| type | string | ✅ | 角色类型 |
| uuid | string | ❌ | 唯一标识符 (UUID v7) |
| affiliation | string | ❌ | 从属标签(如阵营) |
| aliases | string[] | ❌ | 别名数组 |
| description | string | ❌ | 角色简介 |
| color | string | ❌ | 颜色(如 #E60033) |
| style | object | ❌ | 文本样式(新字段) |
| wordSegmentFilter | boolean | ❌ | 是否启用分词过滤 |
| regex | string | ❌ | 正则表达式(仅正则类型) |
| regexFlags | string | ❌ | 正则标志(仅正则类型) |
| priority | number | ❌ | 着色器优先级 |
| fixes | string[] | ❌ | 修复候选(仅敏感词) |
自定义键值对支持
角色模型支持完整的自定义键值对存储,可以在 扩展信息 (extended) 和 自定义字段 (custom) 中添加任意属性。
支持的数据类型:
string- 字符串number- 数字boolean- 布尔值null- 空值string[]- 字符串数组
扩展信息 (extended) - 预定义的自定义字段:
{
name: "张三",
type: "主角",
extended: {
年龄: 25,
身高: 175,
职业: "冒险者",
技能: ["剑术", "魔法"],
性格: "开朗勇敢"
}
}自定义字段 (custom) - 完全自由的键值对:
{
name: "张三",
type: "主角",
custom: {
tags: ["主角", "男性", "战士"],
登场章节: "第一章",
重要程度: 5,
created: "2024-01-01",
note: "核心角色"
}
}角色卡管理器提供了可视化界面来管理这些自定义字段。
角色文件格式
JSON5 格式
[
{
name: "张三",
type: "主角",
color: "#E60033",
affiliation: "正义阵营",
aliases: ["小张", "阿三"],
description: "故事的主角"
}
]Markdown 格式
# 张三
- 类型: 主角
- 颜色: #E60033
- 从属: 正义阵营
- 别名: 小张、阿三
- 描述: 故事的主角
- 分类: 自定义分类OJSON5 格式
一种更简洁的 JSON5 变体:
{
张三: {
type: "主角",
color: "#E60033"
}
}查看角色详情
展开角色节点
点击角色名称左侧的 > 图标即可展开查看角色的所有属性。
展开后显示的内容包括:
1. 优先级信息(如果有)
- ⚡ 总优先级 - 角色的最终计算优先级(数字越小优先级越高)
- 📄 文件优先级 - 角色定义文件中的优先级设置
- 📊 优先级构成 - 优先级计算来源的详细分解
2. 基础属性
- 📝 名称 - 角色名称
- 🆔 UUID - 角色唯一标识符
- 🏷️ 类型 - 角色类型
3. 其他属性
以下属性按字母顺序显示:
| 图标 | 属性 | 说明 |
|---|---|---|
| 🎨 | 颜色 | 角色高亮颜色 |
| 🏠 | 从属 | 阵营/归属 |
| 📛️ | 别名 | 别名数组 |
| 📝 | 描述 | 角色简介 |
| 🔧 | 修复 | 敏感词的替换建议 |
| ⚡ | 优先级 | 着色器优先级 |
| 📝 | 分词过滤 | 是否启用分词过滤 |
| 🔍 | 正则 | 正则表达式模式 |
| 🔍 | 正则标志 | 正则表达式标志 |
| 📁 | 包路径 | 角色包路径 |
| 📄 | 源文件 | 角色定义文件路径 |
| 🖼️ | 图标 | 自定义图标路径 |
对象和数组展开
如果属性的值是对象或数组类型,可以继续展开查看:
- 数组 - 显示为
数组[n],展开后显示每个元素 - 对象 - 显示为
对象{n个属性},展开后显示所有键值对 - 空数组/空对象 - 显示为
空数组或空对象,不可展开
配置详情折行宽度
调整原因
受限于 VS Code TreeView 的 DOM 控制,角色详情的描述是通过手动拆分为多行文本实现的。如果你的侧边栏宽度与默认不同,可能需要调整折行宽度。
宽度示例
| 设置值 | 效果 |
|---|---|
| 过窄 | 一行显示不完全,文字被截断 |
| 正常 | 文字正常折行,充分利用空间 |
| 过宽 | 浪费空间,留白过多 |
调整步骤
打开快速设置面板
- 使用命令
Andrea Novel Helper: 快速设置 - 选择 配置当前文章角色显示 或 配置全部角色显示
- 使用命令
找到 详情折行行数 设置
设置为一个合适的数值(5-200)
- 默认值: 20 字符
- 推荐值: 根据侧边栏宽度调整
点击 确定 保存设置
手动刷新视图查看效果
注意: 当前版本设置完宽度后需要手动刷新才能应用,将在后续版本中支持自动刷新。
颜色字段特殊显示
"颜色"(color)字段的值会显示为对应的颜色方块图标,方便直观识别角色颜色。
角色颜色图标
工作原理
为角色提供视觉化的颜色标识,提升界面辨识度:
- 颜色方块:如果角色对象包含
color、colour或颜色字段,系统会在角色名称前显示一个对应颜色的方块图标 - 图标优先级:
- 角色自带的 SVG 图标(如果启用
useRoleSvgIfPresent) - 颜色方块(14x14 像素圆角矩形)
- 文件类型图标(默认)
- 角色自带的 SVG 图标(如果启用
颜色方块样式
- 尺寸: 14x14 像素
- 样式: 圆角矩形
- 支持: 透明度和边框
- 效果: 提供良好的视觉反馈
配置开关
在 VS Code 设置中配置:
| 配置项 | 说明 | 默认值 |
|---|---|---|
AndreaNovelHelper.docRoles.display.colorizeRoleName | 当前文章角色是否启用颜色标记 | false |
AndreaNovelHelper.allRoles.display.colorizeRoleName | 所有角色是否启用颜色标记 | false |
AndreaNovelHelper.roles.details.useRoleSvgIfPresent | 优先使用角色自定义 SVG 图标 | false |
颜色格式
支持的颜色格式:
{
color: "#E60033" // 十六进制
color: "rgb(230, 0, 51)" // RGB
color: "rgba(230, 0, 51, 1)" // RGBA
}角色详情展开功能
功能说明
角色节点支持展开显示详细信息,便于快速查看和编辑角色属性:
展开机制
点击角色节点旁边的展开图标(▶),可查看该角色的所有属性。
属性显示规则
- name 字段置顶:名称始终在第一位显示
- 其他属性按字母排序:便于快速查找
- 长文本截断:超长文本会被截断,完整内容在悬停提示中显示
- 多级展开:对象和数组类型的值可以继续展开
展开内容分类
1. 基础信息
- 名称(name)
- UUID(uuid)
- 类型(type)
2. 显示属性
- 颜色(color)
- 从属(affiliation)
- 别名(aliases)
- 描述(description)
3. 扩展属性
- 优先级(priority)
- 分词过滤(wordSegmentFilter)
- 正则表达式(regex, regexFlags)
- 修复建议(fixes)
4. 元数据
- 包路径(packagePath)
- 源文件(sourcePath)
文本折行控制
长文本(如描述)会自动折行显示,折行宽度可通过 AndreaNovelHelper.roles.details.wrapColumn 配置。
配置开关
在 VS Code 设置中配置:
| 配置项 | 说明 | 默认值 |
|---|---|---|
AndreaNovelHelper.roles.details.enableRoleExpansion | 是否允许角色节点展开查看详情 | true |
AndreaNovelHelper.roles.details.wrapColumn | 详情折行列数(5-200) | 20 |
快速操作
- 展开/折叠单个角色:点击角色左侧的 ▶/▼ 图标
- 展开/折叠所有:使用右键菜单或快捷键(如已配置)
- 查看完整信息:鼠标悬停在属性值上查看完整内容
启用/禁用角色展开
在 VS Code 设置中配置 AndreaNovelHelper.roles.details.enableRoleExpansion:
| 设置值 | 效果 |
|---|---|
true(默认) | 角色节点可以展开查看详情 |
false | 角色节点不可展开,仅显示名称 |
鼠标悬停
鼠标悬停在角色上会显示:
- 角色名称
- 类型
- 描述
- 其他属性
打开源文件
- 双击角色
- 或右键选择 打开源文件
- 会打开角色定义文件
在文档中使用角色
添加角色后,在文档中:
自动高亮
- 角色名称会自动高亮显示
- 根据角色类型使用不同颜色
自动补全
- 输入角色名称时会自动提示
- 按
Tab或Enter接受建议
跳转到定义
- 右键点击角色名称
- 选择 转到定义
- 跳转到角色定义
敏感词和词汇
敏感词
用于标记需要注意的词汇:
- 重复用词
- 不合适的词汇
- 需要替换的词语
敏感词会以特殊方式标记,并可提供修复建议。
词汇
用于标记特殊词汇:
- 专有名词
- 技术术语
- 自创词汇
正则表达式
使用正则表达式模式匹配:
regex: "\\d+"
regexFlags: "g"这会匹配所有数字。
右键菜单
在角色管理面板中右键点击角色:
| 菜单项 | 说明 |
|---|---|
| 打开源文件 | 打开角色定义文件 |
| 复制名称 | 复制角色名称到剪贴板 |
| 刷新 | 刷新角色列表 |
| 在文档中查找 | 搜索该角色在当前文档中的出现 |
常见问题
角色没有高亮?
- 确认角色已添加
- 检查角色名称拼写
- 确认扩展功能已启用
- 尝试刷新角色列表
别名不生效?
- 检查别名是否正确添加
- 确认没有启用"分词过滤"(某些情况下会误过滤)
正则表达式不匹配?
- 检查正则语法是否正确
- 确认标志设置(如
gi) - 使用正则测试工具验证
如何批量导入角色?
- 创建 JSON5 文件
- 按格式填写角色信息
- 保存到角色目录
- 刷新角色列表
分组显示不正确?
- 检查
groupBy设置 - 检查
respectAffiliation和respectType设置 - 确认角色字段是否正确填写
- 尝试刷新角色列表