Skip to main content
Glama
README.md
# dsh-vision-gemma

テキスト専用(マルチモーダルじゃない)LLM に「目」を与える DSH プラグイン。
Google AI Studio (Gemini API) の **無料枠** を叩いて、ローカルファイルや URL の画像について
「この画像何?」と質問できる MCP ツールを提供する。

- 実装: ゼロ依存 stdio MCP サーバー (`vision-gemma.mjs`) — `dsh-modrinth-mcp` と同じ方式
- 既定モデル: **`gemma-4-31b-it`** (Free 枠 ~30 RPM / **~14,400 RPD**、画像+テキスト入力)
- 代替モデル: `gemma-4-26b-a4b-it` (MoE・最速、2026-08-30実測 4.8s) /
  `gemini-3.1-flash-lite` / `gemini-3.5-flash-lite` (~1,500 RPD、1M ctx)
- 注意: 素のID `gemma-4` は **2026-08-30時点で404(エイリアス廃止)**。実在IDは上記2つのみ
  (models/list で確認済み)。`~/.dsh/settings.yaml` の gemini-free プロバイダに残っている
  旧ID行も同様に無効
- Gemma 4 は回答に `<thought>...</thought>` の組み込み推論を出すが、サーバー側で剥がして
  `answer` には本文のみ返す(生思考は `includeThought: true` で取得可)
- 認証: ホスト環境変数 `GEMINI_API_KEY`(`.credentials.yaml` refs が注入するもの。
  `gemini-free` プロバイダと同じキー)。環境変数が空なら `~/.dsh/.credentials.yaml`
  を直接読むフォールバック付き

## ツール

| ツール名 | 引数 | 機能 |
|---|---|---|
| `mcp__vision__ask_image` | `image` (パス or URL, 必須), `question?`, `model?`, `maxTokens?` | 画像1枚について質問 → `{model, question, answer, image, usage}` |
| `mcp__vision__compare_images` | `images` (2〜6件), `question?`, `model?`, `maxTokens?` | 複数画像を1回で比較 (デザイン差分・スクショ比較など) |

- `image` はローカル絶対パス (Windows 形式) か `http(s)://` URL。URL はサーバー側で
  ダウンロードして base64 インライン化する (Gemini の OpenAI 互換層は URL を fetch しないため)
- 対応形式: PNG / JPEG / WebP / HEIC。インライン上限 18 MB(超過時は再エンコードを促すエラー)
- リトライ: 429/5xx は `retry-after` を見て最大2回

## 登録方法 (profiles/web/cordis.patch.yml)

```yaml
- insert:
    - id: mcp-vision
      name: '@deepseek-ai/dsh-mcp-client'
      config:
        serverName: vision
        transport: stdio
        command: 'C:\Program Files\nodejs\node.exe'
        args:
          - 'C:\Users\motch\Documents\DSH\dsh-vision-gemma\vision-gemma.mjs'
        env:
          GEMINI_API_KEY: !!js process.env.GEMINI_API_KEY || ''
        failOnStartupError: false
        toolCallTimeoutMs: 60000
```

要ホスト再起動(または cordis HMR によるホットスワップ)。

## テスト

```powershell
node C:\Users\motch\Documents\DSH\dsh-vision-gemma\test\server-test.mjs
# 実APIを使わないプロトコル試験のみ:
node C:\Users\motch\Documents\DSH\dsh-vision-gemma\test\server-test.mjs --skip-live
```

実API試験は `test/tmp/` に合成 PNG (緑背景に赤円 / 白背景に青三角) を生成し、
色と図形の認識を検証する。クォータ消費は gemma-4 呼び出し 2 回のみ。