DLE version: 2.6.2 Main
SillyTavern version: 1.18.0 'release'
Browser: Chrome
Connection mode: Profile
Obsidian REST API version: 4.1.7
Multi-vault configuration: single Vault
AI features enabled: librarian, ai search, session scribe, ai notepad, auto lorebook
What happened?
I use a local model as my main rp model, but tried to use an API key for AI search, since my model is dense and seemed to time out randomly (no idea what this is all about). However if I set the AI search to this other profile, the rp reply itself will not be written by my local model. The UI even lies about it, as the symbol still shows my local model.
What did you expect?
I expected my main model to write the reply and the API key model to do the AI search
Steps to reproduce
- Make a connection profile (open router/deepseek) and set it as Ai search profile while using another profile to write with
- Write a reply and wait for the gen
- Get a reply from the AI search profile/model than the one you have actually set up
Diagnostic report (recommended)
Relevant excerpts from a DLE diagnostic export (full export withheld — see Additional context). Snapshot was captured during an active generation, i.e. in the exact state described above.
Tool connection config:
"aiSearch": {"effectiveMode": "profile", "profileId": "<profile-1>", "model": null, "timeout": 90000, "profileExists": true, "profileApi": "openrouter", "profileModel": "qwen/qwen3.7-flash"}
ST's active connection at snapshot time — note the AI-search profile's model is now in the active openrouter slot:
"stActiveConnection": {"mainApi": "openai", "chatCompletionSource": "custom", "reverseProxy": null, "openrouterModel": "qwen/qwen3.7-flash", "selectedModel": "gpt-5.4-nano-2026-03-17", "selectedProfileId": "<profile-2>", "totalProfiles": 7}
Possibly relevant — every profile (openrouter and custom alike) resolves to selected: "openai":
"apiMapResolutions": {
"<profile-1>": {"selected": "openai", "source": "openrouter"},
"<profile-3>": {"selected": "openai", "source": "openrouter"},
"<profile-2>": {"selected": "openai", "source": "custom"}
}
Other summary data: pipeline mode two-stage, aiSearchMode=ai-only, generation lock HELD at capture, circuit breakers closed, 0 errors in health check.
Console errors
Additional context
I did not attach the full diagnostic export: the anonymizer misses vault content in the compressed data block (raw entry titles in analyticsData keys, the vault name in settings fields like scribeWriteVaultId, folder names in folderFilter, and the alias substitution is reversible via substring collisions). Happy to file that separately.
DLE version: 2.6.2 Main
SillyTavern version: 1.18.0 'release'
Browser: Chrome
Connection mode: Profile
Obsidian REST API version: 4.1.7
Multi-vault configuration: single Vault
AI features enabled: librarian, ai search, session scribe, ai notepad, auto lorebook
What happened?
I use a local model as my main rp model, but tried to use an API key for AI search, since my model is dense and seemed to time out randomly (no idea what this is all about). However if I set the AI search to this other profile, the rp reply itself will not be written by my local model. The UI even lies about it, as the symbol still shows my local model.
What did you expect?
I expected my main model to write the reply and the API key model to do the AI search
Steps to reproduce
Diagnostic report (recommended)
Relevant excerpts from a DLE diagnostic export (full export withheld — see Additional context). Snapshot was captured during an active generation, i.e. in the exact state described above.
Tool connection config:
ST's active connection at snapshot time — note the AI-search profile's model is now in the active openrouter slot:
Possibly relevant — every profile (openrouter and custom alike) resolves to
selected: "openai":Other summary data: pipeline mode two-stage, aiSearchMode=ai-only, generation lock HELD at capture, circuit breakers closed, 0 errors in health check.
Console errors
Additional context
I did not attach the full diagnostic export: the anonymizer misses vault content in the compressed data block (raw entry titles in
analyticsDatakeys, the vault name in settings fields likescribeWriteVaultId, folder names infolderFilter, and the alias substitution is reversible via substring collisions). Happy to file that separately.