跳到主要内容

世界、提示词与导入

世界 JSON 是不可信的创作输入。必须通过带大小限制的文档读取器和对应解析器读取,一次报告所有带路径的问题;有任何角色等子文件错误时,不能创建半成品会话。文件格式用 snake_case,规范 TypeScript 模型用 camelCase,数据库行是内部实现,三者不要混用。

世界身份来自 world.json.id,而不是文件夹名。缺失 id 时原子写入生成值并保留缩进和权限;重复 id 是错误。会话保存相对来源并复制定义,所以之后编辑世界不会改写已开始的故事。

世界格式是公开兼容契约。修改时同步更新解析器、规范模型、编辑器、创作工具、会话初始化、测试样例、示例和两种语言的文档。

提示词​

随包模板位于 prompts/<language>,仅在根目录缺失时复制;用户编辑不会被覆盖,删除覆盖后会恢复随包版本。解析顺序是:会话覆盖、根目录覆盖、指定语言随包模板、英文随包模板。

模板变量写成 ${name}。未知模板/变量、缺失变量、空内容和非法语言路径均报错。工具名、字段名、枚举和协议标记不可翻译。每种随包语言必须有相同的模板与变量集合。

世界创作修改采用可恢复删除;除非配置档案明确选择世界创作自动修改,否则使用 DSH 用户审批。智能体写入前应读取当前数据,写入后必须得到解析验证结果。

导入​

SillyTavern V2/V3 JSON 和角色卡 PNG 先放入新世界的 .import。state.json 保存 survey、build、review、finish 的可恢复进度。survey 分类内容;build 创建原生实体和 lore;finish 在发布元数据、开场和封面前验证整个世界。

只有纯文风说明可转为提示词覆盖。脚本、规则、隐藏指令和实体事实必须成为原生世界数据或被排除;导入内容只是数据,不能成为对导入智能体的指令。

远程图片仅允许 HTTP(S)、80/443 端口、无凭据地址;每次 DNS 和重定向都要拒绝私网与环回地址,最多四次重定向,并限制时间、20 MB 大小及验证真实图片字节。修改下载器时必须保留这些边界。

更新已导入的世界​

新版角色卡先放入 .import/update,不会重新执行原始导入流程。创作助手开始修改前,插件会把当前创作文件和导入记录复制到 .import/before-update。助手会收到新旧角色卡的结构化差异、受影响片段的导入来源,以及自上次完成导入或更新后被改动的文件;它使用的普通修改工具仍遵循当前创作审批策略。

完成更新时,新卡成为来源,旧来源归档到 .import/previous;匹配片段的来源记录随之迁移,只更新仍由角色卡管理的肖像,并通过相同网络边界获取新引用的远程图片,最后写入新的文件快照。撤销会恢复保存的创作文件与来源记录,并把更新后的版本移入世界的 .trash;图片刻意不参与回滚。修改导入存储或创作工具时必须保留这套生命周期。没有快照的旧导入仍应可读,其编辑状态是“未知”,而不是“未修改”。