К содержимому
# Toolchain
[Home](/ru/ai)
[Catalog](/ru/ai/catalog)
Установить и удалить управляемые инструменты, прочитать закреплённый профиль и обзор harness с нативными возможностями.
## 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
# Toolchain Управляемый toolchain — закреплённый профиль, а не случайный `pip install`. `toolchain install` пишет в управляемый каталог и ничего не запускает из только что положенного инструмента. `toolchain harnesses` сообщает, есть ли поддерживаемый harness на этой машине. `toolchain harness-capabilities` говорит, что продукт умеет читать нативно и что этот билд умеет проецировать. Это не утверждение, что компонент активен. Это не [Программа harness](harness.md). Установка бинарника harness — `harness install`. Это не [Provider](provider.md). Provider — бинарник, который потом пишет нативное состояние. ## Команды | Команда | Mutability | Confirmation | Когда | | --- | --- | --- | --- | | `ai-stp toolchain install` | `apply` | `none` | установить один закреплённый инструмент в управляемый каталог; из него ничего не запускает | | `ai-stp toolchain remove` | `destructive` | `explicit_flag` | удалить один управляемый инструмент, трогая только пути, которые создал этот CLI | | `ai-stp toolchain profile` | `read` | `none` | показать управляемый профиль toolchain, как он разрешается на этой машине | | `ai-stp toolchain harnesses` | `read` | `none` | сообщить о каждом поддерживаемом harness и есть ли он на этой машине | | `ai-stp toolchain harness-capabilities` | `read` | `none` | по harness и kind: что продукт читает нативно, что этот билд умеет проецировать, и почему любой gap — gap. Не утверждение, что компонент активен — это спрашивают у провайдера | `--tool` обязателен на `install` и `remove`. `remove` также требует `--confirm`. Точные идентификаторы инструментов — из `toolchain profile`, а не из памяти. ## Типичный путь Прочитать профиль, затем поставить один закреплённый инструмент, затем посмотреть harness: ```bash ai-stp toolchain profile --json ai-stp toolchain install --tool <tool> --json ai-stp toolchain harnesses --json ai-stp toolchain harness-capabilities --json ``` `<tool>` — идентификатор, который закрепляет профиль. Если `doctor` сообщил об отсутствующем инструменте, имя в `detail` этой проверки или в `ecosystems[].tools` профиля. Не выдумывайте имя пакета. Чтобы забрать управляемый инструмент: ```bash ai-stp toolchain remove --tool <tool> --confirm --json ``` `--confirm` обязателен. Без него команда отказывает с `AI_STP_USER_DECISION_REQUIRED`. Удаление трогает только пути, которые создал этот CLI. Всё, чего нет в списке владения, остаётся на месте и сообщается как `kept`. ## `toolchain profile` Показать управляемый профиль toolchain, как он разрешается на этой машине. ```bash ai-stp toolchain profile --json ``` Это чтение. Оно ничего не скачивает и ничего не ставит. Успешный `data` называет: | Поле | Что это | | --- | --- | | `profile` | какой это профиль | | `platform` | для какой платформы он разрешился | | `ecosystems` | каждый с `ecosystem`, `title`, `state`, `tools`, `reason` | | `schema_version` | major схемы этого отчёта | `state` экосистемы — `available` или `not_available`. Каждый закреплённый инструмент несёт идентичность, версию, digest и источник digest. `digest_source` — `vendor_published` или `pinned_on_download`. ## `toolchain install` Установить один закреплённый инструмент в управляемый каталог. Из него ничего не запускает. ```bash ai-stp toolchain install --tool <tool> --json ``` Сначала план, затем проверка, затем распаковка рядом с целью, затем перемещение одного указателя. Из архива ничего не исполняется. Вне собственного каталога данных пользователя ничего не пишется, поэтому здесь нет пути, которому понадобился бы пароль. `action` в результате — то, что случилось, а не то, что пытались: | `action` | Смысл | | --- | --- | | `installed` | инструмент положили и проверили | | `already_installed` | закреплённые байты уже были текущими | | `needs_user_action` | пришлось бы менять что-то вне управляемого каталога | `needs_user_action` — не запрос секрета. `reason` говорит точно, что пришлось бы изменить. ## `toolchain remove` Удалить один управляемый инструмент, трогая только пути, которые создал этот CLI. ```bash ai-stp toolchain remove --tool <tool> --confirm --json ``` Destructive. Список — манифест владения. Решать в момент удаления, какие файлы «похожи на наши», — способ забрать вместе с уборкой данные пользователя, поэтому всё, чего нет в списке, остаётся на месте. `action` — `removed`. `kept` называет пути, которые не принадлежали этому CLI. ## `toolchain harnesses` Сообщить о каждом поддерживаемом harness и есть ли он на этой машине. ```bash ai-stp toolchain harnesses --json ``` Это обзор присутствия, а не жизненный цикл программы. `harness status` отвечает на другой вопрос: какая программа стоит под одним prefix, который поставил этот CLI. Словари у них разные нарочно. Успешный `data` называет: | Поле | Что это | | --- | --- | | `harnesses` | по одной строке на поддерживаемый harness | | `schema_version` | major схемы этого отчёта | Каждая строка называет `harness_id`, `title`, `support` (`primary` или `beta`), `state` (`configured`, `installed`, `unknown_version` или `available`), `installations`, `configuration` и `reason`. Установка называет `path`, `version`, `version_source`, `surface` (`cli` или `desktop`) и `diagnostic`. Присутствие — не разрешение собирать состав для этого harness. Eligibility — [Выбор](select.md). Уровни поддержки — [Harnesses](../harnesses.md). ## `toolchain harness-capabilities` По harness и kind: что продукт читает нативно, что этот билд умеет проецировать, и почему любой gap — gap. Это не утверждение, что компонент активен — это спрашивают у провайдера. ```bash ai-stp toolchain harness-capabilities --json ``` Успешный `data` называет `harnesses`. Каждая строка — один harness, с видами компонентов, нативными раскладками, способностью проекции и `gaps`. Пробел — причина, а не подсказка изобрести обход. Эта команда не спрашивает provider, активен ли компонент сейчас в target. Этот вопрос принадлежит [Provider](provider.md) и [Target](target.md). ## Что содержит успешный конверт `install` и `remove` возвращают установку инструмента в `data`: | Поле | Что это | | --- | --- | | `tool_id` | идентификатор, который вы передали | | `version` | закреплённая версия | | `action` | `installed`, `already_installed`, `needs_user_action` или `removed` | | `reason` | почему исход именно такой | | `binary` | где управляемый бинарник, или `null` | | `paths` | пути, которые создала эта команда | | `kept` | пути, которые эта команда отказалась трогать | | `offline_capable` | можно ли воспроизвести результат из кэша | | `schema_version` | major схемы этого отчёта | `profile`, `harnesses` и `harness-capabilities` возвращают поля, названные в своих разделах. Каждый конверт также несёт `ok`, `warnings`, `next_actions`, `request_id`, `operation_id` и `schema_version`. ## Чего эти команды никогда не делают - не исполняют инструмент, который только что поставили; - не пишут вне управляемого каталога; - не ставят программу harness (`harness install`) и provider (`provider fetch`); - не утверждают, что компонент активен в target; - не кладут секрет в профиль или запись установки. ## Типичные отказы | Что видно | Что это значит | Что делать | | --- | --- | --- | | `AI_STP_VALIDATION_ERROR` нет `--tool` | install и remove его требуют | передать `--tool <tool>` из профиля | | `AI_STP_NOT_FOUND` | профиль не закрепляет инструмент с таким именем | `toolchain profile --json` и взять идентификатор из списка | | `AI_STP_PRECONDITION_FAILED` нет артефакта для этой платформы | инструмент закреплён, но не для этой машины | читать `details.available`; не скачивать случайный бинарник | | `AI_STP_USER_DECISION_REQUIRED` на remove | не было `--confirm` | `toolchain remove --tool <tool> --confirm --json` | | `action: needs_user_action` | вне управляемого каталога нужно что-то изменить | читать `reason`; не давать CLI пароль | | считать `harness-capabilities` за «установлено» | эта таблица — нативное чтение плюс проекция | `toolchain harnesses` и `harness status` | ## Связанные страницы | Страница | Зачем | | --- | --- | | [Наблюдение](observe.md) | `doctor` после отсутствующего инструмента | | [Программа harness](harness.md) | бинарник harness, не инструмент | | [Provider](provider.md) | бинарник, который пишет нативное состояние | | [Harnesses](../harnesses.md) | primary против beta | | [Agent Skill CLI](skill.md) | другой отсутствующий объект первого запуска | | [Быстрый старт для человека](../quickstart/human.md) | вкладка toolchain первого запуска | !!! note "Флаги из `ai-stp help --agent --json`" Если `help --agent` расходится с флагом на этой странице, прав CLI. Необязательные флаги здесь не перечислены. Читайте их из дескриптора. `toolchain install` требует `--tool`. `toolchain remove` требует `--tool` и `--confirm`.