wren leaves unnamed areas to the assistant; assistant targets take a closed set of values
Docs / docs (push) Successful in 34s
Playwright Tests / test-playwright (1, 2) (push) Failing after 1m22s
Playwright Tests / test-playwright (2, 2) (push) Failing after 21s
pre-commit / pre-commit (push) Failing after 2m30s
Test Backend / test-backend (3.12) (push) Failing after 4m53s
Test Backend / test-backend (3.14) (push) Failing after 4m34s
Compose Smoke Test / test-compose (push) Failing after 29s
Playwright Tests / merge-reports (push) Failing after 2m9s

wren drops a call on an area the command does not name (other than the
user's or, with none named, the living room): "switch on the appliances"
turned on the bathroom light at 0.97. The assistant's `values` setting gives
a str target its only values, explains them in the tool and confirms in the
word set for each ("Canopy open.").

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-22 10:56:20 +02:00
co-authored by Claude Opus 5.5
parent 54bc6b1512
commit b2493636a6
5 changed files with 118 additions and 22 deletions
+8 -2
View File
@@ -408,7 +408,10 @@ Redis, and not otherwise.
The model sees every area, wired or not, each with at least a light, so "the
bathroom light" is not taken for a light that is wired elsewhere. Such a call
is reported but not applied, and goes on to `unhandled`. The command is read
is reported but not applied, and goes on to `unhandled`. So is a call on an
area the command does not name, unless it is the user's area or, with no area
named, the living room: "switch on the appliances" is a word the model never
learned, and it lands on whichever light it was shown. The command is read
in lower case without sentence marks, as the model was trained.
!!! note "What the current model cannot do"
@@ -440,13 +443,16 @@ on what is wired to it.
|---|---|---|
| `model` | empty | the model to ask; empty asks the instance's |
| `extra_body` | `{"temperature": 0, "reasoning_effort": "none", "keep_alive": "30m"}` | added to every request as it is |
| `values` | empty | for a `str` target, by port: the only values it takes and what the reply says for each, as `{"canopy": {"UP": "open", "DOWN": "closed"}}` |
It asks the provider set under **Settings → Assistant**. As for Wren, the
wiring is the allowlist: the model is offered the targets and nothing else,
never the tools the chat's assistant uses. Its instructions list the context
inputs and what each target holds now. A target is set the moment the model
calls its tool. The reply then names what was set ("Living room light on,
living room setpoint to 22."), so the model is asked once per request.
living room setpoint to 22."), so the model is asked once per request. A
target with `values` is offered only those, each explained to the model, and
confirmed in its word ("Canopy open."). Any other value is refused.
Every request ends in a reply: