К содержимому

Устройство

Создать, посмотреть и сбросить идентичность устройства этой установки, не трогая локальные данные.

Устройство

Идентичность устройства — локальная идентичность этой установки. Её создают офлайн, до любого аккаунта, и она остаётся здесь, даже если вы никогда не войдёте. Закрытый ключ доказывает, с какого устройства пришло позднее событие синхронизации или attestation.

Это не паспорт устройства и не облачная сессия. Паспорт описывает окружение. Сессии может не быть вовсе. Если сложить эти три вещи в одну, «ещё нет аккаунта» и «ещё нет идентичности устройства» выглядели бы одинаково, а следующие шаги у них разные.

Команды

КомандаMutabilityConfirmationКогда
ai-stp device initapplynoneсоздать идентичность этой установки или вернуть существующую
ai-stp device showreadnoneпоказать идентичность устройства и где хранится ключ
ai-stp device resetdestructiveexplicit_flagвывести эту идентичность из строя и создать новую

device init идемпотентен: второй запуск возвращает идентичность, которую сделал первый. device show ничего не создаёт. device reset — другая команда. Она destructive, требует --confirm и не является способом повторить doctor.

Типичный путь

ai-stp device init --json
ai-stp device show --json

Для локальной работы аккаунт не нужен. Нужна эта идентичность и затем паспорт разработчика. См. Паспорта.

Закрытый ключ живёт в секретном хранилище операционной системы. Если хранилище недоступно, CLI говорит, что отступил к файлу, и не скрывает этот факт. credential_store тогда file, а не os_keyring, а credential_store_detail называет почему.

Не запускайте device reset потому, что doctor сообщил, что идентичности нет. Исправление «никогда не создавали» — device init. Reset — чтобы вывести из строя ключ, который эта машина больше не должна держать.

device init

Создать идентичность этой установки или вернуть существующую.

ai-stp device init --json

Первому запуску не нужны sudo и аккаунт. Если идентичность уже есть, команда возвращает её. Ключ она не ротирует. Устройство на платформе она не регистрирует — это происходит при Входе.

Если секретное хранилище не может держать ключ, конверт всё равно успешен, и предупреждение говорит об этом. Читайте warnings. Не считайте откат к файлу молчаливым.

device show

Показать идентичность устройства и где хранится ключ.

ai-stp device show --json

Это чтение. Если идентичности нет, команда отказывает с AI_STP_NOT_FOUND, а next_actions называет device init. Наблюдение не должно создавать состояние.

Закрытого ключа в конверте нет и напечатать его нельзя по построению. Видно публичный материал: идентификатор, открытый ключ, отпечаток и место, где хранится секрет.

device reset

Вывести эту идентичность устройства из строя и создать новую.

ai-stp device reset --confirm --json

--confirm обязателен. Без него команда отказывает с AI_STP_USER_DECISION_REQUIRED. Это решение, а не сломанный флаг.

Выведенный из строя закрытый ключ уничтожается и не восстанавливается. Выведенный device_id запоминается, чтобы он не вернулся. Локальные данные — реестр, паспорта, кэшированные байты каталога, индексы проектов — не трогаются. «Не тронуты» не значит «обратимо»: любой облачный аккаунт, который доверял старому ключу, должен одобрить новый, то есть нужен новый вход.

Reset — это не:

  • повтор device init;
  • способ «починить» doctor;
  • выход из сессии (см. auth logout);
  • заводской сброс установки.

После reset в retired_device_ids новой идентичности есть старый идентификатор. Облачный доступ сам не возобновляется. Нужен новый вход, и аккаунт должен одобрить новый ключ. Локальные паспорта, реестр и кэшированные байты каталога остаются. Они теперь привязаны к другой идентичности устройства; sync будет считать это другим подписантом.

=== "Нужна идентичность" bash ai-stp device init --json ai-stp device show --json

=== "Нужно вывести ключ из строя" bash ai-stp device reset --confirm --json ai-stp device show --json

Только после того, как человек решил уничтожить текущий ключ.

Что содержит успешный конверт

Все три команды возвращают одну форму в data:

ПолеЧто это
device_idидентификатор устройства этой установки
public_keyоткрытая половина ключа устройства
key_fingerprintкороткий отпечаток этого ключа
stateactive или revoked
credential_storeos_keyring или file
credential_store_detailпочему выбрано это хранилище
created_atкогда создана эта идентичность
retired_device_idsидентификаторы, которые эта установка вывела из строя
schema_versionmajor схемы этого отчёта

Конверт также несёт ok, warnings, next_actions, request_id, operation_id и schema_version. После init или reset предупреждение об откате к файлу всё равно успех.

Идентичность устройства — не паспорт устройства

ОбъектГруппа командЧто держит
Идентичность устройстваdevicedevice_id, пара ключей, отзыв
Паспорт устройстваpassport deviceнаблюдаемое окружение: ОС, архитектура, установленные harness
Облачная сессияauthдержит ли это устройство сейчас учётные данные аккаунта

device show не печатает операционную систему и версии harness. Они принадлежат passport device show. auth status не печатает device_id как доказательство сессии: устройство после init есть всегда, сессии может не быть.

Чего эти команды никогда не делают

  • не печатают и не экспортируют закрытый ключ;
  • не кладут секрет в паспорт, журнал или файл конфигурации;
  • не удаляют локальный реестр и кэшированные байты каталога;
  • не входят в аккаунт и сами не регистрируют устройство на платформе;
  • не пишут target harness.

Типичные отказы

Что видноЧто это значитЧто делать
AI_STP_NOT_FOUND на device showидентичность никогда не создавалиai-stp device init --json
AI_STP_USER_DECISION_REQUIRED на device resetне было --confirmai-stp device reset --confirm --json после явного решения
credential_store равен fileсекретное хранилище ОС было недоступночитать credential_store_detail; это сообщают, а не скрывают
doctor сообщает, что устройства нетdevice show отказал бы так жеdevice init, не device reset
облачные вызовы падают после resetстарый ключ выведен из строяtask start --intent account --idempotency-key account-session-01 --json

Связанные страницы

СтраницаЗачем
Быстрый старт для человекаидентичность первого запуска связным текстом
Наблюдениеdoctor сообщает device_identity
Паспортапаспорт устройства против идентичности
Входпривязка этого устройства к аккаунту
Синхронизациясобытия, которые подписывает это устройство
Устройства на сайтета же идентичность, как её показывает сайт
Диагностикасбои секретного хранилища и PATH

!!! note "Флаги из ai-stp help --agent --json" Если help --agent расходится с флагом на этой странице, прав CLI. Необязательные флаги здесь не перечислены. Читайте их из дескриптора. device reset требует --confirm.