Команды заданий и облака CLI

Работа с заданиями Cloud, нативными входом/поиском/терминалом DDS, устаревшими HTTP-операциями и манифестом действий клиента.

Обзор

На этой странице описаны передача заданий, нативные сеансы DDS Cloud и операции рабочей области, явный адаптер устаревшего HTTP-сервиса и 25 действий клиентского манифеста. Нативные операции Evolve имеют отдельные контракты запросов.

Сначала прочитайте Область команд CLI с правилом маршрутизации, двумя наборами кодов завершения и оболочками квитанций. Пространства имён движков, разбираемые локально, описаны на странице Команды движков CLI. Текущие ограничения выпуска см. в Справочнике команд CLI, а правила чтения манифеста — на странице Контракт действий и возможностей.

Пространство имён job

job охватывает автономную предварительную проверку клиента и передачу заданий через Job Service. Оно обрабатывается локальным парсером, поэтому -h работает, а диапазоны значений проверяются до любых обращений.

Шесть из восьми подкоманд принимают --runner <local|cloud|private> со значением по умолчанию cloud. Этот флаг выбирает Job Service для взаимодействия. Это не флаг исполнителя движка в rtl compile и подобных командах. job readiness и job validate вообще не имеют --runner и никогда не обращаются к сети.

Команда

Обязательные

Другие параметры

Назначение

job readiness

—

—

Сообщить готовность продуктового Job Service без путей

job submit

—

--runner (по умолчанию cloud), --job <JOB> (по умолчанию -), --allow-source-upload, --workspace-root <ABSOLUTE_PATH>, --source <RELATIVE_PATH>

Отправить один документ EngineJobV1 через выбранный Job Service

job validate

--workspace-root <ABSOLUTE_PATH>, --source <RELATIVE_PATH>

--job <JOB> (по умолчанию -)

Автономно выполнить клиентскую предварительную проверку одного задания RTL на CPU и границы локального исходного файла

job status <JOB_ID>

<JOB_ID>

--runner (по умолчанию cloud)

Прочитать текущее состояние одного задания

job wait <JOB_ID>

<JOB_ID>

--runner, --timeout-seconds <N> (по умолчанию 300, диапазон 1..=86400), --poll-interval-ms <N> (по умолчанию 1000, диапазон 100..=60000)

Опросить задание до достижения конечного авторитетного состояния

job result <JOB_ID>

<JOB_ID>

--runner, --allow-artifact-download, --artifact-id <ARTIFACT_ID>, --output-dir <ABSOLUTE_PATH>

Прочитать конечный результат одного задания

job cancel <JOB_ID>

<JOB_ID>

--runner

Запросить отмену одного задания

job artifacts <JOB_ID>

<JOB_ID>

--runner

Перечислить ссылки на артефакты результата без загрузки байтов

<JOB_ID> и --artifact-id могут начинаться с дефиса без разделителя --; парсер принимает значения с начальным дефисом для этих аргументов.

Два параметра с проверкой диапазона в job wait проверяются парсером, а не сервисом:

Текст

$ alti job wait --poll-interval-ms 99 job-123
error: invalid value '99' for '--poll-interval-ms <POLL_INTERVAL_MS>': 99 is not in 100..=60000

Это приводит к завершению с кодом 2.

job readiness

job readiness отвечает без учётных данных и сети. В этом выпуске это фиксированная проекция без путей: каждый компонент сообщает configured: false и ready: false, а массив blockers полон.

JSON
{
  "schema": "altifigence.engine-product-host-readiness.v1",
  "product_id": "altifigence-cli",
  "authority": { "configured": false, "ready": false },
  "admission": { "configured": false, "ready": false },
  "dispatcher": { "configured": false, "ready": false },
  "executor": { "configured": false, "ready": false },
  "artifact_readback": { "configured": false, "ready": false },
  "ready": false,
  "blockers": [
    "authority_unavailable",
    "admission_unavailable",
    "dispatcher_unavailable",
    "executor_unavailable",
    "artifact_readback_unavailable"
  ]
}

Команда завершается с кодом 0. Значение 0 здесь означает, что на вопрос о готовности получен ответ, а не что что-либо готово.

job validate

job validate — автономная предварительная проверка, пошагово описанная на странице Первый успешный запуск CLI. Она читает документ EngineJobV1 из --job (или stdin, когда --job имеет значение - или опущен), проверяет его на точное соответствие клиентской оболочке Cloud CPU RTL и хеширует один локальный исходный файл. Она не получает учётные данные, не создаёт клиент и ни к чему не обращается.

Схема её квитанции — altifigence.cli.engine-job-preflight.v1. При успехе status имеет значение client_preflight_valid, submitted имеет значение false, server_authority_verified имеет значение false, job_schema имеет значение altifigence.engine.job.v1, execution_placement имеет значение cloud, блок operation имеет значение rtl-engine / analyze / rtl-analysis-request.v1, а массив source содержит workspace_uri, sha256, а size_bytes.

Документ задания читается с жёстким ограничением в 8388608 байт. При превышении команда выдаёт ошибку EngineJobV1 JSON exceeds the CLI limit.

Отправка в Cloud требует явного согласия на передачу исходников

При --runner cloud обе команды job submit и analyze run требуют одновременного указания всех трёх параметров загрузки исходников. В этом выпуске невозможно отправить задание Cloud CPU RTL без них:

Текст

$ alti job submit --job job.json
error: Cloud Engine Job source upload is disabled; pass --allow-source-upload explicitly.

Это приводит к завершению с кодом 1. При --allow-source-upload без --workspace-root сообщение будет --workspace-root is required with --allow-source-upload.; аналогично для --source.

--workspace-root должен быть абсолютным. --source — переносимый относительный путь внутри <workspace-root>/inputs.

Загрузка облачных артефактов требует отдельного согласия

В job result с --runner cloud три параметра артефактов образуют группу. Передача любого из них переключает команду в режим загрузки и требует наличия всех трёх:

  • Без --allow-artifact-download: Cloud Engine Job artifact download is disabled; pass --allow-artifact-download explicitly.

  • Без --artifact-id: --artifact-id is required with --allow-artifact-download.

  • Без --output-dir: --output-dir is required with --allow-artifact-download.

--output-dir должен быть абсолютным каталогом. --artifact-id берётся из списка выходных данных завершённого EngineResultV1.

Отказы, связанные с исполнителем

Три группы параметров привязаны к исполнителю и отклоняются вне него. Каждое из этих решений принимается до запуска процесса или отправки запроса:

Команда

Отклоняемое сочетание

Сообщение

Код завершения

job submit

--runner local или private с любым из --allow-source-upload, --workspace-root, --source

Local and Private Engine Job submission accepts only --job; Cloud source-upload options are not supported.

2

job result

--runner local или private с любым из --allow-artifact-download, --artifact-id, --output-dir

Local and Private Engine Job results are references-only; artifact download options are available only with --runner cloud.

2

job status, wait, cancel, artifacts, result

--runner cloud имеет встроенный клиент; для двух остальных упакованного адаптера нет

См. ниже

2

Старый локальный/частный путь указывает на выведенный из эксплуатации адаптер alti-engine-job, который отсутствует в перечне 24 исполнителей выпуска. Принимаемый синтаксис исполнителя и переменные конечных точек не подтверждают поставку локального/частного Job Service. Используйте встроенный путь Cloud только там, где сервис и учётная запись активны, либо документированную прямую команду локального движка.

Машиночитаемые ошибки заданий

job подкоманды и analyze run, вызванные с --json, при ошибке выдают структурированную оболочку ошибки вместо простого сообщения:

JSON
{
  "schema": "altifigence.cli.error.v1",
  "error": {
    "code": "ENGINE_JOB_JSON_INVALID",
    "message": "The engine job JSON is invalid.",
    "retryable": false
  }
}

Полный набор кодов:

Код

Условие возникновения

ENGINE_JOB_JSON_TOO_LARGE

Документ превышает 8388608 байт

ENGINE_JOB_JSON_INVALID

Документ не является допустимым JSON

ENGINE_JOB_SCHEMA_UNSUPPORTED

schema не равно altifigence.engine.job.v1

ENGINE_JOB_PLACEMENT_UNSUPPORTED

Размещение выполнения не равно cloud

ENGINE_JOB_ID_EMPTY

Идентификатор задания пуст

ENGINE_JOB_ID_INVALID

Идентификатор задания превышает 256 байт или использует неподдерживаемые символы

ENGINE_JOB_ARTIFACT_ID_EMPTY

Идентификатор артефакта пуст

ENGINE_JOB_ORG_ID_EMPTY

Идентификатор организации пуст

ENGINE_JOB_CPU_RTL_UNSUPPORTED

Документ не соответствует поддерживаемой форме задания RTL на CPU

ENGINE_JOB_SOURCE_UPLOAD_FAILED

Не удалось подготовить или загрузить исходники

ENGINE_JOB_ARTIFACT_DOWNLOAD_FAILED

Не удалось загрузить артефакт

ENGINE_JOB_WAIT_CONFIGURATION_INVALID

Непригодный тайм-аут ожидания или интервал опроса

ENGINE_JOB_WAIT_TIMED_OUT

До истечения тайм-аута ожидания конечное состояние не достигнуто

ENGINE_JOB_API_RESPONSE_INVALID

Не удалось прочитать ответ сервиса

ENGINE_JOB_API_RESPONSE_ID_MISMATCH

Идентификатор задания в ответе не совпадает с запросом

ENGINE_JOB_API_REQUEST_FAILED

Сам запрос завершился ошибкой

ENGINE_JOB_COMMAND_FAILED

Резервный вариант, если более точный код неприменим

retryable имеет значение false для каждой ошибки в этом выпуске. Эта оболочка выдаётся для пространства имён job и analyze run. Другие семейства команд используют собственные контракты ошибок/квитанций; см. Справочник команд.

analyze run и evolve run

analyze run и явные нативные подкоманды Evolve обрабатываются локальным парсером. Однословные клиентские действия analyze и evolve имеют отдельные контракты.

Команда

Обязательные

Другие параметры

Назначение

analyze run

--allow-source-upload, --workspace-root <ABSOLUTE_PATH>, --source <RELATIVE_PATH>

--runner (по умолчанию cloud), --job <JOB> (по умолчанию -)

Отправить поддерживаемое задание анализа Cloud CPU RTL

evolve run

--request <PATH_OR_DASH>

—

Выполнить одну типизированную оболочку операции готовности, анализа RTL или поиска CX

analyze run принимает тот же набор параметров, что и job submit, и следует тому же правилу загрузки исходников Cloud. Есть одно отличие: команда принимает --runner, но отклоняет всё, кроме cloud.

Текст

$ alti analyze run --runner local --job job.json
error: Local and Private job service adapters are not available; use --runner cloud.

Это приводит к завершению с кодом 1.

evolve run не имеет --runner, --project или передачи аргументов. Она читает один документ запроса — --request - читает stdin — и передаёт его упакованному движку alti-evolve, чей код завершения передаётся напрямую:

Текст

$ echo '' | alti evolve run --request -
alti-evolve: invalid request JSON: EOF while parsing a value at line 1 column 0

Это передача собственного кода завершения 2 имеет значение alti-evolve, а не ошибка аргументов CLI. В установке, где движок не найден, та же команда завершается с кодом 127 с квитанцией, у которой status имеет значение unavailable.

evolve capabilities, evolve analyze, evolve cx-search, evolve measured-ppa, а evolve artifact также маршрутизируются. Например, evolve analyze SAVED_RTL --top TOP [--project ABS] анализирует сохранённый исходник. Допуск/готовность/предварительная проверка измеряемых PPA не создают измеренные PPA.

Публичная операция активности GPU — compute rtl-evolve --request FILE_OR_DASH. У неё отдельная оболочка нативной генерации и явная политика эталонного CPU/CUDA. См. Команды движков вместо передачи ей запроса evolve run.

Digital Design Studio Cloud

Используйте ide cloud login, затем ide cloud whoami, чтобы проверить личность в нативном сеансе. refresh и logout управляют этим сеансом; --session-dir выбирает частную альтернативу варианту по умолчанию. См. Аутентификация CLI.

ide cloud contract --request FILE_OR_DASH автономно проверяет типизированный запрос проекта/участника/исходников/рабочей области. ide cloud run --request FILE_OR_DASH отправляет этот запрос через нативный API с сохранённым сеансом. Запросы, содержащие исходники, требуют --allow-source-upload. Проверка контракта никогда не предоставляет доступ к организации и не заменяет текущие разрешения сервиса.

Bash
alti ide cloud search --org "$ORG_ID" --project "$PROJECT_ID" \
  --query 'module' --limit 80
alti ide cloud terminal --org "$ORG_ID" --project "$PROJECT_ID" \
  --name cli --max-seconds 60

Используйте реальные UUID организаций/проектов, к которым у вас есть разрешённый доступ. Поиск принимает --match-case, --whole-word, консервативный вариант фиксированной ширины --regex, --limit 1..500, а --timeout-seconds 1..120. Он использует существующие ограниченные маршруты files/read и сохранённое содержимое с лимитами: 500 файлов, 4 МиБ на файл, 16 МиБ суммарно и 1 МиБ вывода. Изменения манифеста/заголовка/поколения делают смешанный снимок недействительным. Возвращаемый contentHash хеширует точно прочитанный текст UTF-8 и для текущего владельца Cloud должен равняться fileVersion. Сохраняйте fileVersion и workspaceRevision как отдельные поля CAS.

Подключение к терминалу сохраняет транспорт WebSocket и текущую авторизацию. Оно передаёт байты stdout; статус отправляется в stderr даже с глобальным --json. Используйте --cursor для возобновления, --cols 2..500, --rows 1..200, а --max-seconds 1..300 для ограничения подключения. Отключение не является запросом на завершение постоянного PTY. Это выполнение в проекте Cloud, а не локальная оболочка CLI.

Устаревший сервис рабочей области DDS

ide service обращается к явно настроенному владельцу устаревшей рабочей области HTTP. Задайте --endpoint или ALTI_STUDIO_ENDPOINT и его существующий ALTI_STUDIO_SERVICE_SECRET в частной среде вызывающей стороны. Нативный сеанс Cloud, cookie браузера или произвольная переадресация URL/тела не подставляются. Это описание адаптера устаревшего сервиса, а не утверждение, что текущий нативный настольный интерфейс использует эти конечные точки или что публичный рабочий сервис включён.

Команда после ide service

Назначение

evolve runtime, evolve list, evolve get RUN_ID, evolve lineage RUN_ID

Проверить эксперименты сервиса и состояние выполнения

evolve start --request FILE_OR_DASH, evolve estimate --request FILE_OR_DASH

Отправить типизированный запрос владельца; оценка не запускает работу

evolve cancel RUN_ID

Явный запрос отмены

evolve rename-folder --from evolve/OLD --to evolve/NEW

Переименовать ровно один каталог эксперимента

evolve delete-folder evolve/FOLDER

Явно и безвозвратно рекурсивно удалить этот каталог эксперимента

evolve read-file evolve/FOLDER/RESULT_PATH

Прочитать один точно указанный файл результата

synthesis capability, synthesis submit, synthesis get, synthesis cancel

Типизированные операции отправки на синтез; идентификаторы/параметры см. в справке конечных команд

analysis run --request FILE_OR_DASH, analysis estimate --request FILE_OR_DASH

Операции Flow Analysis, включённые владельцем

workspace search --query TEXT

Фиксированный GET /api/search с сохранением хешей владельца и метаданных усечения

workspace replace --request FILE_OR_DASH

Фиксированный POST /api/search/replace ровно для одного файла, привязанного к CAS

Поиск принимает --match-case, --whole-word, консервативный вариант фиксированной ширины --regex, а --limit 1..1000 (по умолчанию 80). Допуск регулярных выражений намеренно принимает лишь подмножество синтаксиса JavaScript владельца; группы, альтернативы и квантификаторы отклоняются. Сопоставление на бэкенде остаётся ответственностью сервиса.

Замена принимает закрытый JSON-объект с обязательными query, replacement, paths: [one portable path], а expectedHashes: {same path: 64 hex digits}. Необязательный options содержит только логические значения matchCase, regex, а wholeWord. Необязательный match содержит тот же path и целое число с нумерацией от единицы line/column от 1 до 4194305. Опустите match, чтобы выполнить замену внутри выбранного файла, а не всей рабочей области. Получите хеш из текущего результата этого же сервиса.

Размер запросов — не более 64 КиБ, включая JSON-кодирование и текст замены. Неизвестные поля, несовпадающие ключи/пути хеша, недопустимые индексы, выход за пределы пути, ссылки за границы сервера и защищённые метаданные/исключённые из поиска пути не поддерживаются. CLI отклоняет неверные формы и защищённые пути до HTTP; проверки владения файловой системой и ссылок остаются у сервиса. Он никогда не выполняет локальную замену в рабочей области.

Ответы ограничены 8 МиБ. --timeout-seconds 1..3600 задаёт полный срок HTTP-запроса (по умолчанию 30); перенаправления и автоматические повторы отключены. altifigence.dds.service-receipt.v1 сохраняет HTTP-статус и тело, включая пустой успешный ответ DELETE. 409 остаётся конфликтом. CAS и атомарность бэкенда не являются гарантией между бэкендами, а хеши локального/облачного содержимого нельзя подставлять вместо ожидаемого этим сервисом хеша без соответствующего контракта.

Манифест действий

Всё, что не обрабатывается локальным парсером, поступает в диспетчер манифеста, сопоставляющий путь команды со встроенным customer-tools.v1.json. alti commands выводит весь манифест как один JSON-массив из двадцати пяти записей и завершается с кодом 0 без учётных данных.

Двадцать две записи помечены executes: true. Три — analyze, evolve, а verify — имеют статус executes: false и выводят примечание [plan-only] перед передачей выполнения. Только эти же три передают байты исходников и требуют явного --allow-source-upload.

Четырнадцать из двадцати пяти также имеют профиль remote_core; остальные имеют только local_extended. Значение этого профиля для доступности описано на странице Контракт действий и возможностей.

Каждое действие ниже читает ALTI_TOKEN и ALTI_ORG_ID из среды процесса до создания клиента и завершается с кодом 1 при отсутствии любой из переменных:

Текст

$ alti credits
Config error: ALTI_TOKEN is not set (org API key or access token).

Общие параметры действий получения списков

Несколько действий имеют общую форму пагинации: --limit <INTEGER> в диапазоне 1..=100, а --cursor <STRING>. Оба значения проверяются локально до запроса:

Текст

$ alti project ls --limit 101
Invalid value for --limit: outside allowed range.

Это приводит к завершению с кодом 2; такой же результат дают неизвестный флаг (Unknown option(s): --limti), отсутствие обязательного параметра (Missing required option(s): --projectId) и значение вне перечисления (Invalid value for --visibility: expected one of public, private.).

Рабочие области и проекты

Команда

Обязательные

Другие параметры

alti workspace ls

—

--limit, --cursor, --visibility <public|private>, --status <STRING>

alti workspace get

--workspaceId <STRING>

—

alti workspace create

--name <STRING>

--visibility <public|private>

alti project ls

—

--limit, --cursor, --workspaceId <STRING>

alti project get

--projectId <STRING>

—

alti project create

--name <STRING>

--workspaceId <STRING>

alti project usage

--projectId <STRING>

—

Диалоговый RTL

Команда

Обязательные

Другие параметры

alti chat models

—

—

alti chat

--message <STRING>

--projectId <STRING>, --model <STRING>

alti conversations ls

—

--limit, --cursor, --projectId <STRING>

alti conversations get

--conversationId <STRING>

—

chat models сопоставляется до chat, поскольку диспетчер предпочитает самый длинный совпадающий путь команды. alti chat требует кредитов и записывается в журнал аудита на сервере.

Действия оценки и только планирования

Команда

Обязательные

Другие параметры

Выполняет

alti roofline

--params <NUMBER>, --quantization <int4|int8|fp16|bf16|fp32>, --deviceId <STRING>

--modelName <STRING>

да

alti analyze

--target <STRING>, --rtl <STRING>

--allow-source-upload

нет — только план

alti evolve

--target <STRING>, --rtl <STRING>, --testbench <STRING>

--objective <STRING>, --generations <INTEGER>, --allow-source-upload

нет — только план

alti verify

--rtl <STRING>, --testbench <STRING>

--target <STRING>, --allow-source-upload

нет — только план

--rtl и --testbench — встроенные строки исходного кода с жёстким ограничением в 1048576 байт каждая, проверяемым локально:

Текст

$ alti analyze --target kv260-fpga --rtl "$(cat huge.sv)" --allow-source-upload
Invalid value for --rtl: exceeds size limit.

Это приводит к завершению с кодом 2. Без --allow-source-upload любая из этих трёх команд завершается с кодом 4 до создания клиента:

Текст

Source upload is disabled by default. Re-run with --allow-source-upload only
after reviewing the destination and input.

Эти три имеют статус executes: false, поэтому даже при явном согласии они выводят примечание [plan-only] в stderr, а сервер возвращает структурированный план диспетчеризации вместо запуска.

Артефакты, свидетельства, исполнители и оплата

Команда

Обязательные

Другие параметры

alti artifacts ls

—

--limit, --cursor, --product <STRING>, --platform <STRING>, --channel <stable|preview>

alti artifacts url

--artifactId <STRING>

—

alti evidence

—

--limit, --cursor, --workspaceId <STRING>, --status <STRING>

alti runners ls

—

--limit, --cursor, --kind <managed|private_aws|local>, --status <provisioning|online|offline|disabled>

alti credits

—

—

alti usage

—

--dimension <api_request|mcp_tool_invocation|cloud_job|storage_bytes|retention_day|parallelism_slot>, --periodFrom <STRING>, --periodTo <STRING>

alti billing

—

--product <local|online|compute|ai>

Реестр MCP

Команда

Обязательные

alti mcp tools

—

alti mcp allowlist

—

Эти действия читают объявленный сервером реестр инструментов MCP и список разрешённых инструментов организации. Они не связаны с alti mcp serve, которая перехватывается до обоих диспетчеров и запускает локальный сервер stdio. См. MCP.

Одно действие манифеста недоступно

Манифест определяет однословное действие trace для сводок трасс. Его невозможно вызвать, поскольку trace обрабатывается локальным парсером как пространство имён движка. alti trace доходит до локального парсера, не находит подкоманду и завершается с кодом 2; alti trace --limit 5 тоже доходит до него и завершается с кодом 2 из-за неизвестного аргумента.

Действие по-прежнему присутствует в выводе alti commands, поэтому там двадцать пять действий, а доступных команд — двадцать четыре. Если вы программно перечисляете манифест, отфильтруйте это действие.

Выбор рабочего процесса Cloud

Потребность

Рабочий процесс

Чтение или операции с сохранённым проектом Cloud

Нативный сеанс ide cloud и типизированные операции.

Отправка оболочки локального исходника через клиент заданий

Явные контракты загрузки исходников и результатов заданий на этой странице.

Анализ сохранённого файла RTL в браузере

Анализ RTL в Cloud с оценкой, заданием и сохранённым результатом.

Проверка проекта через ассистента

MCP с конкретными предоставленными инструментами.

Не используйте идентификатор, хеш или квитанцию из другого рабочего процесса, если его контракт явно их не принимает. Повторно подключённый терминал — всё ещё существующий удалённый сеанс; потерянный ответ отправки — всё ещё потенциально существующее задание. Проверьте состояние до создания дубликата.