Skip to content

chore: pin the built-in default model to deepseek/deepseek-v4-pro - #77

Merged
yujiezhang-ops merged 1 commit into
mainfrom
chore/default-model-deepseek-v4-pro
Aug 6, 2026
Merged

chore: pin the built-in default model to deepseek/deepseek-v4-pro#77
yujiezhang-ops merged 1 commit into
mainfrom
chore/default-model-deepseek-v4-pro

Conversation

@yujiezhang-ops

Copy link
Copy Markdown
Collaborator

Advances the pinned built-in default model from deepseek/deepseek-v3 to deepseek/deepseek-v4-pro. Groundwork for #76, which asks that a PPIO or Novita user only supply a key — pre-filling a model that is four releases behind would make the staleness visible to every new user on their first screen.

Why this value is load-bearing

Despite the field name, fallback_probe_model is not probe-only. internal/app/provider.go:260 (resolveProviderModel) and internal/app/install.go:187 both fall back to it, so it is the model written into a real Agent config whenever the user does not pick one.

v4 removes a trap

PPIO published v3 as deepseek/deepseek-v3 and Novita as deepseek/deepseek_v3 — one hyphen versus one underscore, so the two entries could never share a constant. Both now publish deepseek/deepseek-v4-pro. Verified present in each /v1/models listing (PPIO 108 models, Novita 145; both answer anonymously).

This makes #76's acceptance criterion "assert the two defaults are distinct strings" obsolete; that issue has been updated.

Why v4-pro

v4-flash-0731 has the newest created timestamp but is a dated snapshot — pinning it means going stale the moment the next snapshot ships. v4-flash and v4-pro are both rolling aliases from the same date.

Chose pro over flash because this value reaches real configs, where coding capability outweighs the per-token saving. The gap is worth knowing: on PPIO pro costs 3× flash (30000/60000 vs 10000/20000 per M), on Novita 11× (16000/32000 vs 1400/2800). If first-run cost matters more than capability, switching to v4-flash is three lines in the lock file.

Scope

providers.lock.jsondefault_fallback_probe_model plus both providers' fallback_probe_model.

The i18n key 例如 deepseek/deepseek-v3 and its three call sites (ProviderKeyPage.tsx:133, ProfilesPage.tsx:260, AgentProfilePage.tsx:214). i18n is Chinese-source, so the key itself moves.

ModelPicker.tsx:52 keeps its neutral 例如 gpt-4.1 — that is the free-text box, where a vendor-neutral example is more appropriate than promoting one provider's model.

Verification

go test ./... — all packages pass. Note internal/catalog/catalog_test.go:68 asserts the public provider projection contains no "deepseek" substring; that still holds because PublicProviders zeroes fallbackModel.

pnpm run test — 26 files, 205 tests pass. pnpm run build (which runs tsc --noEmit first) succeeds.

Also confirmed upstream that deepseek/deepseek-v4-pro is a live model id on both providers, not just newer-looking.

🤖 Generated with Claude Code

The pinned fallback was deepseek-v3, which both PPIO and Novita still
serve but which now sits four releases behind what they list. That value
is not probe-only: resolveProviderModel and prepareInstallModel both fall
back to it, so it is what lands in an Agent config when the user does not
choose a model.

v4 also removes a trap. PPIO spelled v3 with a hyphen and Novita with an
underscore, so the two entries could never share a constant; both now
publish deepseek/deepseek-v4-pro, verified present in each /v1/models
listing.

Chose the rolling v4-pro alias over v4-flash-0731: the dated snapshot
goes stale the moment the next one ships. Chose pro over flash because
this value is written into real configs, where coding capability matters
more than the per-token saving.

The manual-entry placeholder in ModelPicker keeps its neutral gpt-4.1
example; only the provider-specific hints move.
@yujiezhang-ops
yujiezhang-ops force-pushed the chore/default-model-deepseek-v4-pro branch from e23f49a to 046ee75 Compare August 6, 2026 09:39
@yujiezhang-ops
yujiezhang-ops merged commit 6f695c4 into main Aug 6, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant