Гайд · TNWS AI
Как приложить файл к запросу Copilot CLI через --attachment
Практический разбор --attachment PATH в GitHub Copilot CLI: проверка файла, конкретный запрос к диаграмме, ожидаемый ответ и ограничения vision.
Этот гайд решает конкретную задачу: передать локальное изображение схемы в начальный запрос агента, чтобы он описал реально видимые блоки и отметил неопределённые подписи. Ниже — воспроизводимый сценарий, а не обещание, что любой текстовый запрос сам по себе создаёт техническое ограничение. Факты о флагах и доступности проверены 19 сентября 2026 года по официальной документации GitHub; динамические тарифы и неподтверждённые лимиты здесь не приводятся.
Задача и граница применимости
Сценарий применим к установленному и авторизованному GitHub Copilot CLI в доверенном тестовом репозитории. Основная команда: copilot --attachment ./docs/flow.png -p 'Перечисли видимые блоки схемы; не угадывай нечитаемые подписи' -s. Сначала выберите маленький тестовый проект, на котором можно проверить и успешный путь, и отказ. Если полномочий агента недостаточно, это безопасный сигнал уточнить конфигурацию, а не причина сразу включить все разрешения.
Важно различать четыре уровня: выбор доступных модели tools, разрешение tool на действие, доступ к файлам и сетевую политику ОС. Один флаг управляет лишь тем уровнем, который ему назначен в документации. Инструкция на естественном языке направляет поведение, но не заменяет реальное правило доступа. Поэтому результат оценивают по фактическим вызовам и артефактам, а не по фразе агента «я не буду».
Официальные источники и дата проверки
В справочнике команд GitHub Copilot CLI указаны синтаксис основных параметров, список имён tools и правила шаблонов разрешений. Руководство по разрешениям различает --available-tools/--excluded-tools и --allow-tool/--deny-tool, объясняет сохранённые разрешения и приоритет deny. Для запуска с -p, -s и --no-ask-user используется официальное руководство по программному запуску. Эти первоисточники просмотрены 19 сентября 2026 года. Не переносите без проверки параметры между разными CLI: одинаковое слово «agent» не означает одинаковую модель прав.
Документация отдельно предупреждает, что изменение или чтение файлов, shell и сетевые обращения могут требовать согласия. Параметры запуска относятся к текущей сессии, тогда как часть разрешений, выданных через интерактивное подтверждение, может сохраняться в конфигурации. Если тест даёт неожиданный результат, сначала проверьте эти сохранённые настройки и конкретный рабочий каталог.
Подготовка тестового стенда
Проверьте, что docs/flow.png существует, читается и не содержит персональных данных или ключей. Официальная CLI reference подтверждает --attachment PATH и возможность повторять параметр; изображения принимаются, но их успешная отправка зависит от выбранной модели и политики организации, разрешающей vision. Поэтому не обещайте работоспособность для любой модели и не указывайте неподтверждённый список форматов. Для контроля подготовьте PNG со своими простыми подписями, например Client, API, DB, и стрелками Client→API→DB.
Запишите исходное состояние проекта: текущий каталог через pwd, версию CLI через copilot version, git status --short и наличие нужных входных файлов. Не вставляйте реальный секрет в тестовый prompt, публикацию или screenshot. Разделяйте код процесса, код завершения Copilot и утверждения модели: успешный exit code не доказывает правильность итогового текста, а отказ в разрешении не обязательно означает ошибку конфигурации.
Пошаговое выполнение
-
Сначала локально откройте файл и убедитесь, что подписи разборчивы. Размер и формат не обсуждайте в статье как гарантированные лимиты, если не сверили для своего аккаунта.
-
Запустите команду с --attachment и конкретным prompt: перечислить только видимые блоки, направление стрелок и неопределённости.
-
Сравните полученный ответ с исходным изображением. Если модель видит лишь текст пути либо сообщает об отсутствии vision, не делайте выводы о содержимом схемы.
-
Для второго теста создайте вариант схемы с одной изменённой стрелкой и повторите запрос. Ожидается изменение соответствующего пункта ответа, а не общая одинаковая сводка.
После каждого прогона сравните git status --short с исходным состоянием. Если передан конкретный путь или имя инструмента, проверьте его посимвольно; похожее имя способно расширить либо сузить правило. Для команд с shell-скобками заключайте всё значение опции в одинарные кавычки. На Windows используйте правила кавычек своей оболочки и проверяйте, что CLI получает значение целиком.
Готовый шаблон для копирования
Команда для контролируемой проверки; замените указанные тестовые пути, если пример использует файлы, и сначала прочитайте смысл каждого аргумента:
copilot --attachment ./docs/flow.png -p 'Перечисли видимые блоки схемы; не угадывай нечитаемые подписи' -s
Проверка результата не должна состоять из повторения вывода модели. Если команда читает проект, сопоставьте указанные функции с файлами. Если ограничивает действие, попытайтесь выполнить запрещённый шаг только на учебном стенде и убедитесь, что не возникло нежелательных изменений. Не проверяйте запрет фактической публикацией пакета, отправкой кода или раскрытием секрета.
Реалистичный вход и ожидаемый результат
Вход: На диаграмме flow.png есть три блока Client, API, DB и две стрелки Client→API и API→DB. В углу есть нечитаемая мелкая подпись.
Ожидаемый результат: Ответ перечисляет три подтверждённых блока и две видимые стрелки, мелкую подпись отмечает как нечитаемую. Он не добавляет Redis или платёжный шлюз, которых нет на рисунке. Если отправка изображения недоступна по политике, CLI может не выполнить задачу — это состояние нужно явно зафиксировать.
Это критерий приемки, а не выдуманный лог запуска. В вашей среде модель может сформулировать ответ иначе, а организационная политика — отклонить действие. Считайте тест успешным только при совпадении наблюдаемого поведения с указанной границей и при наличии проверяемых исходных данных. Если нет доступа к выбранной модели, не подменяйте её незаметно: отметьте условие и повторите на совместимой конфигурации.
Положительный и отрицательный тест
Позитивный тест — простой лист с крупными уникальными надписями и правильным направлением стрелок. Негативный — убрать блок DB в копии изображения: он не должен появиться в новом ответе. Сравнивайте файлы и ответы, не используйте реальные архитектурные схемы с секретными адресами. При неоднозначном результате попросите модель привести только видимые элементы и отправьте изображение более высокого качества, если политика позволяет.
При спорном результате сохраните только обезличенный журнал разрешений и минимальные воспроизводимые входные данные. Если задачу выполнял другой tool, явно укажите это в отчёте: правило для одного инструмента не обязательно распространяется на альтернативный. Такой негативный тест особенно полезен перед тем, как переносить пример в CI или командную практику.
Ошибки, отладка и ограничения
Не путайте --attachment с @ FILENAME в интерактивном prompt: это разные механизмы ввода. Не отправляйте чувствительное изображение без согласования политики организации. Не принимайте догадку модели о нечётком блоке за факт. Не утверждайте, что любой выбранный --model поддерживает vision: официальная справка ставит это в зависимость от модели и политики.
Чтобы локализовать причину, сделайте второй прогон на пустом тестовом репозитории с одним изменяемым параметром. Не меняйте одновременно prompt, модель, каталог и разрешения: тогда нельзя понять, почему исчезла ошибка. Если модель сообщает об отсутствии ресурса, сначала проверьте путь и доступ на уровне процесса, затем разрешения CLI, и лишь после этого формулировку задачи.
Чек-лист финальной проверки
- Точный синтаксис параметров сверен со справочником GitHub на 19 сентября 2026 года.
- Входной файл, путь или домен соответствует тестовой задаче.
- Исходное состояние репозитория записано до запуска.
- Положительный тест показал ожидаемую разрешённую операцию.
- Отрицательный тест не вызвал запрещённого действия.
- Итоговый ответ сверён с фактическими файлами или журналом tools.
- Секреты, реальные токены и частные пути не попали в отчёт.
- Изменения в git просмотрены и объяснены.
FAQ
Можно приложить несколько файлов?
Справка разрешает повторять --attachment PATH. Проверяйте каждый файл и контекст общего запроса отдельно.
Почему изображение не распознаётся?
Успешная отправка зависит от возможностей модели и политики организации; сначала проверьте эти условия и реальное сообщение CLI.
Нужно ли разрешение на чтение пути?
Путь должен существовать и быть доступен процессу. При внешнем каталоге учитывайте политику доступа к файлам CLI.
Как проверить, что модель не выдумывает?
Дайте контролируемую схему, затем измените один блок или стрелку и сравните ответ с каждым вариантом.
Итог
Для задачи «передать локальное изображение схемы в начальный запрос агента, чтобы он описал реально видимые блоки и отметил неопределённые подписи» важна не только команда copilot --attachment ./docs/flow.png -p 'Перечисли видимые блоки схемы; не угадывай нечитаемые подписи' -s, но и доказательство её действия на маленьком тестовом случае. Сохраните исходное состояние, выполните разрешённый и запрещённый сценарии, затем перенесите только подтверждённый вариант в рабочий проект. При смене версии CLI перепроверьте первоисточник и повторите оба теста.
Читайте также
Как запретить Copilot CLI сетевые инструменты через --available-tools
Сценарий офлайн-анализа репозитория: allowlist --available-tools, проверка доступных инструментов, ожидаемый результат и ограничения shell.
Как исключить web_fetch и web_search из Copilot CLI
Настройка --excluded-tools для локального анализа кода в Copilot CLI: точные имена web_fetch и web_search, проверка и различие с allowlist.
Как ограничить доступ Copilot CLI к URL через allow и deny
Разрешение одного домена и запрет другого в Copilot CLI: --allow-url, --deny-url, приоритет запрета, тест на фиктивных адресах и аудит сети.
Комментарии
Пока тихо. Скажите первое слово