|
|
@@ -89,8 +89,8 @@ require_viewer = true # Refuse to execute commands with no
|
|
|
chat_exit_phrases = ["end conversation", "that's all", "stop listening"]
|
|
|
|
|
|
[audit] # Executed actions only (commands/chats are volatile)
|
|
|
-enabled = true # audit/YYYY-MM-DD.jsonl
|
|
|
-dir = "audit"
|
|
|
+enabled = true # troubleshoot/audit/YYYY-MM-DD.jsonl
|
|
|
+dir = "troubleshoot/audit"
|
|
|
|
|
|
[llm] # local llama.cpp (OpenAI-compatible)
|
|
|
enabled = true
|
|
|
@@ -141,7 +141,7 @@ fact_max_chars = 240 # per-fact character cap; over-long
|
|
|
device = "" # "" = auto -> None (Laya picks the multilingual checkpoint's default device)
|
|
|
preload = ["multilingual"] # Fixed default: only the multilingual checkpoint is preloaded
|
|
|
default_checkpoint = "multilingual" # Router default; multilingual is pinned for every call
|
|
|
-dump_io = false # Opt-in triage I/O dump: one JSON per triage under triage/YYYY-MM-DD/HHMMSS-mmm.json (Laya request/response + LLM request/response; best-effort, gitignored)
|
|
|
+dump_io = false # Opt-in triage I/O dump: one JSON per triage under troubleshoot/triage/YYYY-MM-DD/HHMMSS-mmm.json (Laya request/response + LLM request/response; best-effort, gitignored)
|
|
|
|
|
|
[speaker] # Speaker identification (sherpa-onnx embedding lane; off by default)
|
|
|
enabled = false # Master switch: false = no embedding lane, every record status "none"
|
|
|
@@ -164,7 +164,7 @@ write = false # false = brief shown in the TUI on
|
|
|
|
|
|
[debug] # Structured health-signal log (no transcript text; off by default)
|
|
|
enabled = false # false = no debug lines, zero overhead (DebugSink is None)
|
|
|
-dir = "debug" # Destination directory (cwd-relative); gitignored, one JSONL per day
|
|
|
+dir = "troubleshoot/debug" # Destination directory (cwd-relative); gitignored, one JSONL per day
|
|
|
heartbeat = true # true = ~1 line/s heartbeat signals; false = anomalies only
|
|
|
max_bytes_per_day = 50000000 # Best-effort per-day byte cap; writes past the cap are skipped
|
|
|
```
|
|
|
@@ -227,7 +227,7 @@ question head, leaving ~830 tokens of room for state at the default. `confidence
|
|
|
confidence values drives the per-item `flagged`/`⚠` marker, with `answer_confidence` (the
|
|
|
calibrated `max(p)`) as the default. With `enabled = false` (the default) the lane is never built and the system behaves
|
|
|
exactly as before. `dump_io = true` additionally writes one JSON file per triage under
|
|
|
-`triage/YYYY-MM-DD/HHMMSS-mmm.json` (local time, millisecond precision, same naming scheme as
|
|
|
+`troubleshoot/triage/YYYY-MM-DD/HHMMSS-mmm.json` (local time, millisecond precision, same naming scheme as
|
|
|
the audio files) containing the Laya request/response and the LLM request/response; it is
|
|
|
off by default, best-effort (a dump failure never disturbs triage), and gitignored.
|
|
|
|
|
|
@@ -264,11 +264,11 @@ display-only: the TUI renders it and nothing is written to disk. With `write = t
|
|
|
assistant snapshots the current brief as plain text to
|
|
|
`<session_dir>/<YYYY-MM-DD-HH-MM-SS>/brief.md` (cwd-relative, gitignored): one folder per
|
|
|
conversation, named by the first transcription's `YYYY-MM-DD-HH-MM-SS`, holding that
|
|
|
-conversation's transcript JSONL, audio, brief, and screenshots, while audit/debug/triage
|
|
|
-remain global. Starting a new conversation resets the brief; clearing the brief truncates
|
|
|
+conversation's transcript JSONL, audio, brief, and screenshots, while the `troubleshoot/`
|
|
|
+diagnostics remain global. Starting a new conversation resets the brief; clearing the brief truncates
|
|
|
the file.
|
|
|
|
|
|
-`[debug]` persists per-component health signals to `debug/YYYY-MM-DD.jsonl` (one JSON
|
|
|
+`[debug]` persists per-component health signals to `troubleshoot/debug/YYYY-MM-DD.jsonl` (one JSON
|
|
|
object per line, `ensure_ascii=False`) so the next silent freeze is diagnosable from disk.
|
|
|
Signals only — no transcript text, no audio, no prompt content: RMS/queue/timing fields such
|
|
|
as `device_ok`, `worker_stall_s`, `queue_depth`, `inference_depth`, plus anomaly lines for
|
|
|
@@ -278,9 +278,10 @@ capture reopens, inference-queue `queue-full` / `eviction-drop`, `llm-timeout`,
|
|
|
exit lines. With
|
|
|
`enabled = false` (the default) no sink is built and the suite stays disk-clean; with
|
|
|
`heartbeat = false` only anomalies are written. `max_bytes_per_day` is a best-effort guard:
|
|
|
-writes past the cap are skipped with one warning (never crash, never rotate). `debug/` lives
|
|
|
-on local storage (a slow/NFS/FUSE mount can block the only capturer) and is gitignored like
|
|
|
-`transcripts/`, `audit/`, and `triage/`; clean it manually with `rm debug/*`. The assistant
|
|
|
+writes past the cap are skipped with one warning (never crash, never rotate). `troubleshoot/debug/`
|
|
|
+lives on local storage (a slow/NFS/FUSE mount can block the only capturer); the whole
|
|
|
+`troubleshoot/` tree is gitignored like `transcripts/`; clean it manually with
|
|
|
+`rm -r troubleshoot/`. The assistant
|
|
|
constructs its sink via `debug_sink_factory` threaded through `runner.main` (`None` when
|
|
|
disabled), and every assistant emit runs after its `with self._lock` block — never under the
|
|
|
RLock — so a slow write cannot stall the ticker + event reader.
|