Repository navigation
gateway: the reprobe round reaches the custom providers too - #86
Merged
Merged
Conversation
The button used to drive the free lane alone, so every user-added provider's model sat on the placeholder "custom" state until each card was clicked by hand. The round now covers every enabled provider's models through the same probeCustomOne path the per-card 测试 uses, skips unchecked models, caps concurrency at 4 (these upstreams bill per request), and leans on the task registry to de-duplicate a second press while one is still running.
This was referenced Oct 17, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The 模型 page's 重新探测可用性 button (
POST /admin/api/reprobe) droveLane.ProbeRoundalone, so a user-added provider's model kept showing the placeholdercustomstate.adminStateonly replaces that placeholder whencustomProbeOfholds a verdict, and the per-card 测试 button was the only writer — so reaching a real verdict on a provider's roster meant clicking every card by hand, one at a time.What it does
probeCustomProvidersruns the round over every enabled provider's models, and each one goes throughprobeCustomOne— the same path the per-card 测试 button takes. A model probed by hand and one probed in bulk cannot disagree about what the upstream answered.probeTasks.beginde-duplicates, so a second press while a round is still running — or a per-card click landing mid-round — keeps the in-flight run instead of buying a second upstream call for the same question. Each card reports progress through its own task; the bulk round stays out ofcurrentProbingModelon purpose, since that field can only name one model and a round has none to name.Verified:
go vet ./...+go test ./...green. Two regression tests: the round files a real verdict forprovider/modeland the card leaves thecustomplaceholder; and a second press does not hit the upstream twice (the provider gets its own test upstream so the free-lane round running in parallel is not counted as a custom call).