Skip to content

组合开启多模态,但模型不支持image #4689

Closed

Description

@hnyyghk

Client or integration

Codex CLI

Area

Catalog / models

Summary

组合开启多模态,但模型不支持image

Reproduction

配置如下

Image Image

Version

2.54.0

Operating system

macOS 13.5.1

Provider and model

No response

Logs or error output

Screenshots and supporting files

No response

Redacted configuration

Checks

  • I searched existing issues and documentation.
  • I removed secrets, tokens, account details, request credentials, and personal data.

Activity

  1. lidge-jun commented on Sep 15, 2026

    @lidge-jun
    Owner

    리뷰 · 우선순위 62 / 80

    이 이슈는 콤보 편집 화면에서 ‘이미지 / 다모드’가 켜져 보이는데, 모델 목록 툴팁의 모달리티는 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.ts deriveComboCatalogModel(약 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.ts comboImagesSupported - Models 목록 modalities만으로 토글 가능 여부를 판정. 카탈로그 멤버 해상과 다를 수 있다.
    경로 gui/src/components/combo-workspace-controls.tsx 102–124 - imagesSupported면 토글 ON 가능. 힌트 문구는 ‘모든 타깃이 이미지를 지원할 때’인데, 실제 공개 모달리티와 어긋나면 사용자 혼란.
    경로 src/codex/catalog/combo-member.ts resolveComboCatalogMember - discovery/registry/vendor fallback 병합. GUI ModelOption과 같은 규칙을 쓰는지 점검 필요.

    메인테이너의 판단이 필요한 지점

    너의 추천
    우선 제품 계약을 확인한다. 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 대상 아님. 프리뷰 배포는 계획에 없음.

    이 댓글은 grok-bot이 작성했습니다

  2. hnyyghk commented on Sep 15, 2026

    @hnyyghk
    Author

    由于Alibaba Token Plan没有自动发现这个模型,deepseek-v4.1-flash是我手动配置的,是支持image的
    另外附上deepseek-flash的模型配置截图
    Image

    Image
  3. Ingwannu commented on Sep 15, 2026

    @Ingwannu
    Owner

    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.

  4. Ingwannu commented on Sep 15, 2026

    @Ingwannu
    Owner

    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.

  5. lidge-jun commented on Sep 16, 2026

    @lidge-jun
    Owner

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingcatalogModel catalog, slugs, visibility, routed entries

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions