Repository navigation
0.23.0 — thinking-mode gaps closed
Thinking-mode gaps closed — GLM-5.3 gets its real effort ladder on the router, and the main session's thinking level is classifier-routed per turn.
Research basis: GLM-5.3/5.3-Flash accept only reasoning_effort: low|high|max (forced thinking — none/off are accepted but silently think at max depth; live probe 2026-10-19), high ≈ 93% of max quality at ~⅔ the tokens (Z.ai Code Bench), and overthinking hurts on easy tasks (arXiv 2601.21418, 2604.10739).
Router zai53 map
GLM-5.3 family split out of the GLM-5.2-shaped zai map (router/lib/client.ts):
offnow OMITS the parameter — never sends"none", which would think at max depth (probed)- the native
lowtier is reachable (low/medium→low,xhigh→maxvia pi's clamp) combo/routes keep the CC enum; glm-5.2 keeps the old map- probe script shipped:
extensions/scripts/probe-thinking.mjs(value × route status matrix)
classifier.thinkGate (new)
One Jev score question per user turn sets the session thinking level; baseline restored at settle (classifier/lib/think-gate.ts).
- planGate pattern: default fully OFF, observe-first, 2.5s budget, fail-open everywhere, every verdict audited to
classifier.log(ceulen-think-gatetag; missing-model fail-opens audit once per session) - stands down for the session when the user touches the thinking dial
- skips plan mode, custom messages, and herdr children (
CEULEN_THINK_GATE_OFF=1injected by the subagent module — coversthinking_level_selecttoo, so child panes are fully inert) - live-verified in herdr: parent pane full cycle (trivial →
off(→minimal), architecture →xhigh), child panes zero gate events
Pitfalls encoded as tests
pi emits thinking_level_select synchronously off the set call site with CLAMPED values (ownership = pre-call timestamp arm + effective-level re-read); level-capped models clamp DOWN (xhigh→high regression case covered).
Tests: 2931 tests, 0 failures. Full diff: v0.22.0...v0.23.0