Say there is one chat component, in the places that claimed otherwise
Several headers argued the Scheduler dock was deliberately separate, and the Scheduler's help never mentioned the assistant at all — including the fix flow that just changed shape.
This commit is contained in:
@@ -356,8 +356,9 @@ $_vv_doc_vars = array_merge(vv_conf_vars(), ['SCRIPTS_DIR' => SCRIPTS_DIR]);
|
||||
<?php vv_ai_chat_list_markup('vv-mon-ai', true); ?>
|
||||
</div>
|
||||
|
||||
<!-- Named for what it is, not "dock" — the Scheduler tab's vv-ai-dock is a different
|
||||
component and vvAiDockOn() there tests for that id by name. -->
|
||||
<!-- Named for what it is, not "dock". The Scheduler renders the same component inside a
|
||||
wrapper that still carries the #vv-ai-dock id, and two elements answering to that name
|
||||
on one page would be a trap the day anything queries it globally. -->
|
||||
<div class="vv-card" id="vv-ai-assistant-card">
|
||||
<h3>
|
||||
<span style="display:flex;align-items:center;gap:5px;">
|
||||
|
||||
@@ -56,11 +56,13 @@ as the GPU and UPS cards.
|
||||
|
||||
| Card | What it tells you |
|
||||
|---|---|
|
||||
| AI | Model residency, context size, VRAM, index size and staleness, tokens used today |
|
||||
| AI | Model residency, context size, VRAM, index size and staleness |
|
||||
| Tokens | What the assistant has spent — per node, and for today, the last 7 days and all time |
|
||||
| Conversations | The last `$AI_CHAT_HISTORY_MAX` chats. Click to reopen, × to delete |
|
||||
| Assistant | Ask a question without leaving the dashboard |
|
||||
| ⤢ | Expands the conversation to about two and a half times its height. Remembered |
|
||||
| Profile buttons | Which contract answers — General Chat, Varaverk Assistant, Code Sketcher, Troubleshoot |
|
||||
| Profile chip | Which contract answers — General Chat, Varaverk Assistant, Code Sketcher, Troubleshoot |
|
||||
| ⤢ | Trades more room for the conversation, and back. Always opens at the smaller size |
|
||||
| ▾ | Saved conversations, the same ones the Conversations card lists |
|
||||
|
||||
---
|
||||
|
||||
@@ -79,6 +81,25 @@ implied.
|
||||
These figures come from the same one-minute collection the AI tab's banner uses, so the two
|
||||
cannot disagree about whether the model is loaded.
|
||||
|
||||
## Tokens is its own card, not a line on the AI one
|
||||
|
||||
The AI card answers whether the model is healthy right now. What it has spent over a month is a
|
||||
different question, and it was crowding that card out one line at a time.
|
||||
|
||||
`Nodes` lists each host with its total. A host with no rows reads **not collected here**, never
|
||||
zero — each host writes to its own `data/` and only `ai_token_sync.sh` moves a ledger between
|
||||
them, so a zero would claim the partner sat idle when the truth is that this host cannot see its
|
||||
ledger at all. Click a node to scope the figures below it to that host; click **All hosts** to go
|
||||
back.
|
||||
|
||||
The totals cover today, the last 7 days and all time, each with the turn count and the prompt /
|
||||
completion split. The footer adds how long the ledger has been running, the best throughput seen,
|
||||
and — under All hosts only — the split by profile and by source. Those last two describe the whole
|
||||
ledger, so they are not shown under a single host's heading where they would not describe it.
|
||||
|
||||
This is the same ledger the AI tab shows, read from the same endpoint. It refreshes when a turn
|
||||
finishes here, and otherwise once a minute, because the numbers only move when a turn completes.
|
||||
|
||||
## The assistant here starts on General Chat
|
||||
|
||||
The AI tab starts on Varaverk Assistant, which answers only from this installation's
|
||||
@@ -91,7 +112,7 @@ to the strict profile automatically, and handed back if the documentation turns
|
||||
it. Starting strict would refuse ordinary questions to guard against a mistake the server already
|
||||
prevents.
|
||||
|
||||
Switching profile with the buttons keeps what is on screen but stops sending earlier turns to the
|
||||
Switching profile with the chip keeps what is on screen but stops sending earlier turns to the
|
||||
model. Carrying cited, retrieval-grounded answers into a mode with no retrieval makes the model
|
||||
keep referring to sources it can no longer see.
|
||||
|
||||
|
||||
@@ -80,6 +80,42 @@ Two blocks on the Scheduler Info panel get you there faster:
|
||||
The status dot in the Orch tree is green, orange or red for the last run's outcome, dim if the
|
||||
script has never run. Hover for detail.
|
||||
|
||||
## Asking the assistant about what is on screen
|
||||
|
||||
The panel below the right-hand views is the same chat component the AI tab and the Monitor
|
||||
dashboard use, at this panel's size. What is particular to this tab is that its subject follows
|
||||
you: open a log, a conf or a script and the chip states both the profile answering and the thing
|
||||
it is pointed at. Nothing is inferred silently — if what the chip says is wrong, that costs a
|
||||
glance rather than a confidently wrong answer.
|
||||
|
||||
Every row in **Recent Activity** carries a **why?** (failed) or **recap** (clean) button. It opens
|
||||
that script's log first and then asks, because the question is only worth asking with the log
|
||||
attached — the profile that reads it is the one that gets the log tail. The question is posted as
|
||||
visible text, so what was asked on your behalf is never a mystery.
|
||||
|
||||
Moving to a different subject keeps the transcript on screen but stops sending the earlier turns
|
||||
to the model, and starts a new stored conversation. A troubleshooting thread carrying log excerpts
|
||||
must not bleed into a question about a conf key; hiding that the earlier exchange happened would
|
||||
be worse than carrying it visibly.
|
||||
|
||||
Reasoning is enabled only for Troubleshoot. Working out what a log means is worth waiting for; a
|
||||
lookup like "what does this setting do" is not, and an inline answer that stalls reads as broken.
|
||||
|
||||
## Recording what actually fixed something
|
||||
|
||||
When a diagnosis is followed by that same script running clean, the assistant offers to record it:
|
||||
*"`<script>` just ran clean. Want me to record what fixed it?"* Answer **Yes** and the next thing
|
||||
you type is stored as the fix rather than asked as a question.
|
||||
|
||||
The trigger is the run record, not the conversation. It fires once, at the moment the trouble is
|
||||
demonstrably over, rather than after every answer — an offer that appears constantly is one you
|
||||
learn to skip past.
|
||||
|
||||
What gets stored is the symptom you asked about and the fix you describe. The model's diagnosis is
|
||||
deliberately not stored: it is a reading of evidence, and writing a hypothesis into institutional
|
||||
memory as settled fact is how a wrong answer outlives the incident it came from. What is
|
||||
remembered is what actually worked, and it is shown the next time the same thing is diagnosed.
|
||||
|
||||
## Stopping a script that is stuck
|
||||
|
||||
**Stop** sends SIGTERM, waits 3 seconds, then SIGKILL, and clears any lock files the script left
|
||||
@@ -138,6 +174,11 @@ on disk is never touched until you press Save.
|
||||
| **Auto Scroll** | Toolbar | Follows the newest line; pauses if you scroll up |
|
||||
| **Cancel** | Toolbar, editing | Discards changes and returns here. The file is untouched until Save |
|
||||
| **+ Folder** | Custom Scripts | A collapsible subfolder you can drag scripts into |
|
||||
| **why? / recap** | Recent Activity | Opens that run's log and asks the assistant about it in one click |
|
||||
| **Profile chip** | Assistant | What is answering, and what it is pointed at. Click to change the profile |
|
||||
| **⤢** | Assistant | Trades more of the panel for the conversation, and back |
|
||||
| **▾** | Assistant | Saved conversations, shared with the AI tab and the Monitor dashboard |
|
||||
| **New** | Assistant | Starts a fresh conversation; the old one stays in the store |
|
||||
|
||||
## Reference — orchestrator and step behaviour
|
||||
|
||||
|
||||
Reference in New Issue
Block a user