Skip to content

Sungtae124/Valiant-Searching-Code-Assistant

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

88 Commits
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Valiant-Searching Code Assistant

CodeLingo Icon


VS Code Assistant - Assist! Code Lingo

<Assist! Code Lingo>๋Š” ์ž‘์„ฑ ์ค‘์ธ ํŒŒ์ด์ฌ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ ๋ฐ ์š”์•ฝํ•˜์—ฌ ์ถ”์ฒœ ์ฝ”๋“œ๋ฅผ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜, ๋ถ„์„ ๋‚ด์šฉ์„ ์ธํ„ฐ๋„ท์— ๊ฒ€์ƒ‰ํ•˜๋Š” VSCode Extension์ž…๋‹ˆ๋‹ค.

ํžˆํžˆ

Motivation

์ตœ๊ทผ์— ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” IDE๋ฅผ ๊ผฝ์ž๋ฉด ๋‹จ์—ฐ VSCode๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Extension์„ ํ†ตํ•ด์„œ ์ˆ˜๋งŽ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ๋‹ค์–‘ํ•œ ํ…Œ๋งˆ๋ฅผ ์ œ๊ณตํ• ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์ฝ”๋“œ ์™„์„ฑ์— ๋ฐ•์ฐจ๋ฅผ ๊ฐ€ํ•˜๋Š” ํƒ์›”ํ•œ ๊ธฐ๋Šฅ ๋•๋ถ„์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์—ฌ๊ธฐ์„œ Idea๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

'์–ด๋–ค ๊ธฐ๋Šฅ์„ ํ•˜๋”๋ผ๋„ Extension์˜ ํ˜•ํƒœ๋กœ ํ•œ ๋ฒˆ ๋งŒ๋“ค์–ด๋ณด์ž!' ๋ผ๊ณ  ๋ง์ด์ฃ .

๊ทธ๋ ‡๊ฒŒ ์‹œ์ž‘ํ•œ ์ด ํ”„๋กœ์ ํŠธ๋Š” Valiant-Searching(VS) ์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ์— ๋งž๊ฒŒ ์‚ฌ์šฉ์ž์˜ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ”๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ์ฝ”๋“œ ๋ถ„์„์„ ํ†ตํ•œ ์„ธ ๊ฐ€์ง€ ์š”์•ฝ ์งˆ๋ฌธ ์ œ๊ณต
  • ์‚ฌ์šฉ์ž ์š”์ฒญ์— ์˜ํ•œ ์ฝ”๋“œ ์ถ”์ฒœ Assistant
  • ๋ถ„์„๋œ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์งˆ๋ฌธ์„ ์ž๋™์œผ๋กœ ํฌํ•จํ•˜๋Š” ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ

ํ•ด๋‹น ๊ธฐ๋Šฅ์€ ๋ชจ๋‘ Sidebar์— ์œ„์น˜ํ•œ ๋ฒ„ํŠผ์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋งค์šฐ ๊ธด๋ฐ€ํ•˜๊ฒŒ ํ˜‘๋ ฅํ•˜์—ฌ ๋‹น์‹ ์˜ ์ฝ”๋”ฉ์„ ๋„์™€์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค!

๊ฐœ๋ฐœํ•œ ์‚ฌ๋žŒ๋“ค

  • Sungtae124(๊น€์„ฑํƒœ) : Extension Parts (์ต์Šคํ…์…˜ ๊ฐœ๋ฐœ ๋ถ€๋ถ„ ์ „๋ฐ˜ - TypeScript)
  • RyuJinHyeok(๋ฅ˜์ง„ํ˜) : Models & API (๋ชจ๋ธ ๊ตฌํ˜„ ๋ฐ ์ฝ”๋“œ ๋ถ„์„ ํŒŒ์ด์ฌ ํŒŒํŠธ)

๋ชฉ์ฐจ

์„ค์น˜

  • ์™„์ „ํ•œ Extension์œผ๋กœ ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ์„œ, ์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํŒจํ‚ค์ง€ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • GPT-API ํ‚ค๊ฐ€ ๋น ์ ธ์žˆ๋Š” ์ฝ”๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์— gpt_api.py์— ํ‚ค๋ฅผ ๋„ฃ์ง€ ์•Š์œผ๋ฉด ๋ถ„์„์— ๊ด€๋ จํ•œ ๋™์ž‘์€ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • 1st) Node.js (npm) : https://nodejs.org/en

  • 2nd) Yeoman : https://yeoman.io/

  • 3rd) VS Code Extension Generator : https://www.npmjs.com/package/generator-code

    npm install -g yo
    npm install -g yo generator-code
    
    pip install numpy
    pip install gensim
    pip install openai

์‚ฌ์šฉ๋ฒ•

๊ตฌํ˜„ ์œ„์น˜ ๋ณ„ ์„ค๋ช…

๊ธฐ์กด์— VSCode์™€ Extension์„ ์‚ฌ์šฉํ•ด๋ณด์‹  ๋ถ„๋“ค์€ ํฐ ์–ด๋ ค์›€ ์—†์ด ์‚ฌ์šฉํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒ˜์Œ ์‚ฌ์šฉํ•˜์‹œ๋Š” ๋ถ„๋„ ์ถ”๊ฐ€์ ์ธ ์„ค๋ช… ์—†์ด ์“ธ ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„ํ–ˆ์ง€๋งŒ, ํ˜น์‹œ ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ๋‹ค๋ฉด ์•„๋ž˜์˜ ์„ค๋ช…์„ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”!

architecture-containers

(from. https://code.visualstudio.com/api/ux-guidelines/overview)

1. Activity Bar - Code Lingoโ€™s Icon

  • Icon์„ ํด๋ฆญํ•˜๋ฉด Code Lingo์™€ ์ƒํ˜ธ์ž‘์šฉ ํ•  ์ˆ˜ ์žˆ๋Š” View๊ฐ€ Primary Sidebar์—์„œ ์—ด๋ฆฝ๋‹ˆ๋‹ค.

2. Primary Sidebar - Buttons & Interaction View

  • Buttons

    Buttons

    • ์‚ฌ์šฉ์ž๋Š” ๋ฒ„ํŠผ์„ ํ†ตํ•ด์„œ ์‚ฌ์ „ ๋“ฑ๋ก๋œ ๋ช…๋ น์–ด์™€ ์—ฐ๊ฒฐ๋œ ๊ฐ ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์œ ๊ธฐ์ ์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์„ค๋ช…์€ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋ณ„ ์„ค๋ช…์— ์ฒจ๋ถ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • Start Code Lingo : Code Lingo๊ฐ€ ํ˜ธ์ถœ๋˜๊ณ  ์ธ์‚ฌํ•ด์ค๋‹ˆ๋‹ค.
    • Analyze Code : ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•œ ๋’ค ํ‚ค์›Œ๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์งˆ๋ฌธ ํ˜•ํƒœ๋กœ ๋‚˜ํƒ€๋‚ด ์ค๋‹ˆ๋‹ค.
    • Assist! Code Lingo : ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ์งˆ๋ฌธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ถ”์ฒœ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
    • Search on Google :
      • Analyze Code์—์„œ ์ œ๊ธฐ๋œ ์งˆ๋ฌธ์„ ๊ธฐ๋ณธ ๊ฒ€์ƒ‰์–ด๋กœ ๋ฐ›์•„์™€ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. (Enterํ‚ค ํ•œ๋ฒˆ)
      • ๊ฒ€์ƒ‰์–ด๋ฅผ ์ง์ ‘ ์ž…๋ ฅ ๋ฐ›์•„ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ๊ธฐ๋ณธ ๋ธŒ๋ผ์šฐ์ €์˜ ์ƒˆ ์ฐฝ์œผ๋กœ ๋„์›Œ์ค๋‹ˆ๋‹ค.
  • Interaction View

  • Code Lingo์˜ ๊ธฐ๋ณธ ์•ˆ๋‚ด ๋ฉ”์„ธ์ง€๋“ค์€ ์ขŒ์ธก์˜ Interactions๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    • ๊ฐ command๊ฐ€ ์‹คํ–‰๋˜๋ฉฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ง„ํ–‰ ์ƒํ™ฉ๊ณผ ๊ด€๋ จ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
  • ์–ด๋–ค ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋˜์—ˆ๋Š”์ง€ ๋ณด์—ฌ์คŒ์œผ๋กœ์จ Extension์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    Interactions

3. Information Message

  • ์‚ฌ์šฉ์ž์—๊ฒŒ ์ง์ ‘ ์•Œ๋ ค์ค˜์•ผ ํ•˜๋Š” ์ •๋ณด์— ๋Œ€ํ•ด์„œ ๋ณ„๋„๋กœ Message๋ฅผ ๋„์›Œ์ค๋‹ˆ๋‹ค. (์šฐ์ธก ํ•˜๋‹จ)

Notification   Information

4. Notifications

  • ์ฝ”๋“œ ๋ถ„์„ ํ›„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถ„์„๋œ ์ •๋ณด๋ฅผ ๋‹ด์€ ์งˆ๋ฌธ์ด ์ ์ ˆํ•œ์ง€ ๋ฌผ์–ด๋ณด๊ณ , ์‚ฌ์šฉ์ž๋Š” ๋ฒ„ํŠผ์œผ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋‹ต๋ณ€์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
    • Yes : ํ˜„์žฌ ์งˆ๋ฌธ์ด ์ ์ ˆํ•˜๋‹ค๋Š” ์‘๋‹ต์œผ๋กœ, ์ด ์งˆ๋ฌธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ด€๋ จ ํ•จ์ˆ˜๋‚˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ถ”์ฒœํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
    • No : ํ˜„์žฌ ์งˆ๋ฌธ์ด ๋ถ€์ •ํ™•ํ•˜๋‹ค๋Š” ์‘๋‹ต์ด๋ฏ€๋กœ, ์ƒ์„ฑ๋œ ์งˆ๋ฌธ ์ค‘ 2,3 ๋ฒˆ์งธ ์งˆ๋ฌธ์„ ์˜ต์…˜์œผ๋กœ ์ œ๊ณตํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ต์…˜ ์ค‘ โ€œRequest analysisโ€๋ฅผ ์„ ํƒ ์‹œ ์ฝ”๋“œ ๋ถ„์„์„ ๋‹ค์‹œ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฏธ์‘๋‹ต : ์ถ”ํ›„์— ๋‹ค์‹œ ๋ถ„์„์„ ์ง„ํ–‰ํ•˜๊ณ  ์‘๋‹ต์„ ๋ฐ›๋„๋ก ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž๊ฐ€ ๋ฒ„ํŠผ์„ ํ†ตํ•ด ์„ ํƒํ•œ ์‘๋‹ต์— ๋”ฐ๋ผ ์งˆ๋ฌธ์ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
    • ์ด ์งˆ๋ฌธ์€ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์˜ ๊ธฐ๋ณธ ๊ฒ€์ƒ‰์–ด๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
    • ์ด ์งˆ๋ฌธ์ด ํด๋ฆฝ๋ณด๋“œ์— ๋ณต์‚ฌ๋˜์–ด ๋ฐ”๋กœ ๋ถ™์—ฌ๋„ฃ๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

5-1. QuickPick

QuickPick

  • 3๊ฐ€์ง€ ์˜ต์…˜์„ ์ œ๊ณตํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•˜๋ฉด ํ•ด๋‹นํ•˜๋Š” ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • ๋ถ„์„ํ•œ ์ฝ”๋“œ๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑ๋œ ์งˆ๋ฌธ ์ค‘์— ์‚ฌ์šฉ์ž์—๊ฒŒ ์„ ํƒ ์˜ต์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • ์ฝ”๋“œ ์žฌ๋ถ„์„ ์š”์ฒญ ์˜ต์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

5-2. Output Channel

Output

  • ์ฝ”๋“œ ๋ถ„์„ ํ›„์— ๋„์ถœ๋œ ๊ฒฐ๊ณผ ์งˆ๋ฌธ์„ ์ •ํ™•๋„ ์ˆœ์„œ๋Œ€๋กœ 3๊ฐœ๊นŒ์ง€ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž๋Š” ์งˆ๋ฌธ์„ ํ™•์ธํ•œ ๋’ค Notification๊ณผ QuickPick์œผ๋กœ ์‘๋‹ต์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

5-3. Quick Input

QuickInput

  • Search on Google ๋ฒ„ํŠผ ํด๋ฆญ์‹œ ์ž…๋ ฅ๊ฐ’์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋ณ„ ์„ค๋ช… (๊ฐœ๋ฐœ์ž๋“ค์„ ์œ„ํ•œ ์„ค๋ช…)

Button / Interaction (View) / Information message / Notification, Quick Pick, Output Channel / Console / Command

1. ํ˜ธ์ถœ ๋ฐ ์‹คํ–‰

CodeLingo_gif

  • Button : Start Code Lingo
  • Command : CodeLingo.start
  • Title : Code Lingo start
  • ๋™์ž‘ : ๋ช…๋ น ์‹คํ–‰ ์‹œ โ€œCode Lingo is started! May I assist you?โ€๋ผ๊ณ  ๋ฌผ์œผ๋ฉฐ ์ธ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

2. ์ฝ”๋“œ ๋‚ด์šฉ ๋ณต์‚ฌ

  • Command : CodeLingo.getFileContent
  • Title : get file content
  • ์—ฐ๊ฒฐ ํŒŒ์ผ : fileCopy.ts
  • ํ•จ์ˆ˜ : readCurrentFileContent()
  • ๋™์ž‘ : VSCode ๋‚ด์— ์—ด๋ ค์žˆ๋Š” ์™ธ๋ถ€ ๊ฒฝ๋กœ์˜ ์ฝ”๋“œ ๋‚ด์šฉ์„ ๋™๊ธฐ์ ์œผ๋กœ ์ฝ์–ด์„œ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • โ€œGetting file contentโ€
    • console.log๋กœ VSCode์— ์—ด๋ ค์žˆ๋Š” ์Šคํฌ๋ฆฝํŠธ ๋‚ด์šฉ์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋ณต์‚ฌ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. โ€œํŒŒ์ผ ๋‚ด์šฉ์„ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค. โ€œ
    • fileCopy.ts ์ธก์—์„œ ์Šคํฌ๋ฆฝํŠธ ๋ณต์‚ฌ ์‹œ์— ์—๋Ÿฌ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ฝ˜์†”๋กœ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.
      • โ€œํŒŒ์ผ์„ ์ฝ๋Š” ๋„์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.โ€
  • fileContent๋ฅผ ์ •์ƒ์ ์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ค์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด : โ€œํŒŒ์ผ ๋‚ด์šฉ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.โ€ ์ถœ๋ ฅ.

3. ์ฝ”๋“œ ๋ถ„์„

analysis_text_gif

  • Button : Analyze Code
  • Command : CodeLingo.letsAnalyzeCode
  • Title : Letโ€™s analyze your code!
  • ์—ฐ๊ฒฐ ํŒŒ์ผ : fileCopy.ts & externalAnalysisIO.ts & analyze.py
  • ๋™์ž‘ : [3-1. ์™ธ๋ถ€ ์ฝ”๋“œ ์ž…์ถœ๋ ฅ] + [4. ์ฝ”๋“œ ๋ถ„์„ ์ดํ›„] ์ž๋™ ์‹คํ–‰
  • โ€œLetโ€™s analyze your code!โ€
    • try - catch๋ฅผ ์‚ฌ์šฉํ•œ Error Handling
    • externalAnalysisIO.ts์—์„œ analyze.py๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜๋ฉด
      • โ€œCode analysis succeeded!โ€
    • ์˜ค๋ฅ˜ ๋˜๋Š” ๋น„์ •์ƒ ์ข…๋ฃŒ ์‹œ
      • Code analysis failed with exit code ${result.status}.
      • reject(Code analysis failed with exit code ${result.status}.)

3-1. ์™ธ๋ถ€ ์ฝ”๋“œ ์ž…์ถœ๋ ฅ

  • ๋ณ„๋„์˜ Command ์„ค์ • ์—†์ด extension.ts ํŒŒ์ผ์˜ letsAnalyzeCode ๋ช…๋ น์–ด ๋‚ด๋ถ€์—์„œ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์—ฐ๊ฒฐ ํŒŒ์ผ : externalAnalysisIO.ts & analyze.py
  • ๋™์ž‘ : letsAnalyzeCode ๋ช…๋ น์–ด ๋‚ด๋ถ€์—์„œ ๋ณต์‚ฌํ•ด์˜จ ์ฝ”๋“œ ์ „์ฒด๋ฅผ ํ‘œ์ค€ ์ž…๋ ฅ์„ ์ด์šฉํ•ด string์œผ๋กœ ์ฝ”๋“œ ๋ถ„์„ ํŒŒ์ผ์ธ main.py์— ๋„˜๊ฒจ์ค๋‹ˆ๋‹ค. ๋ถ„์„ ์ง„ํ–‰ ํ›„ ๊ฒฐ๊ณผ๊ฐ’์„ string[]๋กœ ๋ฐ›์•„์™€์„œ Output Channel์—์„œ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
    • โ€œCode analysis result: โ€œ
    • ๊ฒฐ๊ณผ ๋ฆฌํ„ด ์‹œ ์—๋Ÿฌ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ Information Message๋กœ ๋„์›Œ์ค๋‹ˆ๋‹ค.

4. ๋ถ„์„ ๊ฒฐ๊ณผ ํ™•์ธ

Notification_QuickPick

  • Command : CodeLingo.askAnalyzedCode
  • Title : Do you writing this code?
  • ์—ฐ๊ฒฐ ํ•จ์ˆ˜ : copyToClipBoard
  • ๋™์ž‘ : ๋ถ„์„ํ•œ ์ฝ”๋“œ๋กœ๋ถ€ํ„ฐ ๋„์ถœ๋œ ์งˆ๋ฌธ์ด ๋งž๋Š”์ง€ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • โ€œAre you writing this type of code?โ€
  • Notification ํ™œ์šฉ
    • Yes : ํ˜„์žฌ ์งˆ๋ฌธ์ด ์ ์ ˆํ•˜๋‹ค๋Š” ์‘๋‹ต์œผ๋กœ, ์ด ์งˆ๋ฌธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ธฐ๋ณธ ๊ฒ€์ƒ‰์–ด์™€ ์ถ”์ฒœ ์ฝ”๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
      • โ€œGreat! Let me assist you.โ€
      • โ€œI will recommend functions and algorithms.โ€
    • ๋ฏธ์‘๋‹ต : ์ถ”ํ›„์— ๋‹ค์‹œ ๋ถ„์„์„ ์ง„ํ–‰ํ•˜๊ณ  ์‘๋‹ต์„ ๋ฐ›๋„๋ก ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.
      • โ€œIt's Okay. Let me assist you later!โ€
  • QuickPick ํ™œ์šฉ PickSecondQuestion PickThirdQuestion
    • No : ํ˜„์žฌ ์งˆ๋ฌธ์ด ๋ถ€์ •ํ™•ํ•˜๋‹ค๋Š” ์‘๋‹ต์ด๋ฏ€๋กœ, ์ƒ์„ฑ๋œ ์งˆ๋ฌธ ์ค‘ 2,3 ๋ฒˆ์งธ ์งˆ๋ฌธ์„ QuickPick์˜ ์˜ต์…˜์œผ๋กœ ์ œ๊ณตํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
      • "You chose No, let me show you optionsโ€
      • You selected ${selectedOption}!
      • โ€œI will recommend functions and algorithms.โ€
    • ์˜ต์…˜ ์ค‘ โ€˜Request code analyze again!โ€™์„ ์„ ํƒ ์‹œ ์ฝ”๋“œ ๋ถ„์„์„ ๋‹ค์‹œ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
      • โ€œLet me analyze your code again..โ€
      • 3. ์ฝ”๋“œ ๋ถ„์„ ์ง„ํ–‰ RequestReanalyze
    • ๋งŒ์•ฝ QuickPick ์ฐฝ์—์„œ ๊ทธ๋ƒฅ ๋‚˜๊ฐ„๋‹ค๋ฉด..
      • โ€œYou did not select any option.โ€
  • ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ์งˆ๋ฌธ์˜ ์ธ๋ฑ์Šค๋ฅผ chosenOption ๋ณ€์ˆ˜์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    • Yes(1๋ฒˆ ์งˆ๋ฌธ) โ‡’ 0 / No โ‡’ option 1(2๋ฒˆ ์งˆ๋ฌธ) : 1 / option 2(3๋ฒˆ์งˆ๋ฌธ) : 2 / re-analyze(๋ถ„์„ ์žฌ์š”์ฒญ) : -1
  • ์‚ฌ์šฉ์ž๊ฐ€ ๋ฒ„ํŠผ์„ ํ†ตํ•ด ์„ ํƒํ•œ ์‘๋‹ต์— ๋”ฐ๋ผ ์งˆ๋ฌธ์ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
    • ์„ ํƒ๋œ ์งˆ๋ฌธ์€ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์˜ ๊ธฐ๋ณธ ๊ฒ€์ƒ‰์–ด๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
    • ์„ ํƒ๋œ ์งˆ๋ฌธ์ด ํด๋ฆฝ๋ณด๋“œ์— ๋ณต์‚ฌ ๋˜์–ด ๋ฐ”๋กœ ๋ถ™์—ฌ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์„ ํƒํ•œ ์งˆ๋ฌธ์— ํ•ด๋‹นํ•˜๋Š” ์ถ”์ฒœ ์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. (recommendedCode๋กœ ์ถ”์ฒœ ์ฝ”๋“œ๋ฅผ ๋ฐ›์•„์˜ด)
  • ์ถ”ํ›„์— ์‚ฌ์šฉ์ž๊ฐ€ Assist! Code Lingo ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด Output Channel์— ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

5. ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ

searching_text_gif

  • Button : Search on Google
  • Command : CodeLingo.searching
  • Title : What do you want to search?
  • ๋™์ž‘ : Quick Input์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฒ€์ƒ‰์–ด๋ฅผ ์ž…๋ ฅ ๋ฐ›์Šต๋‹ˆ๋‹ค. + โ€œPlease enter queryโ€
  • Quick Input: โ€œEnter your search query.โ€, โ€œWhat do you want to search?โ€
  • ์ฝ”๋“œ ๋ถ„์„ ์ด์ „์˜ ๊ธฐ๋ณธ ๊ฒ€์ƒ‰์–ด๋Š” Code Lingo๋กœ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฒ€์ƒ‰์–ด๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š๊ณ  ์—”ํ„ฐ ์‹œ ์„ ํƒ๋œ ์งˆ๋ฌธ์„ ๊ธฐ๋ณธ ๊ฒ€์ƒ‰์–ด๋กœ ์„ค์ •ํ•˜์—ฌ ๊ฒ€์ƒ‰์„ ์‹ค์‹œํ•ฉ๋‹ˆ๋‹ค.
    • โ€œNo query input.โ€
    • โ€œ"I enter selected option as query.โ€
  • ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰์„ ์‹คํ–‰ ํ›„ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ณธ ๋ธŒ๋ผ์šฐ์ €์˜ ์ƒˆ ์ฐฝ์œผ๋กœ ์—ด์–ด์ค๋‹ˆ๋‹ค.

6. Assist! ๊ธฐ๋Šฅ(์ฝ”๋“œ ์ถ”์ฒœ ๊ธฐ๋Šฅ)

recommendation_gif

  • Button : Assist! Code Lingo
  • Command : CodeLingo.assist
  • Title : Assist! Code Lingo
  • ๋™์ž‘ : "Assist! Code Lingoโ€, "Recommend usual codeโ€
  • ์‚ฌ์šฉ์ž์—๊ฒŒ ์„ ํƒ๋œ ์งˆ๋ฌธ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์„ฑ๋œ ์ถ”์ฒœ ์ฝ”๋“œ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.(Output Channel ํ™œ์šฉ)

7. (2๋ฒˆ, 3๋ฒˆ ๋‚ด์šฉ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ฝ”๋ฉ˜ํŠธ)

  • ํŒŒ์ผ ๊ฒฝ๋กœ ์„ค์ •์— ๋Œ€ํ•œ ์ˆฑํ•œ ๊ณ ๋ฏผ ๋์— ํ˜„์žฌ ์ฝ”๋“œ์— ์‚ฌ์šฉ๋œ ๋ฐฉ์‹์„ ์œ ์ง€ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

  • ์™ธ๋ถ€ ํŒŒ์ผ์„ ์—ฌ๋Š” ์ƒํ™ฉ(getFileContent ๋ช…๋ น์–ด์™€ fileCopy.ts)์—์„œ๋Š” VSCode ์—๋””ํ„ฐ ๋‚ด์— ์—ด๋ ค์žˆ๋Š” ํด๋”์™€ ์Šคํฌ๋ฆฝํŠธ์˜ ๊ฒฝ๋กœ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•˜์—ฌ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

    const editor = vscode.window.activeTextEditor;
    //์—๋””ํ„ฐ ๋‚ด์— ์—ด๋ ค์žˆ๋Š” ์Šคํฌ๋ฆฝํŠธ์˜ ๊ฒฝ๋กœ๋ฅผ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
    const currentFilePath = editor.document.uri.fsPath;
  • ํŒŒ์ด์ฌ์œผ๋กœ ๊ตฌํ˜„๋œ ์ฝ”๋“œ ๋ถ„์„ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

    • externalAnalysisIO.ts๋ฅผ extension.ts๊ฐ€ ํฌํ•จ๋œ srcํด๋” ๋‚ด๋ถ€์— ์œ„์น˜ ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.

    • codeAnalyzeMachine ํด๋”๋ฅผ ์ „์ฒด Extension์˜ ๋ฃจํŠธ ํด๋” ํ•˜์œ„์— ์œ„์น˜ ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค. (src ํด๋”์™€ ๋™๋“ฑํ•œ ๋ฃจํŠธ ์•„๋ž˜)

    • ์ƒ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ํŒŒ์•…ํ•˜์—ฌ externalAnalysisIO.ts ๊ธฐ์ค€

      • ์ƒ์œ„ ํด๋” ์ด๋™ โ†’ models ํด๋”๋กœ ์ด๋™ โ†’ main.py ์ ‘๊ทผ

      ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•˜์˜€์Šต๋‹ˆ๋‹ค.

    // ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์˜ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.
    const scriptDir = path.dirname(__dirname);
    // ์ฝ”๋“œ ๋ถ„์„ ์Šคํฌ๋ฆฝํŠธ์˜ ๊ฒฝ๋กœ๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
    const scriptPath = path.join(scriptDir, 'models', 'main.py');
  • ๊ธฐ์กด์˜ ๋ฐฉ์‹์€ ์ด๋ ‡๊ฒŒ ๋˜์–ด์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ๋Š” fileCopy.ts์™€ externalAnalysisIO.ts๋กœ ๋ถ„๋ฆฌ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. (ํŒŒ์ผ์ด ์—ด๋ ค์žˆ๋Š” ๊ฒฝ๋กœ์™€ ํŒŒ์ผ๋ช…์„ ์กฐํ•ฉํ•˜์—ฌ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐฉ์‹)

    const currentFilePath = editor.document.uri.fsPath;
    const fileName = path.basename(currentFilePath); // ํŒŒ์ผ ์ด๋ฆ„ ๊ฐ€์ ธ์˜ค๊ธฐ
    const scriptPath = path.join(path.dirname(currentFilePath), fileName);

๋ถ„์„ ๋ชจ๋ธ ์„ค๋ช…

1. Tokenizer

  1. ํŒŒ์ด์ฌ ๊ธฐ๋ณธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ tokenize๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ์‚ฐ์ž, ๊ตฌ๋ถ„์ž๋ฅผ ์ œ์™ธํ•œ ๋ณ€์ˆ˜๋ช…, ํ•จ์ˆ˜๋ช…, ํด๋ž˜์Šค๋ช… ๋“ฑ์„ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.

  2. ์ถ”์ถœ๋œ ๋‹จ์–ด๋“ค ์ค‘, if, else, for, def ์™€ ๊ฐ™์ด ๋ถ„์„์— ํ•„์š” ์—†๋Š” ๋ถˆ์šฉ์–ด๋Š” ๋ชจ๋‘ ์ œ์™ธํ•˜์—ฌ ํ† ํฐํ™”๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

ํ† ํฐํ™” ์˜ˆ์‹œ tokenize image

2. Word Embedding Model Ensemble

  1. ๋น„์Šทํ•œ ๋‹จ์–ด๋ฅผ ๊ฐ€๊นŒ์šด vector๋กœ ๋งคํ•‘ํ•˜๋Š” word embedding ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ ๋‚ด๋ถ€ ๋‹จ์–ด๋“ค์— ๋Œ€ํ•ด word embedding์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  2. ๋ชจ๋ธ์˜ embedding ๊ฒฐ๊ณผ์˜ ์‹ ๋ขฐ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด, 2๊ฐœ ์ด์ƒ์˜ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. (Word2Vec, FastText)

  3. embedding ํ›„, ๊ฐ ๋‹จ์–ด๋“ค๊ณผ ๋‚˜๋จธ์ง€ ๋‹จ์–ด๋“ค์˜ cosine similarity๋ฅผ ๊ตฌํ•˜๊ณ  ๋ชจ๋‘ ๋”ํ•ฉ๋‹ˆ๋‹ค.
    $C_i = \sum_{k=1}^{n}{similarity(i, k)}$

  4. ๋ชจ๋“  ๋‹จ์–ด๋“ค์— ๋Œ€ํ•ด $C$๊ฐ’์„ ๊ตฌํ•œ ํ›„, ์ •๊ทœํ™”๋ฅผ ์œ„ํ•ด softmax๋ฅผ ์ทจํ•ฉ๋‹ˆ๋‹ค.
    $SC_i = softmax(C_i)=\frac{exp(c_i)}{\sum_{j=1}^{n}{exp(c_j)}}$

  5. ๊ฐ ๋ชจ๋ธ์˜ $SC$ ๊ฐ’์„ ๋”ํ•˜์—ฌ ์•™์ƒ๋ธ”์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    $SC^{ensemble} = SC^{Word2Vec} + SC^{FastText}$

3. GPT - API

  1. ์œ„์—์„œ ๊ตฌํ•œ $SC^{ensemble}$ ๊ฐ’ ํฌ๊ธฐ ์ˆœ์„œ๋Œ€๋กœ ์ƒ์œ„ 10๊ฐœ ๋‹จ์–ด๋งŒ ์ถ”์ถœํ•˜์˜€๊ณ , ์ด๋ฅผ ์งˆ๋ฌธ ์ƒ์„ฑ ์—ญํ• ์„ ๋ถ€์—ฌํ•œ GPT์—๊ฒŒ ํ•˜๋‚˜์˜ ์งˆ๋ฌธ ํ˜•์‹์˜ ๋ฌธ์žฅ์œผ๋กœ ์ƒ์„ฑํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

  2. ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์Šน์ธ๋œ ์งˆ๋ฌธ์ด ๋“ค์–ด์˜ค๋ฉด, ํ•ด๋‹น ์งˆ๋ฌธ์„ ํŒŒ์ด์ฌ ํŠœํ„ฐ ์—ญํ• ์„ ๋ถ€์—ฌํ•œ GPT์—๊ฒŒ ์ „๋‹ฌํ•˜์—ฌ ์ž์„ธํ•œ ์„ค๋ช…์„ ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

์ „์ฒด ํ๋ฆ„๋„

flow chart image

License

  • ๊ธฐ๋ณธ์ ์œผ๋กœ MIT License๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.
  • ์ €ํฌ๋Š” ์ด ์ฝ”๋“œ๊ฐ€ ์ตœ๋Œ€ํ•œ ๋„๋ฆฌ ํผ์ง€๊ณ , ์ˆ˜์ •๋˜๋Š” ๊ฒƒ์„ ๋ชฉ์ ์œผ๋กœ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์— ์–ผ๋งˆ๋“ ์ง€ ํ™œ์šฉํ•˜์…”๋„ ์ข‹์Šต๋‹ˆ๋‹ค. ์ถœ์ฒ˜๋งŒ ๋‚จ๊ฒจ์ฃผ์„ธ์š”!
  • ์ด ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์ˆ˜์ •ํ•˜์‹ค ์˜ํ–ฅ์ด ์žˆ๋‹ค๋ฉด ๋ฉ”์ผ๋กœ ์—ฐ๋ฝ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ์ž๋ฃŒ

Extension ๊ฐœ๋ฐœ ํŒŒํŠธ

๋ชจ๋ธ ๊ฐœ๋ฐœ ํŒŒํŠธ

๊ฐœ๋ฐœ ์ง„ํ–‰ ์ค‘ ์ œํ•œ ์‚ฌํ•ญ

Extension marketplace ๋ฐฐํฌ

  • ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ ์‹œ์—๋Š” pip install์ด๋‚˜ ๊ธฐ์กด์˜ Extension๊ณผ ๊ฐ™์ด ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์„ค์น˜ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ค€๊นŒ์ง€ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์˜€์Šต๋‹ˆ๋‹ค.
  • ๊ทธ ๋ชฉํ‘œ๋ฅผ ์ด๋ฃจ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐฐํฌ ๋ฐ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ๋“ฑ๋ก์ด ํ•„์ˆ˜์ ์ด์ง€๋งŒ, ์•„๋ž˜ ์ ์–ด๋‘” GPT-API ํ‚ค ๊ด€๋ จ ๋ฌธ์ œ๋กœ ์‹คํ–‰์‹œํ‚ค์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ถ”ํ›„์— ์ง€์†์ ์ธ ๊ฐœ๋ฐœ ์˜ˆ์ •์ด๋ฏ€๋กœ, ์–ธ์  ๊ฐ€๋Š” ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค์™€ VSCode ๋‚ด์˜ Extensions ํƒญ์—์„œ ๊ผญ ๋ต ์ˆ˜ ์žˆ๋„๋ก ๋…ธ๋ ฅํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

GPT-API ์‚ฌ์šฉ ๊ด€๋ จ

  • GPT-API๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ณ ์œ  ํ‚ค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜คํ”ˆ์†Œ์Šค์˜ ๋ชฉ์ ์— ๋งž๊ฒŒ ํ‚ค๋ฅผ ๊ทธ๋Œ€๋กœ ๋„ฃ์–ด๋‘๊ณ  Extension ๋ฐฐํฌ ํ›„ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ  ์‹ถ์—ˆ์ง€๋งŒ..
  • ์ธํ„ฐ๋„ท๊ณผ ๊นƒํ—ˆ๋ธŒ ๋“ฑ์˜ ๊ณต๊ฐœ ์„œ๋ฒ„์— ํ‚ค๋ฅผ ์˜ฌ๋ฆฌ๋Š” ์ˆœ๊ฐ„ open-ai ์ธก์—์„œ ํ‚ค๋ฅผ ์—†์• ๋ฒ„๋ฆฌ๋Š” ์ƒํ™ฉ์ด๋ผ ๋ถˆ๊ฐ€ํ”ผํ•˜๊ฒŒ ํ‚ค๋งŒ ์‚ญ์ œํ•˜์—ฌ ์—…๋กœ๋“œํ•˜์˜€์Šต๋‹ˆ๋‹ค.

Web View ์‚ฌ์šฉ ๊ด€๋ จ

  • Recommendation Code ํŒŒํŠธ์—์„œ ์ƒ์„ฑ๋œ ์ถ”์ฒœ ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ ํƒญ์ธ Web View์— ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ด ์›๋ž˜ ๊ณ„ํš์ด์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฌ๋‚˜ Web View์— ํ‘œ์‹œํ•  ๋•Œ ์ง€๋‚˜์น˜๊ฒŒ ์˜ค๋ฅ˜๊ฐ€ ๋งŽ์•„์ง€๊ณ , ํ”„๋กœ๊ทธ๋žจ ๊ตฌ๋™ ์ž์ฒด๊ฐ€ ๋А๋ ค์ ธ ์˜คํžˆ๋ ค ์™„์„ฑ๋„๋ฅผ ํ•ด์นœ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์—ฌ ์ œ์™ธ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.
  • ํ˜„์žฌ๋Š” Output Channel๋กœ ๋Œ€์ฒดํ•˜์—ฌ ํ‘œ์‹œํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ๊ด€๋ จ ์‚ฌํ•ญ

๊ฐœ๋ฐœ ์ง„ํ–‰ ์ค‘์ธ ์‚ฌํ•ญ

  • ํ•จ์ˆ˜ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ถ”์ฒœ ๊ธฐ๋Šฅ

๊ฐœ๋ฐœ ์˜ˆ์ • ์‚ฌํ•ญ

  • ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ๋ฐฐํฌ ์˜ˆ์ •

์ถ”๊ฐ€ ์‚ฌํ•ญ

  • Extension ๋ฉ”์ธ ํด๋” ๋‚ด์— generator ์‚ฌ์šฉ ์‹œ ๊ธฐ๋ณธ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ReadMe ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ฐฐํฌ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ˆ์‹œ ์ƒํƒœ๋กœ ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

About

VS Code Assistant - Assist! Code Lingo

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors