feat(effort): session default high, env-var warning, live effort in statusline

This commit is contained in:
bastien
2026-09-28 18:52:36 +02:00
parent 5437638437
commit 45ae0d1217
4 changed files with 18 additions and 6 deletions
+7
View File
@@ -107,6 +107,12 @@ fi
REPO_DIR="${_repo_dir:-}"
unset _claude_real _repo_dir
# Effort tiering (BDR-NEXT): this env var beats every skill/agent `effort:` pin.
EFFORT_WARN=""
if [ -n "${CLAUDE_CODE_EFFORT_LEVEL:-}" ]; then
EFFORT_WARN="⚠️ CLAUDE_CODE_EFFORT_LEVEL=${CLAUDE_CODE_EFFORT_LEVEL} set: skill/agent effort pins ignored"
fi
# Detect plan and set passive token budget
PLAN=$(detect_plan 2>/dev/null || echo "pro")
case "$PLAN" in
@@ -253,5 +259,6 @@ unset _remote_ver REPO_DIR
echo "│ 💡 /plugin-check before starting a new project │"
echo "│ 🩺 make doctor full diagnostic │"
echo "└───────────────────────────────────────────────────┘"
[ -n "$EFFORT_WARN" ] && printf '%s\n' "$EFFORT_WARN"
echo ""
unset TOKEN_WARN
+6 -5
View File
@@ -33,13 +33,14 @@ if [ -z "$PROFILE" ] || [ "$PROFILE" = "none" ]; then
PROFILE="$DEFAULT_PROFILE"
fi
# Effort level from settings.json (.effortLevel — set by /effort or manual edit).
# settings.json is the source-of-truth, symlinked into ~/.claude/settings.json.
EFFORT="?"
if [ -f "$REPO/settings.json" ]; then
# Effort level: the live value when the harness exports it (skill/agent
# `effort:` shifts included, BDR-NEXT), else the persisted settings.json key
# (.effortLevel — set by /effort or manual edit; symlinked into ~/.claude).
EFFORT="${CLAUDE_EFFORT:-}"
if [ -z "$EFFORT" ] && [ -f "$REPO/settings.json" ]; then
EFFORT=$(jq -r '.effortLevel // "?"' "$REPO/settings.json" 2>/dev/null)
[ -z "$EFFORT" ] && EFFORT="?"
fi
[ -z "$EFFORT" ] && EFFORT="?"
# Session duration (from total_duration_ms)
DURATION_MS=$(echo "$INPUT" | jq -r \
+4
View File
@@ -29,6 +29,10 @@ printf -- '---\nname: bad\neffort: turbo\n---\n' > "$FIX/bad.md"
# ── 1) session default (spec D1)
has "settings.json" '"effortLevel": "high"'
# ── 2) hooks: env-var warning + live effort in the statusline (spec D1, D5)
has "hooks/session-start.sh" 'CLAUDE_CODE_EFFORT_LEVEL'
has "hooks/statusline.sh" 'CLAUDE_EFFORT'
# ── summary (later tasks insert their locks ABOVE this line)
printf 'effort-routing census: %d pass, %d fail\n' "$pass" "$fail"
[ "$fail" -eq 0 ]
+1 -1
View File
@@ -444,7 +444,7 @@
}
},
"feedbackDrafts": "off",
"effortLevel": "xhigh",
"effortLevel": "high",
"remoteControlAtStartup": true,
"inputNeededNotifEnabled": true,
"skipAutoPermissionPrompt": true,