fix(dankvoice): pin thinking off in rewrite, fix silent and timeout modes

Refs #32

The humanizer's raw fetch to frank-zealot omitted
chat_template_kwargs.enable_thinking: false, so the Qwen35 hybrid thought
instead of answering (6.9 s reasoning_content, empty content - timing out
the 6 s abort; or answering "" and muting the unit). Pin the kwarg, treat
empty-content-with-reasoning as failure over silence, and stop the menu's
test phrase from blocking its handler. Three red-captured regressions;
26/26 green, verified red against HEAD.
This commit is contained in:
Frank
2026-10-19 10:46:06 -07:00
parent 8f5a229cc6
commit 96553979fb
4 changed files with 137 additions and 21 deletions
+18
View File
@@ -142,6 +142,15 @@ supplies the `baseUrl`; the request is `POST {base}/chat/completions`. On
this fleet that is **frank-zealot** (`llamacpp (dankclaw-3090)`,
`:7771`) — the 6 s abort keeps a slow tiny model off the critical path.
The request body pins `chat_template_kwargs: { enable_thinking: false }`,
and that field is load-bearing: the harness injects it for managed roles,
but a raw `fetch` gets the model's default — thinking on — so the Qwen35
hybrid spends the budget on `reasoning_content` and answers `content: ""`
(measured: 6.9 s / 6893 reasoning chars / empty content without the flag;
0.55 s / 369 clean chars with it). For a hybrid endpoint, empty content
beside non-empty `reasoning_content` means the flag was ignored — a failed
rewrite (mechanical fallback), never the legitimate "nothing to say".
Thinking blocks ride the same path: at `agent_end` the last assistant
message's true `thinking` parts are narrated (rewritten first, as their own
unit, before the answer), while blocks flagged `narration: true` — which
@@ -196,6 +205,14 @@ the choice persists in the settings file.
prose segments (mechanical cleanup of that text yields at most 2), and a
thinking+answer `agent_end` played thinking first. 22 green in
`tests/dankvoice.bats`.
* **Thinking-off fix (2026-10-19, Refs #32)** — replaying the exact rewrite
body against live frank-zealot: without `chat_template_kwargs.
enable_thinking: false` the reply arrives as 6893 `reasoning_content`
characters with `content: ""` in 6.9 s (twice the 6 s abort); with it,
369 clean characters in 0.55 s. Driver fixtures now pin the flag
(`thinkoff=false` on the recorded chat call), turn reasoning-only replies
into mechanical speech instead of silence, and time the menu's test
phrase (~0 ms handler). 26 green in `tests/dankvoice.bats`.
## Limits
@@ -232,6 +249,7 @@ the choice persists in the settings file.
* Gitea issue #21 on `dank/command-center` (the work item this page ships with).
* Gitea issue #23 on `dank/command-center` (the options-menu work item).
* Gitea issue #27 on `dank/command-center` (the enhanced-narration work item).
* Gitea issue #32 on `dank/command-center` (the latency/silence fix work item).
## See Also