Skip to main content

Использование Copilot CLI в качестве вашего ИИ-эксперта

Используйте Второй пилот CLI как всегда доступного эксперта, чтобы понять, как работает кодовая база, чтобы уверенно поддерживать её или добавлять новые функции.

Introduction

Когда вы начинаете работу с незнакомой кодовой базой или вас просят изменить часть большой кода, которую вы никогда раньше не касались, обычно нужен эксперт по предмету (SME), чтобы ввести вас в курс дела. Обычно SME — это более опытный разработчик в команде, который знает, как работает код, и может ответить на ваши вопросы. МСП доступны не всегда — они могут находиться в другом часовом поясе, заняты своей работой или вообще не быть в команде.

Когда нужно понять незнакомую кодовую базу, обычно стоит полагаться на напарника, который знает код. Когда этот человек недоступен, Второй пилот CLI он может заполнить пробел. В этом уроке вы будете задавать Второй пилот CLI вопросы о коде репозитория, изучать техники подсказок, которые дают ответы, основанные на коде, и обрести уверенность для начала внесения изменений.

Когда использовать AI-МСП (или даже когда применять ИИ-МСП?)

Этот урок полезен, когда нужно быстрее разобраться в кодовой базе. Рассмотрим пример.

  • Вы только что присоединились к команде или к проекту открытый код и вам нужно быстро освоиться.
  • Вам нужно изменить область большого кода, в которой вы никогда раньше не работали.
  • Вы унаследовали сервис или библиотеку, которую оригинальные авторы больше не поддерживают.

Туториал предполагает, что вы уверены в работе в терминале и читаете код на языке, используемом в проекте, который вы исследуете. Вам не нужен какой-либо предыдущий опыт с Второй пилот CLI.

Необходимые условия

Прежде чем начать, убедитесь, что у вас есть:

1. Начните сессию в репозитории

Откройте терминал и переключитесь на корень репозитория, о котором хотите узнать. Начиная Второй пилот CLI с корня репозитория, он имеет доступ к всей кодовой базе в контексте.

Shell
cd PATH/TO/YOUR/REPOSITORY
copilot

Теперь вы находитесь в интерактивной Второй пилот CLI сессии. Всё, что вы вводите в подсказке, отправляется в модель, которая может читать файлы в репозитории, запускать команды shell, такие git log как или grep, и отвечать на ваши вопросы на основе найденных данных.

Совет

  • Если вы доверяете Второй пилот CLI выполнять команды без запроса на одобрение, блокируя изменения файлов, начните с copilot --deny-tool='write' --allow-all-tools. См . раздел AUTOTITLE.
  • Если вы работаете с очень большой кодовой базой, вы можете получить лучшие результаты, начиная Второй пилот CLI с соответствующей подкаталоги. Это ограничивает контекст самыми релевантными файлами.

2. Наземные ответы в коде, а не в документации

Большинство репозиториев содержат смесь кода и документации: README-файлы, заметки по дизайну, архитектурные схемы и так далее. Документация полезна для изучения проекта, но она может быть устаревшей. Если вы задаёте Второй пилот CLI вопрос о том, как ведёт себя код, и он берёт ответ из устаревшего файла Markdown, вы получите уверенный ответ, который будет ошибочным.

Прежде чем задавать вопросы, скажите Второй пилот CLI основывать ответы на самом коде и отмечать неопределённости, а не заполнять пробелы. Рассмотрим пример.

Copilot prompt
For the rest of this session, when I ask how something works, base your answer on the code in this repository, not on documentation files such as README.md or files under docs/. If a documentation file conflicts with the code, treat the code as the source of truth. If you can't find a definitive answer in the code, say so - don't guess.

Вы можете поместить такой преамбулу в пользовательский файл инструкций и использовать его в разных сессиях, чтобы не переписывать каждый раз. См . раздел AUTOTITLE.

3. Получите обзор кодовой базы

Начните с общих вопросов, чтобы составить ментальную карту проекта. Цель — понять форму кода (где находятся точки входа, какие каталоги что содержат и как основные части связаны между собой) прежде чем углубляться в конкретную функцию.

Попробуйте использовать такие запросы, как:

Copilot prompt
Give me an overview of this codebase. What does the application do, what are the main components, and how do they communicate? Cite the files you used as evidence.
Copilot prompt
What are the entry points for this application? For each entry point, tell me which file contains the entry point and which directories contain the code it calls into.

Важно просить ссылки и доказательства. Когда Второй пилот CLI вам скажет «это решено», src/auth/middleware.tsвы можете открыть этот файл и проверить ответ сами. Если ссылка не совпадает с вашими находками, это хороший сигнал, чтобы возражать и задавать дополнительные вопросы.

4. Просверлить конкретный объект

Когда у вас будет обзор, сузьте область, которую нужно изменить. Воспринимайте это как разговор, а не как один вопрос. В каждом ответе появится термины, названия файлов и концепции, которые вы сможете использовать в следующем вопросе.

Хорошая идея задавать похожие вопросы, которые рассматривают тему с разных сторон. Это поможет вам получить полную картину и дать уверенность, что Copilot вы не неправильно поняли то, что хотите выяснить, и не упустили важную деталь.

Например, предположим, что вас попросили добавить ограничение скорости к конкретной точке API, и вы никогда раньше не работали с этой частью кода, вы можете начать с таких вопросов, как:

Copilot prompt
Is there any existing rate limiting in this codebase? If so, where is it implemented, and how is it configured?
Copilot prompt
If I wanted to add per-user rate limiting to the /api/v1/upload endpoint, which files would I most likely need to change, and which existing patterns in the codebase should I follow?

Задавая дополнительные вопросы в рамках одной и той же сессии CLI, вы можете глубоко изучить детали функции и предоставить Copilot контекст, необходимый для получения конкретных ответов, которые подскажут вам то, что нужно знать.

5. Расследовать поведение и крайние случаи

Чтение кода показывает, что он делает. Часто он не объясняет, что должен делать код или как он ведёт себя в необычных ситуациях. Именно в этих вопросах человеческий МСП наиболее ценен — и где Второй пилот CLI он может помочь, когда человека нет.

Некоторые примеры поведения и вопросы на крайних случаях, которые вы можете задать:

Copilot prompt
What happens if the database connection drops while a request is being processed? Walk me through the error handling, based on the code.
Copilot prompt
The `getUser` function takes a `userId` parameter. What validation is performed on it before it reaches the database query? Are there any code paths where an unvalidated value could reach the query?

Когда получишь ответ, скажи «покажи код» или «в каком файле ты это нашёл?» если это ещё не указано. Это даст вам возможность проверить и подтвердить ответ.

6. Используйте историю Git как ещё один источник

Много полезного контекста хранится в истории Git, а не в текущем коде: почему функция была написана именно так, когда ошибка была исправлена в последний раз, кто изначально добавил модуль. Второй пилот CLI Могу запускать git команды за вас и использовать результаты, чтобы отвечать на вопросы, на которые вы не могли легко ответить, прочитав код.

Попробуйте использовать такие запросы, как:

Copilot prompt
When was the `PaymentProcessor` class introduced, and what was the original commit message? Has it been substantially refactored since then?
Copilot prompt
Look at the last 20 commits that touched files under `src/billing/`. Summarize what kinds of changes have been made recently.
Copilot prompt
Who has made the most commits to `src/auth/`? Use that information to suggest the best person on this team to ask about authentication.

7. Проверяйте, прежде чем доверять

Второй пилот CLI является мощным малым и средним предприятием, но не безошибочным. Он может неправильно читать код, путать похожие файлы или, иногда, выдумывать. Относись к ответам так же, как к советам полезного, но ошибочного коллеги: полезны как отправная точка, но стоит проверить, прежде чем действовать важно.

Несколько привычек помогут вам избежать неприятностей:

  • Проверьте указанные файлы. Когда Второй пилот CLI вы ссылаетесь на конкретный файл или номер строки, откройте его и подтвердите. Если цитата ошибочна, остальную часть ответа стоит относиться с большим скептицизмом.
  • Управляй всем сам. Если Второй пилот CLI вам сообщает, что функция возвращается null для пустого входа, напишите быстрый тест или вызов REPL, который вызывает его с пустым входом, и проверьте.
  • Проверьте с людьми. Когда ответ важен (безопасность, целостность данных, всё, что вам было бы стыдно ошибиться в продакшене), используйте Второй пилот CLIответ как отправную точку и уточните это у эксперта или проверьте код.

Conclusion

В этом уроке вы использовали Второй пилот CLI в качестве личного эксперта по производству бизнеса:

  • Получите обзор незнакомой кодовой базы, закреплённой в реальных файлах.
  • Погружайся в конкретную функцию, чтобы знать, какие файлы менять и какие шаблоны следовать.
  • Исследуйте поведение, крайние случаи и историю Git.
  • Проверяйте ответы, чтобы иметь возможность полагаться на них, когда это важно.

Использование таким образом Второй пилот CLI не заменяет человеческих МСП, но делает вас менее зависимым от них для повседневных вопросов, которые возникают во время работы. Ваши человеческие товарищи по команде могут сосредоточиться на вопросах, которые действительно требуют их опыта, а вы можете двигаться дальше, когда их нет рядом.

Дальнейшие действия

  • Сохраняйте самые полезные преамбулы к запросам в виде пользовательских инструкций, чтобы использовать их в разных сессиях и проектах. См . раздел AUTOTITLE.
  • Когда вы поймёте область кода, которую хотите изменить, используйте Второй пилот CLI это для помощи в этом. См. раздел [AUTOTITLE и Рефакторинг кода с помощью GitHub Copilot](/copilot/tutorials/write-tests).
  • Узнайте, как контролировать, какие инструменты Второй пилот CLI могут работать во время сессии. См . раздел AUTOTITLE.