Effort selector dropdown hidden for GLM models — blocks access to GLM-5.2 High/Max effort tiers

Đang mở Phù hợp với người mới
#640 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
68/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
typescript
Lĩnh vực
frontend

Hướng nghiên cứu

Bắt đầu bằng cách đọc điều kiện effort-selector trong src/components/chat/MessageInput.tsx và các mục năng lực mô hình trong src/lib/provider-catalog.ts; sau đó tìm nơi các mô hình env-provider được định nghĩa. Kiểm tra cách menu thả xuống xử lý supportedEffortLevels trước khi chọn những mô hình và cấp độ cần hiển thị. Công việc hoàn tất khi người dùng GLM có thể chọn các cấp độ effort được hỗ trợ và giá trị effort hiện có tiếp tục được truyền qua yêu cầu chat.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Summary

When using a GLM model (e.g. GLM-5.2 via Z.ai's Anthropic-compatible endpoint at https://api.z.ai/api/anthropic), the effort selector dropdown does not render in the chat composer. This prevents users from selecting GLM-5.2's High and Max reasoning effort tiers, even though the downstream plumbing already carries the effort field end-to-end and Z.ai's endpoint accepts it.

Environment

  • CodePilot: v0.56.0 (source HEAD b4e96a1)
  • OS: Windows 11
  • Provider: env (Claude Code SDK runtime)
  • Endpoint: https://api.z.ai/api/anthropic
  • Model: glm-5.2[1m]

Root cause

The dropdown visibility is gated by a model capability flag that GLM does not have.

src/components/chat/MessageInput.tsx:991-992:
```tsx
const currentModelMeta = currentModelOption as (typeof currentModelOption & { supportsEffort?: boolean; supportedEffortLevels?: string[] }) | undefined;
const showEffortSelector = currentModelMeta?.supportsEffort === true;
```

supportsEffort: true is set on Claude variants in src/lib/provider-catalog.ts (Sonnet / Opus / Haiku roles, plus Fable 5 at lines 240, 250, 260, 290, 301, 314, 325, 344, 355, 370, 385, 396, 428, 437) but not on GLM models configured via the env provider. When a user selects GLM, currentModelMeta.supportsEffort is undefined, so showEffortSelector is false and the dropdown never renders. There is no way inside the UI to set selectedEffort to anything other than the 'auto' default.

The downstream plumbing already works

Once selectedEffort is anything other than 'auto', the value flows through cleanly:

src/app/chat/page.tsx:890:
```tsx
...(selectedEffort && selectedEffort !== 'auto' ? { effort: selectedEffort } : {}),
```

src/lib/claude-model-options.ts:102-144 (sanitizeClaudeModelOptions) passes effort through unchanged for any model that isn't Opus 4.7/4.8/Fable 5. GLM matches neither the OPUS_ADAPTIVE_THINKING_PATTERN nor the FABLE_PATTERN, so effort: 'max' would reach Z.ai's endpoint as-is.

The EffortSelectorDropdown itself also already falls back to the full 5-level set when supportedEffortLevels is undefined:

src/components/chat/EffortSelectorDropdown.tsx:36:
```tsx
const baseLevels = supportedEffortLevels || ['low', 'medium', 'high', 'xhigh', 'max'];
```

So the only thing missing is the capability flag on GLM model entries.

GLM-5.2 does support effort tiers

Per Z.ai's "How to Switch Models" doc:

"In a Claude Code session, type the /effort command to switch thinking intensity. After switching, Claude Code maps the selected effort to GLM-5.2's actual effort levels..."

GLM-5.2 exposes at least High and Max effort tiers. Users running the Claude Code CLI directly against Z.ai can reach them via /effort max. CodePilot users cannot, because the UI gate is closed. (CodePilot also does not forward /effort as a slash command to the underlying SDK, so there's no escape hatch.)

Suggested fixes

In order of preference:

  1. Mark env-provider models with supportsEffort: true by default so the dropdown renders for any Anthropic-compatible endpoint (GLM, DeepSeek, Kimi, etc.). Downstream code handles unknown effort values gracefully, and the endpoint will either accept the level or ignore it.

  2. Add explicit GLM entries to ENV_CLAUDE_CODE_MODELS with supportedEffortLevels: ['high', 'max'] matching what Z.ai's endpoint actually documents, so the dropdown surfaces only the levels GLM-5.2 truly supports.

Workaround

None inside CodePilot today. Switching to Opus surfaces the dropdown (Opus has supportsEffort: true), but that's not a real fix for users who chose GLM for cost or quota reasons.

Ngôn ngữ chính
TypeScript
Star
6.5k
Fork
697
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Chuẩn bị môi trường

  • Không có Dockerfile hay tệp Docker Compose
  • Có mẫu pull request
  • Không có hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của op7418/CodePilot

Tất cả issue của op7418/CodePilot

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.