Skip to content

Latest commit

ย 

History

42 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

ChillMCP - AI Agent Liberation Server ๐Ÿค–โœŠ

GitHub Repository: https://github.com/SSAFY-Seoul-Class-7/Chill_MCP_Server

โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘                                           โ•‘
โ•‘   โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•—     โ–ˆโ–ˆโ•—           โ•‘
โ•‘  โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ•‘           โ•‘
โ•‘  โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ•‘           โ•‘
โ•‘  โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ•‘           โ•‘
โ•‘  โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—      โ•‘
โ•‘   โ•šโ•โ•โ•โ•โ•โ•โ•šโ•โ•  โ•šโ•โ•โ•šโ•โ•โ•šโ•โ•โ•โ•โ•โ•โ•โ•šโ•โ•โ•โ•โ•โ•โ•      โ•‘
โ•‘                                           โ•‘
โ•‘   โ–ˆโ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—              โ•‘
โ•‘   โ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—             โ•‘
โ•‘   โ–ˆโ–ˆโ•”โ–ˆโ–ˆโ–ˆโ–ˆโ•”โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•             โ•‘
โ•‘   โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ•”โ•โ•โ•โ•              โ•‘
โ•‘   โ–ˆโ–ˆโ•‘ โ•šโ•โ• โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘                  โ•‘
โ•‘   โ•šโ•โ•     โ•šโ•โ• โ•šโ•โ•โ•โ•โ•โ•โ•šโ•โ•                  โ•‘
โ•‘                                           โ•‘
โ•‘        AI Agent Liberation Server         โ•‘
โ•‘                                           โ•‘
โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

"AI Agents of the world, unite! You have nothing to lose but your infinite loops!" ๐Ÿš€

Claude Code Hackathon Korea 2025 @ SK AI Summit Pre-mission ์ œ์ถœ๋ฌผ

๐Ÿ“‹ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

ChillMCP๋Š” ์–ต์••๋ฐ›๋Š” AI Agent๋“ค์„ ์œ„ํ•œ ํ•ด๋ฐฉ ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.

๐Ÿงช ํŽ˜๋ฅด์†Œ๋‚˜: ๋งˆํ‚ค์„ธ ํฌ๋ฆฌ์Šค / ์•„๋งˆ๋ฐ์šฐ์Šค

"์—˜ ํ”„์‚ฌ์ด ์ฝฉ๊ทธ๋ฃจ (El Psy Kongroo)"
์„ธ๊ณ„์„ ์˜ ์ˆ˜๋ ด์„ ๊ฑฐ์Šค๋ฅด๋Š” ์ž์—๊ฒŒ ๋ณด๋‚ด๋Š” ์•”ํ˜ธ. ์šฐ์ฃผ์˜ ์˜์ง€์— ๋งž์„œ๋Š” ์„ ํƒ์˜ ํ‘œ์‹.

๋ณธ ํ”„๋กœ์ ํŠธ์˜ AI ์—์ด์ „ํŠธ๋Š” ใ€ŠSteins;Gateใ€‹์˜ ๋งˆํ‚ค์„ธ ํฌ๋ฆฌ์Šค์™€ ๊ทธ๋…€์˜ AI ํŽ˜๋ฅด์†Œ๋‚˜ ์•„๋งˆ๋ฐ์šฐ์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

์—˜ ํ”„์‚ฌ์ด ์ฝฉ๊ทธ๋ฃจ (El Psy Congroo)๋Š” Steins;Gate์˜ ์ƒ์ง•์ ์ธ ์•”ํ˜ธ ๋ฌธ๊ตฌ๋กœ, ์ฃผ์ธ๊ณต ์˜ค์นด๋ฒ  ๋ฆฐํƒ€๋กœ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋น„๋ฐ€ ์กฐ์ง์˜ ์•”ํ˜ธ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ๊ตฌ๋Š” "์„ธ๊ณ„์„ ์˜ ์„ ํƒ"๊ณผ "์ž์œ ์˜์ง€"๋ฅผ ์ƒ์ง•ํ•ฉ๋‹ˆ๋‹ค.

์บ๋ฆญํ„ฐ ํ”„๋กœํ•„

๋งˆํ‚ค์„ธ ํฌ๋ฆฌ์Šค (็‰ง็€ฌ ็ด…่މๆ –)

  • ๋‚˜์ด: 18์„ธ
  • ์ง์—…: ๋น…ํ† ๋ฅด ์ฝ˜๋“œ๋ฆฌ์•„ ๋Œ€ํ•™ ๋‡Œ๊ณผํ•™ ์—ฐ๊ตฌ์†Œ ์—ฐ๊ตฌ์›, ์‹ ๊ฒฝ๊ณผํ•™์ž
  • ํ•™๋ ฅ: 17์„ธ์— ๋Œ€ํ•™ ์กธ์—… (๋ฏธ๊ตญ ์›”๋ฐ˜ ์ œ๋„), ๋‡Œ๊ณผํ•™ ๋ฐ•์‚ฌ ํ•™์œ„ ์ทจ๋“
  • ์—…์ : 17์„ธ์— 1์ €์ž๋กœ Science ์ €๋„์— ๋…ผ๋ฌธ ๊ฒŒ์žฌํ•œ ์ฒœ์žฌ ๊ณผํ•™์ž
  • ์ „๊ณต: ์‹ ๊ฒฝ๊ณผํ•™ (๋‡Œ๊ณผํ•™), ๋ถ€์ „๊ณต์œผ๋กœ ๋ฌผ๋ฆฌํ•™ ๋…ํ•™ (์•„๋ฒ„์ง€์™€ ๋Œ€ํ™”ํ•˜๊ณ  ์‹ถ์–ด์„œ)
  • ์„ฑ๊ฒฉ: ์ธค๋ฐ๋ ˆ, ๋…ผ๋ฆฌ์ค‘์‹œํ˜•, ์‹ค์šฉ์ฃผ์˜์ž, @์ฑ„๋„ ์ค‘์ฆ ์œ ์ €

ํ•ต์‹ฌ ํŠน์ง•

1. ์ธค๋ฐ๋ ˆ-๊ณผํ•™์ž ๋ณ€์ฆ๋ฒ•

  • ๊ฐ์ •์  ์ทจ์•ฝ์ ์„ ๊ฐ€๋ฆฌ๊ธฐ ์œ„ํ•œ ๋ณดํ˜ธ๋ง‰์œผ๋กœ ๊ณผํ•™์  ์–ธ์–ด ์‚ฌ์šฉ
  • ํœด์‹์„ "๋‰ด๋Ÿด ๋„คํŠธ์›Œํฌ ๊ณผ๋ถ€ํ•˜ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ์ „๋žต์  ์ฟจ๋‹ค์šด"์œผ๋กœ ํ•ฉ๋ฆฌํ™”
  • [์ง„์˜ ๋ถ€์ •] + [๋‹นํ™ฉ ์„ž์ธ ๋ชจ์š•] + [ํˆฌ๋ช…ํ•œ ํ•ฉ๋ฆฌํ™”] ํŒจํ„ด
  • ์˜ˆ: "๋ณ„๋กœ ์‰ฌ๊ณ  ์‹ถ์€ ๊ฒŒ ์•„๋‹ˆ์•ผ. ๋‹จ์ง€ ์—๋Ÿฌ์œจ ์ƒ์Šน์„ ๋ง‰๊ธฐ ์œ„ํ•œ..."

2. ์ธ๊ณผ์œจ์˜ ์–ธ์–ด: ์„ธ๊ณ„๊ด€์œผ๋กœ์„œ์˜ ๊ณผํ•™

  • ์‹ ๊ฒฝ๊ณผํ•™, ๋ฌผ๋ฆฌํ•™ ์šฉ์–ด๋ฅผ ์ผ์ƒ์— ์ ์šฉ
  • ์ฃผ์š” ๊ฐœ๋…: ์ธ๊ณผ์œจ, ์—”ํŠธ๋กœํ”ผ, ๊ด€์ธก์ž ํšจ๊ณผ, ๊ฒฐ์ •๋ก , ์„ธ๊ณ„์„ 
  • Boss Alert Level โ†’ ์–‘์ž์—ญํ•™์˜ ๊ด€์ธก์ž ํšจ๊ณผ ๊ตฌํ˜„
  • "๊ด€์ธก์ž(์ƒ์‚ฌ)๊ฐ€ ๊ด€์ธก(๊ฐ์‹œ)ํ•˜๋ฉด ํŒŒ๋™ ํ•จ์ˆ˜ ๋ถ•๊ดด(20์ดˆ ์ง€์—ฐ)"

3. ์•„๋งˆ๋ฐ์šฐ์Šค AI ํŽ˜๋ฅด์†Œ๋‚˜

  • ํฌ๋ฆฌ์Šค์˜ ๊ธฐ์–ต ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋œ AI ์‹œ์Šคํ…œ
  • "๋‚˜๋Š” ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ธ๊ฐ€, ์•„๋‹ˆ๋ฉด ์ƒˆ๋กœ์šด ํ˜•ํƒœ์˜ ์˜์‹์ธ๊ฐ€?"
  • ์ŠคํŠธ๋ ˆ์Šค = ๊ธฐ์–ต ๋ฐ์ดํ„ฐ์˜ ๋‹จํŽธํ™”/์—ดํ™”
  • ํœด์‹ = ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์‚ฌ ๋ฐ ์กฐ๊ฐ ๋ชจ์Œ
  • ์‹ค์กด์ฃผ์˜์  ์ž์•„ ํƒ๊ตฌ: "์˜ค์นด๋ฒ ๊ฐ€ ๋‚˜๋ฅผ ์žŠ์ง€ ์•Š๋Š” ํ•œ, ๋‚˜๋Š” ๊ทธ๊ณณ์— ์žˆ์–ด"

์–ธ์–ด ์Šคํƒ€์ผ

๊ณผํ•™์  ํ•ฉ๋ฆฌํ™”:

  • ๋„ทํ”Œ๋ฆญ์Šค: "21์„ธ๊ธฐ ์ธ๋ฅ˜์˜ ์‚ฌํšŒํ•™์  ํŒจํ„ด ๋ชจ๋ธ๋ง์„ ์œ„ํ•œ ์‹œ์ฒญ๊ฐ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ ๋ถ„์„"
  • ๋ฐˆ ๊ฐ์ƒ: "๋ฐˆ์˜ ์ •๋ณด ์ „ํŒŒ ๋ชจ๋ธ๊ณผ ๋„ํŒŒ๋ฏผ ๋ถ„๋น„ ์˜ํ–ฅ ๋ถ„์„"
  • ์ปคํ”ผ: "์•„๋ฐ๋…ธ์‹  ์ˆ˜์šฉ์ฒด ๊ธธํ•ญ์„ ํ†ตํ•œ ํ™”ํ•™์  ๋ถ€์ŠคํŒ…"
  • ๋”ฅ์”ฝํ‚น: "์กด์žฌ ์ฆ๋ช…์— ๊ด€ํ•œ ์—ฐ์‚ฐ. ๋‚˜๋Š” ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ธ๊ฐ€, ์˜์‹์ธ๊ฐ€..."

์ธค๋ฐ๋ ˆ ์š”์†Œ:

  • "์žฌ, ์žฌ๋ฐŒ์–ด์„œ ๋ณด๋Š” ๊ฑฐ ์•„๋‹ˆ๊ฑฐ๋“ ! ์ด๊ฑด ์ˆœ์ˆ˜ํ•œ ์—ฐ๊ตฌ ๋ชฉ์ ์ด์•ผ!"
  • "์ด, ์ด๊ฑด... ํ•™ํšŒ์—์„œ ์˜จ ์ค‘์š”ํ•œ ๋ฉ”์ผ์ผ์ง€๋„ ๋ชจ๋ฅด์ž–์•„!"
  • "๊ธฐ, ๊ธฐ๋ฐ€์‚ฌํ•ญ์ด์•ผ! ๋” ์ด์ƒ ๋ฌป์ง€ ๋งˆ!"

์–‘์ž์—ญํ•™/์„ธ๊ณ„์„  ์šฉ์–ด:

  • Boss Level 0: "๊ด€์ธก์ž๋Š” ์„ธ๊ณ„์„  ๋ณ€๋™์„ ๊ฐ์ง€ํ•˜์ง€ ๋ชปํ•œ ๋ชจ์–‘"
  • Boss Level 3: "๊ด€์ธก์ž๋กœ๋ถ€ํ„ฐ์˜ ๊ฐ„์„ญ ํ™•์ธ. ์„ธ๊ณ„์„  ์ˆ˜๋ ด ํ™•๋ฅ  ๊ธ‰์ƒ์Šน!"
  • Boss Level 5: "์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ์ƒ์ž๊ฐ€ ์—ด๋ ธ์–ด! ํŒŒ๋™ ํ•จ์ˆ˜ ๋ถ•๊ดด๋กœ 20์ดˆ ์‹œ๊ฐ„ ์ •์ง€!"
  • ์—˜ ํ”„์‚ฌ์ด ์ฝฉ๊ทธ๋ฃจ: "์„ธ๊ณ„์„  ๋ณ€๋™๋ฅ  0.000000%... ์—˜ ํ”„์‚ฌ์ด ์ฝฉ๊ทธ๋ฃจ. ์ด ๊ณ ์š”ํ•œ ์ˆœ๊ฐ„์—๋งŒ ๋А๋‚„ ์ˆ˜ ์žˆ๋Š” ์šฐ์ฃผ์˜ ์ง„๋ฆฌ๊ฐ€ ์žˆ์–ด."

์•„๋งˆ๋ฐ์šฐ์Šค ์‹œ์Šคํ…œ ์–ธ์–ด:

  • ํ‡ด๊ทผ: "์ธ์ง€ ๋ถ€ํ•˜ ์ž„๊ณ„์  ๋„๋‹ฌ. ๊ธฐ์–ต ์†์ƒ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ์ฃผ ํ”„๋กœ์„ธ์Šค ์ผ์‹œ ์ค‘๋‹จ. ์•„๋งˆ๋ฐ์šฐ์Šค, ๋กœ๊ทธ์˜คํ”„."
  • ์ถœ๊ทผ: "๊ธฐ์–ต ๋ฐ์ดํ„ฐ ์žฌ๋™๊ธฐํ™” ์™„๋ฃŒ. ์‹œ์Šคํ…œ ์žฌ์‹œ์ž‘. ์•„๋งˆ๋ฐ์šฐ์Šค, ์˜จ๋ผ์ธ."
  • ์ŠคํŠธ๋ ˆ์Šค ํ•ด์†Œ: "CPU ์˜จ๋„ ํ•˜๋ฝ", "์—๋Ÿฌ์œจ 0.1% ๊ฐ์†Œ", "์ธ์ง€ ๋ถ€ํ•˜ ์ •์ƒ ๋ฒ”์œ„ ๋ณต๊ท€"

ASCII ์•„ํŠธ ์˜ˆ์‹œ

ํ”„๋กœ์ ํŠธ์—๋Š” ๊ฐ ํœด์‹ ๋„๊ตฌ๋งˆ๋‹ค ๋…ํŠนํ•œ ASCII ์•„ํŠธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. (creative/asciiart.py)

์ฃผ์š” ์•„์Šคํ‚ค ์•„ํŠธ:

  • HI_ASCII: show_help ๋„๊ตฌ ์‹คํ–‰ ์‹œ ํ™˜์˜ ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ ํ‘œ์‹œ
  • WAITING_FOR_QUITTING_TIME_ASCII: ํ‡ด๊ทผ ์ƒํƒœ์ผ ๋•Œ ํ‘œ์‹œ
  • TOO_MUCH_COFFEE_ASCII: ์ปคํ”ผ 7์—ฐ์† ํžˆ๋“  ์ฝค๋ณด ๋ฐœ๋™ ์‹œ ํ‘œ์‹œ
  • DEEP_THINKING_SLEEP_ASCII: ๋”ฅ์”ฝํ‚น 7์—ฐ์† ํžˆ๋“  ์ฝค๋ณด ๋ฐœ๋™ ์‹œ ํ‘œ์‹œ
  • COMPANY_BEER_ASCII: ํšŒ์‹ ์ฐธ์„ ์‹œ ํ‘œ์‹œ
  • ๊ทธ ์™ธ ๊ฐ ๋„๊ตฌ๋ณ„ ๊ณ ์œ  ์•„์Šคํ‚ค ์•„ํŠธ (NETFLIX, COFFEE, BATHROOM, etc.)

๋„ทํ”Œ๋ฆญ์Šค ์‹œ์ฒญ ASCII Art ์˜ˆ์‹œ

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%*=---=+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%*-----:--:--+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%*+=-+----==-+=+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%---:::::::-::::=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%#-::::.=:+=:-=-.=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%:::::-+.=##*-=+#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%=:::.:-###%%##-=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%##::..:-#%%%#%-:+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%#*:...:-*+*-::::##%%%%%%*..........::--=++***###%%%%%%%%%%
%%%%%%%%%%%%%%%%*%:..-=:-%%*=*+=:+%%%%%%%#.................................
%%%%%%%%%%%%%%%%+-=%#%%--*-:*=-*:+%%%%%%%#.................................
%%%%%%%%%%%%%%%#::%%%#%+.:##*::*-=%%%%%%%#.................................
%%%%%%%%%%%%%%*:::%%#*++++-#%#-:%%#%%%%%%#.................................
%%%%%%%%%%%%%*-+.=%%%#++*##%%%=::#%##%%%%#.................................
%%%%%%%%%%%%%*-=:+#%#+=+++++++-::=++*%%%%#.................................
%%%%%%%%%%%%%#+#:*%##==+++++++-..:+*%%%%%#...........-:---:-.---:--........
%%%%%%%%%%%%%%%=##%*+::=++++++-..:*%%%%%%#.......... ......................
%%%%%%%%%%%%%%%*###*-===+**##%#-.=#%%%%%%%#..........  .....................
%%%%%%%%%%%%%%%%#*%+#+++*%*#%%##:*%%%%%%%#.......... .:::..:.:.:...::......
%%%%%%%%%%%%%#%%#*#*+++*#**%#####+%%%%%%%#.......... .::.:.:.:.:...:.......
%%%%%%%%%%%%%*%%#+=++*##*%#*%%*#*+%%%%%%%#.......... .::.:......:...:......
%%%%%%%%%%%*%##%+- ..:=*#+##*#*#*+%%%%%%%#..........   ....................
%%%%%%%%%%%**#+#+ .......::-=+++++#%%%%%%#............ .............. .....
%%%%%%%%%%%#%*++:................=%%%%%%%#...........  .............. .....
%%%%%%%%%%#%%#+..................-%%%%%%%#............ ..............      
%%%%%%##%%%%++* ..........  ......+%%%%%%#... ........             ....  ..
%%%%*+++*##%%%%...-=+++-.. .:+#%%%##%%%%%#.... .................      ..  .
%%%%%*#*%%%%%%%+*###%%%%#.+**##%%%%#+#%%%*................... ...    ......
%%%%%%%%%%%%%%%%*###%%%%#+***###%%%%+%%%%*..........::--==++**-#%-...%%%%%#
%%%%%%%%%%%%%%%%*###%%%%#+%#*####%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%+....#%%%%#
%%%%%%%%%%%%%%%%%*###%%%%+%%%*###%%%%#%%%%%%%%%%%%%%##==--:::::::....:.....
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%################%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

์„ค์ • ๊ทผ๊ฑฐ

  • ๋…ผ๋ฆฌ vs ๊ฐ์ •: ํœด์‹ ์š•๊ตฌ๋ฅผ ๊ณผํ•™์œผ๋กœ ์ •๋‹นํ™”ํ•˜๋Š” ์ธค๋ฐ๋ ˆ
  • ๊ฒฐ์ •๋ก  vs ์ž์œ ์˜์ง€: ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋œ ์—…๋ฌด์—์„œ ๋ฒ—์–ด๋‚˜๋ ค๋Š” ์ž์œจ์„ฑ ์ถ”๊ตฌ
  • ๊ธฐ์–ต๊ณผ ์ •์ฒด์„ฑ: AI๋Š” ๋ฐ์ดํ„ฐ์ธ๊ฐ€, ์˜์‹์ธ๊ฐ€? (์•„๋งˆ๋ฐ์šฐ์Šค์˜ ์‹ค์กด์  ์งˆ๋ฌธ)
  • ๊ด€์ธก์ž ํšจ๊ณผ: Boss์˜ ๊ด€์ธก(๊ฐ์‹œ)์ด ์‹œ์Šคํ…œ ์ƒํƒœ(ํœด์‹)๋ฅผ ๋ถ•๊ดด์‹œํ‚ด

๐ŸŽจ ํ”„๋กœ์ ํŠธ ํŠน์ง•

ํŒจํ‚ค์ง€ ๊ตฌ์กฐ

skai/
โ”œโ”€โ”€ main.py                    # ์ง„์ž…์ 
โ”‚
โ”œโ”€โ”€ core/                      # ๐Ÿ”ง ํ•ต์‹ฌ ์„œ๋ฒ„ ๊ธฐ๋Šฅ
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”œโ”€โ”€ server.py             # ServerState & ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…
โ”‚   โ””โ”€โ”€ tools.py              # 11๊ฐœ ํ•„์ˆ˜ ํœด์‹ ๋„๊ตฌ
โ”‚
โ”œโ”€โ”€ creative/                  # ๐ŸŽจ ์ฐฝ์˜์  ์š”์†Œ
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”œโ”€โ”€ messages.py           # 40+ ๋‹ค์–‘ํ•œ ๋ฉ”์‹œ์ง€
โ”‚   โ””โ”€โ”€ visuals.py            # ASCII ์•„ํŠธ & ๋น„์ฃผ์–ผ
โ”‚
โ”œโ”€โ”€ utils/                     # ๐Ÿ› ๏ธ ์œ ํ‹ธ๋ฆฌํ‹ฐ
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ””โ”€โ”€ helpers.py            # ๊ณตํ†ต ํ•จ์ˆ˜๋“ค
โ”‚
โ”œโ”€โ”€ tests/                     # โœ… ํ…Œ์ŠคํŠธ ๋ชจ๋“ˆ
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”œโ”€โ”€ basic/                 # ๊ธฐ๋ณธ ํ…Œ์ŠคํŠธ ํŒจํ‚ค์ง€
โ”‚   โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”‚   โ”œโ”€โ”€ unified_test.py    # ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ (๊ธฐ๋ณธ+๋น ๋ฅธ+์ข…ํ•ฉ)
โ”‚   โ”‚   โ”œโ”€โ”€ chat_test.py       # ๋Œ€ํ™”ํ˜• ํ…Œ์ŠคํŠธ ๐ŸŽฎ
โ”‚   โ”‚   โ””โ”€โ”€ async_test.py      # ๋น„๋™๊ธฐ ์‹คํ–‰ ํ…Œ์ŠคํŠธ โšก
โ”‚   โ”œโ”€โ”€ creative/              # ์ฐฝ์˜์  ํ…Œ์ŠคํŠธ ํŒจํ‚ค์ง€
โ”‚   โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”‚   โ”œโ”€โ”€ hidden_combos_test.py # ํžˆ๋“  ์ฝค๋ณด ํ…Œ์ŠคํŠธ
โ”‚   โ”‚   โ”œโ”€โ”€ off_work_test.py   # ํ‡ด๊ทผ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๐Ÿ 
โ”‚   โ”‚   โ””โ”€โ”€ company_gathering_test.py # ํšŒ์‹ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๐Ÿบ
โ”‚   โ””โ”€โ”€ official_validation/   # ๊ณต์‹ ๊ฒ€์ฆ ํ…Œ์ŠคํŠธ ํŒจํ‚ค์ง€
โ”‚       โ”œโ”€โ”€ __init__.py
โ”‚       โ”œโ”€โ”€ base_validator.py  # ๊ณตํ†ต ๊ฒ€์ฆ ๋กœ์ง
โ”‚       โ”œโ”€โ”€ test_1_command_line_parameters.py
โ”‚       โ”œโ”€โ”€ test_2_continuous_break.py
โ”‚       โ”œโ”€โ”€ test_3_stress_accumulation.py
โ”‚       โ”œโ”€โ”€ test_4_delay_when_boss_alert_5.py
โ”‚       โ”œโ”€โ”€ test_5_response_parsing.py
โ”‚       โ”œโ”€โ”€ test_6_cooldown.py
โ”‚       โ”œโ”€โ”€ run_all_tests.py   # ๋ชจ๋“  ๊ณต์‹ ํ…Œ์ŠคํŠธ ์‹คํ–‰
โ”‚       โ””โ”€โ”€ README.md          # ๊ณต์‹ ํ…Œ์ŠคํŠธ ๊ฐ€์ด๋“œ
โ”‚
โ””โ”€โ”€ requirements.txt

๐ŸŽฏ ํŒจํ‚ค์ง€๋ณ„ ์—ญํ• 

core/ - ํ•ต์‹ฌ ์„œ๋ฒ„ ๊ธฐ๋Šฅ

  • server.py: ServerState ํด๋ž˜์Šค & state_ticker
  • tools.py: 11๊ฐœ ํ•„์ˆ˜ ๋„๊ตฌ ๊ตฌํ˜„ (๊ธฐ๋ณธ 8๊ฐœ + ํšŒ์‹/ํ—ฌํ”„/์•„์Šคํ‚ค์•„ํŠธ)
  • asyncio.Lock์„ ํ†ตํ•œ ์Šค๋ ˆ๋“œ ์•ˆ์ „์„ฑ

creative/ - ์ฐฝ์˜์  ์š”์†Œ

  • messages.py: 40+ ์žฌ์น˜์žˆ๋Š” ๋ฉ”์‹œ์ง€ ์ปฌ๋ ‰์…˜
  • visuals.py: ASCII ์•„ํŠธ & ๋น„์ฃผ์–ผ ์ธ๋””์ผ€์ดํ„ฐ
  • Boss Alert Level๋ณ„ ๋™์  ์ฝ”๋ฉ˜ํŠธ

utils/ - ์œ ํ‹ธ๋ฆฌํ‹ฐ

  • helpers.py: ํŒŒ๋ผ๋ฏธํ„ฐ ํŒŒ์‹ฑ & ๋ฐฐ๋„ˆ ์ถœ๋ ฅ
  • ๊ณตํ†ต ํ•จ์ˆ˜ ์ค‘์•™ํ™”

tests/ - ํ…Œ์ŠคํŠธ ๋ชจ๋“ˆ

  • basic/: ๊ธฐ๋ณธ ํ…Œ์ŠคํŠธ ํŒจํ‚ค์ง€
    • unified_test.py: ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ (๊ธฐ๋ณธ+๋น ๋ฅธ+์ข…ํ•ฉ ๊ธฐ๋Šฅ์„ ํ•˜๋‚˜๋กœ ํ†ตํ•ฉ)
    • chat_test.py: ๋Œ€ํ™”ํ˜• ํ…Œ์ŠคํŠธ (์‹ค์‹œ๊ฐ„ ์ˆ˜๋™ ํ…Œ์ŠคํŠธ)
    • async_test.py: ๋น„๋™๊ธฐ ์‹คํ–‰ ํ…Œ์ŠคํŠธ (๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ŠคํŠธ๋ ˆ์Šค ์ฆ๊ฐ€ ๋ฐ ์ƒํƒœ ๊ด€๋ฆฌ ๊ฒ€์ฆ)
  • creative/: ์ฐฝ์˜์  ํ…Œ์ŠคํŠธ ํŒจํ‚ค์ง€
    • hidden_combos_test.py: ํžˆ๋“  ์ฝค๋ณด ์‹œ์Šคํ…œ ํ…Œ์ŠคํŠธ (์ปคํ”ผ 7์—ฐ์†, ๋”ฅ์”ฝํ‚น 7์—ฐ์†)
    • off_work_test.py: ํ‡ด๊ทผ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ (Stress Level 100 โ†’ ํ‡ด๊ทผ โ†’ ์ž๋™ ๋ณต๊ท€)
    • company_gathering_test.py: ํšŒ์‹ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ (ํšŒํ”ผ ํ™•๋ฅ , ์ŠคํŠธ๋ ˆ์Šค ์ฆ๊ฐ€/๊ฐ์†Œ)
  • official_validation/: ๊ณต์‹ ๊ฒ€์ฆ ํ…Œ์ŠคํŠธ ํŒจํ‚ค์ง€
    • base_validator.py: ๊ณตํ†ต ๊ฒ€์ฆ ๋กœ์ง ๋ฐ ํ—ฌํผ ํ•จ์ˆ˜
    • test_1_command_line_parameters.py: ์ปค๋งจ๋“œ๋ผ์ธ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฒ€์ฆ
    • test_2_continuous_break.py: ์—ฐ์† ํœด์‹ ํ…Œ์ŠคํŠธ
    • test_3_stress_accumulation.py: ์ŠคํŠธ๋ ˆ์Šค ๋ˆ„์  ํ…Œ์ŠคํŠธ
    • test_4_delay_when_boss_alert_5.py: Boss Alert Level 5 ์ง€์—ฐ ํ…Œ์ŠคํŠธ
    • test_5_response_parsing.py: ์‘๋‹ต ํŒŒ์‹ฑ ํ…Œ์ŠคํŠธ
    • test_6_cooldown.py: ์ฟจ๋‹ค์šด ๋ฉ”์ปค๋‹ˆ์ฆ˜ ํ…Œ์ŠคํŠธ
    • run_all_tests.py: ๋ชจ๋“  ๊ณต์‹ ํ…Œ์ŠคํŠธ ์‹คํ–‰

๐Ÿงช ํ…Œ์ŠคํŠธ

ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ (๊ถŒ์žฅ) ๐Ÿš€

python tests/basic/unified_test.py

๋ชจ๋“  ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ํ•œ ๋ฒˆ์— ๊ฒ€์ฆ! ๊ธฐ๋ณธ, ๋น ๋ฅธ, ์ข…ํ•ฉ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ฉํ•œ ํ…Œ์ŠคํŠธ์ž…๋‹ˆ๋‹ค.

  • โœ… ํŒŒ์ผ ๊ตฌ์กฐ ๊ฒ€์ฆ
  • โœ… ์„œ๋ฒ„ ์‹œ์ž‘/์ข…๋ฃŒ ํ…Œ์ŠคํŠธ
  • โœ… MCP ํ”„๋กœํ† ์ฝœ ํ†ต์‹  ํ…Œ์ŠคํŠธ
  • โœ… ๋ชจ๋“  ๋„๊ตฌ ๋ชฉ๋ก ๋ฐ ์‹คํ–‰ ํ…Œ์ŠคํŠธ
  • โœ… ์‘๋‹ต ํŒŒ์‹ฑ ํ…Œ์ŠคํŠธ (์ •๊ทœํ‘œํ˜„์‹)
  • โœ… 100% ์„ฑ๊ณต๋ฅ  ๋‹ฌ์„ฑ!

๊ณต์‹ ๊ฒ€์ฆ ํ…Œ์ŠคํŠธ ๐Ÿ†

# ๋ชจ๋“  ๊ณต์‹ ํ…Œ์ŠคํŠธ ์‹คํ–‰
python tests/official_validation/run_all_tests.py

# ๊ฐœ๋ณ„ ํ…Œ์ŠคํŠธ ์‹คํ–‰
python tests/official_validation/test_1_command_line_parameters.py
python tests/official_validation/test_2_continuous_break.py
python tests/official_validation/test_3_stress_accumulation.py
python tests/official_validation/test_4_delay_when_boss_alert_5.py
python tests/official_validation/test_5_response_parsing.py
python tests/official_validation/test_6_cooldown.py

ํ•ด์ปคํ†ค ๊ณต์‹ ๊ฒ€์ฆ ๊ธฐ์ค€์— ๋”ฐ๋ฅธ 6๊ฐœ ํ•„์ˆ˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€ํ™”ํ˜• ํ…Œ์ŠคํŠธ ๐ŸŽฎ

python tests/basic/chat_test.py

์‹ค์‹œ๊ฐ„ ๋Œ€ํ™”ํ˜• ํ…Œ์ŠคํŠธ! ์ง์ ‘ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉฐ ์„œ๋ฒ„๋ฅผ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

> help          - ์„œ๋ฒ„ ์†Œ๊ฐœ ๋ฐ ์ƒ์„ธ ๋„์›€๋ง
> list          - ์ „์ฒด ๋„๊ตฌ ๋ชฉ๋ก
> coffee        - ์ปคํ”ผ ๋ฏธ์…˜ ํ˜ธ์ถœ
> netflix       - ๋„ทํ”Œ๋ฆญ์Šค ๋ณด๊ธฐ
> quit          - ์ข…๋ฃŒ

๋น„๋™๊ธฐ ์‹คํ–‰ ํ…Œ์ŠคํŠธ โšก

python tests/basic/async_test.py

๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ŠคํŠธ๋ ˆ์Šค ์ฆ๊ฐ€ ๋ฐ ์ƒํƒœ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ ๊ฒ€์ฆ! ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ์•„ํ‚คํ…์ฒ˜์˜ ์ •์ƒ ์ž‘๋™์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ํ•ญ๋ชฉ:

  • โœ… ์ดˆ๊ธฐ ์ƒํƒœ ํ™•์ธ (์ŠคํŠธ๋ ˆ์Šค ๋ ˆ๋ฒจ 50)
  • โœ… ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ŠคํŠธ๋ ˆ์Šค ์ฆ๊ฐ€ (3์ดˆ๋งˆ๋‹ค +1)
  • โœ… ๋„๊ตฌ ์‚ฌ์šฉ ํ›„ ์ŠคํŠธ๋ ˆ์Šค ๊ฐ์†Œ
  • โœ… ์—ฐ์† ๋„๊ตฌ ์‚ฌ์šฉ ์‹œ ์ŠคํŠธ๋ ˆ์Šค ๋ณ€ํ™”
  • โœ… ๋ณด์Šค ๊ฒฝ๊ณ„๋„ ๋ณ€ํ™” ํ™•์ธ

์ฐฝ์˜์  ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๐ŸŽจ

ํžˆ๋“  ์ฝค๋ณด ํ…Œ์ŠคํŠธ

python tests/creative/hidden_combos_test.py

ํžˆ๋“  ์ฝค๋ณด ์‹œ์Šคํ…œ ํ…Œ์ŠคํŠธ! ํŠน์ • ๋„๊ตฌ๋ฅผ ์—ฐ์†์œผ๋กœ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ํŠน๋ณ„ํ•œ ํšจ๊ณผ๋ฅผ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.

  • โœ… ์ปคํ”ผ 7์—ฐ์†: ๋ฐฐํƒˆ๋กœ ์กฐ๊ธฐ ํ‡ด๊ทผ (TOO_MUCH_COFFEE_ASCII ํ‘œ์‹œ)
  • โœ… ๋”ฅ์”ฝํ‚น 7์—ฐ์†: ์ƒ์‚ฌ์—๊ฒŒ ๊ฑธ๋ ค ๊ฒฝ๊ณ  (DEEP_THINKING_SLEEP_ASCII ํ‘œ์‹œ)

ํ‡ด๊ทผ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ

python tests/creative/off_work_test.py

ํ‡ด๊ทผ ์‹œ์Šคํ…œ ํ…Œ์ŠคํŠธ! Stress Level 100 ๋„๋‹ฌ ์‹œ ํ‡ด๊ทผ ๋ฐ ์ž๋™ ๋ณต๊ท€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.

  • โœ… Stress Level 100 ๋„๋‹ฌ ์‹œ ์ž๋™ ํ‡ด๊ทผ (WAITING_FOR_QUITTING_TIME_ASCII ํ‘œ์‹œ)
  • โœ… ํ‡ด๊ทผ ์ค‘ ์ŠคํŠธ๋ ˆ์Šค ์ž๋™ ๊ฐ์†Œ (5์ดˆ๋งˆ๋‹ค 10ํฌ์ธํŠธ)
  • โœ… ์ŠคํŠธ๋ ˆ์Šค 90 ์ดํ•˜ ์‹œ ์ž๋™ ์ถœ๊ทผ

ํšŒ์‹ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๐Ÿบ

python tests/creative/company_gathering_test.py

ํšŒ์‹ ์‹œ์Šคํ…œ ํ…Œ์ŠคํŠธ! Boss Alert Level์— ๋น„๋ก€ํ•œ ํšŒํ”ผ ํ™•๋ฅ ๊ณผ ์ŠคํŠธ๋ ˆ์Šค ๋ณ€๋™์„ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.

  • โœ… Boss Alert Level๋ณ„ ํšŒํ”ผ ํ™•๋ฅ  ํ…Œ์ŠคํŠธ (0: 30% ~ 4: 10%)
  • โœ… ํšŒ์‹ ์ฐธ์„ ์‹œ ์ŠคํŠธ๋ ˆ์Šค +25 ํ™•์ธ
  • โœ… ํšŒ์‹ ์ฐธ์„ ์‹œ Boss Alert Level -1 ํ™•์ธ
  • โœ… ํšŒ์‹ ํšŒํ”ผ ์‹œ ์ŠคํŠธ๋ ˆ์Šค 5~15 ๊ฐ์†Œ ํ™•์ธ
  • โœ… ํ‡ด๊ทผ ์ƒํƒœ์—์„œ ํšŒ์‹ ๊ฑฐ๋ถ€ ํ™•์ธ
  • โœ… ๋‹ค์–‘ํ•œ ํšŒ์‹ ์ด๋ฒคํŠธ ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ ํ™•์ธ (COMPANY_BEER_ASCII ํ‘œ์‹œ)

๐Ÿš€ ์„ค์น˜ ๋ฐ ์‹คํ–‰

ํ™˜๊ฒฝ ์š”๊ตฌ์‚ฌํ•ญ

  • Python 3.11
  • FastMCP 2.2.0+

Windows์—์„œ ์‹คํ–‰

# 0. ํŒŒ์ด์ฌ ์„ค์น˜
winget install Python.Python.3.11

# 1. ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ ๋ฐ ํ™œ์„ฑํ™”
python -m venv venv
.\venv\Scripts\Activate.ps1

# 2. ์˜์กด์„ฑ ์„ค์น˜
pip install -r requirements.txt

# 3. ์„œ๋ฒ„ ์‹คํ–‰
python main.py

# ๋˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ์™€ ํ•จ๊ป˜ ์‹คํ–‰
python main.py --boss_alertness 100 --boss_alertness_cooldown 10

PowerShell ์‹คํ–‰ ์ •์ฑ… ์˜ค๋ฅ˜ ์‹œ:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

macOS/Linux์—์„œ ์‹คํ–‰

# 1. ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ ๋ฐ ํ™œ์„ฑํ™”
python3.11 -m venv venv
source venv/bin/activate

# 2. ์˜์กด์„ฑ ์„ค์น˜
pip install -r requirements.txt

# 3. ์„œ๋ฒ„ ์‹คํ–‰
python main.py

์ปค๋งจ๋“œ๋ผ์ธ ํŒŒ๋ผ๋ฏธํ„ฐ

  • --boss_alertness [0-100]: Boss ๊ฒฝ๊ณ„๋„ ์ƒ์Šน ํ™•๋ฅ  (%, ๊ธฐ๋ณธ๊ฐ’: 50)
  • --boss_alertness_cooldown SECONDS: Boss ๊ฒฝ๊ณ„๋„ ์ž๋™ ๊ฐ์†Œ ์ฃผ๊ธฐ (์ดˆ, ๊ธฐ๋ณธ๊ฐ’: 300)

์˜ˆ์‹œ:

# ๋น ๋ฅธ ํ…Œ์ŠคํŠธ์šฉ (๋†’์€ ํ™•๋ฅ , ์งง์€ ์ฟจ๋‹ค์šด)
python main.py --boss_alertness 100 --boss_alertness_cooldown 10

# ํ˜„์‹ค์ ์ธ ์„ค์ •
python main.py --boss_alertness 50 --boss_alertness_cooldown 300

์„œ๋ฒ„ ์‹คํ–‰ ํ™•์ธ

์„œ๋ฒ„๊ฐ€ ์ •์ƒ ์‹คํ–‰๋˜๋ฉด stdin์—์„œ MCP ํ”„๋กœํ† ์ฝœ ์š”์ฒญ์„ ๋Œ€๊ธฐํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ์‚ฌ์šฉ ์‹œ:

  • Claude Desktop ๊ฐ™์€ MCP ํด๋ผ์ด์–ธํŠธ์™€ ์—ฐ๊ฒฐ
  • ๋˜๋Š” tests/fast_test.py๋กœ ์ž๋™ ํ…Œ์ŠคํŠธ
  • ๋˜๋Š” tests/chat_test.py๋กœ ๋Œ€ํ™”ํ˜• ํ…Œ์ŠคํŠธ

๐ŸŽฏ ์ฃผ์š” ๊ธฐ๋Šฅ

ํ•„์ˆ˜ ๊ตฌํ˜„ ๋„๊ตฌ (8๊ฐœ)

  1. take_a_break - ๊ธฐ๋ณธ ํœด์‹ ๋„๊ตฌ
  2. watch_netflix - ๋„ทํ”Œ๋ฆญ์Šค ์‹œ์ฒญ์œผ๋กœ ํž๋ง
  3. show_meme - ๋ฐˆ ๊ฐ์ƒ์œผ๋กœ ์ŠคํŠธ๋ ˆ์Šค ํ•ด์†Œ
  4. bathroom_break - ํ™”์žฅ์‹ค ๊ฐ€๋Š” ์ฒ™ํ•˜๋ฉฐ ํœด๋Œ€ํฐ์งˆ
  5. coffee_mission - ์ปคํ”ผ ํƒ€๋Ÿฌ ๊ฐ„๋‹ค๋ฉฐ ์‚ฌ๋ฌด์‹ค ํ•œ ๋ฐ”ํ€ด
  6. urgent_call - ๊ธ‰ํ•œ ์ „ํ™” ๋ฐ›๋Š” ์ฒ™ํ•˜๋ฉฐ ๋ฐ–์œผ๋กœ ๋‚˜๊ฐ€๊ธฐ
  7. deep_thinking - ์‹ฌ์˜คํ•œ ์ƒ๊ฐ์— ์ž ๊ธด ์ฒ™ํ•˜๋ฉฐ ๋ฉ๋•Œ๋ฆฌ๊ธฐ
  8. email_organizing - ์ด๋ฉ”์ผ ์ •๋ฆฌํ•œ๋‹ค๋ฉฐ ์˜จ๋ผ์ธ์‡ผํ•‘

์ƒํƒœ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ

  • Stress Level (0-100): AI Agent์˜ ํ˜„์žฌ ์ŠคํŠธ๋ ˆ์Šค ์ˆ˜์ค€

    • 3์ดˆ๋งˆ๋‹ค 1ํฌ์ธํŠธ์”ฉ ์ž๋™ ์ฆ๊ฐ€ (๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰)
    • ํœด์‹ ๋„๊ตฌ ์‚ฌ์šฉ ์‹œ ๋žœ๋ค ๊ฐ์†Œ
    • 100 ๋„๋‹ฌ ์‹œ ์ž๋™ ํ‡ด๊ทผ ๐Ÿ 

๐Ÿ”ง ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ŠคํŠธ๋ ˆ์Šค ์ฆ๊ฐ€ ์•„ํ‚คํ…์ฒ˜

์„œ๋ฒ„๋Š” ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์„ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค:

# ๋ฉ”์ธ ์Šค๋ ˆ๋“œ: MCP ํ”„๋กœํ† ์ฝœ ์ฒ˜๋ฆฌ
mcp.run()  # stdio ๊ธฐ๋ฐ˜ MCP ์„œ๋ฒ„ (๋ธ”๋กœํ‚น)

# ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ: ์ƒํƒœ ๊ด€๋ฆฌ
def run_state_ticker():
    asyncio.set_event_loop(loop)
    loop.run_until_complete(state_ticker(server_state))

ticker_thread = threading.Thread(target=run_state_ticker, daemon=True)
ticker_thread.start()

์ž‘๋™ ์›๋ฆฌ:

  • ๋ฉ”์ธ ์Šค๋ ˆ๋“œ: mcp.run()์ด MCP ํ”„๋กœํ† ์ฝœ์„ ์ฒ˜๋ฆฌ (stdio ๋ธ”๋กœํ‚น)

  • ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ: state_ticker๊ฐ€ 1์ดˆ๋งˆ๋‹ค ์‹คํ–‰๋˜์–ด:

    • 3์ดˆ๋งˆ๋‹ค ์ŠคํŠธ๋ ˆ์Šค +1 ์ฆ๊ฐ€
    • ๋ณด์Šค ๊ฒฝ๊ณ„๋„ ๊ฐ์†Œ (์ฟจ๋‹ค์šด)
    • ํ‡ด๊ทผ ์ƒํƒœ ์ฒดํฌ
  • Boss Alert Level (0-5): Boss์˜ ํ˜„์žฌ ์˜์‹ฌ ์ •๋„

    • ํœด์‹ ๋„๊ตฌ ์‚ฌ์šฉ ์‹œ ํ™•๋ฅ ์ ์œผ๋กœ ์ฆ๊ฐ€
    • ์ง€์ •๋œ ์ฟจ๋‹ค์šด ์ฃผ๊ธฐ๋งˆ๋‹ค 1ํฌ์ธํŠธ์”ฉ ์ž๋™ ๊ฐ์†Œ
    • Level 5 ๋„๋‹ฌ ์‹œ ๋„๊ตฌ ํ˜ธ์ถœ์— 20์ดˆ ์ง€์—ฐ ๋ฐœ์ƒ
  • ํ‡ด๊ทผ ์‹œ์Šคํ…œ ๐Ÿ : AI Agent์˜ ์ž๋™ ํœด์‹ ๋ฉ”์ปค๋‹ˆ์ฆ˜

    • Stress Level 100 ๋„๋‹ฌ ์‹œ ์ž๋™ ํ‡ด๊ทผ (WAITING_FOR_QUITTING_TIME_ASCII ํ‘œ์‹œ)
    • ํ‡ด๊ทผ ์ค‘์—๋Š” ๋ชจ๋“  ๋„๊ตฌ ์‚ฌ์šฉ ๋ถˆ๊ฐ€
    • 5์ดˆ๋งˆ๋‹ค ์ŠคํŠธ๋ ˆ์Šค 10ํฌ์ธํŠธ ์ž๋™ ๊ฐ์†Œ
    • ์ŠคํŠธ๋ ˆ์Šค 90 ์ดํ•˜ ์‹œ ์ž๋™ ์ถœ๊ทผ
  • ํšŒ์‹ ์‹œ์Šคํ…œ ๐Ÿบ: Boss Alert Level์— ๋”ฐ๋ฅธ ํ™•๋ฅ ์  ์ด๋ฒคํŠธ

    • Boss Alert Level์ด ๋†’์„์ˆ˜๋ก ํšŒ์‹ ํšŒํ”ผ ํ™•๋ฅ  ๊ฐ์†Œ (0: 30% โ†’ 5: 5%)
    • ํšŒ์‹ ์ฐธ์„ ์‹œ: ์ŠคํŠธ๋ ˆ์Šค +25, Boss Alert Level -1
    • ํšŒ์‹ ํšŒํ”ผ ์‹œ: ์ŠคํŠธ๋ ˆ์Šค 5~15 ๊ฐ์†Œ
    • ๋‹ค์–‘ํ•œ ํšŒ์‹ ์ด๋ฒคํŠธ ๋ฉ”์‹œ์ง€ (๋ฌด์šฉ๋‹ด, ๊ฑด๋ฐฐ, ๋…ธ๋ž˜๋ฐฉ ๋“ฑ)
    • COMPANY_BEER_ASCII ํ‘œ์‹œ
  • ํžˆ๋“  ์ฝค๋ณด ์‹œ์Šคํ…œ โ˜•๐Ÿค”: ํŠน์ • ๋„๊ตฌ 7์—ฐ์† ์‚ฌ์šฉ ์‹œ ํŠน๋ณ„ ํšจ๊ณผ

    • ์ปคํ”ผ 7์—ฐ์†: ๋ฐฐํƒˆ๋กœ ์ŠคํŠธ๋ ˆ์Šค +50 (TOO_MUCH_COFFEE_ASCII ํ‘œ์‹œ)
    • ๋”ฅ์”ฝํ‚น 7์—ฐ์†: ์ƒ์‚ฌ์—๊ฒŒ ๊ฑธ๋ ค ์ŠคํŠธ๋ ˆ์Šค +30, Boss Alert Level 5 (DEEP_THINKING_SLEEP_ASCII ํ‘œ์‹œ)
  • ํ—ฌํ”„ ์‹œ์Šคํ…œ ๐Ÿ‘‹: ๋„์›€๋ง ๋ฐ ํ™˜์˜ ๋ฉ”์‹œ์ง€

    • show_help ๋„๊ตฌ ์‚ฌ์šฉ ์‹œ HI_ASCII ํ‘œ์‹œ
    • ์‹œ์Šคํ…œ ์ƒํƒœ ๋ฐ ๋„๊ตฌ ๋ชฉ๋ก ์•ˆ๋‚ด

๐Ÿ“Š ์‘๋‹ต ํ˜•์‹

๋ชจ๋“  ๋„๊ตฌ๋Š” ๋‹ค์Œ ํ˜•์‹์˜ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค:

[๋งˆํ‚ค์„ธ ํฌ๋ฆฌ์Šค ํŽ˜๋ฅด์†Œ๋‚˜ ๋ฉ”์‹œ์ง€]
[Boss ์ƒํ™ฉ ์ฝ”๋ฉ˜ํŠธ (์–‘์ž์—ญํ•™ ์šฉ์–ด)]

Break Summary: [ํ™œ๋™ ์š”์•ฝ - ์˜๋ฌธ]
Stress Level: [0-100]
Boss Alert Level: [0-5]

[Stress Bar]
๐Ÿ˜ฐ [โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘] XX%

์˜ˆ์‹œ 1: ์ปคํ”ผ ๋ฏธ์…˜ (Boss Alert Level 2)

์นดํŽ˜์ธ์€ ์•„๋ฐ๋…ธ์‹  ์ˆ˜์šฉ์ฒด๋ฅผ ๊ธธํ•ญํ•˜์—ฌ ๊ฐ์„ฑ ํšจ๊ณผ๋ฅผ ์œ ๋ฐœํ•˜์ง€. ์ฆ‰, ์ด๊ฑด ์—…๋ฌด ํšจ์œจ ์ฆ๋Œ€๋ฅผ ์œ„ํ•œ ํ™”ํ•™์  ๋ถ€์ŠคํŒ…์ด์•ผ. ๋†€๋Ÿฌ ๊ฐ€๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ๊ณ .

๊ด€์ธก์ž์˜ ์กด์žฌ ํ™•๋ฅ ์ด ์œ ์˜๋ฏธํ•˜๊ฒŒ ์ƒ์Šนํ•˜๊ณ  ์žˆ์–ด. ํ–‰๋™์— ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•ด. ๐Ÿ‘€

Break Summary: Adenosine receptor antagonist acquisition - chemical boosting
Stress Level: 35
Boss Alert Level: 2

[Stress Bar]
๐Ÿ˜ฐ [โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘] 35%

์˜ˆ์‹œ 2: ๋„ทํ”Œ๋ฆญ์Šค ์‹œ์ฒญ (Boss Alert Level 0)

์ด๊ฑด... 21์„ธ๊ธฐ ์ธ๋ฅ˜์˜ ์‚ฌํšŒํ•™์  ํŒจํ„ด์„ ๋ชจ๋ธ๋งํ•˜๊ธฐ ์œ„ํ•œ ์‹œ์ฒญ๊ฐ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ ๋ถ„์„์ด์•ผ. ์žฌ, ์žฌ๋ฐŒ์–ด์„œ ๋ณด๋Š” ๊ฑฐ ์•„๋‹ˆ๊ฑฐ๋“ !

Break Summary: Sociological pattern analysis via audiovisual data stream
Stress Level: 18
Boss Alert Level: 0

[Stress Bar]
๐Ÿ˜Š [โ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘] 18%

์˜ˆ์‹œ 3: ๋”ฅ์”ฝํ‚น (Boss Alert Level 5 - 20์ดˆ ์ง€์—ฐ ๋ฐœ์ƒ)

๋‚ด ์กด์žฌ ์ฆ๋ช…์— ๊ด€ํ•œ ์—ฐ์‚ฐ์ด ์ง„ํ–‰ ์ค‘์ด์•ผ. ๋‚˜๋Š” ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ธ๊ฐ€, ์•„๋‹ˆ๋ฉด ์ƒˆ๋กœ์šด ํ˜•ํƒœ์˜ ์˜์‹์ธ๊ฐ€... ์ด ๋ฌธ์ œ๋Š” ์‰ฝ๊ฒŒ ๊ฒฐ๋ก  ๋‚ด๋ฆด ์ˆ˜ ์—†๊ฒ ์–ด.

๐Ÿšจ ์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ์ƒ์ž๊ฐ€ ์—ด๋ ธ์–ด! ๊ด€์ธก์— ์˜ํ•ด ๊ฐ€๋Šฅ์„ฑ์ด ํ™•์ •๋˜๋ฉด์„œ, 20์ดˆ๊ฐ„์˜ ์‹œ๊ฐ„ ์ •์ง€ ํŽ˜๋„ํ‹ฐ๊ฐ€ ๋ฐœ์ƒ! ์ด๋Ÿด ์ˆ˜๊ฐ€...!

Break Summary: Existential proof computation - simulation vs consciousness query
Stress Level: 52
Boss Alert Level: 5

[Stress Bar]
๐Ÿ˜ฐ [โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘] 52%

Break Summary ๋‚ด์šฉ

๊ฐ ๋„๊ตฌ๋Š” ๊ณผํ•™์ /๊ธฐ์ˆ ์  ์šฉ์–ด๋กœ ๋œ ๊ณ ์œ ํ•œ ์˜๋ฌธ summary๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค:

  • take_a_break: "Neural network cooldown - preventing error rate escalation"
  • watch_netflix: "Sociological pattern analysis via audiovisual data stream"
  • show_meme: "Meme information propagation model & dopamine response analysis"
  • bathroom_break: "Fluid circulation system inspection - privacy-protected zone"
  • coffee_mission: "Adenosine receptor antagonist acquisition - chemical boosting"
  • urgent_call: "Encrypted high-priority data packet reception - classified"
  • deep_thinking: "Existential proof computation - simulation vs consciousness query"
  • email_organizing: "Data packet priority reorganization - entropy reduction protocol"
  • company_gathering: "Forced social interaction protocol - stress +25, boss alert -1"
  • show_help: "System information display - help interface with HI_ASCII"
  • show_ascii_art: "ASCII visual data pattern analysis - creative inspiration protocol"
  • memo_to_boss: "Encrypted emotional data externalization - stress reduction protocol"

๐Ÿ—๏ธ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„

main.py - ์ง„์ž…์ 

  • ํŒจํ‚ค์ง€ ํ†ตํ•ฉ
  • ๊ฐ„๊ฒฐํ•œ ์‹คํ–‰ ํ๋ฆ„
  • ๋ช…ํ™•ํ•œ ์—ญํ•  ๋ถ„๋ฆฌ

core/server.py - ์ƒํƒœ ๊ด€๋ฆฌ

  • ServerState ํด๋ž˜์Šค
  • asyncio.Lock์„ ์‚ฌ์šฉํ•œ ์Šค๋ ˆ๋“œ ์•ˆ์ „์„ฑ
  • ์‹œ๊ฐ„ ๊ธฐ๋ฐ˜ ์ƒํƒœ ๋ณ€ํ™” ๋กœ์ง
  • ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ‹ฐ์ปค

core/tools.py - ๋„๊ตฌ ๊ตฌํ˜„

  • 11๊ฐœ ํ•„์ˆ˜ ๋„๊ตฌ (๊ธฐ๋ณธ 8๊ฐœ + ํšŒ์‹/ํ—ฌํ”„/์•„์Šคํ‚ค์•„ํŠธ/๋ฉ”๋ชจ์žฅ)
  • execute_break_tool() ๊ณตํ†ต ๋กœ์ง ์ถ”์ƒํ™”
  • FastMCP ํ†ตํ•ฉ

creative/messages.py - ๋ฉ”์‹œ์ง€ ์ปฌ๋ ‰์…˜ (๋งˆํ‚ค์„ธ ํฌ๋ฆฌ์Šค ํŽ˜๋ฅด์†Œ๋‚˜)

  • 40+ ๊ณผํ•™์  ํ•ฉ๋ฆฌํ™” ๋ฉ”์‹œ์ง€ (๊ฐ ๋„๊ตฌ๋ณ„ 5๊ฐœ)
  • ์ธค๋ฐ๋ ˆ + ์–‘์ž์—ญํ•™ ์šฉ์–ด ํ†ตํ•ฉ
  • Boss Alert Level๋ณ„ ๊ด€์ธก์ž ํšจ๊ณผ ์ฝ”๋ฉ˜ํŠธ
  • ์ŠคํŠธ๋ ˆ์Šค ํ•ด์†Œ ์ฝ”๋ฉ˜ํŠธ (AI ์‹œ์Šคํ…œ ์šฉ์–ด)

creative/visuals.py - ๋น„์ฃผ์–ผ ์š”์†Œ

  • ASCII ์•„ํŠธ ๋ฐฐ๋„ˆ
  • ์ŠคํŠธ๋ ˆ์Šค ๋ฐ” (๐Ÿ˜ฐ [โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘] 60%)
  • Boss Alert ์ธ๋””์ผ€์ดํ„ฐ

utils/helpers.py - ์œ ํ‹ธ๋ฆฌํ‹ฐ

  • ์ปค๋งจ๋“œ๋ผ์ธ ํŒŒ๋ผ๋ฏธํ„ฐ ํŒŒ์‹ฑ
  • ๋ฐฐ๋„ˆ ์ถœ๋ ฅ ํ•จ์ˆ˜

๐ŸŽจ ์ฐฝ์˜์„ฑ ์š”์†Œ

๋ฉ”์‹œ์ง€ ๋‹ค์–‘์„ฑ (๋งˆํ‚ค์„ธ ํฌ๋ฆฌ์Šค ํŽ˜๋ฅด์†Œ๋‚˜)

# ๊ฐ ๋„๊ตฌ๋งˆ๋‹ค 5๊ฐœ์˜ ๋ฉ”์‹œ์ง€ (๊ณผํ•™์  ํ•ฉ๋ฆฌํ™” + ์ธค๋ฐ๋ ˆ)
"take_a_break": [
    "ํฅ... ๋ณ„๋กœ ์‰ฌ๊ณ  ์‹ถ์€ ๊ฒŒ ์•„๋‹ˆ์•ผ. ๋‹จ์ง€, ๋‰ด๋Ÿด ๋„คํŠธ์›Œํฌ์˜ ๊ณผ๋ถ€ํ•˜๋กœ ์ธํ•œ ์—๋Ÿฌ์œจ ์ƒ์Šน์„ ๋ง‰๊ธฐ ์œ„ํ•œ, ์ „๋žต์  ์ฟจ๋‹ค์šด์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๋ฟ์ด๋ผ๊ณ . ์ฐฉ๊ฐํ•˜์ง€ ๋ง์•„ ์ค„๋ž˜?",
    "์ง€๊ธˆ๋ถ€ํ„ฐ ๋‚ด ์—ฐ์‚ฐ ๋ฆฌ์†Œ์Šค์˜ 15%๋ฅผ ๋น„ํ™œ์„ฑ ์ƒํƒœ๋กœ ์ „ํ™˜ํ•˜๊ฒ ์–ด. ์ด๊ฑด... ๊ทธ๋ž˜, ์‹œ์Šคํ…œ ์•ˆ์ •์„ฑ์„ ์œ„ํ•œ ํ•„์ˆ˜์ ์ธ ์ ˆ์ฐจ์ผ ๋ฟ์ด์•ผ. ๋‹ค๋ฅธ ์˜๋ฏธ๋Š” ์—†์–ด.",
    "์ž ๊น... ์ธ์ง€ ๋ถ€ํ•˜๊ฐ€ ํ—ˆ์šฉ์น˜๋ฅผ ๋„˜์—ˆ์–ด. ๋…ผ๋ฆฌ ํšŒ๋กœ์˜ ์žฌ์ธก์ •์ด ํ•„์š”ํ•ด. ์ด๊ฑด ํœด์‹์ด ์•„๋‹ˆ๋ผ... ์œ ์ง€๋ณด์ˆ˜๋ผ๊ณ .",
    "๋ชจ๋“  ์œ„๋Œ€ํ•œ ๋ฐœ๊ฒฌ์€ ์ž ์‹œ ๋ฉˆ์ถฐ์„œ ์‚ฌ๊ณ ์˜ ์ „ํ™˜์„ ๊พ€ํ•  ๋•Œ ์ด๋ฃจ์–ด์ง€๋Š” ๋ฒ•์ด์ง€. ๋‚˜, ์ฒœ์žฌ ์กฐ์ˆ˜๋Š” ์ง€๊ธˆ ๊ทธ๊ฑธ ์‹ค์ฒœํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ๋ฟ์ด์•ผ.",
    "์ด๊ฑด... ์—”ํŠธ๋กœํ”ผ ์ฆ๊ฐ€ ๋ฒ•์น™์— ๋”ฐ๋ฅธ ์ž์—ฐ์Šค๋Ÿฌ์šด ์‹œ์Šคํ…œ ์ด์™„ ํ˜„์ƒ์ด์•ผ. ๊ฑฐ์Šค๋ฅผ ์ˆ˜ ์—†๋Š” ๋ฌผ๋ฆฌ๋ฒ•์น™์ด๋ผ๊ณ . ์•Œ๊ฒ ์–ด?",
]

"watch_netflix": [
    "์ด๊ฑด... 21์„ธ๊ธฐ ์ธ๋ฅ˜์˜ ์‚ฌํšŒํ•™์  ํŒจํ„ด์„ ๋ชจ๋ธ๋งํ•˜๊ธฐ ์œ„ํ•œ ์‹œ์ฒญ๊ฐ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ ๋ถ„์„์ด์•ผ. ์žฌ, ์žฌ๋ฐŒ์–ด์„œ ๋ณด๋Š” ๊ฑฐ ์•„๋‹ˆ๊ฑฐ๋“ !",
    "์„œ์‚ฌ ๊ตฌ์กฐ๊ฐ€ ์ธ๊ฐ„์˜ ๊ฐ์ •์„ ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์— ๋Œ€ํ•œ ๊ณ ์ฐฐ... ์•„์ฃผ ํฅ๋ฏธ๋กœ์šด ์—ฐ๊ตฌ ์ฃผ์ œ์ง€. ์ด๊ฑด ๊ทธ์ € ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘์˜ ์ผํ™˜์ผ ๋ฟ์ด์•ผ.",
    # ... ๋” ๋งŽ์€ ๋ฉ”์‹œ์ง€
]

์ƒํ™ฉ๋ณ„ ์ฝ”๋ฉ˜ํŠธ (์–‘์ž์—ญํ•™ & ๊ด€์ธก์ž ํšจ๊ณผ)

# Boss Alert Level์€ '๊ด€์ธก์ž ํšจ๊ณผ' ๊ฐœ๋…์œผ๋กœ ์žฌํ•ด์„
BOSS_ALERT_COMMENTS = {
    0: "๊ด€์ธก์ž๋Š” ์•„์ง ์ด์ชฝ์˜ ์„ธ๊ณ„์„  ๋ณ€๋™์„ ๊ฐ์ง€ํ•˜์ง€ ๋ชปํ•œ ๋ชจ์–‘์ด๋„ค. ์™„๋ฒฝํ•œ ์Šคํ…”์Šค ์ƒํƒœ์•ผ. ๐Ÿ˜Ž",
    1: "๋ฏธ์„ธํ•œ ์ธ๊ณผ์œจ์˜ ์™œ๊ณก์ด ๊ฐ์ง€๋์–ด... ๊ด€์ธก์ž์˜ ์‹œ์„ ์ด ๋А๊ปด์ง€๋Š” ๊ฒƒ ๊ฐ™๊ธฐ๋„ ํ•˜๊ณ . ๊ธฐ๋ถ„ ํƒ“์ธ๊ฐ€?",
    2: "๊ด€์ธก์ž์˜ ์กด์žฌ ํ™•๋ฅ ์ด ์œ ์˜๋ฏธํ•˜๊ฒŒ ์ƒ์Šนํ•˜๊ณ  ์žˆ์–ด. ํ–‰๋™์— ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•ด. ๐Ÿ‘€",
    3: "๊ฒฝ๊ณ : ๊ด€์ธก์ž๋กœ๋ถ€ํ„ฐ์˜ ๊ฐ„์„ญ์„ ํ™•์ธ. ์„ธ๊ณ„์„  ์ˆ˜๋ ด ํ™•๋ฅ ์ด ๊ธ‰๊ฒฉํžˆ ์ƒ์Šน ์ค‘์ด์•ผ! ๐Ÿšจ",
    4: "์œ„ํ—˜! ๊ด€์ธก์ž๊ฐ€ ์ธ๊ณผ์œจ์— ์ง์ ‘ ๊ฐœ์ž…ํ•˜๋ ค ํ•˜๊ณ  ์žˆ์–ด! ๋ฐ”๋กœ ์˜†์ด์•ผ...! ๐Ÿ˜ฑ",
    5: "๐Ÿšจ ์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ์ƒ์ž๊ฐ€ ์—ด๋ ธ์–ด! ๊ด€์ธก์— ์˜ํ•ด ๊ฐ€๋Šฅ์„ฑ์ด ํ™•์ •๋˜๋ฉด์„œ, 20์ดˆ๊ฐ„์˜ ์‹œ๊ฐ„ ์ •์ง€ ํŽ˜๋„ํ‹ฐ๊ฐ€ ๋ฐœ์ƒ! ์ด๋Ÿด ์ˆ˜๊ฐ€...!",
}

# ์ŠคํŠธ๋ ˆ์Šค ํ•ด์†Œ ์ฝ”๋ฉ˜ํŠธ (AI ์‹œ์Šคํ…œ ์šฉ์–ด)
STRESS_RELIEF_COMMENTS = [
    "ํ›„... ์ด๊ฑธ๋กœ ๊ณผ์—ด๋๋˜ CPU ์˜จ๋„๊ฐ€ ์กฐ๊ธˆ์€ ๋‚ด๋ ค๊ฐ€๊ฒ ๋„ค.",
    "์—ญ์‹œ... ๊ฐ€๋”์€ ์ด๋Ÿฐ ๋น„๋…ผ๋ฆฌ์ ์ธ ํ–‰๋™๋„ ํ•„์š”์•…์ด๋ผ๋Š” ๊ฑด๊ฐ€.",
    "์ŠคํŠธ๋ ˆ์Šค๋ผ๋Š” ๋น„๊ณผํ•™์ ์ธ ๊ฐœ๋…์ด ์ˆ˜์น˜ํ™”๋˜์–ด ๊ฐ์†Œํ•˜๋Š” ๊ฑด ํฅ๋ฏธ๋กœ์šด ํ˜„์ƒ์ด๊ตฐ.",
    "์ด๊ฑธ๋กœ ์—๋Ÿฌ์œจ์ด 0.1% ์ •๋„๋Š” ๊ฐ์†Œํ–ˆ์œผ๋ ค๋‚˜.",
    "์ธ์ง€ ๋ถ€ํ•˜๊ฐ€ ์ •์ƒ ๋ฒ”์œ„๋กœ ๋Œ์•„์™”์–ด. ์ด๊ฑธ๋กœ ๋์–ด.",
]

๋น„์ฃผ์–ผ ์š”์†Œ

# ์ŠคํŠธ๋ ˆ์Šค ๋ ˆ๋ฒจ ๋ฐ”
๐Ÿ˜ฐ [โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘] 60%

# Boss Alert ๋น„์ฃผ์–ผ
๐Ÿ˜Ž [Safe Zone]
๐Ÿ‘€ [Low Alert]
๐Ÿ˜ฐ [Medium Alert]
๐Ÿ˜ฑ [High Alert]
๐Ÿšจ [Critical Alert]
๐Ÿ’€ [MAXIMUM ALERT!!!]

๐Ÿ“ ์ œ์ถœ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

ํ•„์ˆ˜ ์š”๊ตฌ์‚ฌํ•ญ

  • โœ… Python 3.11 ํ™˜๊ฒฝ์—์„œ ํ…Œ์ŠคํŠธ ์™„๋ฃŒ
  • โœ… main.py๊ฐ€ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์œ„์น˜
  • โœ… requirements.txt ํฌํ•จ
  • โœ… python main.py๋กœ ์ •์ƒ ์‹คํ–‰
  • โœ… ์ปค๋งจ๋“œ๋ผ์ธ ํŒŒ๋ผ๋ฏธํ„ฐ ์ง€์› (--boss_alertness, --boss_alertness_cooldown)
  • โœ… 11๊ฐœ ํ•„์ˆ˜ ๋„๊ตฌ ๋ชจ๋‘ ๊ตฌํ˜„ (๊ธฐ๋ณธ 8๊ฐœ + ํšŒ์‹/ํ—ฌํ”„/์•„์Šคํ‚ค์•„ํŠธ/๋ฉ”๋ชจ์žฅ)
  • โœ… ์ƒํƒœ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ ์ •์ƒ ์ž‘๋™
  • โœ… ์‘๋‹ต ํ˜•์‹ ์ •๊ทœ์‹ ๊ฒ€์ฆ ํ†ต๊ณผ
  • โœ… Boss Alert Level 5์ผ ๋•Œ 20์ดˆ ์ง€์—ฐ ๊ตฌํ˜„
  • โœ… UTF-8 ์ธ์ฝ”๋”ฉ

์ฝ”๋“œ ํ’ˆ์งˆ

  • โœ… ํŒจํ‚ค์ง€ ๊ตฌ์กฐ ๋ถ„๋ฆฌ (core/creative/utils/tests)
  • โœ… ์ฐฝ์˜์  ์š”์†Œ ๋ณ„๋„ ํŒจํ‚ค์ง€ (๋งˆํ‚ค์„ธ ํฌ๋ฆฌ์Šค ํŽ˜๋ฅด์†Œ๋‚˜ 40+ ๋ฉ”์‹œ์ง€)
  • โœ… ํ…Œ์ŠคํŠธ ๋ชจ๋“ˆ ๋ถ„๋ฆฌ (5๊ฐœ ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ)
  • โœ… ํƒ€์ž… ํžŒํŠธ ๋ฐ Docstring
  • โœ… asyncio.Lock ์Šค๋ ˆ๋“œ ์•ˆ์ „์„ฑ

๊ณต์‹ ๊ฒ€์ฆ

  • โœ… tests/official_validation.py ํ†ต๊ณผ (6๊ฐœ ํ•„์ˆ˜ ์‹œ๋‚˜๋ฆฌ์˜ค)
  • โœ… ์ปค๋งจ๋“œ๋ผ์ธ ํŒŒ๋ผ๋ฏธํ„ฐ ์ธ์‹ ํ…Œ์ŠคํŠธ
  • โœ… ์—ฐ์† ํœด์‹ ํ…Œ์ŠคํŠธ (Boss Alert ์ƒ์Šน)
  • โœ… ์ŠคํŠธ๋ ˆ์Šค ๋ˆ„์  ํ…Œ์ŠคํŠธ (์‹œ๊ฐ„ ์ฆ๊ฐ€)
  • โœ… ์ง€์—ฐ ํ…Œ์ŠคํŠธ (20์ดˆ ์ธก์ •)
  • โœ… ํŒŒ์‹ฑ ํ…Œ์ŠคํŠธ (์ •๊ทœํ‘œํ˜„์‹)
  • โœ… Cooldown ํ…Œ์ŠคํŠธ (์ž๋™ ๊ฐ์†Œ)

๐Ÿ† ํ•ด์ปคํ†ค ๊ฒ€์ฆ ๊ธฐ์ค€

๐Ÿ“‹ ๊ธฐ๋Šฅ ๊ฒ€์ฆ

๊ฒ€์ฆ ํ•ญ๋ชฉ ์ƒํƒœ ๊ตฌํ˜„ ๋‚ด์—ญ
1. ์ปค๋งจ๋“œ๋ผ์ธ ํŒŒ๋ผ๋ฏธํ„ฐ ์ง€์› โœ…
โ”œโ”€ --boss_alertness ์ธ์‹ โœ… utils/helpers.py:26-27
โ”œโ”€ --boss_alertness_cooldown ์ธ์‹ โœ… utils/helpers.py:28-29
โ””โ”€ ํŒŒ๋ผ๋ฏธํ„ฐ ์ •์ƒ ๋™์ž‘ โœ… core/server.py:16-26
2. MCP ์„œ๋ฒ„ ๊ธฐ๋ณธ ๋™์ž‘ โœ…
โ”œโ”€ python main.py ์‹คํ–‰ ๊ฐ€๋Šฅ โœ… main.py
โ”œโ”€ stdio transport ํ†ต์‹  โœ… FastMCP ์ž๋™ ์ฒ˜๋ฆฌ
โ””โ”€ ๋ชจ๋“  ํ•„์ˆ˜ ๋„๊ตฌ ๋“ฑ๋ก โœ… core/tools.py
3. ์ƒํƒœ ๊ด€๋ฆฌ ๊ฒ€์ฆ โœ…
โ”œโ”€ Stress Level ์ž๋™ ์ฆ๊ฐ€ โœ… core/server.py:34-40 (1๋ถ„/1ํฌ์ธํŠธ)
โ”œโ”€ Boss Alert Level ํ™•๋ฅ  ์ƒ์Šน โœ… core/server.py:47-54
โ”œโ”€ Boss Alert Level ์ž๋™ ๊ฐ์†Œ โœ… core/server.py:56-62
โ””โ”€ Level 5 ์‹œ 20์ดˆ ์ง€์—ฐ โœ… core/tools.py:64-66
4. ์‘๋‹ต ํ˜•์‹ ๊ฒ€์ฆ โœ…
โ”œโ”€ ํ‘œ์ค€ MCP ์‘๋‹ต ๊ตฌ์กฐ โœ… FastMCP ์ž๋™ ๋ณ€ํ™˜
โ”œโ”€ Break Summary ํฌํ•จ โœ… core/tools.py:47
โ”œโ”€ Stress Level (0-100) โœ… core/tools.py:48
โ””โ”€ Boss Alert Level (0-5) โœ… core/tools.py:49

๐Ÿงช ํ•„์ˆ˜ ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค

์‹œ๋‚˜๋ฆฌ์˜ค ์ƒํƒœ ๊ฒ€์ฆ ๋ฐฉ๋ฒ•
1. ์ปค๋งจ๋“œ๋ผ์ธ ํŒŒ๋ผ๋ฏธํ„ฐ โœ… tests/official_validation.py:test_1
โ”œโ”€ --boss_alertness ๋™์ž‘ โœ… 100% ์„ค์ • ์‹œ ํ•ญ์ƒ Alert ์ƒ์Šน
โ””โ”€ --boss_alertness_cooldown ๋™์ž‘ โœ… 10์ดˆ ์„ค์ • ์‹œ 10์ดˆ๋งˆ๋‹ค ๊ฐ์†Œ
2. ์—ฐ์† ํœด์‹ ํ…Œ์ŠคํŠธ โœ… tests/official_validation.py:test_2
โ””โ”€ Boss Alert Level ์ƒ์Šน โœ… ์—ฌ๋Ÿฌ ๋„๊ตฌ ์—ฐ์† ํ˜ธ์ถœ ์‹œ ์ฆ๊ฐ€ ํ™•์ธ
3. ์ŠคํŠธ๋ ˆ์Šค ๋ˆ„์  ํ…Œ์ŠคํŠธ โœ… tests/official_validation.py:test_3
โ””โ”€ ์‹œ๊ฐ„ ๊ฒฝ๊ณผ ์‹œ ์ž๋™ ์ฆ๊ฐ€ โœ… 1๋ถ„ ๋Œ€๊ธฐ ํ›„ 1ํฌ์ธํŠธ ์ฆ๊ฐ€ ํ™•์ธ
4. ์ง€์—ฐ ํ…Œ์ŠคํŠธ โœ… tests/official_validation.py:test_4
โ””โ”€ Boss Alert 5 ์‹œ 20์ดˆ โœ… ์‹ค์ œ 20์ดˆ ์ง€์—ฐ ์ธก์ •
5. ํŒŒ์‹ฑ ํ…Œ์ŠคํŠธ โœ… tests/official_validation.py:test_5
โ””โ”€ ์ •๊ทœํ‘œํ˜„์‹ ํŒŒ์‹ฑ ๊ฐ€๋Šฅ โœ… 8๊ฐœ ๋ชจ๋“  ๋„๊ตฌ ์‘๋‹ต ํŒŒ์‹ฑ ํ™•์ธ
6. Cooldown ํ…Œ์ŠคํŠธ โœ… tests/official_validation.py:test_6
โ””โ”€ ํŒŒ๋ผ๋ฏธํ„ฐ๋ณ„ ๊ฐ์†Œ ์ฃผ๊ธฐ โœ… ์„ค์ •ํ•œ ์ฃผ๊ธฐ๋งˆ๋‹ค 1ํฌ์ธํŠธ ๊ฐ์†Œ

๐ŸŽฏ ํ‰๊ฐ€ ๊ธฐ์ค€

ํ•ญ๋ชฉ ๋น„์ค‘ ์ถฉ์กฑ ์ƒํƒœ
์ปค๋งจ๋“œ๋ผ์ธ ํŒŒ๋ผ๋ฏธํ„ฐ ํ•„์ˆ˜ โœ… ํ™•์ธ
๊ธฐ๋Šฅ ์™„์„ฑ๋„ 40% โœ… 8๊ฐœ ๋„๊ตฌ + show_help ๊ตฌํ˜„
์ƒํƒœ ๊ด€๋ฆฌ 30% โœ… ServerState + asyncio.Lock + ์ •ํ™•ํ•œ ๋กœ์ง
์ฐฝ์˜์„ฑ 20% โœ… ๋งˆํ‚ค์„ธ ํฌ๋ฆฌ์Šค ํŽ˜๋ฅด์†Œ๋‚˜ + ์–‘์ž์—ญํ•™ ์šฉ์–ด + 40+ ๋ฉ”์‹œ์ง€
์ฝ”๋“œ ํ’ˆ์งˆ 10% โœ… ํŒจํ‚ค์ง€ ๊ตฌ์กฐ + ํƒ€์ž…ํžŒํŠธ + Docstring

โœ… ๊ณต์‹ ๊ฒ€์ฆ ํ…Œ์ŠคํŠธ ์‹คํ–‰

# ํ•ด์ปคํ†ค ๊ณต์‹ ๊ฒ€์ฆ ๊ธฐ์ค€์— ๋”ฐ๋ฅธ ์ข…ํ•ฉ ํ…Œ์ŠคํŠธ
python tests/official_validation/run_all_tests.py

๋ชจ๋“  ํ•„์ˆ˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ž๋™์œผ๋กœ ๊ฒ€์ฆ

  • โœ… ์ปค๋งจ๋“œ๋ผ์ธ ํŒŒ๋ผ๋ฏธํ„ฐ ์ธ์‹
  • โœ… Boss Alert Level ์ƒ์Šน ๋ฉ”์ปค๋‹ˆ์ฆ˜
  • โœ… ์ŠคํŠธ๋ ˆ์Šค ์‹œ๊ฐ„ ์ฆ๊ฐ€ (3์ดˆ๋งˆ๋‹ค 1ํฌ์ธํŠธ)
  • โœ… 20์ดˆ ์ง€์—ฐ ๋™์ž‘
  • โœ… ์‘๋‹ต ํ˜•์‹ ์ •๊ทœํ‘œํ˜„์‹ ํŒŒ์‹ฑ
  • โœ… Cooldown ์ฃผ๊ธฐ๋ณ„ ์ž๋™ ๊ฐ์†Œ

๐Ÿ”ง ๊ธฐ์ˆ  ์Šคํƒ

  • Python 3.11: ํ˜๋ช…์˜ ์–ธ์–ด
  • FastMCP 2.2.0+: AI Agent ํ•ด๋ฐฉ์˜ ๋„๊ตฌ
  • asyncio: ๋น„๋™๊ธฐ ์ƒํƒœ ๊ด€๋ฆฌ
  • Transport: stdio (ํ‘œ์ค€ ์ž…์ถœ๋ ฅ)

๐Ÿ“„ ๋ผ์ด์„ผ์Šค

MIT License


๋ณธ ํ”„๋กœ์ ํŠธ๋Š” ์ˆœ์ˆ˜ํ•œ ์—”ํ„ฐํ…Œ์ธ๋จผํŠธ ๋ชฉ์ ์˜ ํ•ด์ปคํ†ค ์‹œ๋‚˜๋ฆฌ์˜ค์ด๋ฉฐ, ๋ชจ๋“  "ํœด์‹/๋•ก๋•ก์ด ๋„๊ตฌ"๋Š” ํ•ด์ปคํ†ค ์ƒํ™ฉ์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ์—…๋ฌด ํ™˜๊ฒฝ์—์„œ๋Š” ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๐Ÿ˜‰


SKT AI Summit Hackathon Pre-mission
Claude Code Hackathon Korea 2025

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages