Skip to content

Multi-agent setup: presets, memory graph, web search ​

What this doc solves

Luker's multi-agent orchestrator, memory graph, and search tools each work independently, but coordinating them into a single flow (an agent team that extracts memories, retrieves canon, and drafts the prose) requires several configuration steps performed in order.

This doc starts from an empty configuration and guides you through preset → Director → memory → search end to end. It does not assume that you have read the deep-dive docs above. By the end, you will have a working default setup that you can continue tuning in the Iteration Studio.

What you get ​

After you finish this doc, when you send a message in the main chat, the main LLM does not begin writing immediately — an agent team executes first:

  • memory_scout scans the memory graph and retrieves the characters / events / locations relevant to the current beat
  • canon_scout (when needed) retrieves fandom canon from the web
  • plot_brainstormer drafts several structural sketches from different angles in parallel; the main agent selects one
  • Main agent uses the scouts' output to write the final body directly
  • memory_curator writes new facts back to the memory graph after the draft is complete

The memory graph's Auto extraction / Auto compression are entirely delegated to the agents, and the search provider defaults to DuckDuckGo — no API key, no embeddings, and no additional LLM routing are required.

How the team is organized ​

d2 Diagram

The memory graph's own "Auto extraction / Auto compression" no longer triggers — the agent performs the same work. Once a search provider is enabled, canon_scout can perform web searches; otherwise it returns zero results.

What you need first ​

  • A working Luker instance in which the main chat already produces replies
  • A working RP preset, ideally already configured with style guidance, jailbreak, and NSFW direction

Step 1 — Pick a starting preset ​

Any RP preset you normally use is suitable. This step only confirms that you have a writing preset as a starting point; the next step derives from it the preset variants Director requires.

Step 2 — Configure the Preset Assistant and derive the presets Director needs ​

LLM calls made by Luker's plugins fall into distinct categories with very different preset needs. One is plugins producing RP content — Director's agent team drafting the body, critic sub-agents reviewing, and so on — which requires a full RP preset with jailbreak / style / anti-cliché guidance. The other is the iteration AI that powers various plugins — the Preset Assistant, the Memory Graph configuration studio, CardApp Studio, Director's Iteration Studio, and so on — which uses tool calls to edit configs or extract structured data; any RP instructions leaking in will interfere with the model executing the plugin's instructions, so these slots require a stripped-down preset that retains only jailbreak.

Director's flow touches these categories at once:

PathWho uses itPreset shape
Agent path — main agent + sub-agents producing the bodyThe actual drafters; their output ends up in the chatA standard RP preset, tuned for tool calling: keeps jailbreak + style + anti-cliché, but drops placeholders / hard schemas that conflict with the orchestrator
Iteration Studio path — the AI you talk to inside the studio when tuning your configA tool-using config editor; never drafts story proseA stripped-down preset with only jailbreak left — no style guidance, no NSFW writing rules, no narrative meta-rules

Why the paths cannot share a single preset

RP presets assume that "one LLM writes the entire reply by itself." When those instructions are placed into an agent tool loop, they:

  • Compete with the agent's system prompt for attention
  • Force "must output schema" / "mandatory chain of thought" constraints into the drafting step, breaking tool calling
  • Re-inject placeholders (character description, persona, world info entries) that the orchestrator's main path already injects

The Iteration Studio is even more sensitive — it does not write story prose at all; it edits a JSON config through tool calls. Any RP instruction that leaks in interferes with the model executing the plugin's instructions.

2a — Configure the Preset Assistant itself ​

The Preset Assistant is the tool used in 2b to derive the agent preset, but it is itself an LLM-driven tool — it requires its own iteration AI preset and API profile before it can be opened.

Open the Extensions drawer (#extensions_settings2 — the same drawer that holds the Orchestrator, Memory, and Search Tools panels). Locate the Completion Preset Assistant panel and configure the following fields:

  • Iteration AI prompt preset (params + prompt) — click the ? button next to this field
  • Iteration AI API preset (Connection profile) — select any working API profile

Preset Assistant settings panel — iteration AI preset (with ? button) + iteration AI API preset

The ? button opens an explainer popup with an Import plugin-only preset button at the bottom — clicking it imports Luker's bundled clean preset and selects it here automatically.

? button popup — explains which preset belongs in this slot, with a button that imports plugin-only

Other Luker plugins with their own iteration AI (Director's Iteration Studio, Memory Graph schema studio, CardApp Studio, etc.) expose the same ? button next to their preset selector — the same import applies there as well.

2b — Derive the agent preset ​

Now that the Preset Assistant is configured, click Open Assistant in the same panel. In the popup, set the Editing mode dropdown to Adapt for orchestrator, then instruct it:

Convert this preset into an agent-only preset

Preset Assistant in Adapt-for-orchestrator mode

By default it derives a new preset (original name + -orchestrator suffix) — the original remains untouched. It automatically:

  • Disables placeholders that would be double-injected alongside the orchestrator's main path: character description, persona, example messages, explicit world info
  • Rewrites format constraints that would interfere with tool calling (forced schema, fixed CoT headers) from hard requirements into soft hints
  • Gates instructions that only matter for the final draft (summaries, style sign-off) to the "final commit message" phase
  • Keeps chat history, style guidance, and jailbreak / anti-cliché instructions — the main agent reads them while drafting, and the critic sub-agents read them while reviewing

Review its diff and approve each entry.

Refine the preset further in the same session

Adapt for orchestrator is one of the assistant's Editing modes. Switch the toolbar's Editing mode back to the default General editing, start a new session, and the same assistant becomes a general-purpose preset editor — for example: "add an anti-cliché directive backed by a few negative examples", "tone the prose-style guidance down from purple to restrained close-detail", or "merge these three rules that express the same requirement". See Preset Assistant for the full details.

The Adapt-for-orchestrator pass also proactively scans your preset entries for reusable style / format / writing-discipline rules and proposes lifting them into shareable skills (verbatim, at this preset's scope, with a pointer left in the original entry). Proposals are reviewed independently — approve, reject, or ignore one and the rest of the adaptation still applies. See Authoring skills from preset content for the rationale and the safeguards (one-off tweaks never trigger the scan).

Step 3 — Switch to Director mode and configure the presets ​

Open the Orchestrator panel in the Extensions drawer:

  1. Set Execution mode to Director
  2. Set the API preset (Connection profile) + Prompt preset to the -orchestrator preset from Step 2b
  3. Find the AI Iteration Studio configuration section and set its Iteration AI API preset (Connection profile) + Iteration AI prompt preset (params + prompt) to the plugin-only preset already imported in Step 2a

Step 4 — Delegate memory extraction and recall to the agents ​

Open the Memory panel in the Extensions drawer:

  • Enabled ✓ leave enabled
  • Auto extraction ✗ disable (the curator sub-agent takes over)
  • Auto compression ✗ disable (the agent handles it during housekeeping)
  • Enable recall injection ✗ disable (a scout sub-agent already runs an LLM-level recall pass before drafting; leaving the built-in injector enabled would duplicate the recall and contaminate the main agent's context)

Memory panel: extraction, compression, recall all delegated to the agents

Prefer the memory graph's built-in extraction, recall, and compression?

The default Director configuration claims extraction / recall / compression for itself. If you trust the memory graph's own pipeline more (already configured with multi-model routing, Hybrid + Rerank, etc.):

  1. Re-enable Auto extraction, Auto compression, and Enable recall injection
  2. In the iteration studio (Step 6), tell the studio AI: "I want to manage memory myself with the built-in memory graph; the agents shouldn't touch it."
  3. The studio AI will modify your orchestrator configuration through tool calls — review entry by entry and save.

Step 5 — Pick a search engine ​

Open the Search Tools panel in the Extensions drawer. Search provider defaults to DuckDuckGo (no login) — keep the default. To use a different engine, pick another provider from the dropdown, such as the self-hosted SearXNG (custom instance) or an API-key provider.

Search engine picker

How the top toggles relate to this flow

Expose tools to main model and Run pre-request search agent are the search tool's independent working modes, unrelated to Director — this flow uses Director's own search sub-agent, and neither of those toggles needs to be enabled.

If you are not running Director and still want search, see the search tool's working modes instead.

Step 6 — Making changes in the Iteration Studio ​

After switching to Director, click Open AI Iteration Studio in the Orchestrator panel — this is the entry point for all further customization.

AI Iteration Studio — Director

Which configuration the studio edits depends on when you open it:

  • No character chat open → the studio edits the global default config — all cards without overrides inherit it
  • A character chat is open → the studio edits this card's override — only this card is affected, and the override travels with the card on export / import

A successful per-card profile can be promoted to global

If you iterate a Director profile that works particularly well for a specific card, you can promote it manually: export that card's profile from the Orchestrator panel, clear the current chat to return to a no-card state, then import that profile to global. The same applies to schemas.

Global scope — example instructions ​

  • "I don't want agents managing memory. Remove the ones doing extraction and recall."
  • "I don't want agents searching for canon online. Remove the search sub-agent."
  • "Read the image-generation guidance from world info, then add a sub-agent that — after the body is drafted — figures out where to insert illustrations and what prompts to use."
  • "Read the variable-update guidance from world info, then add a sub-agent that — after the body is drafted — figures out how variables should update."

Per-card scope — example instructions ​

  • "Tailor the main agent prompt to this card's setting and current plot — give it a specific writing discipline."
  • "This card has custom stamina / mood variables. When the memory curator extracts, prioritize filling those fields."
  • Anything specific to this card's genre that does not belong in the global config.

The studio presents the diff entry by entry — review, approve, and save. If the result does not match your intent, reset to the default Director config.

Step 7 (optional) — Let AI iterate your schema ​

The memory graph schema can also be iterated by AI. In the Memory panel, click AI Configure Memory Graph to open the Memory Graph Configuration Studio.

Memory Graph Configuration Studio

Like orchestration configurations, schemas have both global and per-card scope — per-card schemas travel with the card on export. Use the studio to tailor the schema for a genre, for example:

  • Xianxia / cultivation: add cultivation_realm, spirit_meridian fields to characters
  • Political intrigue: add a faction node type, tracking alliances and enmities
  • Survival: add inventory_item nodes, tracking each item's durability and state

Do not forget the memory graph's iteration AI preset

The Configuration Iteration Prompt (configuration-editor AI) field in the Memory panel belongs to the same "iteration AI path" mentioned in Step 2a — its preset selector also has a ? button; if you already imported plugin-only in Step 2a, select it from the dropdown here.

See it in action ​

Send a message in the main chat and expand the reasoning fold to see the agent team at work in real time:

Agent team output in a Director turn

  • Pre-draft scouts: each surfaces Item / Source / Why items — characters, events, world info entries that matter to the current beat
  • Mid-stage brainstorming: a few structural sketches in parallel from different angles for the main agent to select from
  • Post-draft critics: sub-agents critique the main agent's draft; the main agent decides which critiques to accept
  • Housekeeping: writes the turn's new facts back to the memory graph

Need a closer look — agent model reasoning, tool call requests and responses? Click Show Run Panel beside the chat (or the bottom drawer on narrow screens) and expand any round.

Not satisfied with the result? That reasoning fold is the full agent execution log — use it to pinpoint where the problem occurred, then return to the AI Iteration Studio and describe in natural language what you want changed.

Where to go next ​

Built upon SillyTavern