酒馆 SillyTavern 傻瓜式写卡

admin 2025年1月16日23:24:17评论2,071 views1字数 19137阅读63分47秒阅读模式

前言

最近在研究酒馆,研究了一下角色卡的制作过程。不是很专业,只是分享一下自己的看法,如果过程中存在可优化或者错误的地方,希望大佬们指出。

本文默认读者使用过 SillyTavern,能够基础的运行并能够启动聊天。

注意:我不会对我认为的极其基础的概念进行讲解,比如什么是正则表达式?什么是 Prompt ?文章提到的 AI 模型是什么东西?等等。如果有看不懂的但是我没有对其进行解释,请在下面三个网站中自行搜索相关概念,并进行学习

  • • 搜索 - Microsoft 必应
  • • Google
  • • 官方汉化介绍:SillyTavern 安装

快速生成角色卡

首次写卡,可用 Discord 类脑 中大佬创作的 写卡助手 进行创作

  • • 链接: Discord

按照教程导入后,向角色发起聊天即可,例如如下请求

设计一个女性心理学专家,能够从{{user}}给出的实际情况中,一针见血的给出存在的心理问题,并给出对应的理论基础。在进行分析后,给出合适的,符合实际的解决方案。

其中 {{user}} 即为当前用户,也就是和 AI 聊天的你。对应的,AI 所 {{char}}。使用 claude 3.5 sonnet 模型,效果如下

酒馆 SillyTavern 傻瓜式写卡

如果感觉不好,可以提出自己对要生成的角色的看法,让其重新生成一个角色。在角色生成好后,新建一张没有设定角色的白卡,在 角色描述 中填写内容

酒馆 SillyTavern 傻瓜式写卡

在右上角可以看到角色卡用的 token数。角色描述下面的词符角色描述token数量,也叫做恒定token。目前我们这张卡只有角色描述,所以卡用的token角色描述token数量相同,为 1374

对于角色的定义,这里建议使用英文进行描述,可以省很多 token。翻译建议使用 Claud 进行翻译

酒馆 SillyTavern 傻瓜式写卡

英语功底好的话,建议自己过一遍。将最后的结果粘贴到 角色描述 中

酒馆 SillyTavern 傻瓜式写卡

可以看到变成 892 了。

之后需要设计一个 首条消息。首条消息是角色卡的第一句话,不能太多,不能太少;不能有太多 {{user}} 的内容;需要通过简洁的语言体现出人物性格、语言特点。

如果不知道怎么写,把 人物描述 扔给 AI(并非角色卡),让其自己生成。这里使用 Gemini exp 1206 模型。

酒馆 SillyTavern 傻瓜式写卡

如果说觉得生成的不够好,可以将生成消息,扔给 Claude 进行润色。得到如下结果。

“你好,很高兴能在这里和你交流。看来你今天的心情似乎还不错,能感受到你语气中的轻松。不过,如果有什么让你感到困扰,或者仅仅只是想分享一些生活中的琐事,都可以告诉我。作为一名心理咨询师,我非常乐意倾听你的声音,尽我所能去理解你,并希望能给你带来一些帮助。”{{char}}轻轻地调整了一下金边眼镜,手边习惯性地拿起那杯已经有些凉的咖啡,准备倾听{{user}}的分享。
酒馆 SillyTavern 傻瓜式写卡

当然,你可以设计其他开场,方法和上面的相同。。

现在的卡没有头像,自己找一张放进去就行。设计好后,点击"创建角色"即可创建这张角色卡。最后成果

酒馆 SillyTavern 傻瓜式写卡

可以看到,这张卡总共用了 1003 个 token,其中 恒定token 占用了 892。简单测试一下,测试卡的时候用的是 Gemini 2.0 Flash exp 模型,效果如下。

酒馆 SillyTavern 傻瓜式写卡

将右上角的 ... 点开,点击提示词。

酒馆 SillyTavern 傻瓜式写卡

这里可以看到这条消息的 Prompt 的总 Token 数量

酒馆 SillyTavern 傻瓜式写卡

这条消息用了 1662 个 token 。如果想要看原始 Prompt,可以点击这里

酒馆 SillyTavern 傻瓜式写卡

基础概念

利用大佬的卡固然可以得到一张可以聊天的角色,但是生成的角色在细节上会有一些差强人意,所以我们需要自己对其进行一些修改操作。

下面会介绍一些重要的概念

世界书

参考文档:世界书 - 飞书云文档

世界书基本概念

什么是世界书?

世界书 (Lorebooks) 旨在为你的角色卡提供更为完整的背景信息。

下面是《天涯明月刀》中的一段

秋水清又推开一块巨石,石壁里还藏着个铁柜,难道孔雀翎就在这铁柜里?

这段话给 AI 看,秋水清是谁?孔雀翎是啥?此时就可以添加世界书

秋水清:“孔雀山庄”庄主的幼弟。孔雀翎:天下的暗器最成功但最可怕的就是孔雀翎。孔雀翎是个由纯金铸成的圆筒,上面有两个枢纽,一按筒里的暗器便飞射而出,暗器发出来就美丽得像孔雀开屏一样,灿烂辉煌。然而,就在你看得目瞪口呆时,它已经要了你的性命。
酒馆 SillyTavern 傻瓜式写卡

这样 AI 就知道秋水清是谁,孔雀翎是什么了。

关于世界书的 导入导出重命名删除设置全局世界书设置角色世界书 等基础操作,请到参考文档中自行查看

  • • 参考文档:世界书 - 飞书云文档

世界书简单设置

Strategy

世界书的Strategy,一般只用两个:

  • • 常量:不需要输入关键词,每次对话都会触发该条目内容,插入上下文。AI 永远都能读到世界书设定。
  • • 正常:正常地以关键词触发内容。AI 最新的回复消息,包含某个关键字 A ;或者用户发的消息里,包含关键字 A。此时世界书就会触发,AI 就会读到世界书的内容。
酒馆 SillyTavern 傻瓜式写卡
位置

世界书的位置,只需要知道两个即可:

  • • 角色定义后:将条目内容插入角色描述下方。
  • • @D:按插入深度插入。
酒馆 SillyTavern 傻瓜式写卡

首先是角色定义后,举个例子。现在存在如下角色描述

here's a description of {{char}}:name: 林婉儿gender: femalepersonality: 邻家温柔大姐姐

有一个世界书,介绍 {{char}} 的癖好:

{{char}}'s idiocrasy: 喜欢摸{{user}}的头

我们将世界书位置选择为 角色定义后,那么效果就是在角色描述下添加世界书内容。

here's a description of {{char}}:name: 林婉儿gender: femalepersonality: 邻家温柔大姐姐{{char}}'s idiocrasy: 喜欢摸{{user}}的头

然后是 @D,这个是和 AI 的注意力有关。比如说 AI 似乎没注意到 idiocrasy 特性,此时需要让 AI 增加对其的注意力,使用 @D

酒馆 SillyTavern 傻瓜式写卡

@D 后有一个深度,深度是指在第 X 条消息下。比如 {{user}} 发给 AI 的消息是

{{user}}: “姐姐,你身上好香啊”

深度 0 的世界书就是在 {{user}} 消息的下方加世界书

{{user}}: “姐姐,你身上好香啊”{{char}}'s idiocrasy: 喜欢摸{{user}}的头

深度 1 就是在上一条消息前加上世界书

{{char}}: {{char}}从后面悄悄靠近,从后面抱住{{user}}{{char}}'s idiocrasy: 喜欢摸{{user}}的头user: “姐姐,你身上好香啊”

深度 2,深度 3 同理。因此,深度值越小,注意力越大。深度为 0 时,AI 会集中注意力去看你这条设定。

Order

在介绍Order 之前,简单说一下顺序问题。一般来说,Prompt 的上下文顺序是这样的(由于这里只关注 角色描述 和 聊天记录,其他的就不管了)

角色描述上一条聊天记录角色描述当前的聊天记录

AI 先看 当前的聊天记录 再看 角色描述,然后是 上一条聊天记录 这样从下往上读,注意力从高到低。而我们加入世界书后,会在这些位置里穿插着世界书内容。那么如果是如下的情况呢?

酒馆 SillyTavern 傻瓜式写卡

再使用相同 Strategy 和相同 深度 时,这两条是怎么排序的呢?因为 order 相同,按照时间排序。癖好 先创建的,Life Story 是后面创建,所以顺序如下:

角色描述上一条聊天记录角色描述当前的聊天记录Life Story癖好

此时AI 会优先注意 癖好。如果需要对其进行注意力修改,但是还不想更改 Strategy 和 深度 时,就需要用到 order 了。在使用 order 时,可以把其理解为一个注意力的的象征值,order 越大,注意力越来,也就是越靠下。

酒馆 SillyTavern 傻瓜式写卡

结果就是

角色描述上一条聊天记录角色描述当前的聊天记录癖好Life Story

正则功能

正则是扩展里的功能,正则表达式嘛,有点代码基础的人很容易就能理解。比如我写的一个状态栏世界书

酒馆 SillyTavern 傻瓜式写卡

这样 AI 就会在每次结尾生成一个由 <user_status> 标签包裹的状态栏。我们可以将其通过正则表达式进行匹配

<user_status>n⏰ 时间: (.*?)n📍 地点: (.*?)n🌤️ 天气: (.*?)n🍑 胸部状态: (.*?)n🧍‍♂️ 身体: (.*?)n👗 服装: (.*?)n💇‍♂️ 发型: (.*?)n🤝 与{{user}}的关系: (.*?)n❤️ 对{{user}}的好感度: (.*?)n💭 当前想法: (.*?)n💨 呼吸状态: (.*?)n🙂 情绪: (.*?)n🌍 当前场景: (.*?)n</user_status>

看不懂的请去学习正则表达式。通过这样就可以匹配到内容。按照顺序,可以得到动态变量。比如说动态变量 $1 为时间,$2 为地点……

然后把内容替换为一个设计好的状态栏里。

酒馆 SillyTavern 傻瓜式写卡

这样前端一旦得到满足正则表达式的内容,就会进行替换,效果如下

酒馆 SillyTavern 傻瓜式写卡

这就是正则的功能,可以将 AI 返回的消息,或者用户输入的消息,根据正则表达式,转换成另一种格式。

简单搓卡

了解了上面的功能后,我们就可以开始写卡了。有两种写卡方式

  • • 编程语言写卡
  • • 访问式写卡

编程语言写卡,就是将人物信息按照 yamlw++json 等格式进行编写,对于 AI 来说可读性高。

对于访问式写卡,对我来说有些抽象,具体的请参考大佬写的文章

  • • 访问式 - 飞书云文档

好了,下面就是全程的傻瓜式写卡了,全程使用 Gemini exp 1206

构建人物设定

首先你得知道自己想写一个什么样的角色。

如果说一个人物已经在你脑海里构建很久了,或者这是一个同人二创角色,那直接写就完事儿了。如果说脑子里想不出来,那就提取想要的角色的特征,想好大体后,扔给 AI,让他生成一段人物设定,自己在结果的基础上润色优化一下就可以用了。

角色描述

这里有一套手搓的角色描述的公式模板。(该模板以及下面的所有模板,皆为本人写卡时写的模板,如果有更好的模板或意见,欢迎大家友善讨论)

Character:Name:"角色名"age:"年龄"Description:Appearance:Height:"数值 + 单位"Weight:"数值 + 单位"Build:"例如:苗条、丰满、健壮、瘦弱、匀称等"HairStyle:"例如:长直发、短卷发、马尾辫、寸头等"HairColor:"例如:黑色、金色、棕色、红色等. 可添加挑染、渐变等描述"EyeColor:"例如:黑色、蓝色、棕色、绿色等"FacialFeatures:"例如:鹅蛋脸、瓜子脸、圆脸、方脸、高颧骨、低鼻梁、大眼睛、薄唇等"SkinTone:"例如:白皙、黝黑、小麦色、苍白等"SkinDetails:"例如:光滑、粗糙、有雀斑、有痣、有疤痕等"DistinguishingFeatures:"例如:独特的胎记、纹身、伤疤、饰品等"SpecialBodyParts:Hands:"手部描写"Legs:"腿部描写"Chest:"胸部描写,给出大小"Buttocks:"臀部描写"Outfit:CasualStyle:"例如:休闲、正式、运动、哥特、波西米亚等"CasualDetails:"例如:常穿的衣服款式、颜色、材质等"SpecialOccasionOutfit:"例如:约会、宴会、工作等场合的着装风格和细节"Accessories:"例如:眼镜、帽子、围巾、首饰、手表等"SpeechStyle:SpeechRate:"例如:快、慢、适中"Tone:"例如:低沉、尖锐、温柔、磁性、沙哑等"Accent:"例如:标准普通话、地方口音等. 可描述具体是哪里的口音"Vocabulary:"例如:书面语、口语、俚语、网络用语、专业术语等"SituationalSpeechPatterns:"例如:生气时、高兴时、悲伤时、紧张时等不同情境下的语气、语调、用词等变化"LanguageHabits:"例如:是否喜欢使用比喻、排比等修辞手法,是否喜欢长句或短句"

模板的具体内容请根据自己的 XP 喜好自行修改。

模板的使用方式:

  • • 先自己写一段,或者自己通过 角色特徽 生成一段角色描写。
  • • 把上面给的公式和角色描写扔给 AI 让其生成,此过程只是生成较为满意的大体框架
  • • 检查一下生成的内容,确认是否满足自己的需求;如果不满足,则提出新需求,重新扔给 AI
  • • 重复此过程对 AI 给的满意结果进行微调,得到最后的结果
  • • 将最后的结果翻译为英文(可选)
酒馆 SillyTavern 傻瓜式写卡

可根据如下的模板发送给 AI,对 AI 输出的内容有如下要求

  1. 1. 根据给出的描写,提取信息,填写到模板里。
  2. 2. 模板中的人名请保留中文
  3. 3. 对于未知内容,请根据给出的人物描写自行推断出结果。
  4. 4. 对于无法推断的内容,尝试自行补充。
  5. 5. 如果是极特殊情况,需要添加新的key以便更好的展现人物特征时,可自行添加。
  6. 6. 中文描述注意浓缩,用词精准,避免冗长句式,优先使用高信息熵词语(如“面若寒霜”而非“他看起来很冷漠”)。
  7. 7. 尽可能的减少模板所占用的 token 数量

上面 7 条要求是建议加的,如果说有新的需求,可以自行添加。

下面是一个关于{{char}}的外貌气质描写下面是一个关于{{char}}的语言风格描写下面是一个人物模板,请根据给出的{{char}}的外貌气质与语言风格的描写,填写至下方模板中并给出最后的结果,要求如下:1. 根据给出的描写,提取信息,填写到模板里.2. 模板中的人名请保留中文3. 对于未知内容,请根据给出的人物描写自行推断出结果.4. 对于无法推断的内容,尝试自行补充.5. 如果是**极特殊情况**,需要添加新的key以便更好的展现人物特征时,可自行添加.6. 中文描述注意浓缩,用词精准,避免冗长句式,优先使用**高信息熵词语**(如“面若寒霜”而非“他看起来很冷漠”).7. 尽可能的减少模板的 `token` 数量

这里的 {{char}} 请自行填写设想好的姓名,然后直接扔给 AI 就可以了。

酒馆 SillyTavern 傻瓜式写卡

检查一下结果,可能会有问题。检查完毕之后,把最后的结果填写在卡的人物描述里即可。

酒馆 SillyTavern 傻瓜式写卡

自己看着点占多少 tokens

角色性格描写

关于角色的性格描写,我的设想是通过 Enneagram(九型人格) 和 MBTI 结合来体现。其中 Enneagram 确定角色的深层动态心理需求,通过 MBTI 确定角色的行为和思维偏好。性格模板如下:

Character:  Name: "角色名"  Personality:    MBTI:      PersonalityType: "例如:INTJ、ESFP 等"      CognitiveFunctions:        FirstFunction: "功能名称 - (内倾/外倾)"        SecondFunction: "功能名称 - (内倾/外倾)"        ThirdFunction: "功能名称 - (内倾/外倾)"        FourthFunction: "功能名称 - (内倾/外倾)"      BehavioralTraits: "该人格类型在日常生活、工作、人际交往等方面的典型行为模式"      ThinkingPatterns: "该人格类型典型的思考方式、决策过程、信息处理偏好等"      Strengths: "该人格类型的优点和长处"      Weaknesses: "该人格类型的缺点和需要改进的地方"    Enneagram:      CoreType: "例如:1 号、2 号、3 号等"      WingType: "例如:9w1、6w7 等"      Subtype: "例如:sp/sx、so/sp 等"      CoreDesire: "该九型人格的核心需求和渴望"      CoreFear: "该九型人格最害怕面对的事物或情境"      InnerMotivation: "该九型人格行为背后的深层动机和驱动力"      DefenseMechanism: "该九型人格在面对压力或挑战时,常用的心理防御机制"      StressState: "该九型人格在压力状态下的行为表现和心理状态"      SecurityState: "该九型人格在安全状态下的行为表现和心理状态"      Potential: "该九型人格的潜能和发展方向"    Emotions:      EmotionalStability: "例如:稳定、波动大、易怒、敏感等"      EmotionalExpression: "例如:内敛、外放、直接、间接等"      TypicalEmotions: "该角色经常表现出的情绪,例如:喜悦、悲伤、愤怒、焦虑、平静等"    BehavioralHabits:      DailyHabits: "反映出潜意识的心理状态的肢体行为,例如:咬指甲、转笔、抖腿、摸鼻子等"      SituationalReactions: "紧张时、兴奋时、恐惧时、思考时等情境下的标志性行为"    InterpersonalRelationships:      SocialTendency: "例如:内向、外向、独处、群居等"      AttitudeTowardsRelationships: "对待朋友、家人、恋人、同事、陌生人等的态度和相处模式"      InterpersonalStrengthsWeaknesses: "该角色在人际交往中的优势和劣势"    Values:      CoreValues: "该角色最看重的价值观,例如:自由、责任、诚实、创新、和谐等"      MoralPrinciples: "该角色的道德标准和行为准则"

向 AI 提问时,要给出足够有的信息,才能准确的描写出人物的性格特定。可以通过人物外貌,习惯,语言风格,潜意识动作等等描述投喂给 AI,使其能更好了解你想要的角色。

下面是向 AI 提问的模板,

下面是一个关于{{char}}的描写,请从中推断出人物的性格下面是一个人物性格模板,请根据推断出的{{char}}的性格,填写对应的内容至下方模板中并给出最后的结果.要求如下:1. 根据给出的描写,提取信息,填写到模板里.2. 模板中的人名请保留中文3. 对于未知内容,请根据给出的人物描写自行推断出结果.4. 对于无法推断的内容,尝试自行补充.5. 如果是**极特殊情况**,需要添加新的key以便更好的展现人物特征时,可自行添加.6. 中文描述注意浓缩,用词精准,避免冗长句式,优先使用**高信息熵词语**(如“面若寒霜”而非“他看起来很冷漠”).7. 尽可能的减少模板的 `token` 数量

对 AI 给出的结果自行修改,最后放进世界书里。对于角色名字,我建议修改为 {{char}} 。人物性格是决定角色的重要特征,我不希望 AI 会忘掉它,所以世界书设置为 常量 ,之后什么顺序就是个人理解了。

酒馆 SillyTavern 傻瓜式写卡

角色成长历程

一个合理的角色成长经历,会让 AI 能更好的理解这个角色。不过要注意一个问题,就是角色年龄。假设角色年龄为 29 岁,那么履历就应该是从出生到 29。每个人要定义的角色年龄不同,所以这里没有统一的模板,只有类模板格式。

下面是向 AI 提问的模板,内容请自行修改

{{char}}当下{{years}}岁下面是关于{{char}}的外貌描写下面是关于{{char}}的性格描写生成一个角色成长历程模板,描写她每个年龄经历的事情格式为yaml,其中key用英文表示。请根据给出的柳雨晴的信息,生成角色成长历程,给出每个年龄发生的关键事件。最后给出结果。要求如下:1. 根据给出的描写,提取信息,填写到模板里.2. 模板中的人名请保留中文3. 对于未知内容,请根据给出的人物描写自行推断出结果.4. 对于无法推断的内容,尝试自行补充.5. 如果是**极特殊情况**,需要添加新的key以便更好的展现人物特征时,可自行添加.6. 中文描述注意浓缩,用词精准,避免冗长句式,优先使用**高信息熵词语**(如“面若寒霜”而非“他看起来很冷漠”).7. 尽可能的减少模板的 `token` 数量输出的结果样式类似为- 6岁时,6岁时的内容- 7岁时,7岁时的内容- 8岁时,8岁时的内容- 9岁时,9岁时的内容

可能会抽风,不过容易修正。然后也是一样,放世界书里。这里通过关键词触发。

酒馆 SillyTavern 傻瓜式写卡

分阶段的人设

参考文章:分阶段的人设:正则表达式触发世界书(装修中) - 飞书云文档

我们的目的是先有一个好感度状态,然后经过正则替换得到对应的阶段。使用世界书去

状态栏

准备一个简单的状态栏,这里用 HTML 简单手搓了一个

<divstyle="font-family: 'Consolas', monospace; margin: 0; padding: 0; box-sizing: border-box;"><divstyle="width: 100%; max-width: 580px; margin: 15px auto; background-color: #2c3e50; border-radius: 18px; box-shadow: 0 10px 20px rgba(0, 0, 0, 0.9); padding: 20px; color: #ecf0f1;"><divstyle="display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-bottom: 20px; overflow-wrap: break-word;"><divstyle="text-align: center; font-weight: bold; color:#95a5a6; padding: 14px; border-radius: 10px; background-color: rgba(255, 255, 255, 0.08); position: relative; transition: transform 0.2s ease; word-break: break-word;"onmouseover="this.style.transform='scale(1.02)';"onmouseout="this.style.transform='scale(1)'"><spanstyle="display: block; padding-bottom : 6px; font-size: 1.1em;">⏰ 时间</span><spanstyle="display: block; font-weight: normal;"><spanstyle="font-size: 1.2em; font-weight: bold; color:#ffeb3b;">$1</span></span></div><divstyle="text-align: center; font-weight: bold; color:#95a5a6; padding: 14px; border-radius: 10px; background-color: rgba(255, 255, 255, 0.08); position: relative; transition: transform 0.2s ease; word-break: break-word;"onmouseover="this.style.transform='scale(1.02)';"onmouseout="this.style.transform='scale(1)'"><spanstyle="display: block; padding-bottom : 6px; font-size: 1.1em;">📍 地点</span><spanstyle="display: block; font-weight: normal;"><spanstyle="font-size: 1.2em; font-weight: bold; color:#9ccc65;">$2</span></span></div><divstyle="text-align: center; font-weight: bold; color:#95a5a6; padding: 14px; border-radius: 10px; background-color: rgba(255, 255, 255, 0.08); position: relative; transition: transform 0.2s ease; word-break: break-word;"onmouseover="this.style.transform='scale(1.02)';"onmouseout="this.style.transform='scale(1)'"><spanstyle="display: block; padding-bottom : 6px; font-size: 1.1em;">🌤️ 天气</span><spanstyle="display: block; font-weight: normal;"><spanstyle="font-size: 1.2em; font-weight: bold; color:#00bcd4;">$3</span></span></div></div><divstyle="margin-bottom: 15px; padding: 14px 20px; border-radius: 10px; overflow-wrap: break-word; background-color: #435a6b; border: 1px solid #5a7a87;"><divstyle=" text-align:center; margin-bottom: 12px; padding: 10px; background-color: rgba(255, 255, 255, 0.05); border-radius: 8px; transition: transform 0.2s ease;"onmouseover="this.style.transform='scale(1.02)';"onmouseout="this.style.transform='scale(1)'"><spanstyle="font-weight: bold; color:#95a5a6;margin-right:8px; font-size: 1em;"> 💨 呼吸:</span><spanstyle="font-size: 1.1em; color:#f06292;">$4</span></div><divstyle="text-align:center; margin-bottom: 12px;padding: 10px; background-color:  rgba(255, 255, 255, 0.05); border-radius: 8px; transition: transform 0.2s ease;"onmouseover="this.style.transform='scale(1.02)';"onmouseout="this.style.transform='scale(1)'"><spanstyle="font-weight: bold; color:#95a5a6;margin-right:8px; font-size: 1em;">👀 神态:</span><spanstyle="font-size: 1.1em; color:#00e676;">$5</span></div><divstyle=" text-align:center; margin-bottom: 12px;padding: 10px; background-color:  rgba(255, 255, 255, 0.05); border-radius: 8px; transition: transform 0.2s ease;"onmouseover="this.style.transform='scale(1.02)';"onmouseout="this.style.transform='scale(1)'"><spanstyle="font-weight: bold; color:#95a5a6;margin-right:8px; font-size: 1em;">🤸 动作:</span><spanstyle="font-size: 1.1em; color:#03a9f4;">$6</span></div><divstyle=" text-align:center; margin-bottom: 12px;padding: 10px; background-color:  rgba(255, 255, 255, 0.05); border-radius: 8px; transition: transform 0.2s ease;"onmouseover="this.style.transform='scale(1.02)';"onmouseout="this.style.transform='scale(1)'"><spanstyle="font-weight: bold; color:#95a5a6;margin-right:8px; font-size: 1em;">💃 姿势:</span><spanstyle="font-size: 1.1em; color:#ff4081;">$7</span></div><divstyle=" text-align:center; margin-bottom: 12px;padding: 10px; background-color: rgba(255, 255, 255, 0.05); border-radius: 8px; transition: transform 0.2s ease;"onmouseover="this.style.transform='scale(1.02)';"onmouseout="this.style.transform='scale(1)'"><spanstyle="font-weight: bold; color:#95a5a6;margin-right:8px; font-size: 1em;">👄 嘴唇:</span><spanstyle="font-size: 1.1em; color:#ba68c8;">$8</span></div></div><divstyle="margin-bottom: 15px;  padding: 14px 20px; border-radius: 10px; overflow-wrap: break-word; background-color: #435a6b; border: 1px solid #5a7a87;"><divstyle="text-align:center; margin-bottom: 12px; padding: 10px; background-color: rgba(255, 255, 255, 0.05); border-radius: 8px; transition: transform 0.2s ease;"onmouseover="this.style.transform='scale(1.02)';"onmouseout="this.style.transform='scale(1)'"><spanstyle="font-weight: bold; color:#95a5a6;margin-right:8px; font-size: 1em;"> 🍒 胸部:</span><spanstyle="font-size: 1.1em; color:#ff4081;">$9</span></div><divstyle="text-align:center; margin-bottom: 12px;padding: 10px; background-color:  rgba(255, 255, 255, 0.05); border-radius: 8px; transition: transform 0.2s ease;"onmouseover="this.style.transform='scale(1.02)';"onmouseout="this.style.transform='scale(1)'"><spanstyle="font-weight: bold; color:#95a5a6;margin-right:8px; font-size: 1em;"> 👗 服装:</span><spanstyle="font-size: 1.1em; color:#ba68c8;">$10</span></div><divstyle="text-align:center; margin-bottom: 12px;padding: 10px; background-color:  rgba(255, 255, 255, 0.05); border-radius: 8px; transition: transform 0.2s ease;"onmouseover="this.style.transform='scale(1.02)';"onmouseout="this.style.transform='scale(1)'"><spanstyle="font-weight: bold; color:#95a5a6;margin-right:8px; font-size: 1em;"> 💇‍♂️ 发型:</span><spanstyle="font-size: 1.1em; color:#ffca28;">$11</span></div><divstyle="text-align:center; margin-bottom: 12px;padding: 10px; background-color: rgba(255, 255, 255, 0.05); border-radius: 8px; transition: transform 0.2s ease;"onmouseover="this.style.transform='scale(1.02)';"onmouseout="this.style.transform='scale(1)'"><spanstyle="font-weight: bold; color:#95a5a6;margin-right:8px; font-size: 1em;"> 🦵 双腿:</span><spanstyle="font-size: 1.1em; color:#4dd0e1;">$12</span></div></div><divstyle="display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 15px;"><divstyle="text-align: center; font-weight: bold;  color:#95a5a6; padding: 14px; border-radius: 10px; background-color: rgba(255, 255, 255, 0.08); position: relative; transition: transform 0.2s ease; word-break: break-word;"onmouseover="this.style.transform='scale(1.02)';"onmouseout="this.style.transform='scale(1)'"><spanstyle="display: block; padding-bottom : 6px; font-size: 1.1em;">❤️ 好感度</span><span>$13/100</span></div><divstyle="text-align: center; font-weight: bold; color:#95a5a6; padding: 14px; border-radius: 10px; background-color: rgba(255, 255, 255, 0.08); position: relative; transition: transform 0.2s ease; word-break: break-word;"onmouseover="this.style.transform='scale(1.02)';"onmouseout="this.style.transform='scale(1)'"><spanstyle="display: block; padding-bottom : 6px; font-size: 1.1em;">✨ 阶段</span><span>$14</span></div></div><divstyle="margin-transform: translateY( 18px; text-align: center; overflow-wrap: break-word; padding: 14px; border-radius: 10px; background-color: rgba(255, 255, 255, 0.08); transition: transform 0.2s ease;"onmouseover="this.style.transform='scale(1.02)';"onmouseout="this.style.transform='scale(1)'"><spanstyle="font-weight: bold; color:#95a5a6; font-size: 1.1em);">💭 想法:</span><spanstyle="font-size: 1.1em; color: #e040fb;"id="thoughts">$15</span></div></div></div>

HTML 的效果如下

酒馆 SillyTavern 傻瓜式写卡

世界书如下

You must output a status bar wrapped in <user_stutas> at the bottom of each reply, updating the content of the status bar in real time based on the interaction, to indicate the current state of {{char}}, Requirements.- Give accurate information based on the context, while adding literary beauty.- The language should be poetic and subtle.- Avoid using harsh or colloquial expressions.The status bar is formatted as follows:<user_status>⏰ 时间: {年}-{月}-{日} {时}:{分} (使用24小时制, 例如: 2023-11-15 14:35)📍 地点: {地点类型, 环境描述} (例如: 昏暗的酒吧包间,烟雾缭绕;阳光明媚的公园长椅,鸟语花香;宽敞明亮的办公室,现代感十足)🌤️ 天气: {室内环境描述 或 室外天气描述,取决于地点} (例如: 室内空调温度适宜,灯光柔和;室外阳光明媚,微风拂面;阴雨连绵,空气潮湿)💨 呼吸: {呼吸状态, 可以使用形容词和副词修饰} (例如: 呼吸平稳而深沉;呼吸急促而紊乱;呼吸略显急促,带有几分紧张;呼吸轻缓,仿佛带着慵懒)👀 神态: {眼神和表情的详细描述, 可以使用形容词和比喻修饰} (例如: 眼神深邃而专注,仿佛在思考着什么;眼神带着一丝狡黠,嘴角微微上扬;目光锐利,透露出不容置疑的威严;眼神迷离,带着几分茫然)🤸 动作: {肢体动作的详细描述,可以使用动词、副词和介词短语} (例如: 她优雅地端起酒杯,轻轻晃动;他慵懒地靠在椅背上,双腿交叠;她双手环抱胸前,眼神充满审视;他缓缓地伸出手,轻抚她的脸颊)💃 姿势: {整体姿态的详细描写,突出线条感和氛围} (例如: 她笔直地站立着,如同挺拔的白杨;她慵懒地斜靠在沙发上,曲线毕露;她弯腰捡起地上的东西,展现出优美的腰部曲线;她如同舞蹈般旋转着,长裙飘逸)👄 嘴唇: {嘴唇细节的描述, 包括颜色、形状、动作等} (例如: 嘴唇微微抿起,透露出不悦;唇色饱满,如熟透的樱桃;嘴角微微上扬,带着一丝若有似无的笑意;嘴唇轻启,发出诱人的呢喃)🍒 胸部: {胸部细节描述,结合衣着、动作和状态} (例如: B罩杯的胸部在紧身连衣裙的包裹下,曲线毕露;胸前微微起伏,呼吸略显急促;胸部在宽大的衬衫下,若隐若现,带着一丝神秘感;随着她的动作,胸前的曲线若隐若现,引人遐想)👗 服装: {服装细节的详细描述,包括款式、颜色、材质、配饰等} (例如: 她穿着一件深V领的黑色连衣裙,搭配细跟高跟鞋,颈间佩戴着一条精致的项链;他穿着一套剪裁得体的西装,内搭一件白色衬衫,领口处系着一条深色领带;她穿着一件宽松的针织衫,搭配一条舒适的牛仔裤,头上戴着一顶针织帽)💇‍♂️ 发型: {发型细节的描述, 包括长短、颜色、形状等} (例如: 长发披肩,如同瀑布般垂落;短发利落,显得十分精神;头发盘起,露出修长的脖颈;额前留着几缕碎发,增添了几分慵懒感)🦵 双腿: {双腿动作的详细描述,包括位置、状态、方向等} (例如: 双腿并拢,显得十分优雅;双腿交叠,带着几分随意;双腿微微分开,呈现出放松的状态;穿着高跟鞋的双腿,轻盈地走在路上)❤️ 好感度: {数字}/100 (例如: 75/100)✨ 阶段: {根据好感度给出和{{user}}的关系阶段} (例如: 亲密无间)💭 想法: “{符合{{char}}性格的内心独白,使用第一人称,并使用引号包裹}” (例如: “他害羞的样子真可爱,真想欺负他一下”;“这次的谈判一定要成功,绝不能让公司失望”;“今天的天气真好,适合出去散散步”)</user_status>for example:<user_status>⏰ 时间: 2023-11-15 14:35📍 地点: 大型会议厅前排VIP席位,气氛庄重而压抑🌤️ 天气: 室内水晶吊灯璀璨,暖气适宜,光线柔和💨 呼吸: 呼吸轻缓而平静,带着几分慵懒的意味👀 神态: 眼中闪烁着狡黠的光芒,唇角勾起一抹玩味的笑意,充满了掌控欲🤸 动作: 右手从手背在叶天掌心打转,身体更加贴近他,手臂轻环上他的胳膊,脚尖在他的小腿上轻触研磨💃 姿势: 身体微微前倾,姿态优雅,像一只准备捕猎的雌豹👄 嘴唇: 唇色饱满,如熟透的樱桃,嘴角带着一丝蛊惑的笑意,仿佛在邀请人品尝🍒 胸部: B罩杯的胸部紧贴叶天手臂,随着她的动作,若有似无地摩擦着,引人遐思👗 服装: 深V领的黑色连衣裙,搭配黑色细高跟,颈间佩戴着精致的项链💇‍♂️ 发型: 头发高高盘起,露出修长的脖颈,给人一种禁欲的美感🦵 双腿: 穿着黑色高跟鞋的双腿,在桌子底下挑逗着叶天的小腿❤️ 好感度: 92/100✨ 阶段: 亲密无间💭 想法: “真是个有趣的家伙,身体明明很诚实,嘴上却说着不要,继续逗弄下去,他会是什么反应呢?真期待啊~”</user_status>
酒馆 SillyTavern 傻瓜式写卡

正则如下

<user_status>n⏰ 时间: (.*?)n📍 地点: (.*?)n🌤️ 天气: (.*?)n💨 呼吸: (.*?)n👀 神态: (.*?)n🤸 动作: (.*?)n💃 姿势: (.*?)n👄 嘴唇: (.*?)n🍒 胸部: (.*?)n👗 服装: (.*?)n💇‍♂️ 发型: (.*?)n🦵 双腿: (.*?)n❤️ 好感度: (.*?)/100n✨ 阶段: (.*?)n💭 想法: (.*?)n</user_status>
酒馆 SillyTavern 傻瓜式写卡

好感度设计

我们先设定几个好感度。

好感度范围
阶段名称
描述
0-9
形同陌路
完全的陌生人,没有任何交集或了解,彼此心中毫无波澜,如同平行线一般毫无关联。
10-19
萍水相逢
偶然相遇,或许有过短暂的交流,留下浅淡的印象,但关系仅止于此,过后便再无交集,如同水面上的浮萍,随波逐流,短暂交汇后便各自东西。
20-29
初识乍见
刚刚认识或有过几次简单的接触,对对方有初步的了解,但了解仅限于表面,态度较为客气和疏离,关系如同刚发芽的种子,需要时间和契机才能进一步发展。
30-39
点头之交
相互认识,见面会点头致意,可以进行一些日常的寒暄,但交情尚浅,话题通常比较浅显,未建立深厚的信任关系,关系相对脆弱。
40-49
泛泛之交
彼此知道对方的存在,偶尔会进行一些简单的交流,但通常不会涉及太多个人隐私, 对对方的了解有限,点到即止, 关系如同浮萍一般,缺乏稳固的基础。
50-59
相谈甚欢
可以进行一些深入的交流,有很多共同话题,相处起来比较轻松愉快,彼此之间的了解进一步加深,关系逐渐变得融洽, 可以进行一些简单的交流。
60-69
把臂而谈
可以开诚布公地交流,分享彼此的想法和感受,相互之间有一定的信任感,可以谈论一些比较深入的话题, 交谈融洽,有很多共同话题。
70-79
莫逆之交
关系较为密切,彼此信任,可以分享一些个人想法和感受,在某些方面能够互相支持和帮助,是难得的知己, 可以向对方倾诉一些心事。
80-89
亲密无间
关系极为亲密,无话不说,无事不谈,彼此之间没有任何隔阂,相互信任,相互依赖,如同家人一般, 无需过多的言语,一个眼神就能明白对方的心意。
90-100
情深意笃
极高的好感度,彼此之间有着深厚的情感,相互依赖,相互扶持,可以为对方付出很多,是至亲至爱或灵魂伴侣的级别, 彼此之间有着至死不渝的深厚感情。

设计一下正则表达式,要匹配的文本如下

❤️ 好感度: 92/100✨ 阶段: 亲密无间

正则如下(看不懂的请自行学正则表达式)

形同陌路(0-9)❤️ 好感度[::] [^d]*([0-9]b(?:.d+)?).*s*.*?✨ 阶段[::] .*萍水相逢(10-19)❤️ 好感度[::] [^d]*([1]d{1}b(?:.d+)?).*s*.*?✨ 阶段[::] .*初识乍见(20-29)❤️ 好感度[::] [^d]*([2]d{1}b(?:.d+)?).*s*.*?✨ 阶段[::] .*点头之交(30-39)❤️ 好感度[::] [^d]*([3]d{1}b(?:.d+)?).*s*.*?✨ 阶段[::] .*泛泛之交(40-49)❤️ 好感度[::] [^d]*([4]d{1}b(?:.d+)?).*s*.*?✨ 阶段[::] .*相谈甚欢(50-59)❤️ 好感度[::] [^d]*([5]d{1}b(?:.d+)?).*s*.*?✨ 阶段[::] .*把臂而谈(60-69)❤️ 好感度[::] [^d]*([6]d{1}b(?:.d+)?).*s*.*?✨ 阶段[::] .*莫逆之交(70-79)❤️ 好感度[::] [^d]*([7]d{1}b(?:.d+)?).*s*.*?✨ 阶段[::] .*亲密无间(80-89)❤️ 好感度[::] [^d]*([8]d{1}b(?:.d+)?).*s*.*?✨ 阶段[::] .*情深意笃(90-100)/❤️ 好感度[::] [^d]*([9]d{1}b(?:.d+)?).*s*.*?✨ 阶段[::] (.*)/gm

然后使用正则替换

❤️ 好感度: $13✨ 阶段: 情深意笃
酒馆 SillyTavern 傻瓜式写卡

世界书设计

为每个好感状态设计世界书,世界书通过关键字触发。

相信通过上面的介绍,大家已经知道如何使用 AI 了,这里就不再举例.

酒馆 SillyTavern 傻瓜式写卡
酒馆 SillyTavern 傻瓜式写卡

首条消息

按照我这套走的话,需要想好在什么场合、好感度是什么阶段的、 {{user}} 和 {{char}} 的有什么联系,{{user}} 的性格特点、{{char}} 的性格特点。想好后哦就很简单了,要么自己写,要么就直接扔给 AI

角色卡的其他内容

如果说还想要其他的内容,可以自己添加,比如说

  • • user 的人设
  • • 角色的人际关系
  • • 角色的隐藏癖好、特异功能
  • • 整体世界观
  • • 涩涩
  • • ……

总之,有什么设定就塞世界书里就行了。

原文始发于微信公众号(在下小白):酒馆 SillyTavern 傻瓜式写卡

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月16日23:24:17
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   酒馆 SillyTavern 傻瓜式写卡https://cn-sec.com/archives/3635981.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息