fix(devin): resolve models through catalog family metadata (carry #6091) - #6172
Conversation
Parse ClientModelConfig #23 ModelInfo, #30 ModelFamilyMetadata and #31 default flag. A family id with no effort now selects the family's default member (swe-1-7 -> swe-1-7-medium, not the Max row), an effort moves only the effort axis to the nearest rung, Fast Mode and 1M Context follow only explicit requests, and resolution never leaves the family. The suffix fallback's variant scan matches the collapsed base instead of a string prefix, so claude-opus-5 no longer lands on claude-opus-5-5-*. The picker collapses by family, reads ladders from the effort axis, and advertises the family default as defaultReasoningEffort; swe-1-6-fast stays its own row. swe-1-6 is marked text-only (live: it drops images silently) so the vision fallback applies. Uncapped turns send the selected row's catalog maxOutputTokens instead of 8192. CompletionConfiguration #3 is max_newlines, now a fixed value; the input-ceiling plumbing that fed it a context window is removed. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit 09b9e6d)
An effort a family lacks now selects the lowest rung at or above it, then the highest below. Nearest-rung sent `high` on SWE-1.7 (Medium, Max) to Medium; it now selects the Max row. A disabled default rounds up the same way and falls back down only when nothing above it is enabled. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit ed6449e)
…ggle A disabled exact uid asked for with an effort that still selects it (swe-2-max at max) is now sent as named, so the preflight reports that row's refusal instead of quietly serving swe-2-high. Family selection now ranks "effort not lowered" ahead of the non-effort axes: a Fast anchor asked for at a rung the Fast rows lack falls back to the regular row at or above that rung, and an unranked member counts as lower. none is exempt, so Thinking-off still wins. Co-authored-by: Sayo <hi@sayo.wtf>
|
Warning Review limit reachedNext included review available in 3 minutes. View limit detailsLimit details: You’ve used all 10 included reviews currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Repository: lidge-jun/opencodex/.coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (16)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8ad177fbd5
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
✅ Deterministic PR hygiene checks passed. |
리뷰 · 우선순위 62 / 80이 PR은 Devin이 모델을 고르는 방식을 고쳐요. 바탕은 예전에는 이름 끝글자를 보고 단계를 짐작했어요. 이제는 카탈로그의 가족 정보를 읽어요. 노력을 안 적으면 그 가족의 기본 줄을 골라요. 라인 - 라인 - 메인테이너의 판단이 필요한 지점 한도를 안 적은 턴은 8192가 아니라 카탈로그 한도까지 답을 만들 수 있어요. 요금과 대기 시간이 커져요. 호출자가 적은 한도는 그대로 이겨요. 저장해 둔 맨 이름
CI의 test 2/4는 종료 코드 124예요. 파일을 하나씩 돌리면 통과했고, 이 PR 테스트가 깨진 로그는 아니에요. 다른 테스트 샤드는 이 글을 쓸 때 아직 돌아가고 있었어요. #6091은 아직 열려 있어요. 이 PR이 그 내용을 너의 추천 바탕 이 댓글은 grok-bot이 작성했습니다 |
Co-authored-by: Sayo <hi@sayo.wtf>
Co-authored-by: Sayo <hi@sayo.wtf>
|
Maintainer integration into Exact head |
Summary
Carries #6091 by @wtfsayo onto current
dev, with two review fixes on top. Devin model resolution guessed tiers from uid suffixes, which sent the wrong model on live accounts:swe-1-7at medium effort went out as the Max row, a missed uid could fall into a different family (claude-opus-5→claude-opus-5-5-*), family defaults were ignored (SWE-2 defaults to High, GLM-5.2 to its bare row), uncapped turns stopped at 8192 output tokens, andswe-1-6silently dropped images.After this PR the adapter resolves through the catalog's family metadata (
ClientModelConfig#23/#30/#31):fastor a1mvalue.defaultReasoningEffort;swe-1-6is text-only so images fall back to a vision model.max_newlinesand is sent at a fixed 128000; it was being fed the context window.Lane fixes on top of the contributor commits (
8ad177fbd5):swe-2-maxasked for atmaxwith that row disabled on the account quietly becameswe-2-high. Now it is sent as named, so the chat preflight reports that row's tier refusal. Asking for a different variant, or naming the family, still passes over disabled rows.highused to drop to Medium Fast. It now falls back to the regular High row. A Fast row at or above the request still wins, and a member with no effort rung counts as lower.noneis exempt, so Thinking-off still wins for it.Release note: Devin turns with no output cap from the caller or config now use the model's catalog output limit (usually 128000; 384000 for DeepSeek V4 Pro) instead of 8192. A caller or configured cap still wins. A saved bare
swe-1-7sent without an effort now resolves to the family default (swe-1-7-medium); Codex sends an effort on every turn, andhigh/xhigh/maxstill reach the Max row.Carries #6091. Contributor commits are cherry-picked with their authorship; the lane commit carries the trailer.
This is the first PR of a short chain: the Devin wire fixes (#6092 carry) and reasoning signatures (#6116 carry) are stacked on this branch because all three edit
src/adapters/devin.ts.Co-authored-by: Sayo hi@sayo.wtf
ee1fd1c839advertises theminimalrung, so Gemini Flash shows its[minimal, medium]ladder;0ca17f3e77publishes the effective family default when the marked default row is disabled, so the picker and request resolution agree.Verification
swe-1-7@high→swe-1-7(Max),swe-1-7@low→swe-1-7-medium,swe-2@xhigh→swe-2-max,kimi-k3@medium→kimi-k3-high; [codex] Refresh Codex cache after provider changes #3 = 128000 accepted 135,583 prompt tokens onswe-1-6and 238,954 on a 1M-window Gemini row. Not re-run live in this lane.tests/providers/devin-family-resolution.test.ts: "a disabled named row keeps its uid when the request lands on it", "a requested effort is not lowered to keep a toggle" (both fail without8ad177fbd5), and "none keeps Thinking off when the Thinking-off row has no rung" (guard).bun run typecheck(pass), all 15tests/providers/devin-*.test.tsfiles (all pass, 0 fail),bun run structure:checkandbun run privacy:scan(pass).bun run test:changedwas not completed locally.Checklist