Skip to content

fixes additions#5

Merged
Classic298 merged 2 commits intodevfrom
claude/fix-docs-VtbQt
Apr 22, 2026
Merged

fixes additions#5
Classic298 merged 2 commits intodevfrom
claude/fix-docs-VtbQt

Conversation

@Classic298
Copy link
Copy Markdown
Owner

No description provided.

claude added 2 commits April 22, 2026 15:44
A recurring support question from pipeline authors: their agent-backed
pipe (LangChain, LlamaIndex, custom planner) duplicates its response
~30 times in the chat because it emits delta.tool_calls while also
executing the tool internally. The docs didn't cover any of:

- What a Pipe is actually allowed to yield when streaming (plain
  strings vs OpenAI-format chunks, where finish_reason goes).
- The semantics of delta.tool_calls ("please execute this for me,
  client") and why emitting it from a self-contained agent triggers
  the CHAT_RESPONSE_MAX_TOOL_CALL_RETRIES retry loop.
- The <details type="tool_calls"> content-embedded block — the
  exact shape Open WebUI's own server-side tool path emits after
  internal tool execution, which agent pipes can emit themselves
  to render a proper "Called <tool>" chip without triggering the
  execute-and-retry loop.

Expanded docs/features/extensibility/pipelines/pipes.md (previously a
22-line stub) with:

- "Streaming response format" section covering plain string yields,
  chunk-dict yields, and the "single terminating finish_reason: stop
  chunk at the end" rule.
- "Self-contained agents and delta.tool_calls" section with the full
  rule of thumb (model wants OWUI to run the tool vs. agent already
  ran it), a minimal end-to-end pipe example, and a LangChain-
  specific loop mapping.
- Link to the source issue (#23957) for anyone debugging the exact
  duplication symptom.

Also added a :::caution cross-reference from the Function Pipes page
(plugin/functions/pipe.mdx) pointing at the same section, since the
pattern applies identically to in-process Pipes that own their tool
execution — it's not a Pipelines-only concern.

https://claude.ai/code/session_01K54Vwr1NMczgh9vmQkWe17
A user on r/OpenWebUI flagged that the Native Mode enable steps don't
match the current UI. Two mismatches in the sections I added:

- The top-right control on Admin Panel → Settings → Models is labeled
  "Settings", not "gear icon (⚙️)". Renamed in both tools/index.mdx
  (Enable Native Mode list + the tip callout) and essentials.mdx.

- The section inside the global-settings panel is called "Model
  Parameters", not "Advanced Parameters". Fixed in the same three
  places plus the per-model override path (also "Model Parameters"
  there).

Per-chat Chat Controls still say "Advanced Params" in the UI so that
path is unchanged. Tightened the phrasing there slightly to say
"open Chat Controls (right sidebar)" rather than "click the ⚙️ Chat
Controls icon" since the exact per-chat control shape can also shift.

https://claude.ai/code/session_01K54Vwr1NMczgh9vmQkWe17
@Classic298 Classic298 merged commit c22f2f5 into dev Apr 22, 2026
Classic298 pushed a commit that referenced this pull request Apr 22, 2026
Recurring support question after the 0.8.x → 0.9.x upgrade: "my NFS /
CephFS / Azure Files SQLite setup was fine, now every request hangs
and I see QueuePool limit of size N overflow M reached, timed out".
The docs already said "don't do that" in several places but didn't
explain WHY it flipped from tolerable to fatal, so operators kept
tweaking DATABASE_POOL_SIZE hoping for a fix that wasn't there.

Expanded four existing pages (no new page) with the mechanism
explainer, each scaled for the page it's on:

- getting-started/advanced-topics/scaling.md, Step 1 — "Switch to
  PostgreSQL": added a subsection "Why SQLite on network storage
  fails the moment you scale (or upgrade)" covering fsync latency
  (local NVMe ~100µs vs NFS 50-500ms), the sync (0.8.x, thread-pool-
  throttled) vs async (0.9.x, pool saturation) difference, the
  WAL+mmap-on-NFS caveat, and why bigger pool sizes don't help.
  Ends with the three concrete paths: migrate to Postgres / move DB
  to local SSD / temporary workaround.

- troubleshooting/performance.md, Disk I/O Latency (SQLite & Storage)
  section: added a "Why the async backend makes network-storage
  SQLite fail suddenly" subsection right after the danger callout.
  Includes the fsync-latency table, the sync-vs-async contrast, the
  QueuePool error message verbatim, the WAL-on-mmap issue, and the
  one-line summary.

- reference/env-configuration.mdx, DATABASE_URL and DATABASE_POOL_SIZE:
  added two warnings on DATABASE_URL (SQLite only on locally-attached
  SSD/NVMe; multi-replica REQUIRES Postgres) and one warning on
  DATABASE_POOL_SIZE explaining that tuning the pool does not fix
  the underlying fsync problem on network FS. All three link back
  to the performance and scaling explainers.

- troubleshooting/multi-replica.mdx, "Database Corruption / Locked
  Errors" section: expanded the symptoms list to include the exact
  QueuePool error message + the stall patterns, rewrote the cause to
  cover SQLite-on-NFS as the common root cause (not just "multiple
  replicas"), cite SQLite FAQ #5 for upstream's own position, and
  ordered the solutions: Postgres migration first, local-SSD move
  second, explicit "don't just increase DATABASE_POOL_SIZE" third,
  temporary damage-control vars last.

No new standalone troubleshooting page — per the user's instruction,
this is spread across the existing guides where operators already
land when they hit the symptom.

https://claude.ai/code/session_01K54Vwr1NMczgh9vmQkWe17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants