muse-spark-1.2-contributorТа же модель за $0.10 / $0.20 вместо $1.25 / $4.25 — в обмен на право Meta учиться на твоих prompts. Два пути: terminal-агент Muse Code и OpenCode.
Главное, что экономит час чтения docs: Contributor tier — это не account-toggle, не флаг и не отдельный endpoint. Это другой model id. Пишешь muse-spark-1.2-contributor вместо muse-spark-1.2 — платишь в 12–21 раз меньше.
Checkpoint тот же самый, context тот же (1 048 576 tokens), возможности те же. Меняются три вещи: цена, rate limit (100 RPM вместо 3000) и то, что Meta забирает твои prompts и completions на training — без возможности изъять их обратно.
ai.meta.com/blog поста про 1.2 нет, там только 1.1.| Muse Spark 1.2 | Сама модель. Closed-weights, весов нигде нет и не будет — только через API. Input: text, image, video, PDF. |
| Muse Code | Terminal-агент Meta (beta), вышел 5 августа 2026, co-trained с моделью. Binary называется muse. |
| Contributor tier | Model id muse-spark-1.2-contributor. В юридических документах Meta он называется иначе — Discounted Model. |
Muse Code и OpenCode — два независимых harness поверх одной модели. Ставить оба не нужно, выбирай один.
Официальные цифры с dev.meta.ai/docs/pricing-rate-limits, за 1M tokens:
Standardmuse-spark-1.2 | Contributor…-contributor | Разница | |
|---|---|---|---|
| Input | $1.25 | $0.10 | 12.5× |
| Cached input | $0.15 | $0.002 | 75× |
| Output | $4.25 | $0.20 | 21× |
| Rate limit | 3 000 RPM 4 000 000 TPM | 100 RPM 3 000 000 TPM | в 30× меньше запросов |
| Обучение на твоих данных | Нет | Да |
Квоты считаются на team, не на API key — все ключи команды делят один пул. Web search grounding тарифицируется сверх токенов: $2.50 за 1000 запросов. Long-context премии нет — цена не растёт при заполнении контекста. Steering-контекст, который Meta подмешивает в каждый prompt, не тарифицируется и не попадает в usage.
цифры двигались Пресса на релизе писала 60 RPM / 2 100 000 TPM. На официальной странице сегодня 100 RPM / 3 000 000 TPM. Отдельный лимит для background-запросов — 600 в минуту на team. Суточных и месячных потолков в docs нет, только поминутные окна. Пейсься по заголовкам x-ratelimit-remaining-requests и x-ratelimit-remaining-tokens, при превышении — HTTP 429.
Waitlist'а нет, вручную никто не отсматривает. Нужны: возраст 18+, поддерживаемая страна и привязанный способ оплаты — без него запросы не пойдут, и добавить его может только team admin.
auth.meta.com. Аккаунт и team создаются сразу./billing. Списание — по нарастающему порогу либо 1-го числа месяца.LLM|607358788850350|nx9.....LJY.ловушка №1 Три разных имени переменной окружения для одного и того же ключа. Перепутаешь — получишь пустой список моделей и будешь искать несуществующую проблему:
| Где | Переменная |
|---|---|
| Muse Code CLI | META_API_KEY |
| Meta Model API, SDK, curl, Codex | MODEL_API_KEY |
| OpenCode / models.dev | META_MODEL_API_KEY |
Base URL: https://api.meta.ai/v1. Клиенты на Anthropic-протоколе (Claude Code) берут https://api.meta.ai без /v1. Поддерживаются три протокола: Responses, Chat Completions, Anthropic Messages.
Единственный документированный способ. macOS и Linux, из зависимостей только curl и mktemp — binary статический, ни Node, ни Python не нужны:
curl -fsSL https://dev.meta.ai/install.sh | sh
muse --version
Ставится в ~/.local/bin/muse, PATH дописывается в ~/.zshrc, ~/.bashrc, ~/.profile и ~/.config/fish/conf.d/muse.fish. Если не хочешь, чтобы скрипт трогал dotfiles:
curl -fsSL https://dev.meta.ai/install.sh -o install.sh
less install.sh # сначала прочитать
MUSE_NO_MODIFY_PATH=1 MUSE_INSTALL_DIR="$HOME/bin" sh install.sh
npm-пакета, Homebrew formula и публичного репозитория нет. Всё, что лежит на GitHub под именем muse-spark, — сторонние обёртки, не Meta. Docs дают | sh, marketing-страница | bash; сам скрипт имеет shebang #!/usr/bin/env bash, работают оба варианта.
Запусти muse внутри репозитория. Он спросит trust на workspace, затем предложит browser sign-in или вставку API key:
cd ~/projects/my-app
muse
muse auth set | Сохранить API key на диск. |
/login | Перелогиниться из активной session. |
muse logout | Стирает и browser session, и сохранённый key. Экспортированную переменную окружения не трогает. |
Приоритет: env var → сохранённый key → browser session. У Meta Managed Account browser sign-in недоступен, только API key.
export META_API_KEY="LLM|...."
muse exec --json "Run the test suite and summarize failures."
Exit codes: 0 — готово, 1 — упало или отменено, 2 — ошибка в аргументах, 130/143 — SIGINT/SIGTERM.
По умолчанию Muse Code берёт muse-spark-1.2, то есть Standard. Дешёвый tier сам не включится.
muse --model muse-spark-1.2-contributor # на один запуск
# либо /models прямо в session
не подтверждено Флаг --model и команда /models документированы официально, id muse-spark-1.2-contributor — тоже. Но их комбинация в docs нигде не показана: слово «contributor» не встречается ни на одной странице раздела Muse Code, и источники противоречат друг другу — часть утверждает, что tier определяется аккаунтом, а не запросом. Проверь на своей установке через muse --help и /models прежде чем рассчитывать на цену.
/plan | Превращает задачу в план с approval gate. |
/grill | Стресс-тест плана до выполнения. В части сборок называется /grilling — сверься с /help. |
/goal | Работать до достижения цели. Есть pause, resume, clear. |
/loop | Повтор по интервалу или cron: /loop 10m /run-tests. |
/agent | Subagents: spawn, status, interrupt, resume. |
/compact, /recap | Управление контекстом. |
/resume, /fork | Вернуться в прошлую session или разветвить текущую. |
/effort | Reasoning effort: minimal … xhigh (default), ultra. Значение none не поддерживается — HTTP 400. |
Клавиши: Enter — вклиниться в идущий turn, Alt+Enter — поставить в очередь, Esc — прервать. Настройки живут в ~/.config/muse/settings.json и требуют ключа "schema_version": 1 — без него CLI падает с malformed settings file. Инструкции проекта — AGENTS.md, генерируется через muse init. Весь ход session пишется в локальный append-only event log, поэтому агент переживает crash и продолжает ровно с места остановки.
/help покажет для твоей сборкихорошая новость Конфигурировать ничего не нужно. meta — built-in provider в OpenCode, все три модели уже в models.dev, а команда Meta прислала в OpenCode отдельный system prompt под muse-spark. Достаточно ключа.
export META_MODEL_API_KEY="LLM|...."
opencode models | grep '^meta/'
$ META_MODEL_API_KEY=… opencode models | grep '^meta/' meta/muse-spark-1.1 meta/muse-spark-1.2 meta/muse-spark-1.2-contributor
MODEL_API_KEY вместо META_MODEL_API_KEY список пустой.Дальше /models в TUI и выбрать meta/muse-spark-1.2-contributor. Либо opencode auth login → Meta: ключ ляжет в ~/.local/share/opencode/auth.json, переменная тогда не нужна. Путь «Other» из /connect для Muse Spark не нужен — provider встроенный.
Файл ~/.config/opencode/opencode.json (глобально) или ./opencode.json (в проекте, приоритет выше). Переопределяем встроенный id meta, а не заводим новый — иначе потеряешь metadata и цены из models.dev:
{
"$schema": "https://opencode.ai/config.json",
"model": "meta/muse-spark-1.2-contributor",
"provider": {
"meta": {
"name": "Meta Model API",
"npm": "@ai-sdk/openai",
"options": {
"baseURL": "https://api.meta.ai/v1",
"apiKey": "{env:META_MODEL_API_KEY}"
},
"models": {
"muse-spark-1.2-contributor": {
"name": "Muse Spark 1.2 Contributor",
"reasoning": true,
"limit": { "context": 1048576, "output": 131072 },
"options": {
"reasoningEffort": "high",
"reasoningSummary": "auto",
"include": ["reasoning.encrypted_content"]
}
}
}
}
}
}
Почему @ai-sdk/openai, а не @ai-sdk/openai-compatible: первый ходит в Responses API, второй — в Chat Completions. Meta прямо называет первый «the recommended adapter», и это же значение стоит в models.dev. Строка include: ["reasoning.encrypted_content"] выглядит как магия, но именно она переносит reasoning модели между turns — без неё смысл Responses API теряется. Число 131072 для output — из собственного примера Meta; официального максимума output-токенов Meta не публикует.
Meta советует хранить ключ через /connect, а не строкой apiKey в конфиге — тогда поле можно просто убрать.
api.meta.ai| Chat Completions теряет reasoning | На @ai-sdk/openai-compatible reasoning не переносится между turns — каждый ход модель думает с нуля. В agentic-цикле это выглядит как повтор уже сделанной работы, противоречия с собственными прошлыми шагами и потеря контекста задачи. Прямая формулировка из docs Meta. |
reasoningEffort может не доезжать | Открытый issue #41294 от 8 августа 2026 — ровно на muse-spark-1.2-contributor: параметр вырезается из request body, замеры reasoning tokens на minimal и xhigh практически совпадают. В 1.18.x похоже починено, но issue открыт. |
| Деградация tool-calling | Модель co-trained со своим harness. Сообщения о худшем поведении в сторонних scaffolds есть, но это анекдоты, а не бенчмарк. |
| PDF не проходят | На Chat Completions доезжают только картинки; video — исключительно через Responses API. |
| Нужен полный restart | После правки provider-конфига OpenCode надо перезапустить целиком. |
model_not_found | Либо опечатка в model id, либо trailing slash в baseURL. |
В юридических документах Meta contributor называется Discounted Services. Формулировки жёстче, чем маркетинговое «в обмен на разрешение»:
«You must not submit sensitive, confidential, or personal information to the Discounted Services. If you intend, or are required (including by contract), to keep information such as software code confidential, you must not submit that information to the Discounted Services. … the Discounted Services do not offer a mechanism to exclude specific traffic from training.»
— Terms of Service §6.2
muse-spark-1.2 можно в любой момент, и будущие запросы в training не пойдут. Но механизма отозвать или удалить уже отправленное не существует, и ToS прямо предупреждает: обученные модели могут выдавать результат, «similar or identical to your Content».география Geographic Use Policy §4 запрещает делать продукты, построенные на Discounted Services, доступными конечным пользователям в Австралии, Бразилии, Канаде, European Region, Республике Корея и Великобритании.
Важный нюанс, который пресса переврала: «These restrictions apply solely to Integrated Products created using Discounted Services. They do not apply to your own use of the Services.» То есть это ограничение на твоих пользователей, а не на твой личный доступ. Отдельно есть список Restricted Territories, где недоступны вообще все tier.
если нужен zero retention На Standard есть ZDR, но включает его только Meta для квалифицированных организаций через sales — переключателя в UI нет. Под ZDR отключаются stateful-запросы, background-режим, file uploads, web search и история Playground; данные, помеченные как нарушение AUP, всё равно хранятся до 2 лет. Через сторонние gateway ZDR не действует.
| Vercel AI Gateway | есть meta/muse-spark-1.2-contributor по той же цене $0.10/$0.20/$0.002. Но retention-политика gateway накладывается поверх прав Meta на training. |
| OpenRouter | нет Только meta/muse-spark-1.2 и 1.1 по Standard-цене. Contributor-варианта в каталоге нет. |
| Hugging Face | Весов нет и не появится — модель closed-weights, ToS запрещает попытки извлечь веса. |
бенчмарки Meta выложила графики (Terminal-Bench 2.1, DeepSWE 1.1, внутренний coding bench), но числа есть только на картинках — в тексте страницы и в methodology-PDF ни одной цифры. SWE-bench Meta не мерила вообще. Каждая модель в её сравнении гонялась в своём собственном агенте, то есть это счёт системы «модель + harness», а не модели.
Независимая оценка Artificial Analysis: Intelligence Index 54 на xhigh (1.1 было 51), Terminal-Bench v2.1 80%. Это ниже Claude Opus 5 (61) и Fable 5 (60), примерно вровень с GPT-5.5 xhigh. Ожидай, что в универсальном scaffold будет хуже, чем в Muse Code.
Официальные docs Meta — канонический хост dev.meta.ai/docs
OpenCode и каталоги
metaРазбор со стороны
Минимальный путь:
# A. Muse Code
curl -fsSL https://dev.meta.ai/install.sh | sh
cd ~/projects/my-app && muse # trust + sign-in
muse --model muse-spark-1.2-contributor # сверь с /models
# B. OpenCode
export META_MODEL_API_KEY="LLM|...."
opencode # /models → meta/muse-spark-1.2-contributor