wanghehe123/dsh-Friend--packages-dsh-friend-persona ↗★ 1
@wishp3/dsh-friend-persona
角色卡存取、预设注册、人格提示词分区
安装
此插件尚未提供可验证的 bundle,或兼容性检查未通过。请先阅读仓库说明。 阅读完整 README ↗
说明文档
阅读完整 README ↗@wishp3/dsh-friend-persona
角色卡存取、酒馆卡导入、预设注册、人格提示词分区。
Host 入口仍是 src/index.ts(由接线任务挂载)。本包已导出的模块:
src/store.ts— 角色卡 CRUD、默认角色种子、数据根解析src/tavern-import.ts— SillyTavern PNG / JSON 导入
数据根目录解析优先级
resolveFriendDataDir({ dshHome?, override?, env?, homedir? }) 是纯函数,不会写死 ~/.dsh。第一个非空值生效:
options.override— 直接指定 friend 数据根(已含friend/,测试注入用)- 环境变量
FRIEND_DATA_DIR— 同样是 friend 数据根 options.dshHome— 拼成/friend- 环境变量
DSH_HOME— 拼成/friend(冒烟脚本的隔离临时 home 走这条) /.dsh/friend
角色卡路径:/characters//persona.json。
单元测试一律把 override 指到 os.tmpdir();读取默认回退时传入 env: {},避免本机真实 DSH_HOME 泄漏进断言。
角色卡 schema
写入前校验这些字段(手写类型守卫,不引入 zod,也不运行时依赖 @deepseek-ai/schemastery):
| 字段 | 类型 | 约束 |
|---|---|---|
name | string | 必填,trim 后非空 |
personality | string | 必填 |
background | string | 必填 |
speakingStyle | string | 必填 |
language | string | 必填 |
nickname | string | 必填(对用户的称呼) |
greetings | string[] | 必填(可空数组) |
live2dModel | string? | 若出现必须是字符串 |
voice | string? | 若出现必须是字符串 |
tags | string[] | 必填(可空数组) |