agentscope-ai / agentscope-ai/QwenPaw
[Question]: assistant stuck showing only “Thinking” after tool_result until later user turns (thinking-only step, no visible text)
- 主要言語
- Python
- スター
- 34.9k
- フォーク
- 3.1k
- 平均マージ
- 1日 15時間
- マージ済み PR(30日)
- 225
説明
### Summary
When chatting via the **Console** channel, several consecutive **user** messages appear to show only **Thinking** (reasoning stream) without a user-visible **answer**, until a later message finally receives a normal **text** reply.
Persisted session state shows **assistant** messages whose `content` is **`thinking` only** (no `text` block) immediately **after** a **`tool_result`** following **`memory_search`** (and similar tool chains). Earlier user turns never get a closing **`text`** answer in memory until the user sends another message or the model eventually emits **`thinking` + `text`**.
This looks like an interaction between **ReAct iteration boundaries**, **thinking/reasoning vs `content` streaming**, and **Console UX**, not `filter_thinking` on IM channels (we use `filter_thinking: false` on console).
### Environment
- **QwenPaw**: `1.1.4.post2`
- **Channel**: Console (direct HTTP/UI to pod)
- **Backend LLM**: e.g. **vLLM**, model **`qwen3.5:9b`** (thinking-capable stack)
- **OS**: Linux container (Debian-based image), supervised app on `:18789`
### Steps to reproduce
1. Start a **new** chat session on Console.
2. Send short trivial prompts (e.g. `"1"`, `"111"`, `"12345"`) or any prompt that triggers **`memory_search`** early (assistant often emits short text like “Searching memory for relevant context…” plus **`tool_use`**).
3. Observe the UI: after **`tool_result`**, the next assistant segment may show **only Thinking** with **no final visible reply text** for that user turn.
4. Inspect persisted session file under `workspaces//sessions/*.json` → `agent.memory.content`.
### Expected behavior
After every **`tool_result`**, the next assistant step should include **at least one user-visible `text`** fragment (even a one-line summary), or the Console should not treat **thinking-only** assistant chunks as the sole visible outcome for that user message.
### Actual behavior
- Session memory can contain sequences like:
- `user` → `assistant` (`text` + `tool_use`) → `system` (`tool_result`) → **`assistant` (`thinking` only, no `text`)** → next `user` …
- Logs may still show `console stream done: ... has_response=True` for those turns, while the **stored** transcript lacks a closing **`text`** answer for the first user message(s).
### Evidence (sanitized)
コントリビューションガイド
評価
この issue はまだ評価されていません。