CommandCodeAI / CommandCodeAI/command-code

vision input fails

Aperta
#559 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Lingua principale
Nessun dato sulla lingua
Stelle
4k
Fork
350
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Summary

Vision input currently works only through interactive TUI clipboard-paste and drag-drop (detectDroppedImageFile / detectClipboardImage → Jimp → base64 → {type:"image"}).
Environment

  • cmd v0.38.2
  • Installed via npm i -g command-code (mise)
  • macOS (darwin)
  • Model: Claude Sonnet 4 (claude-4-sonnet-20250514) — confirmed inputModalities: ["text","image"]
    Reproduce

1. Put any JPEG or PNG in the working directory

2. Run:

cmd -p "Describe what you see in test.jpg"
Result: Model responds that it cannot visually inspect the image. Same result for PNG, GIF, WEBP.
Root cause (from inspecting dist/index.mjs)

  1. read_file returns text-only output for all binary files
    src/tools/read-file/read-file.ts → formatOutput:
    function formatOutput(e) {
    if ("binary" === e.contentType)
    return [..., Binary file: ${e.fileType}].join("\n");
    // Model only ever sees: "Binary file: image/jpeg"
    ...
    }
    No {type: "image"} content block is ever created from a file read. The raw bytes are read into a Buffer but discarded.
  2. @filepath references silently skip binary files
    src/utils/file-references.ts → processFileReferences:
    if ("binary" === i.contentType) continue; // images vanish entirely
  3. AVIF and other modern formats fall through to the text path
    getFileType uses a hardcoded extension map (Ib) with no .avif entry:
    Ib = { ".png":"image/png", ".jpg":"image/jpeg", ".jpeg":"image/jpeg",
    ".gif":"image/gif", ".webp":"image/webp", ".svg":"image/svg+xml",
    ".bmp":"image/bmp", ".ico":"image/x-icon", ... }
    // No .avif, .heic, .heif, .tiff
    Since getFileType(".avif") returns "unknown", and isBinaryFile("unknown") returns false (it only matches known MIME values), AVIF files are read as UTF-8 text — producing garbled output rather than being flagged as binary.
  4. Vision content blocks only exist in the TUI paste/drag-drop path
    src/utils/clipboard-image.ts → detectDroppedImageFile → Jimp resize → base64 → {type:"image"}. This path is a React/Ink interactive handler and is not reachable in headless mode.
Expected Behavior

..

Actual Behavior

..

Steps to reproduce the issue

..

Command Code Version

latest

Operating System

macOS

Terminal/IDE

No response

Shell

No response

Additional context

No response

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia da src/tools/read-file/read-file.ts e src/utils/file-references.ts, quindi confronta la loro gestione dei dati binari con quella di src/utils/clipboard-image.ts. Riproduci il problema con cmd -p usando un’immagine locale e traccia il percorso del file fino al modello; il lavoro è completato quando i file immagine supportati, inclusi i formati nominati nell’issue, producono vision content in headless mode invece di produrre solo testo o essere ignorati.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
typescript
Ambito
ai, cli
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Tranquilla
Chiarezza
Abbastanza chiara
Idoneità per principianti
48/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.