Claude Opus 5.5 with the effort level re-decided every step by the TypeSafe Jev reflex — without breaking the prompt cache. CLI + Claude Code plugin.
翻訳待ち
プラグインTypeScript · DockerfileGitHub @WXK-AI自分でインストール所有者未確認
Paste into Claude or ChatGPT for installation instructions suited to your environment.
Have you tried it? One tap is enough. No sign-in needed.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Claude Opus 5.5 with the effort level re-decided at every step, without breaking the prompt cache.
npm install -g jev-opus && jev-opus init && jev-opus claude
jev-opus runs Claude Code on claude-opus-5-5, either your normal interactive claude with an "Opus 5.5 · Jev" entry in /model, or a session it drives itself. The TypeSafe Jev System-1 reflex picks the effort level when a prompt arrives, then again after every tool batch, before Claude's next API call. A failing test raises the next step's effort. Once the same check passes, it steps back down. All of this happens inside one prompt.
A real run in Claude Code 2.1.281, fixing two bugs in a date library (jev-opus audit output):
D-fda4d1c7 · MEDIUM · 1 attempts (completed) · 808 observed output tokens
difficulty 1.1/4 → low; debugging floor medium
D-aeab8b84 · MEDIUM → HIGH · 1 attempts (completed) · 381 observed output tokens
failing checks → recovery effort; diagnosing → +1
D-b73cb943 · HIGH → MEDIUM · 1 attempts (completed) · 175 observed output tokens
failing check now passes → release hold; verifying → -1
Normally, changing effort between requests changes the request prefix, which throws away the prompt cache. Opus 5.5 also accepts effort as a per-message statement inside the conversation. jev-opus only ever changes effort that way, and it keeps every statement in place on later requests, so the history the model saw never changes. Two modes, same guarantee:
jev-opus claude (gateway): your normal Claude Code → local gateway → Jev decides → effort statement inserted before the turn it governs → Anthropic API.jev-opus "task" (driver): runs Claude Code headless via the Agent SDK. After each tool batch, a hook calls applyFlagSettings({ effortLevel }), which Claude Code sends as a per-turn statement.Requirements:
claude auth login)apikey_…) or an OpenRouter key (sk-or-…), which reaches the same Jev model through TypeSafe. Without one, jev-opus still works, using local heuristics.npm install -g jev-opus # or run anything without installing: npx jev-opus …
jev-opus init # asks for your Jev key and writes ~/.config/jev-opus/.env (the first `jev-opus` run also asks, if you skip this)
jev-opus doctor # checks Claude Code, your credential, Jev, and a real Opus 5.5 call
jev-opus only moves Claude between the levels you allow. The default is low to high, so xhigh and max are never used unless you raise the ceiling. The levels, weakest to strongest, are low, medium, high, xhigh and max.
jev-opus claude: set the range in ~/.config/jev-opus/.env:
JEV_OPUS_MIN_EFFORT=low
JEV_OPUS_MAX_EFFORT=high
For a single session, put the variable before the command:
JEV_OPUS_MAX_EFFORT=max jev-opus claude
Arguments after jev-opus claude go to Claude Code itself, so this mode takes the range only from these variables.
jev-opus "task" / jev-opus (driver mode): use flags, or commands inside the interactive session:
jev-opus --min medium --max xhigh "fix the failing tests" # set the range
jev-opus --effort high "…" # pin one level: no adaptive switching
Inside the interactive session:
/bounds low medium changes the range on the fly./pin high locks one level./auto returns to adaptive switching.| Range | Good for |
|---|---|
low…high (default) | Everyday coding; keeps costs in check |
low…medium | Cheapest; simple tasks |
medium…xhigh | Harder work; never drops to low |
low…max | Everything allowed; max is used only for extreme, critical work or after repeated failed fixes |
Within the range, Jev picks the starting level from the task's difficulty, raises it when checks fail, and lowers it once they pass. Running /effort <level> yourself in Claude Code overrides Jev until your next prompt.
/modeljev-opus claude # any `claude` arguments work: jev-opus claude -c, jev-opus claude -p "…"
This opens the regular interactive Claude Code, the same interface, tools and approvals. It adds a model entry, Opus 5.5 · Jev, and selects it for you. While that model is selected, Jev re-picks the effort before every API call. Pick any other model in /model and requests pass through untouched.
By default (changes mode) you see effort in two places:
◆ Jev · MEDIUM · debugging
◆ Jev · medium → HIGH · diagnosing
◆ Jev · medium → high → MEDIUM · verifying
◆ Jev · MEDIUM → HIGH · failing checks
◆ Jev · HIGH → MEDIUM · matching checks passed
If a change happens on a step where Claude writes no text, Claude Code only allows a notice at the tool call, and it adds the prefix PreToolUse:Bash says: itself. Badges show the effort Jev selected; they don't measure how much the model actually reasoned.
Display options, set before the command or in ~/.config/jev-opus/.env:
This is the beginning of the README. Read the rest at the original. Read the full README ↗