К содержимому
# Устройство
[Home](/ru/ai)
[Catalog](/ru/ai/catalog)
Создать, посмотреть и сбросить идентичность устройства этой установки, не трогая локальные данные.
## Pages
[Главная](/ru/ai/docs)
### Быстрый старт
[Быстрый старт](/ru/ai/docs/quickstart)
[Для человека](/ru/ai/docs/quickstart/human)
[Для ИИ-агента](/ru/ai/docs/quickstart/agent)
[Харнессы](/ru/ai/docs/harnesses)
[Понятия](/ru/ai/docs/concepts)
[Каталог](/ru/ai/docs/catalog)
### CLI
[CLI](/ru/ai/docs/cli)
[Карта команд](/ru/ai/docs/cli/commands)
[Наблюдение](/ru/ai/docs/cli/observe)
[Конфигурация](/ru/ai/docs/cli/config)
[Телеметрия](/ru/ai/docs/cli/telemetry)
[Устройство](/ru/ai/docs/cli/device)
[Паспорта](/ru/ai/docs/cli/passport)
[Вход](/ru/ai/docs/cli/auth)
[Согласие](/ru/ai/docs/cli/consent)
[Проект](/ru/ai/docs/cli/project)
[Toolchain](/ru/ai/docs/cli/toolchain)
[Harness](/ru/ai/docs/cli/harness)
[Agent Skill CLI](/ru/ai/docs/cli/skill)
[Реестр](/ru/ai/docs/cli/registry)
#### Компонент
[Обзор](/ru/ai/docs/cli/component)
[Обнаружение](/ru/ai/docs/cli/component-discover)
[Паспорт](/ru/ai/docs/cli/component-passport)
[Источник](/ru/ai/docs/cli/component-source)
[Публикация](/ru/ai/docs/cli/component-publish)
[Выбор](/ru/ai/docs/cli/select)
[Установка](/ru/ai/docs/cli/install)
[Target](/ru/ai/docs/cli/target)
[Setup](/ru/ai/docs/cli/setup)
[Provider](/ru/ai/docs/cli/provider)
[Синхронизация](/ru/ai/docs/cli/sync)
[Доступ](/ru/ai/docs/cli/grant)
[Жалобы](/ru/ai/docs/cli/report)
[Owner](/ru/ai/docs/cli/owner)
[Publication](/ru/ai/docs/cli/publication)
[Eval](/ru/ai/docs/cli/eval)
### Веб
[Веб](/ru/ai/docs/web)
[Главная](/ru/ai/docs/web/home)
[Каталог](/ru/ai/docs/web/catalog)
[Карточка компонента](/ru/ai/docs/web/catalog-component)
[Карточка сетапа](/ru/ai/docs/web/catalog-setup)
[Региональные сервисы](/ru/ai/docs/web/services)
[Издатели](/ru/ai/docs/web/publishers)
[Content](/ru/ai/docs/web/content)
[Эта документация](/ru/ai/docs/web/docs)
[Контакт](/ru/ai/docs/web/contact)
[Правовые документы](/ru/ai/docs/web/legal)
[Вход](/ru/ai/docs/web/login)
[Аккаунт](/ru/ai/docs/web/account)
[Профиль](/ru/ai/docs/web/profile)
[Устройства](/ru/ai/docs/web/devices)
[Объекты](/ru/ai/docs/web/objects)
[Доступ](/ru/ai/docs/web/access)
[Жалобы](/ru/ai/docs/web/reports)
[Лайки](/ru/ai/docs/web/likes)
[Онбординг](/ru/ai/docs/web/onboarding)
[Публикация](/ru/ai/docs/web/publications)
### Компоненты
[Компоненты](/ru/ai/docs/components)
[instruction](/ru/ai/docs/components/instruction)
[skill](/ru/ai/docs/components/skill)
[mcp](/ru/ai/docs/components/mcp)
[hook](/ru/ai/docs/components/hook)
[command](/ru/ai/docs/components/command)
[agent](/ru/ai/docs/components/agent)
[plugin](/ru/ai/docs/components/plugin)
[setting](/ru/ai/docs/components/setting)
[Сетапы](/ru/ai/docs/setups)
### Публикация
[Публикация](/ru/ai/docs/publishing)
[Авторство](/ru/ai/docs/publishing/authoring)
### Доверие и безопасность
[Обзор](/ru/ai/docs/trust-and-safety)
[Проверки безопасности](/ru/ai/docs/security-checks)
[Диагностика](/ru/ai/docs/troubleshooting)
[cli](/ru/ai/docs/components/cli)
## Content
# Устройство Идентичность устройства — локальная идентичность этой установки. Её создают офлайн, до любого аккаунта, и она остаётся здесь, даже если вы никогда не войдёте. Закрытый ключ доказывает, с какого устройства пришло позднее событие синхронизации или 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`. ## Типичный путь ```bash ai-stp device init --json ai-stp device show --json ``` Для локальной работы аккаунт не нужен. Нужна эта идентичность и затем паспорт разработчика. См. [Паспорта](passport.md). Закрытый ключ живёт в секретном хранилище операционной системы. Если хранилище недоступно, CLI говорит, что отступил к файлу, и не скрывает этот факт. `credential_store` тогда `file`, а не `os_keyring`, а `credential_store_detail` называет почему. Не запускайте `device reset` потому, что `doctor` сообщил, что идентичности нет. Исправление «никогда не создавали» — `device init`. Reset — чтобы вывести из строя ключ, который эта машина больше не должна держать. ## `device init` Создать идентичность этой установки или вернуть существующую. ```bash ai-stp device init --json ``` Первому запуску не нужны `sudo` и аккаунт. Если идентичность уже есть, команда возвращает её. Ключ она не ротирует. Устройство на платформе она не регистрирует — это происходит при [Входе](auth.md). Если секретное хранилище не может держать ключ, конверт всё равно успешен, и предупреждение говорит об этом. Читайте `warnings`. Не считайте откат к файлу молчаливым. ## `device show` Показать идентичность устройства и где хранится ключ. ```bash ai-stp device show --json ``` Это чтение. Если идентичности нет, команда отказывает с `AI_STP_NOT_FOUND`, а `next_actions` называет `device init`. Наблюдение не должно создавать состояние. Закрытого ключа в конверте нет и напечатать его нельзя по построению. Видно публичный материал: идентификатор, открытый ключ, отпечаток и место, где хранится секрет. ## `device reset` Вывести эту идентичность устройства из строя и создать новую. ```bash 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` | ## Связанные страницы | Страница | Зачем | | --- | --- | | [Быстрый старт для человека](../quickstart/human.md) | идентичность первого запуска связным текстом | | [Наблюдение](observe.md) | `doctor` сообщает `device_identity` | | [Паспорта](passport.md) | паспорт устройства против идентичности | | [Вход](auth.md) | привязка этого устройства к аккаунту | | [Синхронизация](sync.md) | события, которые подписывает это устройство | | [Устройства на сайте](../web/devices.md) | та же идентичность, как её показывает сайт | | [Диагностика](../troubleshooting/index.md) | сбои секретного хранилища и PATH | !!! note "Флаги из `ai-stp help --agent --json`" Если `help --agent` расходится с флагом на этой странице, прав CLI. Необязательные флаги здесь не перечислены. Читайте их из дескриптора. `device reset` требует `--confirm`.