Labs · 角色卡体检
把角色卡拖进来,
做个体检。
下载来的卡导不进去,或者导进去了聊两句就不对劲——很多时候不是前端的错,是卡本身带着坑。把 .png / .json / .charx 拖进来:浏览器本地读出规格版本、逐字段称 token、清点内嵌世界书,把已知的坑逐条标出来、告诉你怎么修。 文件不出你这台机器。
把角色卡拖进来,或点击选择文件
.png · .json · .charx
文件在浏览器本地解析——不上传、不留存,页面加载完断网也能用。
体检报告会出现在这里。
规则从哪来
这些检查不是拍脑袋定的。我们给 Foreverse 写角色卡导入链时,把 34 张真实社区卡(V1 老卡、97,602 字符超长开场白、126 条世界书、双数据块 PNG、繁体全角名……)从 PNG / JSON / charx 三种容器一路测过导入与开聊,并对照 SillyTavern 1.18 源码核定过读取行为——ccv3 优先于 chara、空开场白提升第一条备选、示例对话最先被丢弃,都来自那次核定。这里的每条红黄项,对应的是实测里真实出现过的失败或降级。
它测不出的(诚实边界)
三件事说在前面。一,token 是字符占比估算,不是分词器:不同模型的分词差异可达两三成,把数字当量级看、别当精确值。二,体检通过 ≠ 卡写得好——人设立不立得住、开场白抓不抓人,是内容层的事,结构检查够不着。三,随卡正则、美化 HTML、TavernHelper 脚本的运行时行为不在检查范围:这里只看数据结构,不模拟运行。
一张角色卡到底吃多少 token?
比文件大小看上去的多:Description、Personality 和内嵌世界书是每一轮对话都要重发的「常驻行李」, 开场白和示例对话则另算。把卡拖进上面的体检器,每个字段单独称重、常驻与一次性分开列, 还会点名那些只加重量、永远不会触发的死条目。
常见问题
体检时我的卡文件会被上传吗?
不会。解析完全在你的浏览器里进行——PNG 数据块、JSON、charx 压缩包全部用浏览器自带能力本地解码,任何内容都不发往服务器。页面加载完之后断网也能照常用。
支持哪些格式?
三种容器:PNG 卡图(tEXt / iTXt / zTXt 文本块里的 chara / ccv3 数据,读取顺序与酒馆一致 ccv3 优先)、纯 JSON(V1 平铺老卡、V2、V3),以及 .charx 压缩容器(包内 card.json 直接在浏览器里读出)。独立世界书 JSON 和群聊导出会被识别出来,如实告诉你「这不是角色卡」而不是硬解。
为什么 token 数和别的工具对不上?
这里是字符占比估算,不是真分词器:中文按约 1.6 字/token、英文按约 4 字符/token——DeepSeek、GPT 系模型的常见口径。真实分词因模型而异,偏差可达两三成。把数字当量级看,别当精确值。
charx 是什么格式?
chara_card_v3 规范定义的 zip 容器:包根一个 card.json,外加可选的资产(头像、立绘、背景)。本工具读取其中的 card.json 做体检;资产解包是完整前端在导入时做的事。网页版有一条边界:zip64 超大包(条目表 4GB+ 的形态,真实卡里极少见)这里解不了——遇到会如实提示而不是硬猜,Foreverse App 里可以正常导入。