CommandCodeAI / CommandCodeAI/command-code

vision input fails

オープン
#559 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

主要言語
言語のデータがありません
スター
4k
フォーク
350
PR マージ指標
30日以内にマージされた PR はありません

説明

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

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

src/tools/read-file/read-file.ts と src/utils/file-references.ts から始め、次にそれらのバイナリ処理を src/utils/clipboard-image.ts と比較する。ローカル画像に対して cmd -p で再現し、ファイルがどのようにモデルに到達するかを追跡する。完了条件は、issue で名前が挙げられている形式を含むサポート対象の画像ファイルが、headless mode でテキストのみになったりスキップされたりせず、vision content を生成することである。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
typescript
領域
ai, cli
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
48/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。