์ฐธ๊ณ ํญ๋ชฉ
Copilot ์ฝ๋ฉ ์์ด์ ํธ๋ ๊ณต๊ฐ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ๋ฒ์ ์ด๋ฉฐ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค. ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ์ค ๊ธฐ๋ฅ์ ์ฌ์ฉ์ GitHub ์ํํ ์ฌ์ฉ ์กฐ๊ฑด์(๋ฅผ) ๋ฐ๋ฆ ๋๋ค.
Copilot ์ฝ๋ฉ ์์ด์ ํธ์ ๋ํ ๊ฐ์๋ About GitHub Copilot coding agent์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์๊ฐ
์ํํธ์จ์ด ๊ฐ๋ฐ์์๊ฒ ํ ๋นํ๋ ๊ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก GitHub ์ด์๋ฅผ Copilot์๊ฒ ํ ๋นํ ์ ์์ต๋๋ค. Copilot์ ํด๋น ์ด์์ ๋ํ ์์ ์ ์์ํ๊ณ , ๋์ด์ค๊ธฐ ์์ฒญ์ ์ ๊ธฐํ์ฌ, ์์ ์ด ์๋ฃ๋๋ฉด ๊ฒํ ๋ฅผ ์์ฒญํ ๊ฒ์ ๋๋ค. ์์ธํ ๋ด์ฉ์ About GitHub Copilot coding agent์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์ด์๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Copilot์ ์ด์ ์ ์ฌ์ฉํ ์ ์ด ์์๋ค๋ฉด Copilot์ ์ฌ์ฉํ์ฌ ์์ ์ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ชจ๋ฒ ์ฌ๋ก์์ ์ข์ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ธฐ ์ํ ๋ช ๊ฐ์ง ์ ์ฉํ ์กฐ์ธ์ ์ฐพ์ ์ ์์ต๋๋ค.
Copilot์ ์ด์ ํ ๋น
Copilot์ ์ด์๋ฅผ ํ ๋นํ์ฌ ์ด์ ํด๊ฒฐ ์์ ์ ์์ํ๋๋ก ์์ฒญํ ์ ์์ต๋๋ค.
Copilot์ ์ด์๋ฅผ ํ ๋นํ ์ ์์ต๋๋ค.
- GitHub.com์์(๋ค์ ์น์ ์ฐธ์กฐ)
- GitHub Mobile์์
- GitHub API๋ฅผ ํตํด(์ด ๋ฌธ์์ ๋ท๋ถ๋ถ ์ฐธ์กฐ)
- GitHub CLI ์ฌ์ฉ(
gh issue edit
์ฐธ์กฐ)
GitHub.com์ Copilot์ ์ด์ ํ ๋น
GitHub.com์ Copilot์ ์ด์๋ฅผ ํ ๋นํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฅธ ์ฌ์ฉ์์๊ฒ ์ด์๋ฅผ ํ ๋นํ๋ ๊ฒ๊ณผ ๊ฐ์ ๋ฐฉ์์ ๋๋ค.
-
GitHub์์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๊ธฐ๋ณธ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
-
๋ฆฌํฌ์งํ ๋ฆฌ ์ด๋ฆ ์๋์์ ์ด์ ์์ด์ฝ์ ํด๋ฆญํฉ๋๋ค.
-
Copilot์ ํ ๋นํ๋ ค๋ ์ด์๋ฅผ ์ฝ๋๋ค.
-
์ค๋ฅธ์ชฝ ๋ฉ๋ด์์ ๋ด๋น์๋ฅผ ํด๋ฆญํฉ๋๋ค.
-
๋ด๋น์ ๋ชฉ๋ก์์ Copilot์ ํด๋ฆญํฉ๋๋ค.
ํ
Copilot์ ์ด์๋ฅผ ํ ๋นํ๋ฉด ์ด์ ์ ๋ชฉ, ์ค๋ช , ํ์ฌ๊น์ง ์์ฑ๋ ๋ชจ๋ ๋๊ธ์ด ์ ์ก๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด์๋ฅผ ํ ๋นํ ํ์๋ Copilot์ด ํด๋น ์ด์์ ์ถ๊ฐ๋ ์๋ก์ด ๋๊ธ์ ์ธ์ํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ์ง ์์ต๋๋ค. ์ถ๊ฐ ์ ๋ณด๊ฐ ์๊ฑฐ๋ ์๋ ์๊ตฌ ์ฌํญ์ ๋ณ๊ฒฝํ ๋ด์ฉ์ด ์๋ ๊ฒฝ์ฐ, Copilot์์ ์ ๊ธฐํ๋ ๋์ด์ค๊ธฐ ์์ฒญ์ ๋๊ธ์ผ๋ก ์ถ๊ฐํด ์ฃผ์ธ์.
๋ํ, GitHub.com์ ๋ค๋ฅธ ์์น์์๋ Copilot์ ์ด์๋ฅผ ํ ๋นํ ์ ์์ต๋๋ค.
- ๋ฆฌํฌ์งํ ๋ฆฌ์ Issues ํ์ด์ง์ ์๋ ์ด์ ๋ชฉ๋ก์์
- GitHub ํ๋ก์ ํธ์์ ์ด์๋ฅผ ํ์ธ ์ค์ผ ๋
GitHub API๋ฅผ ํตํด Copilot์ ์ด์ ํ ๋น
GraphQL API๋ฅผ ์ฌ์ฉํ์ฌ Copilot์ ์ด์๋ฅผ ํ ๋นํ ์ ์์ต๋๋ค.
์ ์ด์ ๋ง๋ค๊ธฐ ๋ฐ ํ ๋น
-
์ฌ์ฉ์ ํ ํฐ(์: personal access token ๋๋ GitHub App ์ฌ์ฉ์-์๋ฒ ํ ํฐ)์ ์ฌ์ฉํ์ฌ API ์ธ์ฆ์ ์งํํด์ผ ํฉ๋๋ค.
-
GraphQL API์์ ํด๋น ๋ฆฌํฌ์งํ ๋ฆฌ์
suggestedActors
์ Copilot์ด ํฌํจ๋์ด ์๋์ง ํ์ธํ์ฌ ๋ฆฌํฌ์งํ ๋ฆฌ์์ Copilot ์ฝ๋ฉ ์์ด์ ํธ๊ฐ ํ์ฑํ๋์ด ์๋์ง ํ์ธํฉ๋๋ค.octo-org
๋ฅผ ๋ฆฌํฌ์งํ ๋ฆฌ ์์ ์๋ก,octo-repo
๋ฅผ ๋ฆฌํฌ์งํ ๋ฆฌ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.GraphQL query { repository(owner: "octo-org", name: "octo-repo") { suggestedActors(capabilities: [CAN_BE_ASSIGNED], first: 100) { nodes { login __typename ... on Bot { id } ... on User { id } } } } }
query { repository(owner: "octo-org", name: "octo-repo") { suggestedActors(capabilities: [CAN_BE_ASSIGNED], first: 100) { nodes { login __typename ... on Bot { id } ... on User { id } } } } }
์ฌ์ฉ์์ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ชจ๋์ ๋ํด Copilot ์ฝ๋ฉ ์์ด์ ํธ๊ฐ ํ์ฑํ๋์ด ์๋ ๊ฒฝ์ฐ, ์ฟผ๋ฆฌ์์ ๋ฐํ๋๋ ์ฒซ ๋ฒ์งธ ๋ ธ๋์
login
๊ฐ์copilot-swe-agent
์ ๋๋ค. -
์ด ๋ก๊ทธ์ธ์
id
๊ฐ์ ๊ธฐ๋กํด ๋ก๋๋ค. -
์ด์๋ฅผ ๋ง๋ค๋ ค๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ GraphQL ์ ์ญ ID๋ฅผ ๊ฐ์ ธ์ค๊ณ ,
octo-org
๋ฅผ ๋ฆฌํฌ์งํ ๋ฆฌ ์์ ์๋ก,octo-repo
๋ฅผ ๋ฆฌํฌ์งํ ๋ฆฌ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.GraphQL query { repository(owner: "octo-org", name: "octo-repo") { id } }
query { repository(owner: "octo-org", name: "octo-repo") { id } }
-
createIssue
๋ณํ์ ์ฌ์ฉํ์ฌ ์ด์๋ฅผ ๋ง๋ญ๋๋ค.REPOSITORY_ID
๋ ์ด์ ๋จ๊ณ์์ ๋ฐํ๋ ID๋ก,BOT_ID
๋ ๊ทธ๋ณด๋ค ์ ๋จ๊ณ์์ ๋ฐํ๋ ID๋ก ๋ฐ๊ฟ๋๋ค.GraphQL mutation { createIssue(input: {repositoryId: "REPOSITORY_ID", title: "Implement comprehensive unit tests", body: "DETAILS", assigneeIds: ["BOT_ID"]}) { issue { id title assignees(first: 10) { nodes { login } } } } }
mutation { createIssue(input: {repositoryId: "REPOSITORY_ID", title: "Implement comprehensive unit tests", body: "DETAILS", assigneeIds: ["BOT_ID"]}) { issue { id title assignees(first: 10) { nodes { login } } } } }
๊ธฐ์กด ์ด์ ํ ๋น
-
์ฌ์ฉ์ ํ ํฐ(์: personal access token ๋๋ GitHub App ์ฌ์ฉ์-์๋ฒ ํ ํฐ)์ ์ฌ์ฉํ์ฌ API ์ธ์ฆ์ ์งํํด์ผ ํฉ๋๋ค.
-
GraphQL API์์ ํด๋น ๋ฆฌํฌ์งํ ๋ฆฌ์
suggestedActors
์ Copilot์ด ํฌํจ๋์ด ์๋์ง ํ์ธํ์ฌ ๋ฆฌํฌ์งํ ๋ฆฌ์์ Copilot ์ฝ๋ฉ ์์ด์ ํธ๊ฐ ํ์ฑํ๋์ด ์๋์ง ํ์ธํฉ๋๋ค.octo-org
๋ฅผ ๋ฆฌํฌ์งํ ๋ฆฌ ์์ ์๋ก,octo-repo
๋ฅผ ๋ฆฌํฌ์งํ ๋ฆฌ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.GraphQL query { repository(owner: "monalisa", name: "octocat") { suggestedActors(capabilities: [CAN_BE_ASSIGNED], first: 100) { nodes { login __typename ... on Bot { id } ... on User { id } } } } }
query { repository(owner: "monalisa", name: "octocat") { suggestedActors(capabilities: [CAN_BE_ASSIGNED], first: 100) { nodes { login __typename ... on Bot { id } ... on User { id } } } } }
์ฌ์ฉ์์ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ชจ๋์ ๋ํด Copilot ์ฝ๋ฉ ์์ด์ ํธ๊ฐ ํ์ฑํ๋์ด ์๋ ๊ฒฝ์ฐ, ์ฟผ๋ฆฌ์์ ๋ฐํ๋๋ ์ฒซ ๋ฒ์งธ ๋ ธ๋์
login
๊ฐ์copilot-swe-agent
์ ๋๋ค. -
Copilot์ ํ ๋นํ๋ ค๋ ์ด์์ GraphQL ์ ์ญ ID๋ฅผ ํ์นํ๋ ค๋ฉด
monalisa
๋ ๋ฆฌํฌ์งํ ๋ฆฌ ์์ ์์ ์ด๋ฆ์ผ๋ก,octocat
์ ๋ฆฌํฌ์งํ ๋ฆฌ ์ด๋ฆ์ผ๋ก,9000
์ ์ด์ ๋ฒํธ๋ก ๊ฐ๊ฐ ๋ฐ๊ฟ๋๋ค.GraphQL query { repository(owner: "monalisa", name: "octocat") { issue(number: 9000) { id title } } }
query { repository(owner: "monalisa", name: "octocat") { issue(number: 9000) { id title } } }
-
replaceActorsForAssignable
๋ณํ์ ์ฌ์ฉํ์ฌ Copilot์ ๊ธฐ์กด ์ด์๋ฅผ ํ ๋นํฉ๋๋ค.ISSUE_ID
๋ ์ด์ ๋จ๊ณ์์ ๋ฐํ๋ ID๋ก,BOT_ID
๋ ๊ทธ๋ณด๋ค ์ ๋จ๊ณ์์ ๋ฐํ๋ ID๋ก ๋ฐ๊ฟ๋๋ค.GraphQL mutation { replaceActorsForAssignable(input: {assignableId: "ISSUE_ID", actorIds: ["BOT_ID"]}) { assignable { ... on Issue { id title assignees(first: 10) { nodes { login } } } } } }
mutation { replaceActorsForAssignable(input: {assignableId: "ISSUE_ID", actorIds: ["BOT_ID"]}) { assignable { ... on Issue { id title assignees(first: 10) { nodes { login } } } } } }
Copilot์ ์ด์ ํด๊ฒฐ ์งํ ์ํฉ ์ถ์
Copilot์ ์ด์๋ฅผ ํ ๋นํ ์งํ, Copilot์ ํด๋น ์ด์์ ๐ ๋ฐ์์ ๋จ๊น๋๋ค.
๋ช ์ด ํ, Copilot์ ์๋ ์ด์์ ์ฐ๊ฒฐ๋ ์ด์ ๋์ด์ค๊ธฐ ์์ฒญ์ ์ฝ๋๋ค. ์ด์์ ํ์๋ผ์ธ์ ํด๋น ๋์ด์ค๊ธฐ ์์ฒญ๊ณผ ์ฐ๊ฒฐ๋ ์ด๋ฒคํธ๊ฐ ํ์๋ฉ๋๋ค.
Copilot์ ์ด์ ์์ ์ ์ํด ์์ด์ ํธ ์ธ์ ์ ์์ํฉ๋๋ค. "Copilot started work" ์ด๋ฒคํธ๊ฐ ๋์ด์ค๊ธฐ ์์ฒญ ํ์๋ผ์ธ์ ๋ํ๋๊ณ , Copilot์ด ์์ ์ ์งํํ๋ฉด์ ๋์ด์ค๊ธฐ ์์ฒญ ๋ณธ๋ฌธ์ด ์ ๊ธฐ์ ์ธ ์ํ ์ ๋ฐ์ดํธ๋ก ๋ฐ์๋๊ณ , ๋ถ๊ธฐ์ ์ปค๋ฐ์ ํธ์ํฉ๋๋ค.
Agents ํ์ด์ง์์ ๊ณผ๊ฑฐ ๋ฐ ํ์ฌ์ ๋ชจ๋ ์ธ์ ์ ๋ณด๊ณ ์ถ์ ํ ์ ์์ต๋๋ค. Copilot์ ์ธ์ ์ถ์ ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
Copilot์ด ์ด๋ค ์์ ์ ์งํํ๊ณ ์๋์ง ํ์ธํ๋ ค๋ฉด View session์ ํด๋ฆญํ์ธ์. ์ธ์ ๋ก๊ทธ ๋ทฐ์ด๊ฐ ํ์๋์ด Copilot์ด ์ด์ ์์ ์ ์งํํ๋ ๋์ ์ค์๊ฐ ๋ก๊ทธ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. Copilot์ด ํด๋น ์ด์ ์์ ์ ์ค๋จํ๋๋ก ํ๋ ค๋ฉด Stop session์ ํด๋ฆญํ์ธ์. Copilot์ ์ธ์ ์ถ์ ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
Copilot์ด ์์ ์ ๋ง์น๋ฉด ์์ด์ ํธ ์ธ์ ์ด ์ข ๋ฃ๋๊ณ , Copilot์ด ๊ฒํ ๋ฅผ ์์ฒญํ๋ ์๋ฆผ์ด ์ ์ก๋ฉ๋๋ค. ๋ํ, "Copilot finished work" ์ด๋ฒคํธ๊ฐ ๋์ด์ค๊ธฐ ์์ฒญ ํ์๋ผ์ธ์ ํ์๋ฉ๋๋ค.
Copilot๊ณผ ๋์ด์ค๊ธฐ ์์ฒญ ์์
Copilot์ด ํด๋น ์ด์ ์์ ์ ์๋ฃํ ํ์๋ ๋์ด์ค๊ธฐ ์์ฒญ์ ์ฒ ์ ํ ๊ฒํ ํ๊ณ , ๋ณ๊ฒฝํด์ผ ํ๋ ๋ชจ๋ ์ฌํญ์ ๋๊ธ์ ๋ฌ์์ผ ํฉ๋๋ค. Copilot์์ ๋ง๋ ๋์ด์ค๊ธฐ ์์ฒญ ๊ฒํ ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.