80 lines
4.6 KiB
Markdown
80 lines
4.6 KiB
Markdown
# Qwen 3.6: session tool-call failure and correction
|
|
|
|
Date: 2026-09-21. Verified runtime: Pi coding agent and Pi AI 0.80.3.
|
|
|
|
## Cause and correction
|
|
|
|
Interactive sessions returned text resembling a bash call and stopped before the
|
|
first review widget. The Evidence-only extension `tht-evidence-json-mode.ts` lived
|
|
under `.pi/extensions`, so Pi automatically loaded it into interactive sessions.
|
|
Its `before_provider_request` hook imposed `response_format: {type: "json_object"}`
|
|
and temperature zero on every request.
|
|
|
|
Replaying the captured startup request, with all original hooks preserved, isolated
|
|
the cause. With JSON response format, Qwen returned the command as text and finish
|
|
reason `stop`. Removing only that field produced a native `bash` call and finish
|
|
reason `tool_calls`. Both requests contained the same 15 tools and used High thinking.
|
|
|
|
The extension now lives in `.pi/evidence-extensions` and is loaded explicitly by
|
|
`PiEvidenceRestructurer`. Evidence retains JSON output. Interactive sessions retain
|
|
native tool calls. No changes to the remote Qwen server were required.
|
|
|
|
Earlier SDK probes replaced `session.agent.onPayload`, inadvertently bypassing the
|
|
extension hooks. Their success did not reproduce the application path and did not
|
|
establish a model or server fault.
|
|
|
|
## Model configuration
|
|
|
|
The installation catalog now accepts optional `session.compatibility.thinkingFormat`
|
|
values `qwen` and `qwen-chat-template`, requiring `reasoning: true`. Go validation,
|
|
the backend schema, and generated catalog/Pi projections preserve this setting.
|
|
It controls thinking; it was not the cause or correction of the tool-call failure.
|
|
|
|
For the verified endpoint, `qwen-chat-template` sends `enable_thinking` and
|
|
`preserve_thinking` inside `chat_template_kwargs`. Selecting Off explicitly disables
|
|
thinking. Declaring `reasoning: false` alone does not disable thinking on the server.
|
|
See the [operator configuration](../general/pi-configuration.md#qwen-36-sessions-and-thinking-controls)
|
|
and [Pi 0.80.3 model documentation](https://github.com/earendil-works/pi/blob/v0.80.3/packages/coding-agent/docs/models.md#openai-compatibility).
|
|
|
|
## Validation and local delivery
|
|
|
|
- Catalog and projection regression tests failed before the compatibility change,
|
|
then passed. Go config/modelprojection/CLI tests, 84 targeted backend tests,
|
|
TypeScript checking, and the strict documentation build passed.
|
|
- The extension-isolation regression failed before relocation. All 46 Evidence
|
|
authoring/restructurer tests and Ruff checks on changed Python files passed.
|
|
- The rebuilt local core image has digest
|
|
`sha256:9cd593d7362dcbefe177f1b9eb4b9ffdf3010ced7bd7efc8fc3fdcd288f24579`.
|
|
Core/frontend were recreated, healthy, and returned HTTP 200.
|
|
- A real `pi --mode rpc --no-session` probe with Qwen and High thinking executed
|
|
`tht session show` successfully and reached the first clarification widget.
|
|
The probe allowed only that read and `reviewer_select`; it stopped without
|
|
submitting a human response or recording decisions. Its temporary configuration
|
|
referenced the mounted credential because the original runtime lease had expired.
|
|
- The user subsequently confirmed that the application now works.
|
|
|
|
This verifies recovery from the startup failure. It does not certify every workflow
|
|
phase or the separate LiteLLM metadata-generation path.
|
|
|
|
## Public manual publication
|
|
|
|
- Source: `84084bba37d4985658174db04f8e9195c0435d72`, pushed to Gitea `main`.
|
|
- Actions generated `pages` commit `1fe88f99228e06d10e8ecd92556c1ef0d52526e8`
|
|
for that exact source revision.
|
|
- Live release: `20260921T142437Z-84084bba`; previous release retained for rollback:
|
|
`20260916-css-b1c510a0`.
|
|
- Built from a clean checkout with the locked strict MkDocs build and all four
|
|
authentication documentation verification scripts passing. The public boundary
|
|
contains exactly 20 pages. The committed Go tests, Evidence tests, targeted
|
|
backend tests, and TypeScript check also passed from that checkout.
|
|
- Recreated only the `thothii-docs` Compose service. It is healthy, its mounted
|
|
`current` release is correct, and `nginx -t` passed.
|
|
- Anonymous requests to home, search, both installation manuals, and the model
|
|
configuration page returned 200 with bytes matching the clean build. Styles,
|
|
scripts, and referenced fonts returned 200 with the expected content types.
|
|
The retired/internal overview, memory-plan, and Compose-reference paths returned 404.
|
|
- Browser checks of both installation manuals and the Qwen section confirmed
|
|
loaded stylesheets and styled, readable layouts.
|
|
|
|
Published page: [Qwen 3.6 configuration](https://git.tylconsulting.it/thothii-docs/general/pi-configuration/#qwen-36-sessions-and-thinking-controls).
|