Skip to content
m4bwav edited this page Oct 26, 2026 · 2 revisions

When should an agent use a page rather than ask in chat?

When there are more than a few questions, when a question needs a clip, a sound or an image, or when the person will answer later rather than now. For one to four plain questions, ask.py inline gives a chat version (Commands). A single quick yes or no needs neither.

Does anything leave my machine?

No. The server listens on 127.0.0.1 only, the page loads nothing from the network, and everything stays in the set folder (Server and security).

Why must every question carry a guess?

So the person can see what the agent would do, and the agent learns whether it was right (matched_guess). A low guess is hidden until the person asks for it, and read reports whether they opened it before picking, so a pick that only followed the guess can be told apart. The guess is never pre-selected, and never used to fill in an unanswered question.

What does "note_only" mean, and can I treat it as a pick?

The person wrote a note or attached an image without choosing an option. It is not a choice: read the note and, if it changes the question, ask again in a second round (Recipes).

The person picked against my guess and left no note. Why did they?

read cannot tell you, and neither can the page. Record the pick as a fact and do not invent a reason or turn it into a rule from one silent pick. This happened in the first real film review run through askwright (lesson L-008 pick-without-reason in LEARNINGS.md).

Why does the lint refuse "Yes" and "No" as option labels?

A label that names the action ("Render tonight", "Wait until Saturday") still makes sense in the answers file and in a list of answers read weeks later; "Yes" does not. Positions ("Left", "B", "Option 2") are refused for the same reason. See position-label and confirm-yes-no on Lint rules and errors.

My compare clip has takes in a fixed order. Should I set randomized to true to quiet the warning?

No. randomized states a fact about the clip. Set it true only when the sides were drawn at random; otherwise keep false and the warning, or remake the pair in random order. The skill was changed once because an eval run claimed true for a fixed-order clip (lesson L-005 randomized-is-a-fact).

A caller builds question ids from file names. Why did lint refuse _pair_r7?

Ids must start with a letter or a digit. Strip leading _, - and . from a file stem before using it as an id (lesson L-007 caller-ids-must-pass-lint).

I added a question and status says "done": false again. Why?

ask.py add writes an "added" mark to events.jsonl, and done reflects the last mark. The person has new questions to see, so the set is no longer finished until they press "All done" again (Commands).

How do I change a question someone may already have answered?

Use ask.py add <set> <file> --replace. It raises the question's rev, and the old answer is reported as stale (while still being listed as answered). Editing questions.json without raising rev leaves the old answer looking current (Recipes).

Can two sets be served at once?

Yes, by the source: each serve gets its own free port and writes its own server.json (the wiki's run served its sets one after the other). A second serve of the same set while its server answers reports already_running and starts nothing.

The video does not play in the page.

Use H.264 video with AAC sound. With ffprobe installed, lint warns about other codecs. For the page tests the repository uses an installed Chrome or Edge, because the Chromium that Playwright downloads does not play H.264 (Development).

Can it quiz someone instead of asking for decisions?

Yes, since 0.2.0: set "mode": "study". The page grades the multiple-choice questions on submit, shows why each option is right or wrong, and scores each topic; written answers wait for ask.py grade. See Study mode.

Does it work on macOS and Linux?

CI runs the ask.py tests on Windows, macOS and Linux with Python 3.9 and 3.14. This wiki's examples were run on Linux and Windows; macOS was not run for it. Use python3 there.

Clone this wiki locally