Vision4 of 5
The three tools
On this page
Three tools carry vision. Two read, one writes. All three are offered in an ordinary conversation and in work mode.
| Tool | Family | Risk | Takes | Gives back |
|---|---|---|---|---|
view_capture | core | read | file | The saved capture, as an image |
remember_image | memory | write | source, about, note, kind | A sentence saying what was kept, or was not |
recall_image | memory | read | query | Up to 3 keepsakes, as images, plus their notes |
None of the three draws an approval card. They are bounded by jails instead: view_capture cannot
read outside the Files library, and remember_image writes only into her own store.
view_capture(file)
Re-opens a screenshot from the Files library. Covered in full in Session captures.
- Needs: a filename. The path relative to the library, or the bare basename; the resolver tries three passes and then gives up.
- Refuses: anything that resolves outside the library, and anything that is not an image.
- Refuses on Discord unless the person asking is the owner, in words and not only by being withheld from the schema list.
- Fails quietly: an unresolvable name returns nothing, which becomes the spoken fail line rather than an error.
remember_image(source, about, note, kind)
Saves a picture into durable visual memory. Covered in full in Visual memory.
- Needs:
about, always. Without it nothing runs. - Needs: an image it can actually reach — the one you shared, a filename in Files, a
data:URL, or (work mode only) an image URL. - Refuses:
camera, which does not exist; a web fetch in the middle of a conversation; adata:URL over the size cap; a filename it cannot find, in which case it names the image you actually shared so the next call can succeed. - Reports a failure as a failure. A save that did not happen leaves a ran-and-failed record, not a refusal — the attempt may have written bytes, and that trace has to survive.
It is also the only tool that keeps a picture. memory_write stores words and no image, and the
prompt says so in as many words, because "save this photo" answered with a text fact was a real
failure: she described the image correctly, saved a sentence, and said the picture was kept.
recall_image(query)
Searches the keepsakes and re-opens the matches. Covered in full in Visual memory.
- Needs: a query. An empty one runs nothing.
- Gives back: at most 3 images, plus a line per hit. Hits it could not attach are listed separately as notes with no picture behind them.
- No match returns nothing, and she says she has no image saved for that yet.
What you see and hear
Each tool declares a line for before the call, one for a successful ending, and one for a failure. They are spoken only in a voice register, and they are suppressed when the answering model is a reasoning model — a model that narrates before and after itself does not need canned English in front of an answer that was being given in another language.
| Tool | Before | Done | Failed |
|---|---|---|---|
view_capture | "Let me look at that again..." | "Okay, I'm looking at it now~" | "I couldn't find that capture to look at again." |
remember_image | "Oh, I want to remember this — let me keep it." | "Saved to my visual memory~" | "I couldn't keep that image just now." |
recall_image | "Let me picture that again..." | "Got it — I can see it again:" | "I don't have an image saved for that yet." |
None of the three has a heartbeat line: they are fast enough that nothing needs to fill the silence.
A SOUL.md may override any of these lines per tool.
Her face follows the same three tools:
| Tool | While it runs | If it fails |
|---|---|---|
view_capture | thinking | confused |
remember_image | determined | embarrassed |
recall_image | thinking | confused |
There is deliberately no expression emitted on success. The face of a finished turn comes from the audio tag she speaks, so voice and face have one source instead of two that can disagree.
On screen, the two read tools emit a status frame rather than a step row — the terminal shows
"looking at that screenshot again…" and "finding the picture she kept…" while they run. Because
remember_image is a write, it draws a step row in the terminal panel and writes a row to the audit
log: the tool name plus the first 180 characters of its arguments. The reads write no audit row.
Next: Privacy and deletion.
