|
|
@@ -332,18 +332,22 @@ With `[triage].dump_io = true` (default `false`) each triage writes a self-conta
|
|
|
file under `troubleshoot/triage/YYYY-MM-DD/HHMMSS-mmm.json` — local time with millisecond precision, the
|
|
|
same naming scheme as the audio files (`<session_dir>/<id>/audio/HHMMSS-mmm-<reason>.wav`). A file
|
|
|
holds the Laya request, the Laya response, the LLM request (endpoint URL plus the full
|
|
|
-chat-completion body), and the LLM response (raw envelope), keyed by the `ts` carried on the
|
|
|
-triage events:
|
|
|
+chat-completion body), the LLM response (raw envelope), and the LLM round-trip time, keyed by
|
|
|
+the `ts` carried on the triage events:
|
|
|
|
|
|
```json
|
|
|
{
|
|
|
"ts": 1759073916.19,
|
|
|
"iso": "2026-09-28T09:38:36.412000-06:00",
|
|
|
"laya": {"request": {...}, "response": {...}, "error": null},
|
|
|
- "llm": {"request": {"url": "...", "body": {...}}, "response": {...}, "error": null}
|
|
|
+ "llm": {"request": {"url": "...", "body": {...}}, "response": {...}, "error": null, "duration_ms": 812.4}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
+`llm.duration_ms` is the wall-clock time spent in the LLM transport call (monotonic clock,
|
|
|
+millisecond precision), recorded on both success and failure. It measures only the request
|
|
|
+round-trip, not prompt building or reply parsing.
|
|
|
+
|
|
|
A turn whose brief is coalesced (the previous `brief-update` was still in flight, so the turn
|
|
|
was refused and its deltas were flushed later) produces **two** files, not one. The turn's
|
|
|
own record carries only the `laya` half (`llm` is `null`); the later flush dispatch writes a
|