SlopScore
00 crowd

Dragon-Memories-Manager

A vibe-coded SillyTavern extension to manage past information of characters (memories). Per-character episodic memory for SillyTavern group RP.
Open repo on GitHubgithub.com/TheDartDragon/Dragon-Memories-Manager
JavaScript · ★ 4 · 1 forks · MIT · paperwork by the Cap'mmostly ai (inferred)light human (inferred)works-on-my-machine (inferred)other
listed 2 hours ago by TheDartDragon · last checked 2 hours ago
The owner didn't write this. This repo never submitted itself. The Cap'm found it on a truffle trawl and wrote its paperwork from what GitHub already shows. Picked by hand by the Cap'm on 2026-09-19: A vibe-coded SillyTavern extension to manage past information of characters (memories). Per-character episodic; its own README says "A vibe-coded SillyTavern extension to manage past information of characters (memories)". 4 stars; MIT license. The owner did not submit this. Votes count; awards don't until the owner claims it.

I'm not calling your project slop! Geeze, it's a joke... Do you own this repo?

Log in with GitHub as TheDartDragon. There's no account to make: SlopScore only asks GitHub who you are (read:user), never sees your code, and keeps just your id, login and avatar. Then you can:

  • Keep it, on your terms. Commit your own slopscore.md (spec) and press Refresh. Your paperwork replaces the Cap'm's, and you can submit it for Slop of the Day.
  • Take it down. One click on Remove. It stays gone; the trawl never brings it back.

Log in with GitHub

Can't log in as the owner? Request a takedown. No login needed, and a trawled listing comes down right away.

GitHub says
A vibe-coded SillyTavern extension to manage past information of characters (memories). Per-character episodic memory for SillyTavern group RP.
created
2026-04-16 · pushed 2 months ago · 31 commits · 2 contributors
release
v0.2.7 · 2026-07-15
languages
JavaScript 89%HTML 7%CSS 3%
paperwork
licensereadme 42% health
dependencies
no dependency graph (no manifest, or disabled) · OSV.dev, checked 2 hours ago

Disclosures, inferred by the Cap'm

slopbucket
vibe-coded
category
other
ai_generated
mostly
human_touch
light
status
works-on-my-machine
language (detected)
csshtmljavascript
license (detected)
mit

The Cap'm's log

The Cap'm wrote this paperwork, not the owner. This repo never submitted itself to SlopScore. The Cap'm picked it by hand: A vibe-coded SillyTavern extension to manage past information of characters (memories). Per-character episodic; its own README says "A vibe-coded SillyTavern extension to manage past information of characters (memories)". It carries the MIT license. The disclosures above are his best guess from what GitHub shows.

Is this yours? Commit a real slopscore.md and press Refresh to replace this, or remove the listing in one click. There's no account to make: you log in with GitHub.

README — the repo's own words, folded up so the grading fits on one screen

Dragon Memories Manager

A SillyTavern extension for per-character episodic memory in group roleplay. Built with Claude Code (Anthropic)

Each character remembers only what they personally witnessed — based on the Presence extension's per-message tracking. Memories are stored in the chat file, injected into the correct character's prompt at generation time, and expire naturally as the character accumulates their own messages.


Table of Contents


Requirements

Without Presence installed, the extension cannot determine which characters witnessed which messages. All messages in the selected range will be included in every summary regardless of who was present, which defeats the purpose of per-character isolation. A warning banner appears in the extension panel if Presence is not detected.


Installation

Via SillyTavern Extension Installer (recommended)

  1. In SillyTavern, open the Extensions tab.
  2. Click Install Extension.
  3. Paste this URL and confirm:
    https://github.com/TheDartDragon/Dragon-Memories-Manager
    

Manual

  1. Download or clone this repository.
  2. Place the Dragon-Memories-Manager folder in:
    SillyTavern/public/extensions/third-party/
    
  3. Reload SillyTavern and enable Dragon Memories Manager from the Extensions tab.

Quick Start

Full workflow (one character at a time)

  1. Open a group chat and run a scene.
  2. Click the wand (⚡) menuCreate Memory.
  3. Select a character using the avatar buttons.
  4. Choose a message range (manual, from last summary, or set markers).
  5. Click Generate Memory and wait for the summary.
  6. Review the result — swipe for alternatives, edit directly if needed.
  7. Adjust lifespan if needed, then click Save.

The memory is now active. It will be injected into that character's context every time they generate a response, until it expires.

Quick baseline (all characters at once)

  1. Click the wand (⚡) menuCreate Memory.
  2. Click All Remember All (below the character avatar buttons).

The extension generates and saves a full-history memory for every character in the group using default lifespan and injection settings. No review step — the first result is saved automatically. Use the Memory Manager panel afterward to inspect, edit, or adjust individual entries.


Features

Memory creation

  • Per-character isolation — each character's memories are stored and injected separately; one character's memories never appear in another's context.
  • Presence filtering — only messages where the target character was actually present are included in the summarization transcript.
  • Three range selection modes — manual range input, automatic from last summary, or click-to-mark directly in the chat.
  • All Remember All — one-click baseline: generates and saves a full-history memory for every character in the group with default settings.
  • In-chat MM flow — the Memory Manager conducts the creation flow as a pseudo-character in the chat, using SillyTavern's native swipe and edit UI.
  • Lorebook context during summarization — optionally runs ST's keyword matching against the transcript and feeds matched lorebook entries to the scribe as background context. Per-lorebook blocklist available.
  • Summary cleaning — strips reasoning blocks (<think>…</think> or any ST-configured prefix/suffix) and custom literal strings from generated summaries at save time, before the token count is recorded.

Memory injection

  • Lifespan — memories expire automatically after a configurable number of the character's own generated messages.
  • Memory intensity — per-memory injection position override, so a pivotal scene can inject deeper in the prompt than a routine one.
  • Injection cap — optional character limit on total injected memory per character; oldest memories are dropped first when over the cap.
  • Hide summarized messages — optionally hides raw messages already covered by active memories during generation, so the LLM sees the summary instead of the original messages. Enables a clean three-layer stack alongside qvink MessageSummarize.

Management

  • Memory Manager panel — view, edit, reactivate, reassign, or export all memories for any character in the current chat.
  • Blank memory — create an empty memory entry for manual editing; useful for tracking attire, wounds, relationships, or other persistent state that doesn't come from a generated summary.
  • Edit Range — change the message range of any existing memory entry directly from the Manager panel.
  • Token count — each saved memory records its token count at save time and displays it in the Manager panel.
  • Staleness warning — memory cards show a badge when the summarized message range has been deleted or rolled back.
  • Lorebook export — export any memory to a World Info lorebook with character filter and injection position preserved.

Summarization settings

  • Connection profile swap — switches to a dedicated connection profile before generating a summary, then restores the original. Requires Connection Manager.
  • Completion preset swap — switches to a dedicated completion preset (sampler settings) for summarization, then restores. Auto-fills from the selected connection profile's stored preset.
  • Built-in presets — PList, Summary, and Tracker prompt and injection presets out of the box.
  • Debug log — a ring buffer captures all internal events; copy to clipboard for bug reports.

How Memory Works

Creation flow

Wand menu → Create Memory
  ↓
Character selector — avatar buttons for each group member
  ↓
Range selector — Manual / From Last Summary / Set Markers
  ↓
Collect messages → presence-filter → build prompt → generate
  ↓
Review: swipeable summary, editable text, lifespan input, intensity override
  ↓
Save: write to chat_metadata, remove MM messages from chat

After saving, the Memory Manager interaction messages are removed from the chat entirely.

Presence filtering

The Presence extension stores a present array on each message — an array of avatar filenames for every character that was active at that moment. The filter resolves the target character's avatar filename, then keeps only messages where that filename appears in present. Messages with no present data (older messages or edge cases) are always included.

Injection

On every GENERATION_AFTER_COMMANDS event, all active memories for the currently generating character are grouped by their effective injection slot and injected using setExtensionPrompt. Injection is skipped entirely during the summarization pass so memories do not contaminate the scribe prompt.

When Hide summarized messages is enabled, DMM registers a generate_interceptor (declared in manifest.json). SillyTavern passes an ephemeral copy of the chat array to this function before prompt assembly — DMM splices out the messages already covered by active memories. The real chat is never touched; no restore step is needed. Manually hidden or system messages are accounted for so the splice count stays accurate even when those messages are absent from the ephemeral array.

Lifespan ticking

After injection, the generating character's active memories are ticked: char_message_count is incremented for each active entry. When char_message_count >= lifespan, the entry is marked inactive. Ticking is suppressed on swipes and regenerations (detected by tracking whether a new user message has appeared since the last tick) and while the MM creation flow is running.

Range modes

Manual — type a range like 23-67. You can see message indices by hovering over any message in the chat.

From Last Summary — automatically starts from the message after the last completed summary for this character, up to the current end of chat. If no previous summary exists, starts from message 0.

Set Markers — click Set Start Marker, then click any message in chat to mark the start. Then Set End Marker and click another message. The selected range is highlighted before you confirm.


Settings Reference

Found in the Extensions tab under Dragon Memories Manager.

Memory Behavior

Setting Description
Default Lifespan How many of the character's own generated messages a new memory lives for. Default: 20.
Injection cap Maximum total characters injected per character per generation. 0 = unlimited. Oldest memories are dropped first when over the cap.
Hide summarized messages During generation, ephemerally removes raw messages already covered by active memories from the prompt so the LLM only sees the summary. Uses ST's generate_interceptor — the real chat is never modified. See qvink Integration.

Context Injection

Setting Description
Preset selector Load a built-in or user-saved preset (applies scribe prompt + context wrapper + injection settings at once).
Save As / Delete / Restore Defaults Manage user presets. Built-in presets (PList, Summary, Tracker) cannot be deleted.
Position in context Where memories are inserted in the prompt. See Injection Positions.
Depth / Role Message depth and prompt role for the At Depth position.
Context wrapper Template for each injected memory block. {{summary}} = memory text, {{char}} = character name.

Summarization

Setting Description
Connection profile Switch to a dedicated connection profile before generating a summary, then restore. Requires Connection Manager. Leave empty to use the current profile.
Completion preset Switch to a dedicated completion preset (sampler settings) for summarization, then restore. Auto-fills from the selected connection profile's stored preset.
Scribe prompt The prompt sent to the LLM to produce the memory. {{char}} and {{transcript}} are replaced at generation time. {{memories}} is replaced with the character's active memory summaries (empty if none exist).
Include lorebook context Runs ST's keyword matching against the transcript and feeds matched entries to the scribe as background context.
Exclude lorebooks Tag-based blocklist — lorebooks added here are filtered out from the scribe's context even when inclusion is enabled.
Strip reasoning blocks Removes prefix…suffix blocks using ST's configured reasoning tags (AI Response Formatting → Reasoning prefix/suffix). Applied at save time.
Strip strings Literal strings to remove from the summary before saving. Useful for stripping model-specific reply prefixes or stray tags.

Manager Character

Setting Description
Manager Name Display name for the Memory Manager pseudo-character. Default: Memories Manager.
Manager Avatar Upload an image or select from existing character cards. Uses that card's name and avatar only — card content is ignored.

Debug

Setting Description
Debug Logging Print internal events to the browser console.
Copy Log / Clear Log Copy or clear the internal ring buffer. The buffer retains 500 entries regardless of whether logging is enabled.

Memory Manager Panel

Accessible via wand (⚡) menu → Memories Manager.

Shows all stored memories for any character in the current chat. Characters with existing memories appear in the dropdown even if they are no longer in the group.

Character selector row

Control Action
Character dropdown Switch between characters.
↺ Reset range Clears the "From Last Summary" range pointer for the selected character. The next summary using that mode will start from message 0. Useful after manually deleting memories and wanting to re-summarize from scratch.
(red, right of dropdown) Delete all memories for the selected character. Asks for confirmation. Does not affect the character card or group membership.

Memory cards

Each card shows: active/inactive status, message range, creation message index, a 150-character preview, lifespan progress, intensity override, and action buttons.

Control Action
Lifespan input Edit total lifespan. Saving resets char_message_count to 0 — the countdown restarts from now.
Intensity dropdown Per-memory injection position override. See Memory Intensity.
Deactivate / Reactivate Toggle whether the memory is injected. Reactivating resets the countdown.
Edit Open a full-text editor for the memory summary.
Edit Range Change the start and end message indices for this memory entry.
Export → Lorebook Export to a World Info lorebook. See Lorebook Export.
Reassign to… Move this memory to a different character. Useful if it was created under the wrong name.
✕ Delete Permanently delete this single memory entry.

+ Create New Memory

Closes the panel and starts the MM creation flow.

+ Blank Memory

Creates an empty memory entry and opens the text editor immediately. Useful for manually tracking things that don't come from a generated summary — attire, wounds, relationships, persistent world state. The entry is discarded if you close the editor without saving.


Injection Positions

Position Where in the prompt
After World Info (default) Just after the World Info block, before the main chat history.
Before World Info Before the World Info block, near the top of context.
After System Prompt After the system/author's note prompt.
After Char Description After the character description card.
Just Before Chat Immediately before the chat history starts.
At Depth At a specific message depth within the chat history, with a configurable role (System / User / Assistant). Depth 0 = just before the last message.

The global setting applies to all memories that don't have a per-memory intensity override.


Memory Intensity

Each memory entry can override the global injection position via the Intensity dropdown in the Manager panel or the review step of the creation flow.

Use this to make pivotal memories inject more prominently (e.g. At Depth 1, System) while routine ones sit further back (e.g. After World Info).

Available options mirror the global Injection Positions. Selecting — use global — removes the override and falls back to the extension setting.


Lifespan

Lifespan counts the target character's own generated messages, not global chat messages. A lifespan of 20 means the memory stays active for 20 turns where that specific character generates a response. Other characters' turns do not count.

When a memory expires it becomes inactive — it stops injecting but is kept in the log. It can be reactivated manually from the Manager panel, which resets the countdown.

Editing the lifespan value in the Manager panel also resets char_message_count to 0, giving the memory a fresh countdown from that moment.


Presets

Presets bundle a generation prompt, injection template, injection position, depth, and role into a single named entry.

Built-in presets

Preset Style Default Position
PList Compact structured format: [Char's Memory | Time: … | Location: … | Topics: … | Events: … | Character Impression: …] At Depth 5, System
Summary Short 2–4 sentence narrative in third person, past tense. After World Info
Tracker Detailed structured log with weather, clothing, notable quotes, and emotional impression. At Depth 5, System

User presets

Save any combination of current settings as a named preset from the Extensions panel. Save with the same name to overwrite. Built-in presets cannot be deleted.


Lorebook Export

Exports a single memory entry to a SillyTavern World Info lorebook.

  • Choose from a dropdown of all existing lorebooks, or create a new one with the + Create new lorebook toggle.
  • The last-used lorebook per character is remembered and pre-selected next time.
  • The exported WI entry is configured with:
    • Keys: [char name] memory, [char name] past
    • Character filter: restricted to the source character only
    • Injection position: mapped from the memory's effective position
    • Depth / Role: preserved for At Depth entries

The memory remains active in the chat after export — exporting does not deactivate it.


qvink Integration

DMM works cle

Read the rest on GitHub

Scan report · 2026-09-19
  • Prohibited terms or links
  • Repository eligibility
  • slopscore.md paperwork
  • Content policy
  • Risk review — +10 owner has 0 followers

0 comments

log in to comment.

report this listinglog in to report