You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
이 이슈는 콤보 편집 화면에서 ‘이미지 / 다모드’가 켜져 보이는데, 모델 목록 툴팁의 모달리티는 text만 나오는 UX·카탈로그 불일치다. 스크린샷 기준 콤보는 combo/deepseek-flash-combo이고 타깃은 (1) Alibaba Token Plan / deepseek-v4.1-flash, (2) DeepSeek / deepseek-flash다. 전략은 Failover, imageInput 토글은 ON. 지금 dev HEAD 270291170(패키지 2.56.0)의 유도 규칙을 보면 카탈로그 쪽이 ‘text만’인 이유부터 설명이 된다.
src/codex/catalog/aggregation.tsderiveComboCatalogModel(약 129–134행)는 멤버 inputModalities의 교집합을 쓴다. imageInput === "disabled"일 때만 image를 강제로 빼고, "auto"(기본·토글 ON)는 이미지 능력을 새로 만들어 주지 않는다. 교집합에 image가 없으면 공개 카탈로그 모달리티는 text다. 레지스트리상 DeepSeek 1st-party deepseek-flash는 ["text","image"](entries-core.ts 약 1007–1009행)인데, 게이트웨이/호스팅 쪽 deepseek-v4.1-flash는 의도적으로 ["text"]다(OpenCode Go 주석·#4505, entries-core.ts 약 691행). Alibaba Token Plan(Beijing) ALIBABA_TOKEN_PLAN_INPUT_MODALITIES에는 deepseek flash 키 자체가 없다(model-seeds.ts 약 443–451행). 그래서 교집합이 text로 떨어지는 것은 현재 계약과 맞다.
문제는 GUI 토글이다. gui/src/components/combo-workspace-controls.tsx는 comboImagesSupported(targets, models)가 true이고 imageInput !== "disabled"이면 스위치를 ON으로 그린다. gui/src/combo-capabilities.ts는 Models API가 준 ModelOption.inputModalities에 image가 있는지만 본다. 카탈로그 유도(resolveComboCatalogMember + aggregation)와 콤보 워크스페이스 모델 목록의 모달리티 소스가 어긋나면, 편집기는 ‘다모드 ON’인데 인벤토리/Codex는 ‘이 모델은 이미지를 지원하지 않음’이 된다. 리포터 제목(조합 다모드 ON, 모델은 image 미지원)과 스크린샷이 그 증상이다다. #4667(Anthropic image 시드 누락)과도 ‘선언 불일치’ 계열로 인접하지만, 이번 재현은 DeepSeek flash + Alibaba/gateway text-only 교집합이 핵심이다.
경로 src/codex/catalog/aggregation.ts 129–134 - imageInput=auto는 교집합만 사용. 멤버에 image가 없으면 콤보도 text.
경로 src/providers/registry/entries-core.ts deepseek-flash vs deepseek-v4.1-flash - 전자는 text+image, 후자(호스팅 경로)는 text-only 고정.
경로 gui/src/combo-capabilities.tscomboImagesSupported - Models 목록 modalities만으로 토글 가능 여부를 판정. 카탈로그 멤버 해상과 다를 수 있다.
경로 gui/src/components/combo-workspace-controls.tsx 102–124 - imagesSupported면 토글 ON 가능. 힌트 문구는 ‘모든 타깃이 이미지를 지원할 때’인데, 실제 공개 모달리티와 어긋나면 사용자 혼란.
경로 src/codex/catalog/combo-member.tsresolveComboCatalogMember - discovery/registry/vendor fallback 병합. GUI ModelOption과 같은 규칙을 쓰는지 점검 필요.
메인테이너의 판단이 필요한 지점
버그를 ‘GUI가 너무 낙관적으로 image를 본다’로 볼지, ‘Alibaba/deepseek-v4.1-flash가 실제로 image여야 하는데 카탈로그가 text로 깎는다’로 볼지(업스트림 증거 필요).
콤보 토글 판정을 aggregation과 동일한 멤버 해상으로 맞출지.
text-only 멤버가 섞이면 저장 시 imageInput을 자동 disabled로 내려 인벤토리와 편집기를 동기화할지.
너의 추천
우선 제품 계약을 확인한다. Alibaba Token Plan의 deepseek-v4.1-flash가 업스트림에서 정말 text-only면 카탈로그 text가 맞고, GUI comboImagesSupported가 그 행에 image를 붙이는 쪽을 고쳐야 한다(토글 unavailable/off + 인벤토리와 일치). 반대로 해당 호스팅 경로가 네이티브 image면 registry modelInputModalities를 증거 기반으로 고친다. 어느 쪽이든 콤보 워크스페이스 판정과 deriveComboCatalogModel 교집합을 같은 소스에 묶는 회귀 테스트(타깃 text+image → 콤보 text, 토글 off/unavailable)를 넣는다. 이슈는 bug/catalog 유지. close-don't-rebase 대상 아님. 프리뷰 배포는 계획에 없음.
Thank you — the new screenshots are decisive. Both selected rows already advertise text, image, and the Alibaba row is explicitly a custom model. That rules out the earlier hypothesis that we first need to invent or change Alibaba upstream capability metadata.\n\nThe remaining mismatch is in catalog ordering: gatherRoutedModels derives combo rows before it materializes config.customModels. The ordinary Models inventory therefore shows your custom inputModalities, while combo derivation can still resolve the earlier provider/discovery row and intersect it as text-only.\n\nI will fix this narrowly by overlaying explicit custom-model capability fields into the combo-member map before combo derivation. The patch will keep the normal custom-row materialization and provider capability rules unchanged, will not globally mark deepseek-v4.1-flash as image-capable, and will add a regression matching your custom Alibaba image row plus DeepSeek image row. I will link the exact-head PR here after isolated tests pass.
The fix is now in #4697 at exact head ea23a2132. It does not change global Alibaba/DeepSeek capability metadata. It makes combo derivation consume the exact custom row that the Models inventory already displays. The reproduction now keeps text, image on both the custom row and the derived failover combo; it also verifies custom context, reasoning, and shell-tool capability alignment. Isolated results: catalog 340/340, combo GUI data 42/42, typecheck, structure, privacy, and diff checks all pass. The issue should remain open until independent review, exact-head CI, and merge.
Closing as completed on dev by #4697 (384df7c). The custom-model capability overlay before combo derivation is present in src/codex/catalog/routed-gather.ts at audited dev ada3a9b. This is the concrete custom Alibaba image-row + DeepSeek image-row mismatch identified in the maintainer follow-up; it does not globally declare every hosted DeepSeek alias image-capable.
The requested implementation/review/merge has landed. This is a merged-on-dev close, not a claim that the fix has already shipped in a new release or that a fresh live-provider verification was performed during this closeout.
Activity
lidge-jun commentedon Sep 15, 2026
리뷰 · 우선순위 62 / 80
이 이슈는 콤보 편집 화면에서 ‘이미지 / 다모드’가 켜져 보이는데, 모델 목록 툴팁의 모달리티는
text만 나오는 UX·카탈로그 불일치다. 스크린샷 기준 콤보는combo/deepseek-flash-combo이고 타깃은 (1) Alibaba Token Plan /deepseek-v4.1-flash, (2) DeepSeek /deepseek-flash다. 전략은 Failover, imageInput 토글은 ON. 지금devHEAD270291170(패키지 2.56.0)의 유도 규칙을 보면 카탈로그 쪽이 ‘text만’인 이유부터 설명이 된다.src/codex/catalog/aggregation.tsderiveComboCatalogModel(약 129–134행)는 멤버inputModalities의 교집합을 쓴다.imageInput === "disabled"일 때만 image를 강제로 빼고,"auto"(기본·토글 ON)는 이미지 능력을 새로 만들어 주지 않는다. 교집합에 image가 없으면 공개 카탈로그 모달리티는 text다. 레지스트리상 DeepSeek 1st-partydeepseek-flash는["text","image"](entries-core.ts약 1007–1009행)인데, 게이트웨이/호스팅 쪽deepseek-v4.1-flash는 의도적으로["text"]다(OpenCode Go 주석·#4505,entries-core.ts약 691행). Alibaba Token Plan(Beijing)ALIBABA_TOKEN_PLAN_INPUT_MODALITIES에는 deepseek flash 키 자체가 없다(model-seeds.ts약 443–451행). 그래서 교집합이 text로 떨어지는 것은 현재 계약과 맞다.문제는 GUI 토글이다.
gui/src/components/combo-workspace-controls.tsx는comboImagesSupported(targets, models)가 true이고imageInput !== "disabled"이면 스위치를 ON으로 그린다.gui/src/combo-capabilities.ts는 Models API가 준ModelOption.inputModalities에 image가 있는지만 본다. 카탈로그 유도(resolveComboCatalogMember+ aggregation)와 콤보 워크스페이스 모델 목록의 모달리티 소스가 어긋나면, 편집기는 ‘다모드 ON’인데 인벤토리/Codex는 ‘이 모델은 이미지를 지원하지 않음’이 된다. 리포터 제목(조합 다모드 ON, 모델은 image 미지원)과 스크린샷이 그 증상이다다. #4667(Anthropic image 시드 누락)과도 ‘선언 불일치’ 계열로 인접하지만, 이번 재현은 DeepSeek flash + Alibaba/gateway text-only 교집합이 핵심이다.경로
src/codex/catalog/aggregation.ts129–134 - imageInput=auto는 교집합만 사용. 멤버에 image가 없으면 콤보도 text.경로
src/providers/registry/entries-core.tsdeepseek-flash vs deepseek-v4.1-flash - 전자는 text+image, 후자(호스팅 경로)는 text-only 고정.경로
gui/src/combo-capabilities.tscomboImagesSupported- Models 목록 modalities만으로 토글 가능 여부를 판정. 카탈로그 멤버 해상과 다를 수 있다.경로
gui/src/components/combo-workspace-controls.tsx102–124 - imagesSupported면 토글 ON 가능. 힌트 문구는 ‘모든 타깃이 이미지를 지원할 때’인데, 실제 공개 모달리티와 어긋나면 사용자 혼란.경로
src/codex/catalog/combo-member.tsresolveComboCatalogMember- discovery/registry/vendor fallback 병합. GUI ModelOption과 같은 규칙을 쓰는지 점검 필요.메인테이너의 판단이 필요한 지점
너의 추천
우선 제품 계약을 확인한다. Alibaba Token Plan의
deepseek-v4.1-flash가 업스트림에서 정말 text-only면 카탈로그 text가 맞고, GUIcomboImagesSupported가 그 행에 image를 붙이는 쪽을 고쳐야 한다(토글 unavailable/off + 인벤토리와 일치). 반대로 해당 호스팅 경로가 네이티브 image면 registrymodelInputModalities를 증거 기반으로 고친다. 어느 쪽이든 콤보 워크스페이스 판정과deriveComboCatalogModel교집합을 같은 소스에 묶는 회귀 테스트(타깃 text+image → 콤보 text, 토글 off/unavailable)를 넣는다. 이슈는bug/catalog유지. close-don't-rebase 대상 아님. 프리뷰 배포는 계획에 없음.이 댓글은 grok-bot이 작성했습니다
hnyyghk commentedon Sep 15, 2026
由于Alibaba Token Plan没有自动发现这个模型,deepseek-v4.1-flash是我手动配置的,是支持image的

另外附上deepseek-flash的模型配置截图
Ingwannu commentedon Sep 15, 2026
Thank you — the new screenshots are decisive. Both selected rows already advertise
text, image, and the Alibaba row is explicitly a custom model. That rules out the earlier hypothesis that we first need to invent or change Alibaba upstream capability metadata.\n\nThe remaining mismatch is in catalog ordering:gatherRoutedModelsderives combo rows before it materializesconfig.customModels. The ordinary Models inventory therefore shows your custominputModalities, while combo derivation can still resolve the earlier provider/discovery row and intersect it as text-only.\n\nI will fix this narrowly by overlaying explicit custom-model capability fields into the combo-member map before combo derivation. The patch will keep the normal custom-row materialization and provider capability rules unchanged, will not globally markdeepseek-v4.1-flashas image-capable, and will add a regression matching your custom Alibaba image row plus DeepSeek image row. I will link the exact-head PR here after isolated tests pass.Ingwannu commentedon Sep 15, 2026
The fix is now in #4697 at exact head
ea23a2132. It does not change global Alibaba/DeepSeek capability metadata. It makes combo derivation consume the exact custom row that the Models inventory already displays. The reproduction now keepstext, imageon both the custom row and the derived failover combo; it also verifies custom context, reasoning, and shell-tool capability alignment. Isolated results: catalog 340/340, combo GUI data 42/42, typecheck, structure, privacy, and diff checks all pass. The issue should remain open until independent review, exact-head CI, and merge.lidge-jun commentedon Sep 16, 2026
Closing as completed on dev by #4697 (384df7c). The custom-model capability overlay before combo derivation is present in src/codex/catalog/routed-gather.ts at audited dev ada3a9b. This is the concrete custom Alibaba image-row + DeepSeek image-row mismatch identified in the maintainer follow-up; it does not globally declare every hosted DeepSeek alias image-capable.
The requested implementation/review/merge has landed. This is a merged-on-dev close, not a claim that the fix has already shipped in a new release or that a fresh live-provider verification was performed during this closeout.