fix: stream usa ultimo frame + playground artifact_probe
- streamAnswer: el result final es el ULTIMO answer parseado (frame post-idle, limpio) en vez del mas largo, que podia ser un frame intermedio con spinner. - playground/artifact_probe.go: herramienta de auditoria que corre oneshot + stream contra varios prompts, detecta artefactos del render que se cuelan (box chars, status bar, spinner, palabras pegadas, prompt echo) y verifica consistencia del streaming (concat de deltas == result). Opcional --ref para comparar con claude -p real. No se indexa (playground del padre). El fix del spinner en si vive en parse_claude_tui_go_tui (repo padre): detecta la linea de carga por estructura (glyph + palabra + ellipsis) y firma ((Ns tokens) / esc to interrupt), no por la palabra, que cambia cada frame.
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
# claude_pipe — artifact probe (playground)
|
||||
|
||||
Herramienta desechable para auditar la calidad del parseo de la TUI que hace
|
||||
`claude_pipe`. No se indexa, no tiene `app.md`, vive dentro de `apps/claude_pipe/`
|
||||
y se mueve con su sub-repo.
|
||||
|
||||
## Qué comprueba
|
||||
|
||||
Por cada prompt, lanza el binario `claude_pipe` en modo one-shot y en modo
|
||||
`--stream`, y busca:
|
||||
|
||||
1. **Artefactos** que se cuelan del render en la respuesta parseada: caracteres de
|
||||
caja (`╭│╰`), reglas horizontales (`────`), fragmentos de la status bar
|
||||
(`CTX:`, `IN:`, `$…`, `← for agents`), la línea meta `✻ Crunched`, el prompt
|
||||
`❯`, el carácter de reemplazo `�`, palabras pegadas (>40 chars sin espacio), o
|
||||
el prompt repetido literalmente.
|
||||
2. **Consistencia del streaming**: la concatenación de los `text_delta` debe
|
||||
reconstruir el `result` final. Si no, la heurística de prefijo perdió o duplicó
|
||||
texto bajo reflow.
|
||||
3. **(Opcional, `--ref`)** discrepancia contra `claude -p` real para el mismo
|
||||
prompt (normalizado por espacios). claude no es determinista, así que solo los
|
||||
prompts triviales se espera que coincidan exactamente.
|
||||
|
||||
Sale con código 2 si encuentra artefactos o inconsistencias (para poder usarlo
|
||||
como gate).
|
||||
|
||||
## Cómo lanzarlo
|
||||
|
||||
```bash
|
||||
cd apps/claude_pipe
|
||||
CGO_ENABLED=1 go build -tags fts5 -o claude_pipe . # asegúrate de tener el binario
|
||||
|
||||
cd playground
|
||||
|
||||
# Set de prompts por defecto, sin comparar con claude -p
|
||||
go run artifact_probe.go --root /home/enmanuel/fn_registry
|
||||
|
||||
# Comparando además contra `claude -p` real (gasta llamadas reales)
|
||||
go run artifact_probe.go --root /home/enmanuel/fn_registry --ref
|
||||
|
||||
# Un solo prompt custom
|
||||
go run artifact_probe.go --root /home/enmanuel/fn_registry --prompt "tu prompt aqui"
|
||||
```
|
||||
|
||||
`--root` debe ser un repo cuyos MCP de claude ya estén aprobados, para que la TUI
|
||||
no muestre el diálogo de arranque.
|
||||
Reference in New Issue
Block a user