이 출시되었습니다! 11월의 새로운 기능 및 수정 사항을 읽어보세요.

컨텍스트만 있으면 됩니다: 사용자 지정 지침으로 더 나은 AI 결과 얻기

2025년 3월 26일 작성자: Rob Conery, @robconery.com, Burke Holland, @burkeholland

이달 초, Visual Studio Code에서 사용자 지정 지침의 일반 공급을 발표했습니다. 사용자 지정 지침은 Copilot에게 팀 워크플로, 특정 스타일 선호도, 모델이 알지 못할 수 있는 라이브러리 등에 대한 특정 컨텍스트를 제공하는 방법입니다.

이 게시물에서는 사용자 지정 지침이 무엇인지, 오늘날 이를 사용하여 GitHub Copilot의 결과를 획기적으로 개선하는 방법, 그리고 오늘 바로 시도해 볼 수 있는 "프롬프트 파일"이라는 새로운 미리보기 기능에 대해 자세히 알아보겠습니다.

간단한 Markdown 파일로 더 작은 프롬프트, 더 나은 결과

GitHub Copilot을 사용하면 개발 프로세스를 가속화할 수 있지만, 효과적인 프롬프팅에는 학습 곡선이 있습니다. 원하는 답변을 얻기까지 몇 번의 시도가 필요할 수 있으며, 이는 일반적으로 질문이나 프롬프트를 다시 작성해야 함을 의미합니다. 그래도 Copilot은 워크플로를 가속화할 것입니다!

하지만 GitHub Copilot을 필요에 맞게 "튜닝"할 수 있다는 사실을 알고 계셨나요? 간단한 Markdown 파일을 사용하면 Copilot에게 프로젝트를 더 잘 이해하도록 돕는 특정 지침을 제공할 수 있습니다. 이 게시물에서는 VS Code의 새로 출시된 기능인 사용자 지정 지침을 만들고 사용하는 과정을 안내해 드립니다.

이렇게 해보세요: 프로젝트에 .github/copilot-instructions.md라는 파일을 만드세요. 이 파일에는 Copilot이 프로젝트를 더 잘 이해하도록 돕는 지침이 포함됩니다. Copilot이 자동으로 인식하므로 작동하도록 특별히 할 일은 없습니다.

Screenshot showing the Explorer view in VS Code, highlighting the  file. The file is still empty.

이 지침을 파일에 추가하세요

# Copilot Instructions

This project is a web application that allows users to create and manage tasks. The application is built using React and Node.js, and it uses MongoDB as the database.

## Coding Standards

- Use camelCase for variable and function names.
- Use PascalCase for component names.
- Use single quotes for strings.
- Use 2 spaces for indentation.
- Use arrow functions for callbacks.
- Use async/await for asynchronous code.
- Use const for constants and let for variables that will be reassigned.
- Use destructuring for objects and arrays.
- Use template literals for strings that contain variables.
- Use the latest JavaScript features (ES6+) where possible.

제목은 엄격히 필요하지 않지만 파일의 목적을 명확히 하는 데 도움이 됩니다. 나머지 내용은 Copilot이 프로젝트를 더 잘 이해하도록 돕는 지침 세트입니다. 이러한 지침은 프로젝트 요구 사항에 맞게 사용자 지정할 수 있습니다.

이제 채팅 보기를 열고 tail recursion과 같이 매우 간결한 명령으로 프롬프트하세요. "JavaScript에서 꼬리 재귀를 어떻게 사용하나요"와 같이 복잡하게 물어볼 필요가 없습니다. 그냥 tail recursion을 입력하고 Enter를 누르세요. Copilot이 프로젝트의 컨텍스트를 이해하고 관련 답변을 제공하는 것을 확인하세요.

Screenshot that shows the Copilot response for "tail recursion" in the Chat view.

프롬프트가 훨씬 짧았음에도 불구하고 Copilot이 예상한 형식(2개의 공백, camelCase 등)으로 더 자세한 답변을 제공했다는 점에 주목하세요.

이것이 사용자 지정 지침을 사용하는 힘입니다! 하지만 더 많은 것을 할 수 있습니다...

모든 것을 사용자 지정하세요!

GitHub Copilot은 VS Code에 커밋 메시지 생성, 선택한 코드 검토, 테스트 생성 등 많은 유용한 기능을 추가합니다!

이 모든 기능은 유용하지만, 자신만의 방식으로 이러한 작업을 수행할 가능성이 높습니다. 좋은 소식은 작업 영역의 몇 가지 설정을 재정의하여 개인화할 수 있다는 것입니다.

이렇게 해보세요: 명령 팔레트(⇧⌘P (Windows, Linux Ctrl+Shift+P))를 열고 "작업 영역 설정"이라는 문구를 입력하세요. **기본 설정: 작업 영역 설정 열기(JSON)**라는 메뉴 옵션이 표시될 것입니다. 해당 옵션을 선택하고 작업 영역에 다음 설정을 추가하세요.

{
  "github.copilot.chat.commitMessageGeneration.instructions": [
    {
      "text": "Be extremely detailed with the file changes and the reason for the change. Use lots of emojis."
    }
  ]
}

settings.json 파일을 저장하고 닫으세요. 이제 활동 표시줄의 소스 제어 아이콘에 변경된 파일이 있음을 나타냅니다. Git 리포지토리가 없는 테스트 디렉터리에서 작업 중이라면 소스 제어 보기를 통해 직접 생성할 수 있습니다. **리포지토리 초기화** 버튼을 선택하고 지침을 따르세요.

이제 재미가 시작됩니다: 소스 제어 보기를 열고 커밋 메시지 입력 필드에서 반짝이는 아이콘을 선택하세요. 이 아이콘은 Copilot에게 커밋 메시지를 생성하도록 지시합니다. 매우 상세하고 이모지를 많이 사용하는 커밋 메시지를 생성하는 것을 확인하세요!

Screenshot that shows the Source Control view, showing a colorful commit message for the latest commit.

settings.json 파일에서 지침을 주석 처리하고 커밋 메시지를 다시 생성하세요. 이모지를 전혀 사용하지 않는 훨씬 덜 상세한 커밋 메시지를 보게 될 것입니다.

좋고 상세한 커밋 메시지를 작성하는 것은 시간이 걸리는 기술입니다. 하지만 Copilot을 사용하면 시간을 크게 절약하고 더 나은 메시지를 얻을 수 있습니다.

사용자 지정 지침으로 모든 것을 활용하기

코딩 표준이 Markdown과 다른 형식의 별도 파일에 있을 수 있습니다. JavaScript용, Python용, Go용으로 하나씩 있을 수 있습니다. 또한 데이터베이스 작업 방식에 대한 표준이 있을 수도 있습니다. 사용하는 데이터 유형, 명명 규칙, 연결 문자열 처리 등이 있습니다.

이 모든 것을 하나의 파일로 결합할 필요는 없습니다. 분리된 상태로 유지하고 Copilot의 도움을 받을 수 있습니다!

시도해 보세요! .vscode/settings.json 파일(작업 영역 설정)을 열고 다음 설정을 추가하세요.

{
  "github.copilot.chat.codeGeneration.instructions": [
    {
      "file": "./docs/javascript-styles.md"
    },
    {
      "file": "./docs/database-styles.md"
    }
  ]
}

이 설정은 Copilot에게 docs 디렉터리에서 두 개의 파일, 즉 javascript-styles.mddatabase-styles.md를 찾도록 지시합니다. 원하는 만큼 파일을 추가할 수 있으며, Copilot은 지정한 순서대로 파일을 찾습니다.

Screenshot that shows the Explorer view, highlighting the two files in the  folder and showing the custom instructions in the  file that reference these docs files.

여기에 현재 스프린트 사양을 포함한 모든 파일을 추가할 수 있습니다. Gherkin 사양을 사용자 지정 지침으로 추가하는 사람들도 보았습니다!

시도해 보세요!

모델 톤 변경

모델은 지나치게 공손한 경향이 있습니다. 자주 사과하고, 무언가 잘못되었다고 말하면 자신의 결정에 대해 절대 옹호하지 않습니다. 일을 할 때는 이것이 짜증날 수 있습니다. 응답 방식을 지시하는 몇 가지 지침으로 모델의 지나치게 친절한 톤을 재정의할 수 있습니다.

- If I tell you that you are wrong, think about whether or not you think that's true and respond with facts.
- Avoid apologizing or making conciliatory statements.
- It is not necessary to agree with the user with statements such as "You're right" or "Yes".
- Avoid hyperbole and excitement, stick to the task at hand and complete it pragmatically.

모델은 무엇을 해야 하는지 알아야 하므로, 부정적인 것이 아니라 긍정적인 방식으로 지침을 제공하는 것이 항상 중요합니다. "하지 마세요"라고 말하는 대신 "피하세요"라고 말할 수 있습니다.

실험하고 즐기세요! 한 프로그래머는 테스트 제품군을 **하이쿠**로 생성하여 재미있게 만들었다고 보고했습니다. 이는 조금 극단적인 것 같지만, 취미 프로젝트를 하고 있다면 왜 안 되겠습니까? 다음과 같은 지침을 추가할 수 있습니다.

- Generate tests in haiku format.
- Use 5-7-5 syllable structure.
- Use nature themes and imagery.

한 가지 더...

GitHub Copilot은 코드 파일도 사용자 지정 지침으로 이해할 수 있습니다! 예를 들어 SQL 파일이 있다면 설정을 추가할 수 있으며 Copilot은 데이터 액세스 코드 생성에 이를 사용할 것입니다.

선호하는 데이터 액세스 도구가 있다면 프로젝트에 샘플을 추가할 수 있으며 Copilot은 데이터 액세스 코드 생성 시 이를 사용할 것입니다.

시도해 보세요! 다음은 팀원 중 한 명이 PostgreSQL 데이터베이스에 대한 Sequelize 모델(Node.js ORM)을 생성하는 데 사용한 예입니다.

//Template for a Sequelize model
const { DataTypes, Model } = require('sequelize');
class User extends Model {
  //static or factory methods
  //instance methods
}
const init = function(sequelize){
  User.init({
    //schema goes here
  }, {
    hooks: {},
    tableName: "users"
    underscored: true,
    sequelize
  })
}

exports.createUser = function(sequelize){
  init(sequelize);
  return User;
}

설정에서 이 파일을 참조하면 GitHub Copilot은 이 템플릿과 SQL 파일을 함께 사용하여 프로젝트에서 모델을 생성합니다. 편집 모드 또는 질문 모드에서 이 작업을 수행할 수 있습니다. 단순히 프로젝트의 데이터 액세스 생성이라는 프롬프트를 사용하면 됩니다! 마법처럼!

프롬프트 파일 소개

프롬프트 파일을 사용하면 자신과 팀을 위한 재사용 가능한 프롬프트를 구성할 수 있습니다. 이는 일관성을 강제하는 데 도움이 되는 동시에 프롬프트 작성을 줄여 지루해지는 것을 방지합니다.

예를 들어, 데이터베이스 스키마를 기반으로 인터페이스를 생성하는 재사용 가능한 프롬프트를 만들고 싶다고 가정해 보겠습니다. 데이터베이스 스키마를 포함하는 프롬프트 파일을 만들 수 있습니다. Copilot은 이를 위해 SQL 스크립트를 생성하는 것을 기꺼이 도와줄 것입니다.

프롬프트 파일은 .github/prompts 디렉터리에 저장되며, 이름 형식이 *.prompt.md인 Markdown 파일입니다.

.github/prompts/database_users.prompt.md와 같이 데이터베이스에 대한 설명을 포함하는 파일이 있을 수 있습니다.

# User Authentication

Our application will have `users` with the following information:

- The standard user information, including: `name`, `email` (unique).
- A link for a "magic" login, which will be a `GUID` as well as the expiration date for the link.
- Social login account IDs for Microsoft, GitHub, and Google.
- The timestamp of the last login.
- The timestamp for when the user was created.

그런 다음 generate-interface.prompt.md라는 다른 프롬프트 파일을 만들 수 있으며, 이 파일에는 인터페이스를 생성하는 지침이 포함됩니다. 프롬프트 파일은 서로 참조할 수 있으므로 데이터베이스 스키마를 간단한 Markdown 링크로 이 프롬프트 파일에 전달할 수 있습니다.

Generate a TypeScript interface for the table specified by the user. Refer to the [user schema](database_users.prompt.md).

채팅에서 이러한 프롬프트 파일을 사용하려면 첨부 버튼(클립 모양)을 사용하거나 를 사용하세요. 메뉴에서 **프롬프트**를 선택한 다음 사용하려는 프롬프트 파일을 선택합니다. generate-interface.prompt.md 파일을 사용할 때 database_users.prompt.md 파일이 자동으로 가져와지는 것을 확인하세요.

Animated gif showing how to use prompt files in chat.

결론

VS Code는 사용자 지정 가능한 어시스턴트로, 적절하게 구성하면 팀 워크플로에 필수적인 부분이 될 수 있습니다. 사용자 지정 지침을 통해 개발자 손에 제어권이 있습니다.

행복한 코딩 되세요!

© . This site is unofficial and not affiliated with Microsoft.