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 ์ํธ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. (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
server.py: ServerState ํด๋์ค & state_tickertools.py: 11๊ฐ ํ์ ๋๊ตฌ ๊ตฌํ (๊ธฐ๋ณธ 8๊ฐ + ํ์/ํฌํ/์์คํค์ํธ)- asyncio.Lock์ ํตํ ์ค๋ ๋ ์์ ์ฑ
messages.py: 40+ ์ฌ์น์๋ ๋ฉ์์ง ์ปฌ๋ ์ visuals.py: ASCII ์ํธ & ๋น์ฃผ์ผ ์ธ๋์ผ์ดํฐ- Boss Alert Level๋ณ ๋์ ์ฝ๋ฉํธ
helpers.py: ํ๋ผ๋ฏธํฐ ํ์ฑ & ๋ฐฐ๋ ์ถ๋ ฅ- ๊ณตํต ํจ์ ์ค์ํ
- 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+
# 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 10PowerShell ์คํ ์ ์ฑ ์ค๋ฅ ์:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser# 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๋ก ๋ํํ ํ ์คํธ
- take_a_break - ๊ธฐ๋ณธ ํด์ ๋๊ตฌ
- watch_netflix - ๋ทํ๋ฆญ์ค ์์ฒญ์ผ๋ก ํ๋ง
- show_meme - ๋ฐ ๊ฐ์์ผ๋ก ์คํธ๋ ์ค ํด์
- bathroom_break - ํ์ฅ์ค ๊ฐ๋ ์ฒํ๋ฉฐ ํด๋ํฐ์ง
- coffee_mission - ์ปคํผ ํ๋ฌ ๊ฐ๋ค๋ฉฐ ์ฌ๋ฌด์ค ํ ๋ฐํด
- urgent_call - ๊ธํ ์ ํ ๋ฐ๋ ์ฒํ๋ฉฐ ๋ฐ์ผ๋ก ๋๊ฐ๊ธฐ
- deep_thinking - ์ฌ์คํ ์๊ฐ์ ์ ๊ธด ์ฒํ๋ฉฐ ๋ฉ๋๋ฆฌ๊ธฐ
- 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%
๊ฐ ๋๊ตฌ๋ ๊ณผํ์ /๊ธฐ์ ์ ์ฉ์ด๋ก ๋ ๊ณ ์ ํ ์๋ฌธ 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"
- ํจํค์ง ํตํฉ
- ๊ฐ๊ฒฐํ ์คํ ํ๋ฆ
- ๋ช ํํ ์ญํ ๋ถ๋ฆฌ
ServerStateํด๋์คasyncio.Lock์ ์ฌ์ฉํ ์ค๋ ๋ ์์ ์ฑ- ์๊ฐ ๊ธฐ๋ฐ ์ํ ๋ณํ ๋ก์ง
- ๋ฐฑ๊ทธ๋ผ์ด๋ ํฐ์ปค
- 11๊ฐ ํ์ ๋๊ตฌ (๊ธฐ๋ณธ 8๊ฐ + ํ์/ํฌํ/์์คํค์ํธ/๋ฉ๋ชจ์ฅ)
execute_break_tool()๊ณตํต ๋ก์ง ์ถ์ํ- FastMCP ํตํฉ
- 40+ ๊ณผํ์ ํฉ๋ฆฌํ ๋ฉ์์ง (๊ฐ ๋๊ตฌ๋ณ 5๊ฐ)
- ์ธค๋ฐ๋ + ์์์ญํ ์ฉ์ด ํตํฉ
- Boss Alert Level๋ณ ๊ด์ธก์ ํจ๊ณผ ์ฝ๋ฉํธ
- ์คํธ๋ ์ค ํด์ ์ฝ๋ฉํธ (AI ์์คํ ์ฉ์ด)
- ASCII ์ํธ ๋ฐฐ๋
- ์คํธ๋ ์ค ๋ฐ (
๐ฐ [โโโโโโโโโโ] 60%) - Boss Alert ์ธ๋์ผ์ดํฐ
- ์ปค๋งจ๋๋ผ์ธ ํ๋ผ๋ฏธํฐ ํ์ฑ
- ๋ฐฐ๋ ์ถ๋ ฅ ํจ์
# ๊ฐ ๋๊ตฌ๋ง๋ค 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