Skip to content

Ask

jevx ask is the full command. The shortcuts (is, pick, filter, rank) are ask with one question already shaped.

Terminal window
$ jevx ask -h
Usage of ask:
-choice value
NAME="QUESTION|key=desc;key2=desc" (repeat)
-context value
background for this call: TEXT or @file (repeat); added after the ## Jev sections
-in string
one input: text, a JSON object, @file or - (default: stdin)
-json
one input: print JSON instead of lines
-lines string
batch: a text file (or -), one input per line
-min float
override: choice / score confidence below is unsure (default -1)
-no float
override: noul P at or below is no (default -1)
-no-context
skip the ## Jev sections of the global and folder agent files
-noul value
NAME="QUESTION" (repeat); or NAME="QUESTION|true means|false means"
-parallel int
override: concurrent requests in a batch
-profile string
endpoint profile
-questions string
a question-set file: {NAME: {type, instructions, criteria}}
-raw
one input: print the server's full response
-score value
NAME="QUESTION|low;mid;high" (repeat, lowest first)
-states string
batch: a JSONL file (or -), one JSON object or string per line
-yes float
override: noul P at or above is yes (default -1)
  • Saved names: jevx ask urgent,team < ticket.txt (see Saved questions).
  • Inline yes/no: --noul NAME="QUESTION". A second form spells out the poles: NAME="QUESTION|true means|false means".
  • Inline pick-one: --choice NAME="QUESTION|key=desc;key2=desc". The verdict is one key.
  • Inline rating: --score NAME="QUESTION|low;mid;high", lowest first. The verdict is one level.
  • A file: --questions set.json, a JSON object {NAME: {type, instructions, criteria}}.

Any number of questions go in one call and one request (up to chunk, default 32, per request).

Terminal window
$ jevx ask --noul urgent="Is this urgent for the person receiving it?" \
--choice team="Which team should handle this?|web=frontend or UI;api=backend;billing=money" \
--in "Checkout is down, customers are being charged twice"
team billing 0.72
urgent yes 0.95

Output lines are sorted by question name, not by the order you gave them.

  • stdin (the default), or --in "text", --in @file, --in '{"json": "object"}', --in -.
  • --lines FILE (or -): a batch, one input per line of text.
  • --states FILE.jsonl (or -): a batch, one JSON object or string per line. A JSON input keeps its shape; context is merged into its "context" field.

One line per question: NAME VERDICT P. A yes/no verdict is yes, no or unsure (P at or above yes 0.8, at or below no 0.2, or between). A choice or score is the key or level, or unsure when its confidence is below min_confidence 0.6.

--json prints the same as one JSON object; --raw prints the server’s reply untouched.

Terminal
jevx ask --json --noul spam="Is this message spam?" --in "Congratulations, you have won a prize, click here"
output
{"answers":{"spam":{"answer":{"type":"noul","noul":0.95},"verdict":"yes"}},"model":"jev-1.13.0","profile":"jev"}

JSONL in input order, one object per input with line, input and answers. Each answer carries verdict and, for yes/no, p.

Terminal
jevx ask --lines app.log --noul err="Is this line an error or failure?"
output
{"line":1,"input":"INFO 09:12:01 request served in 12ms","answers":{"err":{"answer":{"type":"noul","noul":0.02},"p":0.02,"verdict":"no"}}}
{"line":2,"input":"ERROR 09:12:04 payment gateway timeout after 30s","answers":{"err":{"answer":{"type":"noul","noul":0.98},"p":0.98,"verdict":"yes"}}}
{"line":3,"input":"INFO 09:12:05 cache warmed","answers":{"err":{"answer":{"type":"noul","noul":0.02},"p":0.02,"verdict":"no"}}}

Filter it with jq:

Terminal
jevx ask --lines app.log --noul err="Is this line an error or failure?" \
| jq -c 'select(.answers.err.verdict=="yes") | .input'

Batches run parallel requests at a time (default 8; --parallel N for one call). A batch exits 0, or 4 if any input failed; that line carries an "error" field instead of answers.

--yes, --no, --min, --parallel, --profile, --context TEXT|@file (repeatable), --no-context. Every command also takes --cwd DIR to run as if from that directory (it picks up that folder’s .jevx/ and ## Jev section).

Precedence: built-in < config < profile < the question’s own thresholds < flags. See Settings.

judge asks four fixed questions about a proposed final message: would the user accept it, did the agent stop short, the likely reaction, and a 0-4 satisfaction. The questions come from a question pack (JSON); the built-in one is neutral, and a profile can point at its own with --questions pack.json.

Terminal window
$ jevx judge -h
Usage of judge:
-action value
one tool call as a short line (repeat)
-context value
background for this call: TEXT or @file (repeat)
-json
raw answers
-no-context
skip the ## Jev sections of the global and folder agent files
-profile string
endpoint profile
-proposal string
the agent's final message
-request string
the user's request
Terminal window
$ jevx judge --request "Fix the failing test in parser_test.go" \
--proposal "I found the off-by-one in parseRange and fixed it; go test ./... passes." \
--action "Edit: core/parser.go" --action "Bash: go test ./..."
accept 0.60
wanted more 0.73
reaction accept (0.93, confidence 0.91)
satisfaction 2.9 / 4 (jev)

The skill tells the agent: below accept_min 0.35 the user would likely push back, so verify and show evidence; above more_max 0.65 on “wanted more”, finish the missing part. The call above scored 0.73 on “wanted more” for a one-line proposal with no diff shown, which is the intended nudge.

  • Say whose decision it is and what counts as yes: “Would a senior on-call engineer page someone for this line?” beats “bad?”.
  • The model sees only the question, the input and the context; nothing from your conversation.
  • Put the facts that decide it in context, not in the question.
  • Look at a few verdicts before you loop over 5,000 lines. Tune thresholds per question if the default band is wrong for it.

Something wrong or unclear on this page?Open an issue on GitHub.