关于DS缓存命中我的理解
sillytavern吧
全部回复
仅看楼主
level 7
WGU_An 楼主
经过这几天自己改卡和学习各位大佬的先进经验,以及和ai肘击之后,我谈一下我对DS缓存命中的理解,若有错误请各位大佬指出
2026年06月17日 07点06分 1
level 7
WGU_An 楼主
首先是每次发给ai的东西的结构,红线上是你的世界书和一些提示词,红线中间是对话历史,红线下是其他提示词
2026年06月17日 07点06分 2
level 7
WGU_An 楼主
而DS的缓存命中机制是对每一次新发的内容和旧内容进行从头到位的逐字对比,当出现不同时,从其后的所有内容都是不命中,所以如果你的卡是纯文字那么全部放在对话历史之前是可以全部命中的。因为此时会发生变化的只有对话历史。
2026年06月17日 07点06分 3
level 7
WGU_An 楼主
那么为什么变量卡的命中很捉急呢?这是因为,变量卡有大量会改变的内容,如果放在你的世界书靠前的位置,那么整个世界书包括以前的对话历史,在你的变量发生改变后全都不会命中。譬如这些。
2026年06月17日 07点06分 4
level 7
WGU_An 楼主
所以最佳的办法是严格区分静态提示词和动态提示词,把那些动态变化的东西塞到对话历史之后,就像这样。这就是大佬们说的把变量部分通通插入深度0所作的事情
2026年06月17日 08点06分 5
level 5
省流版本就是不玩变量卡,然后全开蓝灯吗?
2026年06月17日 10点06分 6
其实也能玩,只要不是有太多变量就行。全开蓝灯是让其每次都输入对话中,还要确保顺序是char↑,不然也会因为变化的对话历史导致未命中。
2026年06月17日 10点06分
@WGU_An 你变量少的话不影响,和一次历史对话包含的token数差别不大。
2026年06月17日 10点06分
回复 WGU_An :还是没太懂,我请教一下,这个char↑是角色定义之前那个类型吗?就是要开蓝灯的时候要确保是char↑对吗?原理方面看不懂。
2026年06月17日 11点06分
@莱斯特-♬ 对的这样世界书发给ai时的顺序就在对话历史之前了。
2026年06月17日 11点06分
level 6
377
感觉命中缓存就很怪。都说用数据库会大幅降低命中率,我用数据库也有90%多,不是算挺高的吗。但其他的角色卡,世界书内容少,也还没搞数据库,命中率却70%不到
2026年06月17日 10点06分 7
可能是世界书字少,最新对话历史之后的部分占了较大比例?
2026年06月17日 10点06分
level 7
涉及到变量卡的条目,最好是放在用户深度下,这样既能保证缓存命中率,而且因为位置靠后,更容易被d指导所遵循(不过也就只是更容易罢了,D指导该摆烂的时候还是会摆烂)
2026年06月17日 13点06分 8
level 5
是这样的,我自己还写了套协议,方便我写预设写卡和插件的时候参考
2026年06月17日 18点06分 9
1