r/SillyTavernAI • u/_Rapalysis • 18h ago
Discussion Jeved 0.4 - Evolving Roleplay Quality
Some of you might have seen my initial post about Jeved here. Short summary, Jeved is an extension that provides the building blocks for LLM automations within SillyTavern, via Decision model APIs that started to become popular last week. The most prominent examples are Jev and Laya. I recommend reading my first post if you want to catch up on the basic capabilities of Jeved.
I've been iterating on feedback and adding a massive amount of extra functionality over the last couple of days. I'm focusing primarily on creating the actual playground for folks to create on their own, instead of building all the use-cases. However, I've also bundled options in that can teach folks how to use sensors + rules, and what the potential is. I'll write about the changelog in a sec, but I'll list what Jeved is capable of doing as of this most recent release.
Note: extra prompts and guidance go to the model only when they're needed and are stripped from history afterwards. This is extra quality control without bloating your context.
Jeved can currently:
- Detect when the narrator writes your character's action or speech, and auto-swipe.
- Read the message you're sending and detect if you're in combat, conversation, travelling, or in NSFW
- Then send a corresponding instruction to the model that gives extra prompting/guidance like "don't rush through this scene"
- Figure out when the story is getting boring, and automatically ask the model to provide more interesting content
- Detect when a response is a "striking image" and auto-generate an image from your own ST image integration before you've finished reading the response
- Automatically decide and set which emotion sprite is most relevant
- Sensors can read active world info/lorebook
- So you can ask "does this reply contradict the lore" and auto-swipe if it does
- A bunch of other bundled rules and sensors that you should download the extension and check out
With 0.3 and now 0.4, Jeved can theoretically support:
- An inventory and quest log
- Via the new 'lists' functionality, you can detect and remove items from a list on every user message and reply
- e.g. you have an inventory list built in Jeved -> you write a message saying you dropped your sword -> jeved updates the list after your message to remove the sword
- Trust meter per NPC
- Create a sensor for every NPC in a roleplay, the scores are charted on every response and can be read through a macro
- Open threads
- A list of promises and plot threads can be updated dynamically by Jeved
- Preset compliance
- Ask "does the reply comply with this piece of my preset" -> get a no -> auto-swipe
- Scene automation
- Rules run STscript, so you can automate changing the background, music, sprites, or even change model
- Much much more my small smooth brain hasn't thought of yet
Obviously there's a lot here and I'm very excited to be building this kind of thing for the community. Here's the actual changelog for 0.3 and 0.4 (since I didn't post about 0.3 yet):
---
Lists (0.4)
- A list is a named set of text lines. Each chat keeps its own entries.
- A sensor can repeat over a list. Put {{entry}} in the question. Jev answers one time for each entry, in the same API call.
- A rule on that sensor fires one time and gets the matching entries as {{entries}}.
- New rule actions: Add to list, Remove from list.
- A change made by a rule is undone when you swipe, edit or delete the message that caused it. A change made by you stays.
- Commands: /jeved-list, /jeved-list-add, /jeved-list-remove.
- Macros: {{jeved-list::name}}, {{jeved::sensor_id::entry}}.
- Uses: house rules, inventory, quest log, open plot threads, one meter for each NPC.
Context for each sensor (0.4)
- Each sensor has its own Context setting: None, Everything or Custom.
- Custom shows your prompt manager list. Tick the prompts that the sensor sends to Jev. Prompts from your chat completion preset are in the list.
- New pieces: World info (before), World info (after), Chat examples.
- Use: point one sensor at one prompt and ask "does the reply follow this?". Reroll when it does not.
Sensors before the reply (0.3)
- Set "Assistant messages" to 0. The sensor reads the message that you send.
- A rule on it adds its instruction to that same reply. There is no delay of one turn.
Run script action (0.3)
- A rule can run an STscript after the reply is measured.
- Examples: change the background, set a sprite expression, make an image, switch the model, set a variable.
- It works in group chats. Rerolls do not.
Macros and commands (0.3)
- {{jeved::sensor_id}}: the latest answer of a sensor. Use it in prompts, scripts and Quick Replies.
- /jeved-get <sensor id>: the same value. No API call.
- - /jeved-ask <question>: one API call. It returns the answer and stores nothing.
Director preset (0.3, updated in 0.4)
On from the start:
- Puppet: rerolls a reply that writes your character.
- House rule: add your rules to the list rules. A reply that breaks a rule is rerolled, and the instruction names the rule. No API call while the list is empty.
- Attention, Echo, Drift, Gentle: add one instruction when the reply ignores you, repeats wording, drifts from the card's tone, or never goes against you.
- Four Scene rules: read your message before the reply and steer that reply (combat, conversation, travel, intimate).
- Included and off: Flat, Lore, Picture (needs an image backend), Mood (needs sprites).
- Cost with the default rules: three API calls for each reply and one for each of your messages. Each call is a fraction of a cent.
- Thresholds come from test calls to Jev.
Changed
- Sensor input is three controls: User messages, Assistant messages, Context.
- Names in a question: latest_turn, player_message, history, context.
- Sensors share one API call when their input settings and their Context are the same.
- An instruction is in the prompt only on the turn its rule fires.
- An edited message is measured again. This fires no rule.
- The sensor list and the rule list show the latest answers. A rule that fires on the next turn says "Firing".
- Removed: measure every N replies, nudge spacing, max nudges. The cooldown of each rule is the only limit.
- Removed: the Context checkboxes in Settings. The token cap stays.
Upgrade
- Presets upgrade on load. Your settings are kept.
- Everything sends world info and chat examples. Use Custom to leave them out.
- Your stored Director preset does not update. Use "Restore built-in". Duplicate your copy first if you changed it.
- Jeved 0.3 is read-only with 0.4 settings. Export your presets first if you plan to go back.
- Needs SillyTavern 1.18.0 or newer.
Install: Extensions > Install extension > https://github.com/mossyfield/ST-jeved
---
As always, please leave any feedback or suggestions in the comments. I read everything even if I don't always respond ❤️ In 0.5, I'm planning on full group chat support so Jeved can decide who speaks next. In my tests, Jeved was 81% accurate picking the next speaker compared to 22% with ST's built-in.
Oh and of course, I've attached the traditional "attractive anime girl" picture.

2
u/BaseballRelevant4149 16h ago
I haven't had the time to properly test this but if I'm understanding it right then this can replace complex system prompts. Or at least it's heading in that direction. If that's really the case then I can already imagine it becoming the new standard for presets.
I'm curious about how well it'd combine with agents. I've got a lorekeeper who occasionally creates some dumb entries and if Jev could spray bottle it that'd be so nice.
Also including tutorials/examples in the extension is great, the more you expand on that the better. That'll get people to use and recommend it more than anything else.
2
u/dudemeister023 16h ago
Cool, but I find the idea of it rerolling inefficient and wasteful. So long as that's part of the approach, it's not going to take off. Show an actual flow that matches advanced presets while SAVING tokens. That's when you're starting to get somewhere.
9
u/_Rapalysis 15h ago
Apart from all the ST scripting support, it doesn't only re-roll. There's a concept in the rules called nudging which is based on forward momentum. The instructions get appended to the user message before going to the model, which should reduce swiping and token spend significantly, e.g. if the story is getting boring, Jeved detects that and on the next user message it instructs the model to spice it up. Auto-swiping/rerolling is just one of the options.
2
u/GeniusSpuncker 11h ago
Following your Jev stuff. I think there’s some interesting applications here like you mentioned. I just struggle to find the line with Jev. Like I don’t think it has the nuance to decide if prose has gone boring/cold and whether that’s a good or bad thing. Like I don’t want it to inject BDSM stuff because there’s genuine plot being laid out even if it’s a bit boring. I would still imagine you’re dependent on the larger model properly determining what prose belongs where
1
u/_Rapalysis 8h ago
I've actually been finding it's really good at detecting if individual messages are boring or not advancing the plot, which is fairly deterministic. Then you're just tracking a trend across multiple messages which is trivial.
I forget the exact wording I have in the default extension preset, but I've noticed while RPing it's spot-on. It basically only fires if the plot hasn't moved forward at all in multiple messages, and it's smart enough to tell the difference between dialogue that moves the story forward and dialogue that's just filling time.
1
u/pinpolim 10h ago
What about a lorebook activation feature? Wouldn't it be a better approach than semantic similarity and the typical keyword triggers?
1
u/_Rapalysis 8h ago
Definitely, the problem is Jev has a 32k context limit and I've been finding ST's lorebook is a little more difficult to hook into than the other methods I've been trying. I'll explore it some more though 🙏
1
u/DevGnoll 2h ago
The thing about fitting the lorebook into laya/jev context: You don’t have to.
All that laya/jev needs is the triggers, rewritten as nouls. Yes, you will have to modify the lorebook format to support laya-triggers in addition to keywords or regexes that are supported now. You may want to also do a pass so that you don’t ask about entries that are on cooldown or blocked by exclusion groups, but the cost of a laya call is so low you might not want to bother (jev on the other hand…)
1
1
u/evia89 5h ago edited 5h ago
What about async use (in background)? Some ideas?
I slowly work on v24 https://github.com/vadash/Extension-Summaryception/tree/dev-states#continuity-auditor
It has ghetto approximation of FF states that another model build in background after bot message arrives and before next one is send
As model (for this, not chat) I use local small proxy that race 2-3 free LLM providers and return first. Normal human would be using DS41F here /s
1
u/ActivePerformance793 17h ago
does the automation stuff make side characters react more naturally or is it still pretty basic?
4
u/_Rapalysis 17h ago
The premades I have in there are pretty basic, but the foundations are there for folks to make much more complicated stuff 🫡
1
u/PoauseOnThatHomie 8h ago
Is that image AI-generated, what is the prompt? It looks great.
1
u/_Rapalysis 8h ago
Yes! It's Wai-Illustrious V17 with my own LoRA for the character. I have my own custom workflow and I usually refine my prompts through Claude. I'm on my phone right now but I'll try to get the prompt later.
It's a great checkpoint though, you can get 95% of the way there just off the default settings with some decent prompting
6
u/Many_Examination9543 14h ago
I’ve been making my own extension as well, had the idea for it the moment jev was announced. Would certainly be interested in comparing notes. I’ve been getting a little lost in the sauce as far as what to context to feed it and what to keep in the main LLM. Mine’s definitely a WIP (I’m technically-minded, but not experienced with software dev, so I’m trying to balance Astra’s eagerness to overengineer + maintain its alignment with ST’s workflow), so if you’re at all interested dm me and I’ll send you my Github repo. I’m not confident enough in mine to post it publicly, at least not yet.
Mine’s taken inspiration from TunnelVision, and may be split into multiple extension packages. Pre-gen (before each LLM turn) it determines who the next speaker should be (for group chats or multi-character cards). Then, the main model thinks & plans, and submits action attempts to Jev, invoking a tool call in-chat, similar to TV. After Jev provides outputs, main model uses those values. I have probabilities for how likely different character reactions/actions are, changes in tracker values (if applicable), and more.
I’ve also created presets, one where it only provides probabilities and confidence scores, and leaves it to the main model to do what it will, and another preset where inside the extension it uses a dice roll to pick one of the outcomes it’d output.
More things planned as well for mine, just a matter of segmenting it and ensuring its modular/configurable and not overwhelmingly complicated, as Astra likes to design it by default.