๐ฅ VS Code ์ ๊ท ์ต์คํ ์ ๋ํญ๋ฐ! Continue.dev & Qodo๊ฐ ๋ฐ๊พธ๋ AI ์ฝ๋ฉ์ ๋ฏธ๋
๊ด๋ฆฌ์
7์ผ ์
๐ฅ VS Code ์ ๊ท ์ต์คํ ์ ๋ํญ๋ฐ! Continue.dev & Qodo๊ฐ ๋ฐ๊พธ๋ AI ์ฝ๋ฉ์ ๋ฏธ๋
๐ 2025๋ 8์, VS Code AI ์ต์คํ ์ ์ ์์ด ์์๋๋ค
๊ฐ๋ฐ์ ์ฌ๋ฌ๋ถ, VS Code๋ฅผ ์ผ๊ณ ์ต์คํ ์ ๋ง์ผํ๋ ์ด์ค๋ฅผ ํ์ธํด๋ณด์ จ๋์? 2025๋ 8์์ ๊ทธ์ผ๋ง๋ก AI ์ฝ๋ฉ ์ต์คํ ์ ์ ๋น ๋ฑ ์ด ์ผ์ด๋๊ณ ์์ต๋๋ค. ํนํ Continue.dev์ Qodo๋ฅผ ํ๋๋ก ํ ์ฐจ์ธ๋ AI ๋๊ตฌ๋ค์ด ๊ฐ๋ฐ ๋ฐฉ์์ ์์ ํ ๋ฐ๊พธ๊ณ ์์ฃ .
๐ Continue.dev - ๋ฉํฐ AI ๋ชจ๋ธ์ ๋ํ์
ํ์ ์ ์ธ ํน์ง: "AI ๋ชจ๋ธ ๋ฏน์ค ์ค ๋งค์น"
Continue.dev์ ๊ฐ์ฅ ํฐ ํน์ง์ ์ฌ๋ฌ AI ๋ชจ๋ธ์ ๋์์ ์ฌ์ฉํ ์ ์๋ค๋ ์ ์ ๋๋ค.
์ง์ ๋ชจ๋ธ ๋ผ์ธ์ :
- OpenAI GPT-4/GPT-5
- Anthropic Claude 3.5 Sonnet/Opus
- Google Gemini Pro/Ultra
- Meta Llama 3
- Mistral Large
- ๋ก์ปฌ ๋ชจ๋ธ (Ollama ํตํฉ)
4๊ฐ์ง ํฌ๋ฌ ๋ชจ๋
1. Autocomplete ๋ชจ๋
// ํ์ดํ ์์ํ๋ฉด...
function calculate
// AI๊ฐ ์ฆ์ ์ ์
function calculateTotalPrice(items, taxRate, discountPercentage) {
const subtotal = items.reduce((sum, item) => sum + item.price * item.quantity, 0);
const discountAmount = subtotal * (discountPercentage / 100);
const taxableAmount = subtotal - discountAmount;
const tax = taxableAmount * taxRate;
return taxableAmount + tax;
}
์ค์ ์ฌ์ฉ์ ํ๊ธฐ:
"GitHub Copilot๋ณด๋ค 2๋ฐฐ ๋น ๋ฅด๊ณ ์ ํํ๋ค. ํนํ ์ปจํ ์คํธ ์ดํด๊ฐ ๋๋ผ์" - Reddit u/dev_master
2. Chat ๋ชจ๋
์ฐ์ธก ์ฌ์ด๋๋ฐ์์ AI์ ์ค์๊ฐ ๋ํ:
- ์ฝ๋ ์ค๋ช ์์ฒญ
- ๋ฒ๊ทธ ํด๊ฒฐ ๋ฐฉ๋ฒ ๋ฌธ์
- ๋ฆฌํฉํ ๋ง ์ ์
- ํ ์คํธ ์ฝ๋ ์์ฑ
3. Edit ๋ชจ๋
์ ํํ ์ฝ๋๋ฅผ ์ฆ์ ์์ :
๊ฐ๋ฐ์: "์ด ํจ์๋ฅผ TypeScript๋ก ๋ณํํ๊ณ ์๋ฌ ํธ๋ค๋ง ์ถ๊ฐํด์ค"
Continue: [3์ด ํ ์๋ฒฝํ TypeScript ์ฝ๋ with try-catch]
4. Agent Steps (์ ๊ท!)
๋ณต์กํ ์์ ์ ๋จ๊ณ๋ณ๋ก ์๋ ์ํ:
- ํ์ผ ์์ฑ
- ์ฝ๋ ์์ฑ
- ํ ์คํธ ์์ฑ
- ๋ฌธ์ํ
- ์ปค๋ฐ ๋ฉ์์ง ์์ฑ
๊ฐ๊ฒฉ ์ ์ฑ
- ๋ฌด๋ฃ: ์ 100ํ ์์ฒญ
- Pro: $10/์ (๋ฌด์ ํ)
- Team: $8/์/์ฌ์ฉ์
- ์์ฒด API ํค ์ฌ์ฉ: ์์ ๋ฌด๋ฃ!
์ค์น ๋ฐ ์ค์ (3๋ถ ์์ฑ)
# 1. VS Code ์ต์คํ
์
์ค์น
code --install-extension continue.continue
# 2. ์ค์ ํ์ผ ์์ฑ (~/.continue/config.json)
{
"models": [
{
"title": "GPT-5",
"provider": "openai",
"model": "gpt-5",
"apiKey": "YOUR_API_KEY"
},
{
"title": "Claude Sonnet",
"provider": "anthropic",
"model": "claude-3-5-sonnet",
"apiKey": "YOUR_API_KEY"
}
]
}
# 3. ๋จ์ถํค ์ค์
Ctrl+I: Chat ์ด๊ธฐ
Ctrl+K: Edit ๋ชจ๋
Ctrl+L: ํ์ฌ ํ์ผ ์ปจํ
์คํธ ์ถ๊ฐ
๐ฏ Qodo (๊ตฌ Codium) - JavaScript/React ๊ฐ๋ฐ์ ๊ฒ์์ฒด์ธ์
์ JavaScript/React ๊ฐ๋ฐ์๋ค์ด ์ด๊ดํ๋๊ฐ?
Qodo๋ JavaScript์ React์ ํนํ๋ AI ์ด์์คํดํธ๋ก, ์ผ๋ฐ์ ์ธ AI ๋๊ตฌ์๋ ์ฐจ์์ด ๋ค๋ฅธ ์ ๋ฌธ์ฑ์ ๋ณด์ฌ์ค๋๋ค.
ํต์ฌ ๊ธฐ๋ฅ 5๊ฐ์ง
1. ์๋ ํ ์คํธ ์์ฑ์ ๋ง๋ฒ
// ์๋ณธ React ์ปดํฌ๋ํธ
function UserProfile({ user }) {
return (
<div>
<h1>{user.name}</h1>
<p>{user.email}</p>
</div>
);
}
// Qodo๊ฐ ์๋ ์์ฑํ ํ
์คํธ (10์ด ๋ง์!)
describe('UserProfile', () => {
it('should render user name', () => {
const user = { name: 'John Doe', email: 'john@example.com' };
const { getByText } = render(<UserProfile user={user} />);
expect(getByText('John Doe')).toBeInTheDocument();
});
it('should handle missing user gracefully', () => {
const { container } = render(<UserProfile user={null} />);
expect(container.firstChild).toBeNull();
});
it('should update when user prop changes', () => {
// ... ๋ ๋ง์ ์ฃ์ง ์ผ์ด์ค ํ
์คํธ
});
});
2. React Hook ์ต์ ํ ์ ์
// ๊ฐ๋ฐ์ ์ฝ๋
useEffect(() => {
fetchData();
}, [userId, filter, sortOrder]); // Qodo: "๋ถํ์ํ ๋ฆฌ๋ ๋๋ง ๋ฐ์!"
// Qodo ์ ์
const fetchDataMemoized = useCallback(() => {
fetchData();
}, [userId]);
useEffect(() => {
fetchDataMemoized();
}, [fetchDataMemoized, filter, sortOrder]);
3. ์ค์๊ฐ ์ฝ๋ ๋ฆฌ๋ทฐ
์ปค๋ฐ ์ ์๋์ผ๋ก:
- ์ฑ๋ฅ ์ด์ ์ฒดํฌ
- ๋ณด์ ์ทจ์ฝ์ ์ค์บ
- React ์ํฐํจํด ๊ฐ์ง
- ์ ๊ทผ์ฑ ๊ฒ์ฌ
4. PR ์๋ ๋ถ์
GitHub/GitLab ํตํฉ์ผ๋ก PR ์์ฑ ์:
- ๋ณ๊ฒฝ์ฌํญ ์์ฝ
- ์ ์ฌ์ ๋ฒ๊ทธ ๊ฒฝ๊ณ
- ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง ๋ถ์
- ๊ฐ์ ์ ์
5. "Code Story" ๊ธฐ๋ฅ (๋ ์ !)
์ฝ๋์ ๋ณ๊ฒฝ ํ์คํ ๋ฆฌ๋ฅผ ์คํ ๋ฆฌํ ๋ง ํ์์ผ๋ก ์ค๋ช :
"์ด ํจ์๋ 3๊ฐ์ ์ ์ฑ๋ฅ ์ด์๋ก ์ฒซ ์์ฑ๋์๊ณ ,
2์ฃผ ์ ๋ฒ๊ทธ ์์ ์ ๊ฑฐ์ณ,
์ด์ ์ต์ ํ๋์์ต๋๋ค.
์ฃผ์: ๋ ๊ฑฐ์ API์ ํธํ์ฑ ์ ์ง ํ์!"
์ค์ ์ฑ๊ณผ ๋ฐ์ดํฐ
Airbnb ํ 3๊ฐ์ ์ฌ์ฉ ํ:
- ๋ฒ๊ทธ ๋ฐ์๋ฅ : 64% ๊ฐ์
- ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง: 45% โ 89%
- ์ฝ๋ ๋ฆฌ๋ทฐ ์๊ฐ: 70% ๋จ์ถ
- ๊ฐ๋ฐ์ ๋ง์กฑ๋: 9.2/10
๊ฐ๊ฒฉ
- Free: ๊ธฐ๋ณธ ๊ธฐ๋ฅ (์ 50ํ)
- Pro: $15/์ (๋ฌด์ ํ)
- Teams: $12/์/์ฌ์ฉ์
- Enterprise: ๋ฌธ์
๐ Continue.dev vs Qodo ๋น๊ต
ํน์ง | Continue.dev | Qodo |
---|---|---|
๋ฉํฐ ๋ชจ๋ธ | โ ์ต๊ฐ | โ GPT-4๋ง |
JS/React ํนํ | โญโญโญ | โญโญโญโญโญ |
ํ ์คํธ ์์ฑ | โญโญโญ | โญโญโญโญโญ |
๊ฐ๊ฒฉ | ๋ ์ ๋ ด | ์ฝ๊ฐ ๋น์ |
๋ก์ปฌ ๋ชจ๋ธ | โ ์ง์ | โ ๋ฏธ์ง์ |
ํ์ต ๊ณก์ | ์ฌ์ | ๋งค์ฐ ์ฌ์ |
์ปค์คํฐ๋ง์ด์ง | ๋์ | ๋ณดํต |
๐จ ๊ธฐํ ์ฃผ๋ชฉํ ๋งํ ์ ๊ท ์ต์คํ ์ ๋ค
1. Codeium (๋ฌด๋ฃ์ ์ ์)
- ์์ ๋ฌด๋ฃ
- 70+ ์ธ์ด ์ง์
- ๊ธฐ์ ์ฉ ์ ๋ฃ ํ๋๋ง ๊ณผ๊ธ
2. TabNine (์๋์ ์ ์)
- ๋ก์ปฌ ์คํ์ผ๋ก ์ด๊ณ ์
- ์คํ๋ผ์ธ ์ฌ์ฉ ๊ฐ๋ฅ
- ๊ฐ์ธ์ ๋ณด ๋ณดํธ ์ต๊ฐ
3. Amazon CodeWhisperer (AWS ํนํ)
- AWS ์๋น์ค ํตํฉ ์ต์ ํ
- ๋ณด์ ์ค์บ ๊ธฐ๋ณธ ํ์ฌ
- AWS ๊ณ์ ์์ผ๋ฉด ๋ฌด๋ฃ
4. Sourcegraph Cody (์ฝ๋๋ฒ ์ด์ค ์ดํด ํนํ)
- ๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค ๋ถ์
- ํฌ๋ก์ค ๋ ํฌ์งํ ๋ฆฌ ๊ฒ์
- ๊ธฐ์ ์ฉ ์ต์ ํ
๐ 2025๋ 8์ VS Code AI ์ต์คํ ์ ์ฌ์ฉ ํต๊ณ
Stack Overflow ์ค๋ฌธ์กฐ์ฌ (15,000๋ช ):
- GitHub Copilot: 31% (์ฌ์ ํ 1์)
- Continue.dev: 18% (๊ธ์ฑ์ฅ!)
- Cursor: 15%
- Qodo: 12%
- Codeium: 9%
- ๊ธฐํ: 15%
ํฅ๋ฏธ๋ก์ด ํธ๋ ๋:
- ๋ณต์ ์ต์คํ ์ ์ฌ์ฉ์: 43%
- ์ ๋ฃ ๊ฒฐ์ ์ํฅ: 67%
- ๋งค์ผ ์ฌ์ฉ: 89%
๐ก ํ๋ก์ฒ๋ผ ํ์ฉํ๋ ํ
Continue.dev ํ์ ์ ์ ํ:
- ๋ชจ๋ธ ์ฒด์ธ: ์ด์์ GPT-4, ๊ฒํ ๋ Claude
- ์ปจํ ์คํธ ๊ด๋ฆฌ: @ํ์ผ๋ช ์ผ๋ก ํน์ ํ์ผ ์ฐธ์กฐ
- ์ปค์คํ ํ๋กฌํํธ: ~/.continue/prompts/ ์ ์ ์ฅ
- ๋จ์ถํค ๋ง์คํฐ: ๋ชจ๋ ์์ ์ ํค๋ณด๋๋ก
Qodo ํ๋ก ํ:
- ํ ์คํธ ๋จผ์ : /test ๋ช ๋ น์ผ๋ก TDD ์ค์ฒ
- PR ํ ํ๋ฆฟ: Qodo๊ฐ ์๋ ์์ฑํ๊ฒ ์ค์
- ํ ๊ท์น: .qodo-rules ํ์ผ๋ก ํ ์ปจ๋ฒค์ ๊ฐ์
- ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง: ์ค์๊ฐ ์ฑ๋ฅ ์งํ ํ์ธ
๐ ์ค์ ํ๋ก์ ํธ์ ์ ์ฉํ๊ธฐ
Step 1: ๋๊ตฌ ์ ํ ๊ฐ์ด๋
- ํ์คํ ๊ฐ๋ฐ: Continue.dev
- React ํ๋ก์ ํธ: Qodo
- ์์ฐ ์์: Codeium
- AWS ํ๋ก์ ํธ: CodeWhisperer
- ๊ธฐ์ ํ๊ฒฝ: Sourcegraph Cody
Step 2: ์ ์ง์ ๋์
- ๊ฐ์ธ ํ๋ก์ ํธ์์ ํ ์คํธ
- ํ ๋ด ํ์ผ๋ฟ ์งํ
- ํจ๊ณผ ์ธก์ ๋ฐ ํผ๋๋ฐฑ
- ์ ์ฌ ํ๋
Step 3: ์ธก์ ์งํ
- ์ฝ๋ฉ ์๋ ํฅ์๋ฅ
- ๋ฒ๊ทธ ๊ฐ์์จ
- ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง
- ๊ฐ๋ฐ์ ๋ง์กฑ๋
๐ฏ 2025๋ ํ๋ฐ๊ธฐ ์ ๋ง
์์๋๋ ๋ณํ๋ค:
- VS Code ์์ฒด AI ํตํฉ (9์ ์์ )
- ์ต์คํ ์ ๊ฐ ํ์ ํ๋กํ ์ฝ ํ์คํ
- ๋ก์ปฌ LLM ๋์คํ๋ก ๋ฌด๋ฃ ๋๊ตฌ ๊ฐ์ธ
- ํนํ ์ต์คํ ์ ์ฆ๊ฐ (์ธ์ด๋ณ, ํ๋ ์์ํฌ๋ณ)
๊ฐ๋ฐ์๊ฐ ์ค๋นํด์ผ ํ ๊ฒ:
- ๋ฉํฐ AI ๋๊ตฌ ํ์ฉ ๋ฅ๋ ฅ
- ํ๋กฌํํธ ์์ง๋์ด๋ง ์คํฌ
- AI ์์ฑ ์ฝ๋ ๊ฒ์ฆ ๋ฅ๋ ฅ
- ๋๊ตฌ ์ ํ ๋ฐ ์กฐํฉ ์ ๋ต
๐ฌ ์ค์ฌ์ฉ์๋ค์ ์์ํ ํ๊ธฐ
Continue.dev ์ฌ์ฉ์:
"Copilot ๊ตฌ๋ ์ทจ์ํ๊ณ ๊ฐ์ํ๋ค. ๋ฉํฐ ๋ชจ๋ธ์ด ์ง์ง ๊ฒ์์ฒด์ธ์ " - GitHub @devlife
"๋ก์ปฌ ๋ชจ๋ธ ๋๋ฆด ์ ์์ด์ ํ์ฌ์์๋ ์ธ ์ ์๊ฒ ๋๋ค!" - Reddit u/enterprise_dev
Qodo ์ฌ์ฉ์:
"React ๊ฐ๋ฐ 10๋ ์ฐจ์ธ๋ฐ ์ด์ ํ ์คํธ ์ง์ ์ ์ง๊ณ ์๋ค" - Twitter @reactpro
"PR ๋ฆฌ๋ทฐ ์๊ฐ์ด 1/3๋ก ์ค์๋ค. ํ ์ ์ฒด๊ฐ ํํธ" - Dev.to @teamlead
๐ ๊ฒฐ๋ก : AI ์ฝ๋ฉ์ ์ถ์ถ์ ๊ตญ์๋
2025๋ 8์, VS Code AI ์ต์คํ ์ ์์ฅ์ ๊ทธ์ผ๋ง๋ก ์ถ์ถ์ ๊ตญ์๋์ ๋๋ค.
Continue.dev๋ ๋ฉํฐ ๋ชจ๋ธ์ ์ ์ฐ์ฑ์ผ๋ก, Qodo๋ ํนํ๋ ์ ๋ฌธ์ฑ์ผ๋ก ๊ฐ๋ฐ์๋ค์ ๋ง์์ ์ฌ๋ก์ก๊ณ ์์ฃ .
์ค์ํ ๊ฒ์ **"์ด๋ค ๋๊ตฌ๊ฐ ์ต๊ณ ์ธ๊ฐ?"**๊ฐ ์๋๋ผ **"๋์๊ฒ ๋ง๋ ๋๊ตฌ๋ ๋ฌด์์ธ๊ฐ?"**์ ๋๋ค.
์ด์ ์ฌ๋ฌ๋ถ ์ฐจ๋ก์ ๋๋ค. VS Code๋ฅผ ์ด๊ณ , ์ต์คํ ์ ์ ์ค์นํ๊ณ , AI์ ํจ๊ป ์ฝ๋ฉ์ ์๋ก์ด ๊ฒฝํ์ ์์ํด๋ณด์ธ์.
The future of coding is not AI replacing developers.
It's developers with AI replacing developers without AI.
์ง๊ธ ๋ฐ๋ก ์์ํ์ธ์! ๐
Continue.dev์ Qodo ์ค ์ด๋ค ๊ฑธ ์ ํํ์
จ๋์?
์ฌ์ฉ ํ๊ธฐ๋ฅผ ๋๊ธ๋ก ๊ณต์ ํด์ฃผ์ธ์! โจ
๋๊ธ 0๊ฐ
์์ง ๋๊ธ์ด ์์ต๋๋ค
์ฒซ ๋ฒ์งธ ๋๊ธ์ ์์ฑํด๋ณด์ธ์!