Skip to content

pi RPC agent emits empty final answer under --thinking high (analysis/review deliverables lost) #17

Description

@Hrt-Htk

Filed from the geode project — a pi/proxy issue, not geode-specific.

Symptom

pi_rpc.py dispatches with read-only analysis/review personas (scout, reviewer) reach agent_end
(verdict=DONE) but write a near-empty <out>.answer.txt — only narration stubs like "Now let me write
the report." The actual report/verdict is never produced. Worker (edit/write) dispatches are unaffected
because their deliverable is the on-disk edit (a side effect), not the final message.

Root cause (traced from the raw event stream)

Under --thinking high, the model (qwen3.6-27b-q4-mtp-128k) routes essentially all substantive output
into the thinking channel and emits an almost-empty visible answer:

assistantMessageEvent subtype count chars
thinking_delta 2,385 10,257
text_delta (visible answer) 14 186
  • The models final assistant message in agent_end.messages is empty (reviewer) / a 56-char stub
    (scout). So it is NOT merely a capture bug in pi_rpc.py (which only accumulates text_delta) — the
    content is genuinely never emitted as an answer. The model "thinks" the report and then ends the turn
    without "saying" it.

Proposed fix (upstream in pi / at the proxy — where this issue is tracked)

  1. Empty-output nudge (preferred). At agent_end, if the final assistant visible text is empty/near-
    empty while thinking was substantial, inject a follow-up turn: "You produced no visible output. Emit
    your final answer now as a normal message, not reasoning."
    Re-run one turn, then settle.
  2. Server/proxy-level guard. Detect the same condition at the proxy and re-prompt before returning.

Client-side mitigations already available (geode side, not a fix here)

  • Have analysis/review personas write their report to a file (side-effect deliverable) — mirrors why
    workers never fail.
  • Drop analysis/review dispatches to --thinking medium so budget goes to the visible answer.

Evidence artifacts (geode repo): tmp/scout-audit.events.jsonl, tmp/review229c.events.jsonl.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions