aboutsummaryrefslogtreecommitdiffstats
path: root/desktop/modules/assistant/README.md
blob: 93b8507ca3974d2603944e50adbd8463ef77a96e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# assistant

Two settings pages for desktop-assistant, the daemon behind the assistant
canvas (`../../assistant/`).

**Assistant** edits the daemon's `~/.config/desktop-assistant/config.toml`
and switches its tools. The model fields (server, temperature, tool rounds,
thinking) save on Enter, and an emptied field falls back to the daemon's
default, shown as its placeholder; the defaults come from `assistant.py
--defaults`, so they are never copied here. The system prompt has its own
box, Save and "Use the default". The tool environment (`[env]`) is one row
per key, with an add row below. A tool's switch renames `tools/<name>.toml`
to `<name>.toml.off`, which the daemon's `*.toml` glob skips.

The page also lists llama-server's models with their state. The daemon
always answers with whichever model is loaded and never asks for one, so
it never swaps a model out from under another client. Load is the
deliberate swap: it saves that model as the preferred one (in `Prefs`)
and asks the router to load it now, polling `/v1/models` until it reports
`loaded`. Prefer marks the already-loaded model as preferred.

Opening the assistant canvas (SUPER+Home) loads the preferred model when
another one is resident, and the canvas header reads "loading <model>…"
until it is in. This desktop runs one model and one client at a time, so
opening the assistant is when its model should come back; the daemon still
never asks for a model itself. With no preferred model set, nothing is
swapped.

The daemon reads all of this only at startup, so after a change the page
says so and offers Restart, which runs `assistant.sh restart`; a daemon that
does not come back shows the script's status, whose log tail says why.

The file is edited line by line (`Config.js`) so the comments the example
ships with survive: an unset key sits commented out, setting it activates
its line, and unsetting comments it back out. Every write first parses the
whole new file with `tomllib`, then replaces the old one atomically, so an
edit can never leave a config the daemon refuses to start with.

**Ask presets** edits the canvas's canned questions for staged files:
label, question, and the file kinds each is offered for. They live in
`Prefs` and the canvas reads them live, so changes apply at once; "Reset to
defaults" drops the saved list and brings back the built-in one in
`../../assistant/Presets.js`. A new preset gets the fallback icon.

Search finds the model fields, every `[env]` key, every tool and every
preset by name.

Check: `node desktop/modules/assistant/test_config.js`.