自己的模型,
一个小文件。

Gnista 认识各大模型厂商和它们公开的价格。对于它不认识的模型,比如你通过 Ollama 或 LM Studio 运行的模型、微调模型,或公司自己的接口,一个小 JSON 文件就能告诉它:这个模型多少钱、上下文有多大、显示哪个图标。不用等 Gnista 发新版。

更新于

试一试

对于通过 Ollama 在本地运行的 Llama 模型,把下面的内容存为 ~/Library/Application Support/Gnista/Models/ollama.json:

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

十秒之内,运行 llama3.1:8b 的会话就会显示费用为 $0,以及 131K token 的上下文用了多少,图标是 Gnista 本来就认识的 Meta 图标。设置 ▸ 智能体 ▸ 模型会列出这个文件;那里的“显示模型文件夹”会打开这个文件夹。

模型文件

每个模型一个文件,或者每个模型系列一个文件:文件名最多 32 个小写字母、数字、- 和 _,以 .json 结尾。只有 match 是必填的,而且一个文件至少要给出 icon、price 或 context 之一。

{
  "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 个,按你的 Agent 报告的样子写:llama3.1:8b、acme-coder。不区分大小写。超过两个字符的片段可以匹配 ID 里的任何位置;两个字符及以下的只匹配完整的词,所以 o3 匹配 o3-mini,但不匹配 foo3。
maker厂商名,设置里用它来称呼这个文件。最多 40 个字符。
icon同一文件夹里的 SVG 或 PNG 文件,最大 1 MB,作为小角标显示在 Agent 的图标上。不填的话,Gnista 认识的模型会保留厂商的图标。
motionAgent 运行时角标怎么动:spin、twinkle、bob、swim、rock 或 breathe,也可以自定节奏:{"name": "spin", "period": 10}。
monochrome单色标志写 true,会用周围文字的颜色来画。
price"free",或者每百万 token 的美元价格:input 和 output,以及可选的 cacheRead(不填则为 input 的十分之一)和 cacheWrite(不填则为 input 的 1.25 倍)。
context模型的上下文窗口,以 token 计,用于显示用量的圆环。
about写给下一个编辑这个文件的人的备注。Gnista 不显示它。

超过 1 MB 的文件,或者有任何错误的文件(未知的键、不成立的价格、Gnista 读不了的图标),会被整个忽略,绝不会只用一半。设置 ▸ 智能体 ▸ 模型会列出它并说明原因。

模型用哪个文件

  • 你的文件优先于 Gnista 自带的。有多个文件匹配时,匹配部分最长的那个胜出:llama-3.1-nemotron 归 NVIDIA(nemotron),而不是 Meta(llama)。
  • 图标取自带图标的最佳匹配,价格和上下文取自带有它们的最佳匹配。只写了价格的文件,会保留厂商的图标。
  • 你写的价格和上下文优先于 Gnista 知道的公开价格,因为你最了解自己的接口。不过 Agent 自己报告的上下文窗口仍然优先。
  • 模型就是 Agent 厂商自家的模型时(比如 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
}

在哪里显示

会报告自己模型的 Agent 会显示角标,比如 Claude Code、Codex、OpenCode、Antigravity 和 Droid;你自己的工具发送了 model 时也会显示(自定义 Agent)。费用和上下文只对 Gnista 会读取其会话的 Agent 显示;设置 ▸ 智能体里标明了是哪些。