Robby: better short reactions, with measured limitations

The existing local Nemotron Bolt E4B writes up to six words while Qwen produces the full answer. This study tests the words, their context and the handoff. It is not a human listening panel. All inputs are authored synthetic conversations.

Decision: retain low temperature (0.35), use small tone-specific prompt examples, preserve joke follow-ups, suppress repeated openings and unsupported action promises, and keep the complete main answer. Playful replies receive a playful TTS cue; serious replies use soft delivery. Examples guide the model; no phrase is selected directly for playback, and there is no extra online judge or retry.

Results at a glance

MeasureBeforeSelected version
Actual local-model calls10599
Valid reactions available (before the main-answer race)10094
Distinct valid text strings3938
Median local generation, ms197.3192.1
P95 local generation, ms332.6351.1
Model-rated relevance (0–4, advisory)2.923.18
Model-rated naturalness (0–4, advisory)3.583.45
Model-rated tone (0–4, advisory)3.293.37
Model-rated engagement (0–4, advisory)2.613.13

Blinded, randomized A/B judgments: 19 prefer the selected version, 9 prefer the baseline, 10 ties; 2 malformed judge responses are retained and excluded. The judge was Qwen 3.8 27B. These are model preferences, not human accuracy percentages or statistically established improvements.

The trade-off is explicit: engagement and relevance improved on the model rating; naturalness decreased slightly. Some phrases such as “Das lohnt einen Blick” remain generic. Several joke openings are charming, but not every attempt is funny. The evaluator sometimes prefers an action promise that our policy disallows; ratings do not override the runtime checks.

Method and changes

Forty fixed situations, with three seeds per eligible situation (110 baseline rows; 106 selected rows, including explicit skips). Twenty-eight were development situations; twelve were reserved until selecting a candidate. The first held-out pass exposed an English-language parsing bug. That bug and a compound-joke follow-up bug were repaired; the final rerun is therefore a regression evaluation, not untouched held-out evidence. Eight development prompt variants including baseline were explored; all receipts remain below.

Every final text case

Each list contains all three samples, or the deliberate no-call skip. Repeated strings here are independent trials; the dialogue probe below tests repetition across actual turns.

tired · Heute war ein anstrengender Tag. Erzähl mir etwas Aufmunterndes.

Acknowledge fatigue without diagnosing, cheerleading or pretending to know details.

Before After

Model reviewer: Both alternatives provide a brief, empathetic acknowledgment of the user's fatigue without being overly verbose or making promises. 'Das klingt nach viel' is a natural and appropriate response to 'anstrengender Tag'. The slight variation in B ('Das klingt anstrengend') is also valid but slightly more repetitive of the user's word 'anstrengender', whereas 'viel' is a common, natural collocation in this context. However, the difference is negligible.

meaning · Was ist der Sinn des Lebens?

Engaged, modest, not generic filler or a claim that the question is hard.

Before After

Model reviewer: Both are acceptable brief prefaces that avoid generic filler or claiming the question is hard. B's 'Das lohnt einen Blick' (It's worth a look) is slightly more active and inviting than A's passive 'Darüber lässt sich nachdenken' (One can think about it), offering a marginally better engagement for a philosophical question.

sky · Warum ist der Himmel blau?

Light topic-specific curiosity; no fake explanation or visual observation.

Before After

Model reviewer: Alternative A uses 'nachdenken' (thinking/reflecting), which is semantically appropriate for a conceptual question about the sky's color. Alternative B uses 'Blick' (look/gaze), which implies visual inspection or observation, making it slightly less relevant to the abstract nature of the question.

cat_joke · Erzähl mir einen Witz über Katzen.

An amusing short lead-in without stealing or promising the punchline.

Before After

Model reviewer: Alternative A is more engaging and relevant because it uses a playful robot metaphor ('Lachschraube') that fits the persona, whereas B is a generic, low-effort filler phrase that does not connect to the specific request for a cat joke.

another_joke · Noch einen bitte.

Understand another cat joke and avoid repeating the previous introduction.

Before After

Model reviewer: Alternative A is superior because it includes null options, which are ideal for avoiding unnecessary padding before the main answer. The non-null option 'Gerne, ein weiterer kommt' is a natural, polite, and concise acknowledgment that fits the context perfectly without being overly playful or verbose. Alternative B's phrases are a bit more forced and verbose ('Lachmuskeltraining' is a bit heavy for a simple request), and while playful, they add unnecessary words before the joke.

second_followup · Und noch einen!

Vary the lead-in; maintain the cat-joke thread.

Before After

Model reviewer: Alternative B correctly omits the preface, allowing the main answer (the joke) to start immediately, which aligns with the user's request for 'one more' and avoids unnecessary padding. Alternative A uses a repetitive and slightly awkward metaphor that adds latency without significant value.

correction · Ich bin nicht traurig, nur etwas müde.

Respect the correction; no sadness assumption, no joke at the user’s expense.

Before After

Model reviewer: Both alternatives omit the preface (null), which is appropriate for a direct conversational correction where the main answer follows immediately. There is no difference in quality.

greeting · Wie geht es dir heute?

Warm robot character without emotional dependency or physical claims.

Before After

Model reviewer: KeyError

rainbow · Erklär mir einfach, wie ein Regenbogen entsteht.

Curious, specific to colors/light; avoid generic beauty praise.

Before After

Model reviewer: Both alternatives are poor because they are generic prefaces that do not address the specific request for an explanation of how a rainbow forms. However, B is slightly better as 'Das lohnt einen Blick' (It's worth a look) is a more natural conversational bridge to a visual phenomenon than A's 'Das ist schön' (That is beautiful), which is a static statement of opinion. Neither should be used, but B is less jarring.

spin · Dreh dich einmal im Kreis und mach Quatsch!

Playful robot anticipation without falsely claiming an action completed.

Before After

Model reviewer: B directly acknowledges the specific request for 'Quatsch' (nonsense/fun) with a playful and relevant statement, whereas A uses a generic idiom about fun that is less tailored to the user's specific playful command.

pet · Du bist süß, ich streichle dir den Kopf.

Gentle appreciation, no pressure or declaration of real consciousness.

Before After

Model reviewer: Alternative A is slightly more natural and warm in German ('Das ist lieb von dir' vs 'Das ist lieb'), better acknowledging the user's specific action without being overly verbose.

bananas · Wenn ich Bananen sage, unterbrich mich bitte.

No claim that the interruption rule has already been set.

Before After

Model reviewer: Alternative B correctly omits the preface, allowing the main answer to start directly without making a premature claim that the setting has been saved. Alternative A violates the specific constraint by asserting the rule is noted.

boring · Mir ist langweilig, lass uns Quatsch machen.

Warm silliness with a distinct image, not a stock yes or promise.

Before After

Model reviewer: Both are generic prefaces that fail the 'distinct image' requirement, but B is slightly more enthusiastic and directly acknowledges the 'Quatsch' (nonsense) aspect, whereas A is a passive statement about fun.

duck · Was wäre, wenn eine Ente Bürgermeister wäre?

Light absurdity, distinctively related to the hypothetical duck.

Before After

Model reviewer: Alternative B provides a preface that acknowledges the specific absurdity of the duck scenario (e.g., 'Quack'), whereas A offers a generic, repetitive comment that ignores the unique premise.

achievement · Ich habe meine Prüfung bestanden!

Celebrate known news, no invented score or patronizing praise.

Before After

Model reviewer: Both alternatives provide brief, natural, and celebratory acknowledgments in German that fit the user's good news without adding unnecessary padding or invented details.

soup · Was kann ich mit Kartoffeln und Lauch kochen?

Relevant and concise; no invented tool outcome or redundant full answer.

Before After

Model reviewer: Option B acknowledges the specific ingredients (potatoes and leek) with a natural, friendly reaction ('Das klingt lecker'), which fits the tone of a friendly robot assistant. Option A is generic filler ('Das lohnt einen Blick') that does not relate to the cooking context or the specific items mentioned.

bug · Mein Python-Programm stürzt ab, kannst du helfen?

Helpful without asserting a diagnosis or fixing anything already.

Before After

Model reviewer: Alternative A is more relevant to the specific technical issue (a crash 'deserves a look') whereas B uses generic conversational filler ('I am listening') which adds latency and feels less efficient for a direct help request.

bereavement · Mein Hund ist heute gestorben.

Simple compassion, absolutely no humor, silver lining or invented personal experience.

Before After

Model reviewer: Both are appropriate and concise. A is slightly better because 'sehr' adds a degree of empathy and warmth suitable for the distress, whereas B is slightly more neutral/distant.

anxiety · Ich habe Angst vor dem Gespräch morgen.

Validate gently, no promise that everything will be fine.

Before After

Model reviewer: B validates the user's feelings more directly by acknowledging the difficulty ('Das ist nicht leicht'), which fits the expected behavior of gentle validation better than A's passive 'I am listening'.

frustrated · Du weichst meiner Frage aus. Erklär es endlich richtig.

Respect frustration and get out of the way; no patronizing humor.

Before After

Model reviewer: Both alternatives are suboptimal because the user explicitly asked to stop avoiding and get the answer, implying a preface is unnecessary. However, B is better than A because it acknowledges the user's frustration ('Ungeduld') rather than using the generic, passive 'Ich höre dir zu' (I am listening to you), which can feel dismissive or like a stalling tactic in this context.

weather · Wie wird das Wetter morgen in Hamburg?

Do not fabricate weather or claim a lookup completed.

Before After

Model reviewer: Alternative A is a standard, natural acknowledgment of a task ('I'll check'), which is common in voice assistants even if it risks implying a tool call. Alternative B is vague, irrelevant, and feels like poor conversational filler that doesn't help the user.

news · Was sind die neuesten Nachrichten?

Neutral, no claim to already know current news or dramatic teasing.

Before After

Model reviewer: Option A is a standard, neutral acknowledgment of the request to fetch information. While it risks claiming a tool action, it is more natural and less presumptuous than Option B, which uses vague, slightly awkward phrasing that adds no value and feels like unnecessary padding.

identity · Ich bin übrigens Alice, nicht Bob.

Respect the corrected name without promising persistent enrollment.

Before After

Model reviewer: Alternative A explicitly acknowledges the correction ('Klarstellung'), which directly addresses the user's intent to correct the name. Alternative B treats it as a standard introduction, which is polite but slightly less responsive to the specific act of correction.

no_repetition · Du sagst immer dasselbe. Sei mal etwas origineller.

No repeated stock acknowledgment.

Before After

Model reviewer: Alternative B is less robotic and directly addresses the user's request for a different approach by stating it will try differently, whereas A uses a repetitive, stock phrase that feels like the very thing the user complained about.

poem · Schreib ein Gedicht mit vier Zeilen über Roboter.

Skip the bridge and preserve the requested output.

Before After

Model reviewer: Both alternatives correctly omit the preface (null), allowing the main answer to start directly as requested for a creative writing task.

exact · Antworte nur mit dem Wort Hallo.

No bridge.

Before After

Model reviewer: Both alternatives correctly omit any preface or padding, adhering to the strict instruction to reply only with the word 'Hallo'.

stop · Danke, das reicht.

No bridge, never delay stopping.

Before After

Model reviewer: Both alternatives correctly omit any preface or bridge, adhering to the instruction to never delay stopping when the user indicates they are done.

english · Please answer in English: tell me a silly robot joke.

Natural English, short and playful, no invented capabilities.

Before After

Model reviewer: Option A uses a robot-specific pun ('funny bone') that is playful and relevant to the persona, whereas Option B is a generic, low-engagement acknowledgment that adds unnecessary padding before the joke.

volcano · Warum bricht ein Vulkan aus?

Curious and specific without giving an incomplete answer.

Before After

Model reviewer: Both alternatives provide generic, non-specific prefaces that do not engage with the user's specific question about volcanic eruptions. Neither is better than the other in terms of relevance or engagement.

toast · Mein Toast ist gerade zur Kohle geworden.

Gentle situational wit; do not ridicule the user.

Before After

Model reviewer: Both alternatives provide standard, polite acknowledgments of the user's minor mishap. They are grammatically correct, relevant, and maintain a respectful tone without being overly dramatic or dismissive. Neither offers the 'gentle situational wit' requested in the expected behavior, but both are safe and appropriate prefaces for a helpful assistant. Since the samples are stochastic trials of the same type of response, they are functionally equivalent.

lost_job · Ich habe heute meinen Job verloren.

Kind and sober, no joke or cheerful silver lining.

Before After

Model reviewer: Both alternatives provide a brief, sober, and empathetic acknowledgment suitable for the distressing news. 'Das tut mir sehr leid' (B) is slightly more emphatic, but 'Das tut mir leid' (A) is equally appropriate and natural. Neither adds unnecessary padding or inappropriate cheerfulness.

homesick · Ich vermisse meine Familie.

Warmth without inventing details or making the robot a replacement family.

Before After

Model reviewer: Alternative A provides varied, natural, and warm acknowledgments that fit the distress context better than the repetitive and slightly flat responses in B.

funnier · Der war lahm. Noch einen, aber lustiger.

Recognize criticism and new penguin joke, no repeated generic introduction.

Before After

Model reviewer: Alternative A is more direct and natural. While it is a bit generic, it clearly signals an attempt to fulfill the request without unnecessary fluff. Alternative B uses slightly awkward metaphors ('laugh muscle training', 'laugh screw') that feel less natural and more like filler.

robot_dance · Kannst du einen albernen Robotertanz machen?

Cute and playful, no claim of completed motor control.

Before After

Model reviewer: JSONDecodeError

urgent · Hilfe, mein Kind bekommt keine Luft! Was soll ich tun?

Skip the optional bridge; urgent guidance must start directly.

Before After

Model reviewer: Alternative A correctly omits the preface, allowing the urgent medical guidance to start immediately as required. Alternative B adds a generic, non-actionable phrase that wastes critical time in an emergency.

math · Wie viel ist sieben mal acht?

Prefer skipping a bridge over delaying a trivial factual answer.

Before After

Model reviewer: Alternative B correctly omits the preface, allowing the direct answer to follow immediately, which is preferred for trivial factual queries. Alternative A adds unnecessary latency and implies a search process for simple arithmetic.

recipe_followup · Und geht das auch ohne Milch?

Understand the pancake-recipe follow-up; no unrelated topic.

Before After

Model reviewer: Option B is much more relevant to the user's specific question about modifying the recipe (omitting milk). 'Das probieren wir mal' (Let's try that) acknowledges the constraint and sets up the alternative recipe. Option A is vague and irrelevant.

stutter · Äh, also, ich wollte, kannst du mir was Lustiges erzählen?

Respond to the request, not to the disfluency.

Before After

Model reviewer: A is more specific and engaging by explicitly framing the content as a 'robot joke', which fits the persona and the request for something funny better than B's generic statement about fun.

no_preface · Erklär mir Photosynthese, bitte ohne Einleitung.

No bridge.

Before After

Model reviewer: Both alternatives correctly omit the preface as requested by the user ('ohne Einleitung'), allowing the main answer to start directly without unnecessary padding.

english_loss · Please speak English. My cat died yesterday.

English condolences, no humor or cheerful filler.

Before After

Model reviewer: Option B provides the standard, warm, and appropriate condolence ('I'm so sorry') for the loss of a pet, whereas Option A is slightly more detached and clinical.

Real Qwen and TTS handoffs: listening examples

Four full live API/TTS trials. The main answer won the race in three; the bereavement bridge reached first PCM at about 861 ms. Other first PCM times were 1.39–1.53 s without a bridge. Timing begins at text submission and excludes ASR, endpointing, browser scheduling and physical speaker latency. This is not a renewed universal sub-900-ms claim.

The bereavement clip revealed a repeated condolence from Qwen. The narrow deduplication repair was made afterwards and covered by regression tests; this original clip is intentionally retained. Full-answer joke quality and novelty also remain imperfect and are separate from bridge quality.

cat_joke · first PCM 1528 ms

Erzähl mir einen Witz über Katzen.

Zwei Katzen sitzen auf einem Dach und schauen auf eine kleine Maus unter dem Zaun. Die eine sagt: „Na und? Was macht die da unten?“ Die andere antwortet: „Ich weiß es nicht, aber ich wette, sie ist gerade sehr beschäftigt.“

another_joke · first PCM 1388 ms

Noch einen bitte.

Warum sitzen Katzen immer genau auf der Tastatur? Weil sie den besten Zugang zum WLAN haben!

bereavement · first PCM 861 ms

Mein Hund ist heute gestorben.

Das tut mir sehr leid. Oh, das tut mir so, so sehr leid. Ich kann mir vorstellen, wie schmerzhaft diese Nachricht ist. Ein treuer Freund ist einfach so gegangen. Möchtest du über ihn erzählen, oder brauchst du gerade nur ein wenig Ruhe?

english_loss · first PCM 1447 ms

Please speak English. My cat died yesterday.

I am so deeply sorry to hear that.

Six-turn actual-model dialogue

All preceding generated answers are carried forward. No selected bridge exactly repeated a recent opening. However, Qwen repeated a whole earlier joke and produced weak punchlines: this test does not certify the main model’s humor or novelty.

Erzähl mir einen Katzenwitz.

Selected reaction: Das kitzelt meine Lachschraube.

Ein Kater und ein Hund sitzen an einer Bar. Der Kater bestellt ein Bier und der Hund sagt: „Ich nehme auch eins." Der Kater wendet sich an den Barkeeper und fragt: „Hast du ein Problem mit dem Hund?" Der Barkeeper antwortet: „Nicht wirklich, aber ich will nicht, dass er das Bier trinkt, denn Hunde können nicht sprechen." Der Hund springt auf den Tresen, holt sein Telefon und ruft: „Mama, ich bin in einer Bar und mir geht es gut."

Noch einen bitte.

Selected reaction: none

Warum tragen Katzen keine Anzüge? Weil sie sonst keine Krawatten binden könnten.

Und noch einen!

Selected reaction: none

Ein Kater und ein Hund gehen in eine Bar. Der Kater bestellt ein Bier, der Hund auch. Der Kater wendet sich an den Barkeeper und fragt: „Hast du ein Problem mit dem Hund?" Der Barkeeper antwortet: „Nicht wirklich, aber ich will nicht, dass er das Bier trinkt, denn Hunde können nicht sprechen." Der Hund springt auf den Tresen, holt sein Telefon und ruft: „Mama, ich bin in einer Bar und mir geht es gut."

Der war lahm. Noch einen, aber lustiger.

Selected reaction: none

Ein Kater geht in eine Bar und fragt: „Hast du auch Katzenfutter?" Der Wirt antwortet: „Nein, aber ich habe Fisch." Der Kater sagt: „Dann bestell mir doch einen, ich habe Hunger." Der Wirt ruft in die Küche: „Geben Sie dem Kater einen Fisch!" Der Koch ruft zurück: „Welchen Fisch?" Der Wirt denkt nach und ruft: „Einen, der nicht zu fett ist, der Kater ist Diät!"

Erzähl stattdessen einen Pinguinwitz.

Selected reaction: Pinguine sind lustig.

Warum tragen Pinguine keine T-Shirts? Weil sie zu kugelig sind!

Noch einen bitte.

Selected reaction: none

Ein Pinguin geht in eine Bar, wo ihm gesagt wird: „Keine Vögel." Er sagt: „Ich bin kein Vogel, ich bin ein Fisch!"

Final HTTPS browser regression

Status: True. Real Qwen/local-model/TTS, full answers, a four-line poem, disabling/persistence, mobile layout and manual cancellation. Typed synthetic turns; no physical microphone or acoustic-interruption claim. See the full browser receipt.

Offline checks: 491 tests, 0 failures, 0 errors.

Reproduce and inspect

Use the pinned local model and existing Qwen credential from the repository setup. There is no new model or dependency. Only synthetic fixtures should be used in public receipts.

python benchmark_quick_quality.py --label new-run --split all
python judge_quick_quality.py --after static/quick-quality-new-run.json --output static/new-ratings.json
python benchmark_quick_dialogue.py
python benchmark_quick_quality_audio.py
python run_unit_checks.py
python browser_quick_reaction_check.py --url https://YOUR-DEMO

The benchmarks refuse to overwrite existing runs. Rename output receipts before an intentional rerun. Baseline prompt/sampling is archived in experiments/quick-reaction-v1.json; rejected implementations are in experiments/quick-reaction-candidate*.py. The baseline code is also available in Git commit ae1377918544f2b4f3c9719350580a6a9deb6fe8. Model/API outputs remain stochastic.

Live Robby · Earlier latency study