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

オープン 初心者向け
#640 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
68/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
typescript
領域
frontend

調査の方向性

まず src/components/chat/MessageInput.tsx の effort-selector ゲートと src/lib/provider-catalog.ts のモデル機能エントリーを読み、次に env-provider モデルが定義されている場所を特定してください。どのモデルとレベルを公開するか選ぶ前に、ドロップダウンが supportedEffortLevels をどのように処理するか確認してください。GLM ユーザーがサポートされている effort 階層を選択でき、既存の effort 値がチャットリクエストに引き続き渡される状態になれば完了です。

索引モデルが issue の本文から書いたものです。

説明

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.

主要言語
TypeScript
スター
6.5k
フォーク
697
PR マージ指標
30日以内にマージされた PR はありません

環境構築

  • Dockerfile・Docker Compose ファイルなし
  • プルリクエストのテンプレートあり
  • コントリビューションガイドなし

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

op7418/CodePilot のほかの issue

op7418/CodePilot の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。