← Back to Plum Blossom

Plum Blossom, a preset for SillyTavern

Plum Blossom is experimental! I encourage you to read this README before using!

⚠︎ You MUST have the Experimental Macro Engine toggled on to use Plum Blossom.

🕹️ Controls

You usually won't need the stuff in Controls. These toggles are for resetting stuff. (I talk about that more at the bottom.)

✅ Choose - User Choice

All user-facing toggles are at the TOP of the preset where you can easily set them, in the section labeled Choose. These are things like length, POV, stuff you want to allow or tweak.

🔀 Conditional, Dynamic Main Prompt

After the choice section, you don't need to touch any of the other toggles. They operate with conditional {{if}} macros--that's the "engine". When you enable Scene Analysis (make sure Analyze Scene is toggled on in the bottom of the preset UNLESS you're using my extension) the preset will insert instructions for the LLM to output an <analyze> block at the end of every response. Plum Blossom works by reading that block and using regex to set variables that determine what conditional prompt snippets should be included in the next gen.

In this way, the prompt can include instructions for how characters behave during confrontations or conflict but ONLY when that's actually happening in the current scene. Or it can include instructions for how to handle romantic/sexual tension when the scene calls for it, but NOT during active combat. The prompt is dynamic and adjusts to what the situation demands rather than dumping a general set of instructions every single turn.

You can still use the preset without this enabled...but honestly, in that case you might as well use another preset since this is Plum Blossom's whole schtick.

📝 Chat-Unique Writing Style

If you have Auto-Author toggled on at the beginning of a new chat or the first time you use Plum Blossom, Plum Blossom runs an Establishment routine the first time it's used in a chat. It determines the general time period (this works fine for fantasy settings too!), the story tone, whether this is a fantasy or mundane setting. It also decides whether the setting is primarily "literary" or "webnovel" (it will choose webnovel for Chinese settings in particular--I'm a big fan of xianxia), and webnovel gets its own author pool, separate from literary.

This is an optional feature; you can toggle it off. But if it's toggled on, you need Scene Analysis for it to work, otherwise it's inactive.

💞 Relationships Influence the Prompt

If you have Handle Relationships toggled, Plum Blossom will include relationship analysis in its <analyze> block for the Focus Character (see below). (This also requires Scene Analysis to be toggled on!)

🌟 Anyone Can Be the Hero

Scene Analysis will determine who the Focus Character is on a turn-by-turn basis. It assigns ONE Focus Character (rotatable), and up to two Prominent Characters. These essentially fill the roles of Main and Side Characters. They receive different kinds of analyses.

It keeps a running pool of Prominent Characters saved to a variable. (I'm not actually doing anything with that yet, but might in future.)

The Focus Character gets in-depth attention: special states (injured, impaired), and their relationship to {{user}}, which work in tandem with the rest of the analysis to dynamically control the prompt. For example, if impaired, there are instructions for dialogue, and for more risky, impulsive behavior. A relationship with low familiarity triggers a note that characters are more reserved with people they don't know.

I included certain facts like height and age relative to {{user}} and anatomical sex. I also included toggles for M/M, M/F, and F/F stories. It's not really gonna hurt anything if you have the "wrong" one toggled on--the instructions aren't really that different. But the wording IS adjusted to account for specifics relevant to those sexual pairings. I find it really annoying when the AI gets confused about stuff like that.

ALSO, you can choose the Narrator is Focus Character option to automatically assign whoever is your lead character as the narrator! This neatly sidesteps the "I want a close-third-person narrator but {{char}} isn't a single person" issue.

🔥 NSFW Handling

You need to toggle on Allow NSFW or else a very mild, very prim prompt will be used. Once NSFW is allowed, Scene Analysis will determine when the scene is heading in a NSFW direction and inject the NSFW prompts. Your choices in NSFW Pacing and NSFW Type influence this. Additionally, Explicit Narration encourages the narrator to use graphic language, and Less Explicit Dialogue should make the dialogue, specifically, LESS horny; you can use both together!

💥 Violence

I included three options! I like Action Movie violence myself, but Brutal World (and the Allow Gore toggle) can make things more gory and grim, and Webnovel Style is what it says on the tin. They only work when Allow Violence is toggled on.

🩺 Model Specific Tweaks

I included some smallish prompts for handling the idiosyncrasies of the primary models this was made for--just choose whichever you're currently using (but you can leave those off if the stuff mentioned in them doesn't bother you.....however, for Mimo through NanoGPT in particular, NSFW stuff seems to be triggering a filter lately, so I do have a thing in there to counteract that!)

Troubleshooting

There is a Debug Readout toggle which, if toggled on, can display current values at the top of the prompt in your next message, so you can view them using SillyTavern's native prompt viewer. This is useful if you want to see what values are actually being assigned.

Q&A

Shut up, I ain't reading allat, how do I get started?

Ok, TLDR: the only toggles you need are in the Choose section of the preset, import as usual, pick your preferences, you're good to go.

Is this only for SillyTavern?

Yeah. It uses the Experimental Macro Engine, lots of {{if}} macros. I'm not that familiar with other frontends so I don't know if it could be converted or not. HOWEVER, it does work for TauriTavern (I do use that).

What models does this work with?

It works well with GLM family models (5.1, 5.2, probably 4.7 and 5 as well). Deepseek 3.2 is fine, Deepseek 4 sometimes ignores the tracking instructions altogether. Mimo 2.5 Pro does ok, the "crof" variant not so much. Kimi family models work fine too in my testing. (I use Thinking models for testing...and in general, I just like them.)

You're welcome to try with others! I don't test with big ones like Claude, ChatGPT, or Gemini because I can't afford them, so you're on your own there. Keep in mind, I use a NanoGPT subscription so caching isn't a concern of mine. However, assuming you don't use lorebooks (it's my understanding the typical use for those would break your cache ANYWAY...), PB's actual prompt placement is below Chat History...so theoretically it shouldn't break your cache??

How big is this bad boy?

She's bigger than White Lotus by a significant margin. White Lotus averages at ~2k tokens, this one at ~4k. So she's thicc. Compared to other popular presets, she's more than twice Marinara's size, but not as big as Freaky Frankenstein (to give a frame of reference).

Does this work for group chats?

To be honest, idk. I don't really use those! So...maybe? But it's really made for 1-card chats, whether that's a traditional character card, a multi-character card, or a scenario card. The whole purpose of the "Focus Character" concept is to account for the latter two.

How does a preset capture variables from the chat?

It uses regex to catch the keywords and convert those with the {{setvar}} macro.

How does Auto-Author work?

PB runs an "Establishment Phase" the first time it's used, or when you manually trigger it. It's a two phase process: (1) it identifies the general time period and story type; (2) it narrows down the time period and other facts about the setting. It then uses this information to choose from a list of authors. It will continue using that author except for NSFW scenes, which have their own author overrides (I did this bc many of the primary authors don't write sex scenes, so I thought it made sense to reroute to authors who DO). Then it switches back.

The Establishment Phase can be a little finicky at times! I tried my best to counteract that. It's swipe aware (so swipes shouldn't break it), and it has a self-repair mechanism....so if you ever see a little Establishment Stalled tag, that just means it caught something non-kosher and it's not accepting it. You can just continue as usual and it'll try again...but you can also swipe, or delete the message altogether, either way it should self-correct.

The only thing you really need to look out for are missed or malformed <analyze> blocks (with smart models, that's rare).

Sometimes no <analyze> block is output at all!

Eh, unless you're using really powerful models, that can happen. I tried to design PB so it's not a big deal. Missing a block now and then doesn't really affect anything. The data from the last capture is still in the variables; just try not to let it miss too many in a row or that CAN be an issue (stale data, gross). You can just swipe if you want to try for a block on a message that is missing it.

Does it work on existing chats?

Usually it's fine...the instructions are at the bottom so they take highest priority, meaning even in a very long chat, they SHOULD still work.

I'm a habitual swiper like yourself, can I still feed my addiction?

Oh yeah for sure. I specifically made it swipe aware for people of culture....or rather, I tried to! You may still have hiccups, but that's why I included ways to reset stuff.

Can this wreak havoc in any way?

Well, yes and no. No, because it's just a preset. Tool-calling is not enabled, it doesn't have an extension, it works via the macro engine and regex. Yes, because SillyTavern's native regex CAN occasionally wipe a chat...this isn't Plum Blossom specific. I've had this happen with other presets too. It's rare, but frustrating when it happens.

The important thing is: your chat isn't lost forever! SillyTavern keeps backups in your username/backups folder. You'll need to go find the backup of the chat and place it in the chats/charactername folder. Viola, crisis averted.

Aside from that....this DOES use a ton of variables. I've labeled ALL of them with the pb_ prefix to make identifying them easier. It doesn't hurt anything but it can be annoying if you're testing something else with variables and Variable Viewer is full of PB stuff. If that gets on your nerves, you CAN just wipe all the pb_* variables with PB's Reset All toggle--then switch away from PB so it doesn't refill them lol (however, that WILL wipe your author so if you use PB again, it will need to do its Establishment routine again). There's more about the Reset toggle below.

Can Plum Blossom's "Reset All" command remove <analyze> blocks already in the chat?

Unfortunately, no, though I wish it could because I feel like that's cleaner... You'd need to manually remove those from each message, I'm sorry! (This is a drawback you'd have with any preset's trackers...) Reset All just wipes all the variables clean and restarts the Establishment phase from the beginning. Re-Run Auto-Author just resets Establishment (without wiping everything else) so the setting analysis can run again. Ideally you should toggle whichever you want on, gen a message, then toggle off.

If the lingering <analyze> blocks bother you....my perfectionism led me to make an extension to address precisely that. (You don't need this if you have my White Lotus extension, it's built in with that.) Use at your own risk, it's not extensively tested (I do use it myself lol)....the extension works for ANY XML block you assign it to remove. Keep in mind it does NOT reset PB's Scene Analysis variables! It ONLY removes any XML block you assign to it from the chat file. You have to use PB's Reset All State (or manually flush the variables) if you want to start completely fresh.

My model is returning the plain <analyze> block, no styling, what do?

This likely means a malformed <analyze> block. One user found that it helps to have Trim incomplete sentences toggled off in SillyTavern's settings!

Does this work with your preset extension?

Yep :) I've added Plum Blossom to my White Lotus extension, which is a much more streamlined way of using it. It includes the dropdown sampler options, easy to find toggles, and the option to run Scene Analysis as a separate gen (manual or automatic). It also has improved Debug in its Debug Inspector, which can just display the values directly rather than in the prompt viewer...and in a way that's easier to read and understand. Inspector has all the Reset options built in too....AND you don't need my little ChatBlockCleaner extension to clean the XML blocks, you can just do it from Inspector. So if you're open to extensions, I highly encourage using the WL extension if you use my presets.

Recommendations for General Roleplay


Anyway, that's it! ദ്ദി(˵ •̀ ᴗ - ˵ ) ✧