feat(console): add per-cron-job model override picker - #7050
Open
cillins wants to merge 1 commit into
Open
Conversation
cillins
requested a deployment
to
ai-review-approved
August 15, 2026 06:10 — with
GitHub Actions
Waiting
|
Hi @cillins, thank you for your first Pull Request! 🎉 🙌 Join Developer CommunityThanks so much for your contribution! We'd love to invite you to join the official QwenPaw developer group! You can find the Discord and DingTalk group links under the "Developer Community" section on our docs page: We truly appreciate your enthusiasm—and look forward to your future contributions! 😊 We'll review your PR soon. |
lalaliat
self-requested a review
August 18, 2026 04:29
The backend already honors request.model_slot_override when a cron job fires (runtime builder reads it off the request and model_factory's _resolve_model_slot_override resolves a ModelSlotConfig dict or a "<provider_id>:<model>" string, taking precedence over the agent's active model). The console had no way to set it. - JobDrawer: model select for agent-type tasks, options built from the /models provider list in "<provider_id>:<model>" form; clearable, empty means follow the agent's active model; a previously saved override stays selectable even if the model is no longer listed. - Submit/edit mapping normalizes string|dict <-> form value and drops the key when cleared. - Document model_slot_override on CronJobRequest. - i18n: en/zh/ja/ru/pt-BR. - Unit tests for the option builder and value normalization.
cillins
force-pushed
the
feat/cron-job-model-override
branch
from
August 22, 2026 03:35
94e07b6 to
1a5d4cd
Compare
cillins
requested a deployment
to
ai-review-approved
August 22, 2026 03:35 — with
GitHub Actions
Waiting
This was referenced Aug 22, 2026
This was referenced Aug 22, 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.

Description
Add a model picker to the Cron Jobs drawer so each agent-type cron job can
run with its own model (
request.model_slot_override), instead of silentlyfollowing whatever model the agent happens to have active at fire time.
The backend contract already exists and is honored end to end
(
model_slot_overrideon the request takes precedence over the agent'spersisted active model; both the
{provider_id, model}dict and the"<provider_id>:<model>"string forms are accepted). The Console simply hadno way to set it — this PR adds the missing UI:
task_type = agentjobs. Options are built from the/modelsproviderlist in
"<provider_id>:<model>"form (model ids containing:stayintact — only the first
:separates provider from model). Leaving itempty means "follow the agent's active model" and submits no override.
A previously saved override remains selectable even when the model is no
longer listed by its provider.
(string | dict → select value; empty → the key is dropped from
request,so clearing the select reliably removes the override on a full PUT).
model_slot_overrideis now documented onCronJobRequest.with their current partial
cronJobscoverage).Related Issue: Relates to #6316
Complements #6353 (backend validation, CLI
--model, and full-PUT requestpreservation). #6353 makes the Console preserve an existing override;
this PR lets users set one. The textual overlap is intentionally tiny
(
CronJobRequestfield declaration + one hunk inindex.tsx); happy torebase whichever lands second.
Security Considerations: None. The override is a per-request model
reference (provider id + model id) submitted through the existing cron-job
PUT/POST APIs; no credentials, channel auth, or env/config handling changes.
Type of Change
Component(s) Affected
Checklist
pre-commit run --all-fileslocally and it passespytestor as relevant) and they passTesting
Override" select appears under the request input, listing every
provider/model from
/modelsasProvider / modelentries.(
request.model_slot_override="<provider_id>:<model>").request(job follows the agent's active model again).
{provider_id, model}dict: itdisplays as the equivalent
"<provider_id>:<model>"option.task_typetotext: the select is hidden andrequestisdropped entirely on submit (unchanged behavior).
Evidence
Additional Notes
New helper module
components/modelOverride.tskeeps all mapping logic pureand unit-tested; the drawer and page only call into it. No backend changes.