Skip to main content

Configuration reference

Core plugin configuration​

These values configure the plugin for the whole DSH profile. Session settings belong to one story instead.

FieldDefaultPurpose
rootPath~/dsh-roleplayFolder for worlds, avatars, sessions and media
sessionStorePath~/.dsh/sessionsDSH session store used for the chats attached to roleplay sessions
authoringToolsnoneTools from other plugins that each authoring assistant may use. Groups are worldAuthoring, presetAuthoring, lorebookAuthoring and worldAuthor. An unlisted tool is unavailable. The session doctor never receives these tools
cataloguesnoneWorld catalogues to browse. Each entry has name, API baseUrl, and optionally an apiKeyRef for DSH's credential store. The deprecated apiKey field is used only when the store has no key, then removed on the next save
sync.remoteemptyrclone remote and folder, such as mydrive:dsh-roleplay; empty disables sync
sync.rcloneemptyrclone executable; empty finds rclone on PATH
sync.configFileemptyAbsolute path to the rclone configuration file, which must be outside rootPath
sync.passwordRefemptyDSH credential-store reference for an encrypted rclone configuration; empty uses ROLEPLAY_SYNC_RCLONE_CONFIG_PASS
sync.intervalMinutes0Automatic-sync interval; 0 permits manual runs only
catalogueMaxBytes256 MiBMaximum downloaded-world size, checked both compressed and unpacked
catalogueTrashDays30Days to keep files replaced by a catalogue update in .trash/worlds/; 0 keeps them indefinitely
importMaxUploadBytes100 MiBMaximum character-card upload size
importConcurrency4Import and authoring helper calls that may run at once
importReasoningemptyReasoning level for import and authoring helpers and authoring chats; empty uses childReasoning, then the chat setting
childReasoningemptyFallback reasoning level for roleplay helpers; empty follows the game master
importModelemptyModel for import and authoring helpers as provider/model; empty uses the chat model
importStructuredOutputschemaHow import and authoring helpers return structured results. schema asks a compatible endpoint to constrain a JSON reply with response_format; LocalAI, vLLM and OpenAI support this form. If an endpoint rejects the schema, that model uses a tool call from then on. tool uses tool calls for every model
importMaxTokens0Ceiling on output tokens for one import or authoring-helper request; 0 is a tenth of the model's context window (at least 16000); each job may use a smaller limit
importVariablesPerRequest25How many tracked values one import request is asked to declare; a card that tracks more is asked again for the rest
importTemperature0.2Import and authoring-helper temperature
importTimeoutMinutes15Minutes before an import or authoring helper is stopped without a result; 0 disables the timeout
importDecisionsllmdecision lets the configured decision service preclassify card pieces it can settle confidently; llm sends every piece to the language model
importConfidence0.7Confidence required to accept a decision-model classification
authoringApprovalaskask requests approval for every world-authoring-chat change; auto writes immediately while retaining replaced or deleted files in the world's .trash folder

All fields except the restart-time sessionStorePath are editable under Settings, Role Play and take effect without restarting. See Sync between devices before pointing more than one installation at the same remote.

State plugin configuration​

The state package can be installed on its own. These values configure its database and model-facing tools.

FieldDefaultPurpose
journalModedeleteSQLite journal mode. delete keeps a session easy to copy as one file; wal permits readers during a write
writeToolsfalseRegister model tools that change records. Reading tools are always registered
diceToolsfalseRegister dice tools for every roleplay agent. The full bundle instead grants them by agent kind

Session defaults​

These defaults are copied into a new story's settings.json. A world or preset may suggest different starting values, and the player can change them for that story.

Turn, memory and context​

SettingDefaultMeaning
maxRounds / maxCharacters3 / 4Character rounds per player message, and characters activated per round
memory.flakytrueApply imperfect perception and story-time fading
memory.recall / memory.lookupCalls12 / 5Memories supplied per activation, and maximum lookups in one character decision
memory.lookup / memory.verifytrue / trueLet characters query memory, and have the keeper read edits back
memory.backlogRounds6Unrecorded rounds that force the keeper to catch up
memory.overRetrieve / memory.associate4 / 2Candidate multiplier before selection, and related memories allowed with a strong match
memory.diversity0.3Penalty, from 0 to 1, for recalling near-duplicates together
memory.foldedFade0.5Retention multiplier after a belief incorporates a perception; 1 leaves it unchanged
context.limitTokens / context.limitRatio0 / 0.6Explicit folding limit, or share of the model context used to derive it
context.workingTokens / context.retainRatio0 / 0.5Optional cap on the derived limit, and its verbatim share
context.shortTermTokens / context.longTermTokens1500 / 2500Short-term and long-term summary targets

World activity and time​

SettingDefaultMeaning
authoring.enabledtrueLet the game master ask the world author for missing entities
authoring.perTurn / authoring.thingsPerTurn2 / 4Authored characters and places, and ordinary things the GM may introduce, per turn
authoring.consolidateAfter3Pending authored entities that trigger consolidation
clock.mode / clock.timeZonesimulated / emptyStory-time mode (simulated or real) and its IANA time zone. At session start, an empty zone uses the host zone for real time, or the world's zone and then UTC for simulated time
clock.roundSeconds / clock.maxSkipDays30 / 30Default simulated round duration and maximum days in one clock advance
background.concurrentfalseLet background work overlap the next turn instead of completing first
offstage.perTurn / offstage.perCharacter2 / 1Due off-stage characters per turn, and actions allowed for each
offstage.joint / offstage.summarytrue / trueProcess overlapping situations together, and produce the Meanwhile summary
factions.perTurn / factions.everyDays1 / 3Due factions advanced per turn, and their default story-time interval
triggers.enabled / triggers.maxFirestrue / 3Whether triggers run, and how many may fire per turn
triggers.beatTurns / triggers.cueTurns3 / 2Turns a game-master beat or character cue waits to be used
triggers.judgedPerTurn2Trigger conditions that may require model judgement per turn

Reflection and decision checks​

SettingDefaultMeaning
reflection.auto / reflection.everyTurnstrue / 20Reflect automatically after this many turns; 0 disables the schedule
reflection.onSceneChange / reflection.sceneDaystrue / 1Also reflect after a place change or this many story days; 0 disables the time condition
reflection.minTurns / reflection.perRun5 / 3Minimum gap between passes and characters processed per automatic pass
reflection.minNew4New perceptions needed for an automatic pass; a manual pass needs one
decisions.triggers / decisions.reflectionhybrid / llmJudge trigger statements and belief evidence with llm, decision, hybrid or shadow. hybrid accepts confident decision-model answers and sends the rest to the language model. Without a configured decision model, it quietly uses the language model alone
decisions.agency / decisions.refusaloff / offOptional output checks, using the same four modes plus off
decisions.rules / decisions.secretsoff / offDecision-service-only checks of allowed actions against rules, and outputs against hidden lore
decisions.gateThreshold0.5Probability at which a decision answer counts as a fault; the 0.15 below it is uncertain
decisions.confidence0.7Confidence required before a decision answer is accepted instead of handed to the language model

The modes and fallback rules are explained in Optional capability integration.

Models, prompts and sampling​

SettingDefaultMeaning
models.characters, models.records, models.suggestions, models.authoringemptyModel for that helper as provider/model; empty uses the chat model
models.backgroundemptyBackground-character model; empty falls back to models.characters
sampling.master / sampling.characters0.7 / 0.8Game-master and character temperatures
sampling.suggestions / sampling.authoring / sampling.records0.2 / 0.4 / 0.1Temperatures for suggestions, authoring and records
sampling.topP / sampling.topK / sampling.minP1 / 0 / 0Additional sampling controls; defaults are not sent
sampling.frequencyPenalty / sampling.presencePenalty / sampling.repetitionPenalty0 / 0 / 1Penalty controls; defaults are not sent
sampling.toolsrequiredTool-choice mode for helpers that must submit a result
sampling.masterMaxTokens12000Maximum output tokens for one game-master request, including reasoning
sampling.maxTokens / sampling.shortMaxTokens8000 / 2000Output ceilings for general and short helper requests
sampling.headroom2Multiplier applied to a helper's estimated answer size before its ceiling
prompts.languageenShipped prompt language: en or zh
reasoning.childrenemptyHelper-agent reasoning level; empty uses the plugin fallback

Interface, rules and media​

SettingDefaultMeaning
interface.packemptyEmpty uses the world's first pack, none disables packs, and a name selects one
rewind.keepSnapshots30Recent state snapshots retained for taking the story back
rules.ownemptyAdditional rules supplied by the player for this story
preview.enabledtrueShow an early scene preview while the full turn runs
suggestions.count3Suggested next actions shown after a turn
dice.visibilitycardcard shows rolls in a collapsed card; hidden shows no roll card
toolsnone chosenOptional tools by agent kind (gameMaster, characters, records) and name; unknown names are retained and ignored
images.modemanualoff, manual or every-turn
images.referencesprefer-referenceprefer-reference, require-reference or text-only
images.reuse / images.highRestrue / falseReuse existing pictures, and optionally render a larger second result
images.interprettrueDescribe uploaded pictures for the story
images.interpreterModel / images.captionerempty / emptyModels for uploaded-image interpretation and generated-image captions; empty uses the chat model
diagnostics.keepRunsfalseKeep the latest 60 helper traces, including private character context, in the session folder

The UI shows current numeric bounds. Unknown fields are rejected. Provider-specific embedding request options are stored under embedding.options.