独自のモデル、
小さなファイル1つで。

Gnistaは主なモデルの提供元と、その公開価格を知っています。OllamaやLM Studioで動かすモデル、ファインチューン、社内のエンドポイントなど、Gnistaが知らないモデルには、小さなJSONファイルでコスト、コンテキストの大きさ、表示するアイコンを伝えます。Gnistaの新しいバージョンは要りません。

更新:

試してみる

OllamaでローカルにLlamaのモデルを動かしているなら、次の内容を~/Library/Application Support/Gnista/Models/ollama.jsonとして保存します:

{
  "version": 1,
  "match": ["llama3.1:8b"],
  "price": "free",
  "context": 131072
}

10秒以内に、llama3.1:8bを使うセッションのコストが$0になり、131Kトークンのコンテキストのうちどれだけ使ったかが表示されます。アイコンは、Gnistaがもともと知っているMetaのものです。ファイルは設定 ▸ エージェント ▸ モデルに並び、そこの「モデルフォルダを表示」でフォルダが開きます。

モデルファイル

モデル1つ、またはモデルのファミリー1つにつき1ファイルです。名前は小文字の英字、数字、-、_で32文字まで、末尾は.jsonです。必須なのはmatchだけですが、icon、price、contextのどれか1つは必要です。

{
  "version": 1,
  "maker": "Acme",
  "match": ["acme-coder", "acme"],
  "icon": "acme.svg",
  "motion": "breathe",
  "monochrome": false,
  "price": { "input": 0.5, "output": 1.5, "cacheRead": 0.05, "cacheWrite": 0.6 },
  "context": 200000,
  "about": "Prices from our internal rate card."
}
キー役割
version1。
match必須。対象のモデルIDの一部を、エージェントが報告するとおりに32個まで:llama3.1:8b、acme-coder。大文字小文字は区別しません。3文字以上の部分はIDのどこにあっても一致し、2文字以下の部分は単語としてまるごと一致したときだけです。o3はo3-miniに一致しますが、foo3には一致しません。
maker提供元。設定でファイルの名前として表示されます。40文字まで。
icon同じフォルダにあるSVGかPNGのファイル。1MBまで。エージェントのアイコンに小さなバッジとして表示されます。ないときは、Gnistaが知っているモデルなら提供元のアイコンのままです。
motionエージェントの作業中のバッジの動き:spin、twinkle、bob、swim、rock、breathe。速さを指定することもできます:{"name": "spin", "period": 10}。
monochrome単色のマークならtrue。周りの文字と同じ色で描かれます。
price"free"、または100万トークンあたりの米ドル:inputとoutput、任意でcacheRead(省略するとinputの10分の1)とcacheWrite(省略するとinputの1.25倍)。
contextモデルのコンテキストウィンドウのトークン数。どれだけ埋まったかを示すリングに使います。
about次にファイルを編集する人へのメモ。Gnistaには表示されません。

1MBを超えるファイルや、どこかに誤りがあるファイル(知らないキー、価格になっていない価格、Gnistaが読めないアイコン)は、まるごと無視されます。一部だけ使われることはありません。設定 ▸ エージェント ▸ モデルに理由とともに表示されます。

どのファイルが使われるか

  • 自分で置いたファイルが、Gnista自身のものより優先です。複数が一致したときは、一致した部分が最も長いものが選ばれます。llama-3.1-nemotronはMeta(llama)ではなくNVIDIA(nemotron)のモデルになります。
  • アイコンは、アイコンを持つうちで最もよく一致するものから、価格とコンテキストは、それらを持つうちで最もよく一致するものから取ります。価格だけのファイルなら、アイコンは提供元のままです。
  • ファイルに書いた価格とコンテキストは、Gnistaが知っている公開価格より優先です。エンドポイントのことは、使っている本人がいちばんよく知っているからです。ただし、エージェント自身が報告するコンテキストウィンドウはそれより優先されます。
  • Claude CodeでClaudeを使うときのように、モデルがエージェントの提供元自身のものなら、バッジは表示されません。

ほかの例

LM Studioのモデル。無料で、Gnistaに入っているQwenのアイコンを使います:

{ "version": 1, "match": ["qwen2.5-coder-32b"], "price": "free", "context": 32768 }

社内のエンドポイント。独自のアイコンと価格を持ち、acme.svgと同じフォルダに置きます:

{
  "version": 1,
  "maker": "Acme",
  "match": ["acme-coder"],
  "icon": "acme.svg",
  "motion": "breathe",
  "price": { "input": 0.5, "output": 1.5 },
  "context": 200000
}

表示される場所

バッジは、Claude Code、Codex、OpenCode、Antigravity、Droidのようにモデルを報告するエージェントと、modelを送る独自のツール(カスタムエージェント)に表示されます。コストとコンテキストは、Gnistaがセッションを読めるエージェントに表示されます。どれが該当するかは設定 ▸ エージェントに示されます。