dankvoice: humanized narration via @tiny and thinking aloud #28

Merged
dank merged 1 commits from feat/dankvoice-enhanced-narration into main 2026-10-19 01:57:51 -07:00
Owner

Port the bundle's speech enhancer (Qyr + prompt T6o) into dankvoice: every spoken unit is rewritten into natural spoken prose by the @tiny role (frank-zealot via modelRoles.tiny + provider baseUrl) under the stock budgets — 1536 tokens, 6 s abort, 4000-char window — with mechanical cleanup as the fallback and an empty rewrite skipping the unit. Auto-speak now narrates the last assistant message's thinking blocks as their own unit before the answer; narration: true thinking counts as answer text.

Both knobs: menu toggles + /say status readout + persisted thinking setting + env levers (DANKVOICE_REWRITE_URL/_MODEL/REWRITE=0/DANKVOICE_THINKING/DANKVOICE_OMPCONFIG).

Tests — fixture grows an echo/prose chat route (404 when unset, so every scenario keeps its isolation); 7 new scenarios: rewrite round-trip, 404 fallback, thinking-first ordering, thinking off, narration-flagged-once, @tiny role resolution from an ompconfig fixture, humanize label in status. 22/22 dankvoice, 58/58 suite.

Live smoke — real frank-zealot + frank-tts: a markdown /say came out as 3 sequential prose segments (mechanical cleanup of that text yields at most 2), and a thinking+answer agent_end played the thinking first.


cwd: /home/blank/.omp/wt/wt-20261018-204442-7c8a99d · session: 01a15242-e896-70f6-9e1e-caab1e4f5960

Port the bundle's speech enhancer (`Qyr` + prompt `T6o`) into dankvoice: every spoken unit is rewritten into natural spoken prose by the **@tiny** role (frank-zealot via `modelRoles.tiny` + provider baseUrl) under the stock budgets — 1536 tokens, 6 s abort, 4000-char window — with mechanical cleanup as the fallback and an empty rewrite skipping the unit. Auto-speak now narrates the last assistant message's thinking blocks as their own unit **before** the answer; `narration: true` thinking counts as answer text. Both knobs: menu toggles + `/say status` readout + persisted `thinking` setting + env levers (`DANKVOICE_REWRITE_URL`/`_MODEL`/`REWRITE=0`/`DANKVOICE_THINKING`/`DANKVOICE_OMPCONFIG`). **Tests** — fixture grows an echo/prose chat route (404 when unset, so every scenario keeps its isolation); 7 new scenarios: rewrite round-trip, 404 fallback, thinking-first ordering, thinking off, narration-flagged-once, @tiny role resolution from an ompconfig fixture, humanize label in status. 22/22 dankvoice, 58/58 suite. **Live smoke** — real frank-zealot + frank-tts: a markdown `/say` came out as 3 sequential prose segments (mechanical cleanup of that text yields at most 2), and a thinking+answer `agent_end` played the thinking first. --- cwd: /home/blank/.omp/wt/wt-20261018-204442-7c8a99d · session: 01a15242-e896-70f6-9e1e-caab1e4f5960
dank added 1 commit 2026-10-19 01:56:12 -07:00
Answers spoken with /say were verbatim markdown-cleaned text while the
built-in vocalizer speaks prose rewritten by a small model. Port that
enhancer (bundle Qyr/T6o: same prompt, 1536 tokens, 6 s, 4000-char
window, null-fallback/empty-skip contract) and resolve its model from
modelRoles.tiny exactly as the harness does, so auto-speak sounds like
the enhanced TUI voice instead of a pager. agent_end now also speaks the
last assistant message's thinking blocks as their own unit before the
answer; narration-flagged thinking counts as answer text. Both knobs are
menu-toggleable, persisted, and env-overridable; the fixture gains a
chat route (echo/prose) and seven scenarios cover the round-trip, the
404 fallback, ordering, the kill switches and role resolution (22 green,
58 suite-wide; live smoke through real frank-zealot + frank-tts).

Refs #27
dank merged commit 570b5509d0 into main 2026-10-19 01:57:51 -07:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dank/command-center#28