Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

A running sub-agent shows a clock and nothing else: tool calls are stored but never streamed

Chiusa
#461 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
55/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
javascript, python, typescript

Direzione di ricerca

Start with the AcpTurn update dispatch in raven/acp_client/acp_agent.py and trace how on_delta is implemented across the named backends. Then inspect the instance refresh interval in ui-web/src/live/230-tabs.js and the TurnClock surface. Reproduce with an ACP sub-agent using streams = True; done means tool calls and thoughts appear live rather than only after the turn completes.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Summary

While a sub-agent answers, the page can show only two things: how long the turn has been running, and whatever the agent says in prose. Every tool call it makes is collected and stored, and reaches the page only after the fact. For an agent whose work is mostly tool calls -- a deck build, a research sweep -- the live view is a clock and nothing else for minutes at a time.

Steps to reproduce

  1. Send a substantial task to a sub-agent instance (a deck rebuild will do).
  2. Watch the instance surface while it works.

Expected behavior

Some sign of what it is doing. The data exists: subagents.instance.history returns the tool rows afterwards, and the ACP protocol reports each tool call as it happens.

Actual behavior

The turn clock counts (ui-web/src/features/subagents/TurnClock.tsx, new in #405) and prose appears when the agent speaks. Nothing else. Reading the history over /rpc during a run shows the work that was invisible on screen at the time -- "13 pages of structure settled", "wrote 4606 bytes to build/build.py" -- while the page showed a clock.

Where it is decided

AcpTurn's update dispatch splits three kinds of update three ways (raven/acp_client/acp_agent.py):

update appended to self.events (stored) forwarded to on_delta (live)
answer text yes yes
tool call / tool result (_BREAKING_UPDATES) yes no
thought (_THOUGHT_UPDATES) yes no

Only the text branch calls await self._on_delta(text). The other two branches build the record and return.

There is a second, smaller effect on top: the instance surface refreshes on a 2s setInterval (ui-web/src/live/230-tabs.js:229) rather than on an event, so even stored rows arrive on the next tick rather than as they land.

Why this is a seam and not an oversight

on_delta is typed Callable[[str], Awaitable[None]]: a string, nothing else. A tool call cannot travel through it without widening the signature, and that signature is shared by every backend implementation (acp_agent, openai_api, raven_loop, cli_agent, routing, plus anything third-party). So this is a protocol-level change, not a UI one, which is presumably why it landed where it did.

The codebase has already named the same gap once, from the storage side -- raven/agent/subagent/activity.py:

"A backend already knows far more than the string it hands back: which tools the sub-agent called, how many tokens it spent, how long it spent thinking. All of it went to a tracing span and nowhere else ... For an ACP agent that is doubly odd: the protocol reports every tool call as it happens, and the answer arrived with all of that already collected and then thrown away."

That module fixed the record. The live path still has the older shape.

Environment

macOS, raven from the repo working tree, web UI at current main, sub-agent on the ACP backend (streams = True).

Lingua principale
Python
Stelle
4.1k
Fork
94
Merge medio
1g 18h
PR unite (30g)
208

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di EverMind-AI/Raven

Tutte le issue di EverMind-AI/Raven

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.