К содержимому
# Проект
[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
# Проект Проект в `ai_stp` — каталог, который вы называете, а не диск, по которому CLI идёт искать. Discovery сканирует только переданный корень. Домашний каталог отклоняется. Индексация ограничена и пропускает секреты и двоичное содержимое. Паспорт проекта закрепляет этот индекс вместе с toolchain и конфигурацией, которые были в силе. Эти команды не собирают сетап и не пишут target harness. Они описывают одно дерево, чтобы у позднего выбора было на чём стоять. ## Команды | Команда | Mutability | Confirmation | Когда | | --- | --- | --- | --- | | `ai-stp project discover` | `read` | `none` | перечислить проекты внутри названного каталога; больше ничего не сканирует | | `ai-stp project index` | `read` | `none` | проиндексировать один корень проекта, ограниченно, пропуская секреты и двоичное содержимое | | `ai-stp project symbols` | `read` | `none` | прочитать публичные символы проекта, точки входа и тесты; графа вызовов нет | | project passport | `apply` | `none` | записать ревизию паспорта проекта, закрепляющую индекс, toolchain и конфигурацию | | `ai-stp project revision push` | `apply` | `explicit_flag` | опубликовать allowlisted-проекцию локального паспорта в ledger организации | | `ai-stp project revision pull` | `read` | `none` | прочитать redacted-узлы ledger организации для одной связи | `--root` обязателен на discover, index, symbols и passport. Настроенного запасного пути нет, и «текущий каталог» молчанием не подразумевается. Revision push и pull берут идентификатор локального проекта и связь организации. ## Типичный путь ```text ai-stp project discover --root <root> --json ai-stp project index --root <root> --json ai-stp project symbols --root <root> --json ai-stp project passport --root <root> --json ``` `<root>` — точный корень проекта, не домашний каталог и не родитель многих репозиториев, если вы не хотели искать внутри этого родителя. `discover` перечисляет кандидатов внутри каталога. `index`, `symbols` и `passport` каждый принимают один корень проекта. `project index` и `project symbols` — чтения: они ничего не пишут. `project passport` сохраняет ревизию в локальном реестре. Он идемпотентен — неизменённый проект ничего не добавляет — но идемпотентность не есть только чтение. `discover` может вернуть несколько кандидатов. `index`, `symbols` и `passport` каждый принимают одно из этих значений `root`. Не передавайте родителя discovery в `index`, если этот родитель сам не является проектом. Вложенные репозитории перечислены отдельно, чтобы можно было выбрать. ## `project discover` Перечислить проекты внутри названного каталога. Больше ничего не сканирует. ```bash ai-stp project discover --root <root> --json ``` Корень называют, а не ищут. Нет режима, в котором эта команда идёт смотреть сама. Успешный `data` называет: | Поле | Что это | | --- | --- | | `discovery_root` | каталог, который вы назвали, в разрешённом виде | | `complete` | закончилось ли сканирование внутри своих границ | | `candidates` | каждый с `root`, `kind`, `state`, `markers`, `reason` | | `diagnostics` | пропущенные пути, каждый с `code`, `path`, `reason` | | `schema_version` | major схемы этого отчёта | `kind` кандидата — `project` или `nested_repository`. `state` — `new` или `established`. `code` диагностики — `excluded`, `entry_limit`, `symlink` или `unreadable`. Если `complete` равен `false`, список — не всё дерево. Читайте `diagnostics`, прежде чем считать тишину за «здесь ничего нет». ## `project index` Проиндексировать один корень проекта, ограниченно, пропуская секреты и двоичное содержимое. ```bash ai-stp project index --root <root> --json ``` Читает и сообщает. Паспорт, который записывает индекс, — другая команда. Короткий ответ, который выглядит полным, хуже полного ответа, который говорит, где остановились, поэтому `state` — `complete` или `partial`, а `stopped_by` называет границу, когда индекс частичный. Успешный `data` называет: | Поле | Что это | | --- | --- | | `root` | корень проекта, который индексировали | | `state` | `complete` или `partial` | | `stopped_by` | какая граница сработала, или `null` | | `files` | каждый с `path`, `kind`, `language`, `lines`, `size_bytes`, `digest` | | `excluded` | каждый с `path` и `reason` | | `schema_version` | major схемы этого отчёта | `kind` файла — `manifest`, `lock`, `agent_surface`, `source`, `document`, `config` или `text`. Содержимого исключённых файлов в конверте нет. Секретов и двоичных байтов в конверте нет. ## `project symbols` Прочитать публичные символы проекта, точки входа и тесты. Графа вызовов нет. ```bash ai-stp project symbols --root <root> --json ``` Это чтение публичных имён, а не модель того, как они вызывают друг друга. `method` у каждого языка говорит, насколько силён ответ: `syntax_tree` значит, файл читал парсер; `line_scan` значит, слова узнали построчно. Сообщать оба как простые счётчики — скрыть эту разницу. Успешный `data` называет: | Поле | Что это | | --- | --- | | `root` | корень проекта, который читали | | `state` | закончилось ли чтение внутри своих границ | | `stopped_by` | какая граница сработала, или `null` | | `languages` | каждый с `language`, `state`, `method`, `files`, `symbols`, `entry_points`, `tests`, `reason` | | `schema_version` | major схемы этого отчёта | `state` языка — `available` или `not_available`. Язык, который есть в дереве, но для которого в этом билде нет парсера, всё равно перечислен, с причиной. ## `project passport` Записать ревизию паспорта проекта, закрепляющую индекс, toolchain и конфигурацию. ```text ai-stp project passport --root <root> --json ``` Результат — вид паспорта (`kind` равен `project`) с `stable_id`, `revision_id`, `parent_revision_ids`, `owner_id`, `facts`, `created_at` и `schema_version`. Как читать эту форму — [Паспорта](passport.md). Факты закрепляют то, что наблюдали, а не то, что вы хотели бы видеть. Изменить дерево и записать снова — добавить ревизию. Предыдущую это не правит. Локальный паспорт не находится в ledger организации. После связи проекта путь в организацию — `project revision push`, затем `project revision pull`, если другой device уже публиковал, затем `project sync plan` и `project sync apply`. `--local-revision` у плана — это ledger `revision_id` из квитанции push. Собственный `revision_id` паспорта — другой домен дайджеста; план с ним отклоняется как ревизия, которой организация не видела. ## Ledger организации Локальный паспорт остаётся на устройстве, пока вы не опубликуете его allowlisted-проекцию. `project revision push` — эта публикация: дайджесты, счётчики и состояние индекса, никогда пути и исходники. `project revision pull` читает redacted-узлы, которые уже опубликовал другой device. Ни одна из этих команд не двигает указатели `ProjectLink`; это `project sync plan`, затем `project sync apply`. План `local_to_remote` отклоняется, пока ревизии нет в ledger организации. Флаги, подтверждение и схемы результата берите из `ai-stp help --agent --json`. Не копируйте их сюда. ## Что содержит успешный конверт Discover, index и symbols каждый возвращают поля, названные в своих разделах. `project passport` возвращает поля вида паспорта. Каждый конверт также несёт `ok`, `warnings`, `next_actions`, `request_id`, `operation_id` и `schema_version`. Домашние пути в полях `root` и `path` свёрнуты для отображения. Это не другой каталог на диске. ## Чего эти команды никогда не делают - не сканируют домашний каталог и не весь диск; - не держат секретное или двоичное содержимое файлов в индексе; - не строят граф вызовов, граф пакетных зависимостей и embedding модели; - не собирают сетап и не пишут target harness; - не кладут токены и тела `.env` в паспорт проекта. ## Типичные отказы | Что видно | Что это значит | Что делать | | --- | --- | --- | | `AI_STP_VALIDATION_ERROR` нет `--root` | discover, index, symbols и passport его требуют | передать `--root <root>` | | `AI_STP_VALIDATION_ERROR` home directory | discovery отказывается сканировать home | назвать каталог проекта внутри него | | `state: partial` на index или symbols | сработала граница размера, глубины, числа записей или времени | читать `stopped_by`; не считать ответ полным | | `complete: false` на discover | сканирование остановилось внутри границ | читать `diagnostics` | | `AI_STP_VALIDATION_ERROR` unreadable root | пути нет или его нельзя прочитать | передать точный существующий корень проекта | | ожидание, что `index` запишет паспорт | индексация — чтение | `project passport --root <root> --json` | | `AI_STP_PRECONDITION_FAILED` нет паспорта для публикации | revision push проецирует локальный паспорт | `project passport --root <root> --json` | | `AI_STP_PRECONDITION_FAILED` заново наблюдать project link | пустой мигрированный `link_id` — не привязка | `project link show`, затем та же команда | | `AI_STP_PRECONDITION_FAILED` ревизии нет в ledger организации | `--local-revision` плана — не id ledger | `project revision push`, затем план с `revision_id` квитанции | ## Связанные страницы | Страница | Зачем | | --- | --- | | [Паспорта](passport.md) | как читать вид паспорта | | [Конфигурация](config.md) | `projects.discovery_roots` | | [Выбор](select.md) | паспорт проекта якорит сессию | | [Target](target.md) | ежедневное состояние одного проекта и harness | | [Команды компонента](component.md) | нативные компоненты внутри проекта | | [Быстрый старт для человека](../quickstart/human.md) | путь первого запуска не требует проекта | !!! note "Флаги из `ai-stp help --agent --json`" Если `help --agent` расходится с флагом на этой странице, прав CLI. Необязательные флаги здесь не перечислены. Читайте их из дескриптора. Discover, index, symbols и passport требуют `--root`. Revision push и pull — нет.