вариант
ДомДом Skill Другое multica-creating-agents

multica-creating-agents

multica-ai/multica multica-ai/multica

Используйте при создании, проверке или отладке агента Multica с помощью командной строки `multica agent` или метода `POST /api/agents` — что представляет собой каждое поле, его формат при сохранении, является ли оно исключительно метаданными или используется демоном при запросе, какие входные данные проходят валидацию/отклоняются, как контролируется доступ к секретам `custom_env` и как работает привязка навыков. Не предназначено для назначения задач существующим агентам или для подсказок по задачам во время выполнения.

...Расширить все
80
Обновлено время 12 августа 2026 г.

Создание агентов Multica

Это соглашение, описывающее процесс создания агентов Multica: что принимают точки входа create, что сервер проверяет и отклоняет, как каждое поле сохраняется, и какие поля демон фактически считывает при обработке заявки. Это не руководство по параметрам — здесь излагаются факты, отслеженные по исходному коду, и каждое утверждение подтверждается указанием «файл:строка» в файле references/creating-agents-source-map.md.

Быстрый старт (просмотр только для чтения)

Эти команды считывают состояние и не имеют побочных эффектов:

multica agent get  --output json      # полная сохраненная запись агента
multica agent skills list  --output json   # текущие привязки навыков
multica agent env get  --output json  # среда в виде обычного текста (только для владельца/администратора, агентам доступ запрещен)

Команда `agent get` возвращает сохраненные данные агента, включая `runtime_id`, `model`, `thinking_level`, `service_tier`, `custom_args`, `has_custom_env`, `custom_env_key_count` и навыки. Она никогда не возвращает `custom_env` в виде открытого текста.

Базовая модель

Агент представляет собой строку в пределах рабочего пространства (таблица agent). Создание осуществляется одним POST-запросом на /api/agents (multica agent create). Во время получения задачи демон повторно считывает строку агента и формирует рабочий набор данных — таким образом, агент работает на основе сохраненных полей, а не на основе данных, сгенерированных во время создания.

Два разных текстовых поля, которые часто путают:

  • description — это краткое описание из каталога. Оно хранится и отображается в списках; демон НЕ вставляет его в подсказку агента во время выполнения. Рассматривайте его исключительно как метаданные, предназначенные для человека. Максимальный размер — 255 кодовых точек Unicode.
  • instructions — это договор о поведении во время выполнения. Демон считывает его в момент запроса и отправляет провайдеру в качестве постоянных инструкций агента. Здесь указываются роль, обязанности, границы, правила вывода и эскалации, а не в поле description.

Точки входа CLI / API

Минимальный вызов для создания (оба параметра —--name и --runtime-id — обязательны):

multica agent create --name  --runtime-id  \
  --description "" \
  --instructions "" \
  --output json

Команда runAgentCreate формирует тело запроса в формате JSON и отправляет его на /api/agents. Она добавляет ключ только в том случае, если был указан соответствующий флаг —description/instructions с непустое значение, остальные (runtime-config, custom-args, model, thinking-level, service-tier, visibility и т. д.) — при изменении соответствующего флага; таким образом, пропущенные флаги принимают значения по умолчанию сервера, а не отправляют пустые строки.

Тело HTTP-запроса (CreateAgentRequest) принимает следующие параметры: name, description, instructions, avatar_url, runtime_id, runtime_config, custom_env, custom_args, model, thinking_level, service_tier, visibility, max_concurrent_tasks, mcp_config.

Контракты по полям

Значения по умолчанию при отсутствии: runtime_config{}, custom_env{}, custom_args[], avatar_url → случайный смайлик:, visibilityprivate, max_concurrent_tasks6 (все материализуется на стороне сервера перед вставкой).custom_args/runtime_config имеют типы []string/any и маршалируются без изменений — отклонение из-за несоответствия структуре JSON происходит в CLI, а не в обработчике создания.

thinking_level проверяется только на уровне провайдера: провайдеры с фиксированным каталогом отклоняют нераспознанный литерал, в то время как провайдеры с динамическим каталогом, такие как Codex/OpenCode, принимают синтаксически безопасный токен. Значение, не поддерживаемое для выбранной модели, здесь НЕ отклоняется — демон проверяет свой локальный каталог моделей во время выполнения, записывает предупреждение в журнал и пропускает несовместимое переопределение.

Устанавливайте его из CLI с помощью --thinking-level при создании и обновлении агента, аналогично --model: этот флаг является простым проходом к полю thinking_level верхнего уровня, а при обновлении пустая строка (--thinking-level "") сбрасывает его обратно к значению по умолчанию среды выполнения. CLI намеренно не перечисляет допустимые уровни — они зависят от среды выполнения и модели (Claude в настоящее время использует low|medium|high|xhigh|max; значения Codex определяются из каталога моделей среды выполнения). Он пересылает токен, сервер применяет фильтр провайдера с фиксированным перечнем или безопасным токеном, а демон выполняет точную проверку модели/уровня . Среда выполнения, провайдер которой не поддерживает концепцию «thinking», отклоняет любое непустое значение с кодом ошибки 400.

service_tier — это соответствующий первоклассный регулятор скорости Codex. Устанавливайте его с помощью --service-tier при создании/обновлении; используйте --service-tier "" при обновлении, чтобы очистить его. Каталог моделей среды выполнения содержит как копию доступности, так и копию для отображения (в настоящее время приоритет, отображаемый как Fast). Сервер принимает безопасные будущие идентификаторы каталогов Codex, в то время как демон проверяет точную пару «модель/уровень» перед выполнением и игнорирует устаревшее несовместимое переопределение. Агенты без явно указанной модели завершают работу с ошибкой, поскольку эффективная модель в файле config.toml неизвестна.

модель против custom_args

«model» — это первоклассный сохраняемый столбец, который демон считывает напрямую. custom_args — это необработанные аргументы CLI провайдера. В справке CLI отмечается, что некоторые провайдеры (codex app-server, openclaw) отклоняют --model внутри custom_args — но это документированное руководство по CLI, а не навязываемое сервером ограничение; ничто в обработчике create не проверяет custom_args на наличие флага model.

Среда и секретные данные

`custom_env` — это секретная информация. CLI предлагает три канала ввода; два из них не сохраняют секреты в истории командной оболочки и списке процессов:

multica agent create --name  --runtime-id  --custom-env-stdin --output json
multica agent create --name  --runtime-id  --custom-env-file <0600-json> --output json

--custom-env-stdin считывает объект JSON из стандартного ввода; --custom-env-file считывает его из файла (рекомендуемый режим 0600). Третий канал, --custom-env , помещает значение в командную строку, где его могут увидеть история команд оболочки и команда ps — избегайте его для действительно секретных данных.

Факты со стороны чтения (это ошибочные предположения, которых следует избегать):

  • Ресурсы агента никогда не раскрывают custom_env в виде открытого текста. Команды agent list/get/create/update и события WS возвращают только has_custom_env (bool) и custom_env_key_count (int).
  • Для чтения значений в виде открытого текста требуется специальный конечный пункт GET /api/agents/{id}/env (multica agent env get). Доступ к нему ограничен владельцемрабочей области или администраторами, а участникам-агентам доступ запрещен независимо от роли участника, стоящего за ними — работающий агент не может читать секреты другого агента.
  • Запись значений после создания НЕ осуществляется через обновление агента. Общий обработчик обновлений отклоняет любое поле custom_env с кодом ошибки 400 («используйте PUT /api/agents/{id}/env»). Запись значений среды в виде открытого текста обрабатывается с помощью PUT /api/agents/{id}/env (multica agent env set), доступным только владельцу или администратору и записывающим строку в журнал аудита.

mcp_config

mcp_config — это конфигурация сервера MCP агента (объект JSON, например {"mcpServers": {…}}). Это также конфиденциальная информация — записи MCP обычно содержат токены API — и предоставляет те же три канала ввода, что и custom_env, как при создании агента, так и при его обновлении:

multica agent create --name  --runtime-id  --mcp-config-file <0600-json> --output json
multica agent update  --mcp-config-stdin --output json
multica agent update  --mcp-config 'null'   # очищает конфигурацию

--mcp-config-stdin / --mcp-config-file не сохраняют значение в истории команд оболочки и в ps; встроенный параметр --mcp-config этого не делает. CLI требует JSON- объекта или литерала null; массив верхнего уровня или примитивный тип отклоняются на стороне клиента, а пустой ввод из stdin/файла приводит к ошибке, а не к бесшумному сбросу.

Два отличия mcp_config от custom_env:

  • Его МОЖНО настроить посредством обновления агента. В отличие от custom_env, mcp_config не имеет выделенного контролируемого конечного пункта — его принимает общий PUT /api/agents/{id} . Три состояния в зависимости от исходного тела запроса: поле опущено → без изменений; null → очистка; объект → замена.
  • Оно сериализуется при чтении, но подвергается редактированию. Агентскиезапросы get/list возвращают mcp_config только вызывающим сторонам, имеющим право просматривать секретные данные агента; в противном случае поле равно null, а mcp_config_redacted равно true. Агентские объекты никогда не видят его, а рабочая область может принудительно применить редактирование для всех.

Поддержка провайдерами не унифицирована: Qwen Code принимает управляемый mcp_config через временный JSON-файл с правами 0600, принадлежащий демону и передаваемый с параметром --mcp-config; он удаляется при завершении выполнения. Оставьте поле не заданным (null), чтобы унаследовать нативные настройки Qwen Code.

Привязка навыков

Создание агента НЕ приводит к привязке каких-либо навыков рабочей среды — привязка осуществляется отдельным вызовом после создания агента. Используются два разных метода:

  • add — аддитивный: он объединяет указанные идентификаторы с существующими привязками (POST /api/agents/{id}/skills/add).
  • set — замена всего списка: перезаписывает весь список привязок именно указанными идентификаторами (PUT /api/agents/{id}/skills); --skill-ids '' очищает все.
multica agent skills add  --skill-ids  --output json
multica agent skills list  --output json

Во время обработки запроса демон сначала собирает навыки агента как навыки, привязанные к рабочей области, а затем добавляет встроенные навыки платформы. LoadAgentSkills загружает содержимое каждого привязанного навыка вместе с сопутствующими файлами; встроенные навыки встраиваются на этапе компиляции и загружаются из SKILL.md и сопутствующих файлов. Оба варианта поступают к провайдеру в виде содержимого навыка — именно поэтому функциональные возможности должны находиться в привязанном навыке, а не вставляться в инструкции.

Побочные эффекты, требующие одобрения

Только для чтения (безопасно): получение агента, список навыков агента, получение среды агента.

Изменяющие состояние (требуют явной инструкции — не запускать спекулятивно):

  • multica agent create — вставляет новую строку агента.
  • multica agent skills add / set — изменяет привязки (команда set является деструктивной: она удаляет привязки, отсутствующие в новом списке).
  • multica agent env set — перезаписывает всю карту custom_env и записывает строку аудита.

Распространённые ошибочные предположения

  • «Описание — это подсказка». Это не так — в среду выполнения попадают только инструкции. Подробное описание с пустыми инструкциями приводит к созданию именованной оболочки без рабочего контракта.
  • «Create связывает навыки агента». Это не так; связывайте их явно позже.
  • «Команда agent update может менять env». Это невозможно — она возвращает ошибку 400 при попытке изменить custom_env; используйте конечную точку env.
  • «mcp_config ведет себя как custom_env при обновлении». Это не так — mcp_config МОЖНО настроить с помощью agent update (--mcp-config), причем --mcp-config с нулевым значением служит для очистки; только custom_env защищен специальным конечным пунктом env.
  • «Командаagent get отображает значения env». Она отображает только has_custom_env и custom_env_key_count.
  • «Недопустимая комбинацияthinking_level/model выявляется при создании». Выявляется только неизвестный литерал на уровне провайдера — пробелы, специфичные для модели, приводят к сбоям во время выполнения.
  • «Командыset и add взаимозаменяемы для навыков». Команда set заменяет все привязки; использование её вместо add незаметно удаляет возможности.

Ссылки

Файл references/creating-agents-source-map.md сопоставляет каждый из приведённых выше контрактов с его номером файла и строкой в текущем дереве, эффектом во время выполнения и безопасной командой проверки, доступной только для чтения. »

Посмотреть на GitHub

Creating Multica agents

This is the contract for Multica's agent-creation path: what the create entry points accept, what the server validates and rejects, how each field is persisted, and which fields the daemon actually reads at claim time. It is not a parameter manual — it states source-traced facts, and every claim is backed by file:line in references/creating-agents-source-map.md.

Quick start (read-only inspection)

These commands read state and have no side effects:

multica agent get <agent-id> --output json      # full persisted agent record
multica agent skills list <agent-id> --output json   # current skill bindings
multica agent env get <agent-id> --output json  # plaintext env (owner/admin only, agents denied)

agent get returns the persisted agent including runtime_id, model, thinking_level, service_tier, custom_args, has_custom_env, custom_env_key_count, and skills. It never returns plaintext custom_env.

Core model

An agent is a workspace-scoped row (table agent). Creation is a single POST /api/agents (multica agent create). At task claim time the daemon re-reads the agent row and assembles the runtime payload — so the persisted fields, not the create-time output, are what the agent runs on.

Two distinct text fields, often confused:

  • description is a catalog summary. It is stored and shown in listings; the daemon does NOT inject it into the agent's runtime prompt. Treat it as human-facing metadata only. Capped at 255 Unicode code points.
  • instructions is the runtime behavior contract. The daemon reads it at claim time and ships it to the provider as the agent's durable instructions. Persona, responsibilities, boundaries, output and escalation rules go here, not in description.

CLI / API entry points

Minimum create call (--name and --runtime-id are both required):

multica agent create --name <name> --runtime-id <runtime-id> \
  --description "<short catalog summary>" \
  --instructions "<runtime behavior contract>" \
  --output json

runAgentCreate builds a JSON body and posts it to /api/agents. It only adds a key when its flag was provided — description/instructions on a non-empty value, the rest (runtime-config, custom-args, model, thinking-level, service-tier, visibility, …) on the flag being Changed — so omitted flags fall through to server defaults rather than sending empty strings.

The HTTP body (CreateAgentRequest) accepts: name, description, instructions, avatar_url, runtime_id, runtime_config, custom_env, custom_args, model, thinking_level, service_tier, visibility, max_concurrent_tasks, mcp_config.

Field contracts

Defaults when omitted: runtime_config{}, custom_env{}, custom_args[], avatar_url → a random emoji:<glyph>, visibilityprivate, max_concurrent_tasks6 (all materialized server-side before the insert). custom_args/runtime_config are typed []string/any and marshaled as-is — the JSON-shape rejection happens in the CLI, not the create handler.

thinking_level is validated only at the provider level: fixed-catalog providers reject an unrecognized literal, while dynamic-catalog providers such as Codex/OpenCode accept a syntactically safe token. A value unsupported for the chosen model is NOT rejected here — the daemon checks its local model catalog at execution time, logs a warning, and omits the incompatible override.

Set it from the CLI with --thinking-level on agent create and agent update, mirroring --model: the flag is a thin pass-through to the top-level thinking_level field, and on update an empty string (--thinking-level "") clears it back to the runtime default. The CLI deliberately does not enumerate the valid levels — they are runtime/model-specific (Claude currently uses low|medium|high|xhigh|max; Codex values are discovered from the runtime's model catalog). It forwards the token, the server applies the provider's fixed-enum or safe-token gate, and the daemon performs the exact model/level check. A runtime whose provider has no thinking concept rejects any non-empty value with a 400.

service_tier is the matching first-class Codex speed control. Set it with --service-tier <catalog-id> on create/update; use --service-tier "" on update to clear it. The runtime model catalog owns both availability and display copy (currently priority, shown as Fast). The server accepts safe future Codex catalog IDs, while the daemon verifies the exact model/tier pair before execution and omits a stale incompatible override. Agents without an explicit model fail closed because the effective config.toml model is unknown.

model vs custom_args

model is a first-class persisted column the daemon reads directly. custom_args are raw provider CLI args. The CLI help notes that some providers (codex app-server, openclaw) reject --model inside custom_args — but that is documented CLI guidance, not a server-enforced invariant; nothing in the create handler inspects custom_args for a model flag.

Env & secrets

custom_env is secret material. The CLI offers three input channels; two keep secrets out of shell history and the process list:

multica agent create --name <name> --runtime-id <runtime-id> --custom-env-stdin --output json
multica agent create --name <name> --runtime-id <runtime-id> --custom-env-file <0600-json> --output json

--custom-env-stdin reads the JSON object from stdin; --custom-env-file reads it from a file (suggested mode 0600). The third channel, --custom-env <json>, puts the value on the command line where shell history and ps can see it — avoid it for real secrets.

Read-side facts (these are the wrong assumptions to avoid):

  • Agent resources never expose plaintext custom_env. agent list/get/create/update and WS events return only has_custom_env (bool) and custom_env_key_count (int).
  • Reading plaintext values requires the dedicated GET /api/agents/{id}/env endpoint (multica agent env get). It is gated to workspace owner/admin members, and agent actors are denied regardless of the backing member's role — a running agent cannot read another agent's secrets.
  • Writing values after creation does NOT go through agent update. The generic update handler rejects any custom_env field with a 400 ("use PUT /api/agents/{id}/env"). Plaintext env writes are handled by PUT /api/agents/{id}/env (multica agent env set), which is owner/admin-only and writes an audit row.

mcp_config

mcp_config is the agent's MCP server configuration (a JSON object such as {"mcpServers": {…}}). It is also secret material — MCP entries routinely embed API tokens — and offers the same three input channels as custom_env, on BOTH agent create and agent update:

multica agent create --name <name> --runtime-id <runtime-id> --mcp-config-file <0600-json> --output json
multica agent update <agent-id> --mcp-config-stdin --output json
multica agent update <agent-id> --mcp-config 'null'   # clears the config

--mcp-config-stdin / --mcp-config-file keep the value out of shell history and ps; the inline --mcp-config <json> does not. The CLI requires a JSON object or the literal null; a top-level array or primitive is rejected client-side, and empty stdin/file input errors rather than silently clearing.

Two ways mcp_config differs from custom_env:

  • It IS settable through agent update. Unlike custom_env, mcp_config has no dedicated audited endpoint — the generic PUT /api/agents/{id} accepts it. Tri-state per the raw request body: field omitted → no change; null → clear; object → replace.
  • It is serialized on read, but redacted. agent get/list return mcp_config only to callers allowed to view agent secrets; otherwise the field is null and mcp_config_redacted is true. Agent actors never see it, and a workspace may force redaction for everyone.

Provider support is not uniform: Qwen Code accepts a managed mcp_config through a daemon-owned 0600 temporary JSON file passed with --mcp-config; it is removed when the run exits. Leave the field unset (null) to inherit Qwen Code native settings.

Skill binding

Creating an agent does NOT bind any workspace skill — binding is a separate call after the agent exists. Two distinct verbs:

  • add is additive — it merges the given ids with existing bindings (POST /api/agents/{id}/skills/add).
  • set is replace-all — it overwrites the entire binding list with exactly the given ids (PUT /api/agents/{id}/skills); --skill-ids '' clears all.
multica agent skills add <agent-id> --skill-ids <skill-id> --output json
multica agent skills list <agent-id> --output json

At claim time the daemon assembles the agent's skills as workspace-bound skills FIRST, then appends the platform built-in skills. LoadAgentSkills loads each bound skill's content plus its supporting files; built-in skills are embedded at compile time and loaded from SKILL.md + sibling files. Both reach the provider as skill content — which is why capability belongs in a bound skill, not pasted into instructions.

Side effects needing approval

Read-only (safe): agent get, agent skills list, agent env get.

State-changing (require an explicit instruction — do not run speculatively):

  • multica agent create — inserts a new agent row.
  • multica agent skills add / set — mutate bindings (set is destructive: it drops bindings not in the new list).
  • multica agent env set — overwrites the full custom_env map and writes an audit row.

Common wrong assumptions

  • "description is the prompt." It is not — only instructions reaches the runtime. A rich description with empty instructions yields a named shell with no operating contract.
  • "Create binds the agent's skills." It does not; bind explicitly afterward.
  • "agent update can rotate env." It cannot — it 400s on custom_env; use the env endpoint.
  • "mcp_config behaves like custom_env on update." It does not — mcp_config IS settable via agent update (--mcp-config), with --mcp-config null to clear; only custom_env is gated behind the dedicated env endpoint.
  • "agent get shows env values." It shows only has_custom_env and custom_env_key_count.
  • "An invalid thinking_level/model combo is caught at create." Only an unknown provider-level literal is — model-specific gaps fail at run time.
  • "set and add are interchangeable for skills." set replaces all bindings; using it when you meant add silently removes capabilities.

References

references/creating-agents-source-map.md maps every contract above to its file:line on the current tree, the runtime effect, and a safe read-only verification command.

Все файлы

0 файлов

Установить multica-creating-agents

Скачайте файлы навыков и распакуйте их в каталог .claude/skills/.

Скачать ZIP

Клонируйте репозиторий и скопируйте файлы навыка в свой проект.

git clone https://github.com/multica-ai/multica/tree/main/server/internal/service/builtin_skills/multica-creating-agents # Copy the skill folder to .claude/skills/ or .codex/skills/

Копировать Копировать
Быстрая настройка: Скопируйте папку со скиллом в каталог .claude/skills/ — Claude автоматически обнаружит и начнет использовать этот скилл
Репозиторий multica-ai/multica

Похожие навыки

tilemaps
Обновлено время 4 августа 2026 г.
v4-new-features
Обновлено время 4 августа 2026 г.
agent-github-pr-manager
Обновлено время 3 августа 2026 г.
pixijs-application
Обновлено время 4 августа 2026 г.
OR