Команды заданий и облака 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 Service без путей |
| — |
| Отправить один документ EngineJobV1 через выбранный Job Service |
|
|
| Автономно выполнить клиентскую предварительную проверку одного задания RTL на CPU и границы локального исходного файла |
|
|
| Прочитать текущее состояние одного задания |
|
|
| Опросить задание до достижения конечного авторитетного состояния |
|
|
| Прочитать конечный результат одного задания |
|
|
| Запросить отмену одного задания |
|
|
| Перечислить ссылки на артефакты результата без загрузки байтов |
<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 полон.
{
"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:CloudEngineJobartifactdownloadisdisabled;pass--allow-artifact-downloadexplicitly.Без
--artifact-id:--artifact-idisrequiredwith--allow-artifact-download.Без
--output-dir:--output-dirisrequiredwith--allow-artifact-download.
--output-dir должен быть абсолютным каталогом. --artifact-id берётся из списка выходных данных завершённого EngineResultV1.
Отказы, связанные с исполнителем
Три группы параметров привязаны к исполнителю и отклоняются вне него. Каждое из этих решений принимается до запуска процесса или отправки запроса:
Команда | Отклоняемое сочетание | Сообщение | Код завершения |
|---|---|---|---|
|
|
|
|
|
|
|
|
|
| См. ниже |
|
Старый локальный/частный путь указывает на выведенный из эксплуатации адаптер alti-engine-job, который отсутствует в перечне 24 исполнителей выпуска. Принимаемый синтаксис исполнителя и переменные конечных точек не подтверждают поставку локального/частного Job Service. Используйте встроенный путь Cloud только там, где сервис и учётная запись активны, либо документированную прямую команду локального движка.
Машиночитаемые ошибки заданий
job подкоманды и analyze run, вызванные с --json, при ошибке выдают структурированную оболочку ошибки вместо простого сообщения:
{
"schema": "altifigence.cli.error.v1",
"error": {
"code": "ENGINE_JOB_JSON_INVALID",
"message": "The engine job JSON is invalid.",
"retryable": false
}
}
Полный набор кодов:
Код | Условие возникновения |
|---|---|
| Документ превышает 8388608 байт |
| Документ не является допустимым JSON |
|
|
| Размещение выполнения не равно |
| Идентификатор задания пуст |
| Идентификатор задания превышает 256 байт или использует неподдерживаемые символы |
| Идентификатор артефакта пуст |
| Идентификатор организации пуст |
| Документ не соответствует поддерживаемой форме задания RTL на CPU |
| Не удалось подготовить или загрузить исходники |
| Не удалось загрузить артефакт |
| Непригодный тайм-аут ожидания или интервал опроса |
| До истечения тайм-аута ожидания конечное состояние не достигнуто |
| Не удалось прочитать ответ сервиса |
| Идентификатор задания в ответе не совпадает с запросом |
| Сам запрос завершился ошибкой |
| Резервный вариант, если более точный код неприменим |
retryable имеет значение false для каждой ошибки в этом выпуске. Эта оболочка выдаётся для пространства имён job и analyze run. Другие семейства команд используют собственные контракты ошибок/квитанций; см. Справочник команд.
analyze run и evolve run
analyze run и явные нативные подкоманды Evolve обрабатываются локальным парсером. Однословные клиентские действия analyze и evolve имеют отдельные контракты.
Команда | Обязательные | Другие параметры | Назначение |
|---|---|---|---|
|
|
| Отправить поддерживаемое задание анализа Cloud CPU RTL |
|
| — | Выполнить одну типизированную оболочку операции готовности, анализа 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. Проверка контракта никогда не предоставляет доступ к организации и не заменяет текущие разрешения сервиса.
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/тела не подставляются. Это описание адаптера устаревшего сервиса, а не утверждение, что текущий нативный настольный интерфейс использует эти конечные точки или что публичный рабочий сервис включён.
Команда после | Назначение |
|---|---|
| Проверить эксперименты сервиса и состояние выполнения |
| Отправить типизированный запрос владельца; оценка не запускает работу |
| Явный запрос отмены |
| Переименовать ровно один каталог эксперимента |
| Явно и безвозвратно рекурсивно удалить этот каталог эксперимента |
| Прочитать один точно указанный файл результата |
| Типизированные операции отправки на синтез; идентификаторы/параметры см. в справке конечных команд |
| Операции Flow Analysis, включённые владельцем |
| Фиксированный GET |
| Фиксированный POST |
Поиск принимает --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.).
Рабочие области и проекты
Команда | Обязательные | Другие параметры |
|---|---|---|
| — |
|
|
| — |
|
|
|
| — |
|
|
| — |
|
|
|
|
| — |
Диалоговый RTL
Команда | Обязательные | Другие параметры |
|---|---|---|
| — | — |
|
|
|
| — |
|
|
| — |
chat models сопоставляется до chat, поскольку диспетчер предпочитает самый длинный совпадающий путь команды. alti chat требует кредитов и записывается в журнал аудита на сервере.
Действия оценки и только планирования
Команда | Обязательные | Другие параметры | Выполняет |
|---|---|---|---|
|
|
| да |
|
|
| нет — только план |
|
|
| нет — только план |
|
|
| нет — только план |
--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, а сервер возвращает структурированный план диспетчеризации вместо запуска.
Артефакты, свидетельства, исполнители и оплата
Команда | Обязательные | Другие параметры |
|---|---|---|
| — |
|
|
| — |
| — |
|
| — |
|
| — | — |
| — |
|
| — |
|
Реестр MCP
Команда | Обязательные |
|---|---|
| — |
| — |
Эти действия читают объявленный сервером реестр инструментов MCP и список разрешённых инструментов организации. Они не связаны с alti mcp serve, которая перехватывается до обоих диспетчеров и запускает локальный сервер stdio. См. MCP.
Одно действие манифеста недоступно
Манифест определяет однословное действие trace для сводок трасс. Его невозможно вызвать, поскольку trace обрабатывается локальным парсером как пространство имён движка. alti trace доходит до локального парсера, не находит подкоманду и завершается с кодом 2; alti trace --limit 5 тоже доходит до него и завершается с кодом 2 из-за неизвестного аргумента.
Действие по-прежнему присутствует в выводе alti commands, поэтому там двадцать пять действий, а доступных команд — двадцать четыре. Если вы программно перечисляете манифест, отфильтруйте это действие.
Выбор рабочего процесса Cloud
Потребность | Рабочий процесс |
|---|---|
Чтение или операции с сохранённым проектом Cloud | Нативный сеанс |
Отправка оболочки локального исходника через клиент заданий | Явные контракты загрузки исходников и результатов заданий на этой странице. |
Анализ сохранённого файла RTL в браузере | Анализ RTL в Cloud с оценкой, заданием и сохранённым результатом. |
Проверка проекта через ассистента | MCP с конкретными предоставленными инструментами. |
Не используйте идентификатор, хеш или квитанцию из другого рабочего процесса, если его контракт явно их не принимает. Повторно подключённый терминал — всё ещё существующий удалённый сеанс; потерянный ответ отправки — всё ещё потенциально существующее задание. Проверьте состояние до создания дубликата.