Устройство
Создать, посмотреть и сбросить идентичность устройства этой установки, не трогая локальные данные.
Устройство
Идентичность устройства — локальная идентичность этой установки. Её создают офлайн, до любого аккаунта, и она остаётся здесь, даже если вы никогда не войдёте. Закрытый ключ доказывает, с какого устройства пришло позднее событие синхронизации или attestation.
Это не паспорт устройства и не облачная сессия. Паспорт описывает окружение. Сессии может не быть вовсе. Если сложить эти три вещи в одну, «ещё нет аккаунта» и «ещё нет идентичности устройства» выглядели бы одинаково, а следующие шаги у них разные.
Команды
| Команда | Mutability | Confirmation | Когда |
|---|---|---|---|
ai-stp device init | apply | none | создать идентичность этой установки или вернуть существующую |
ai-stp device show | read | none | показать идентичность устройства и где хранится ключ |
ai-stp device reset | destructive | explicit_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 | короткий отпечаток этого ключа |
state | active или revoked |
credential_store | os_keyring или file |
credential_store_detail | почему выбрано это хранилище |
created_at | когда создана эта идентичность |
retired_device_ids | идентификаторы, которые эта установка вывела из строя |
schema_version | major схемы этого отчёта |
Конверт также несёт ok, warnings, next_actions, request_id,
operation_id и schema_version. После init или reset
предупреждение об откате к файлу всё равно успех.
Идентичность устройства — не паспорт устройства
| Объект | Группа команд | Что держит |
|---|---|---|
| Идентичность устройства | device | device_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 | не было --confirm | ai-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.