Skip to content

Fix blank responses from thinking models - #1365

Merged
michaelneale merged 1 commit into
mainfrom
jimmy/fix-reasoning-format-auto-default
Aug 18, 2026
Merged

Fix blank responses from thinking models#1365
michaelneale merged 1 commit into
mainfrom
jimmy/fix-reasoning-format-auto-default

Conversation

@michaelneale

@michaelneale michaelneale commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator

Problem

Thinking models can appear to return a blank response in Mesh. When reasoning_format is omitted, Mesh currently parses generated reasoning and then silently discards it. The model is producing tokens and the GPU is working, but clients receive no visible stream while the model is reasoning.

This differs from llama-server/LM Studio and from harness expectations, where the default is to pass model reasoning through.

Fix

Default an omitted reasoning_format to auto instead of Mesh's hidden mode. Reasoning is now streamed to clients as reasoning_content, so the reproduced Qwen3.8 request no longer appears hung or empty.

Explicitly configured formats such as hidden and none keep their existing behavior. This does not change whether a model thinks; it fixes whether generated thinking is silently lost.

Validation

  • cargo fmt --all --check
  • cargo check -p skippy-server
  • cargo clippy -p skippy-server --all-targets -- -D warnings
  • cargo check -p mesh-llm
  • cargo clippy -p mesh-llm --all-targets -- -D warnings
  • cargo test -p skippy-server --lib (447 passed, 3 ignored)

Co-authored-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
@coderabbitai

coderabbitai Bot commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: d2c2a079-6604-40e1-aa99-adf75f28244e

📥 Commits

Reviewing files that changed from the base of the PR and between 0d12af5 and a0dfc85.

📒 Files selected for processing (2)
  • crates/skippy-server/src/frontend/request.rs
  • crates/skippy-server/src/frontend/tests/request.rs

Included review availability: Your plan includes up to 8 reviews per rolling hour; 6 remain after this review.


📝 Walkthrough

Walkthrough

The request parser now defaults unspecified chat reasoning formats to Auto instead of Hidden. Request tests update canonical, reasoning-effort, provider, and kwargs expectations and verify that the default template exposes reasoning.

Changes

Chat reasoning format

Layer / File(s) Summary
Default reasoning format and validation
crates/skippy-server/src/frontend/request.rs, crates/skippy-server/src/frontend/tests/request.rs
The parser defaults an unspecified reasoning format to Auto. Tests cover template defaults and reasoning-effort, provider, and kwargs overrides.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Merge Risk: ⚪ Minimal · up to a0dfc

The change updates the default reasoning-output behavior while preserving explicitly configured formats, with no actionable merge-blocking risk remaining after normal checks and review.

Possibly related PRs

Suggested reviewers: i386

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly describes the primary user-facing change: preventing blank responses from thinking models.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch jimmy/fix-reasoning-format-auto-default

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@michaelneale michaelneale changed the title Expose model reasoning by default Fix blank responses from thinking models Aug 18, 2026
chat_template_options(&request, &EmbeddedOpenAiRequestDefaults::default()).unwrap();
assert_eq!(options.enable_thinking, Some(false));
assert_eq!(options.reasoning_format, Some(ChatReasoningFormat::Hidden));
assert_eq!(options.reasoning_format, Some(ChatReasoningFormat::Auto));

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

big oof, as the kids say

@michaelneale
michaelneale merged commit 084105d into main Aug 18, 2026
48 checks passed
@michaelneale
michaelneale deleted the jimmy/fix-reasoning-format-auto-default branch August 18, 2026 06:10
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