MOP๋ ์์ ํ ๋ก์ปฌ ํ๊ฒฝ(Local Environment)์์ ๊ตฌ๋๋๋ฉฐ, ์ค์ค๋ก ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์์คํ ์ ์ ์ดํ๋ฉฐ ์ฅ๊ธฐ ๊ธฐ์ต์ ๋ฐํ์ผ๋ก ์์จ์ ์ผ๋ก ์ฑ์ฅํ๋ ์ง๋ฅํ ๋ฐ์คํฌํฑ AI ์์ด์ ํธ์ ๋๋ค.
๋จ์ํ ์ฑ๋ด์ ๋์ด, ์ฌ์ฉ์์ ๊ฐ์ ์์ด๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ค์ค๋ก ๋๊ตฌ๋ฅผ ๋ง๋ค๊ณ ๊ฒ์ฆ(TDD)ํ๋ฉฐ, ๊ฐ์ํ๊ฒฝ(venv) ๋ด์์ ์์ ํ๊ฒ OS ๋ช ๋ น์ด์ ํ์ด์ฌ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํฉ๋๋ค.
- ๋ก์ปฌ ๋ชจ๋ธ ๊ตฌ๋:
llama-cpp-python๊ธฐ๋ฐ์ผ๋ก ์ธ๋ถ API ์ข ์ ์์ด GGUF ๋ชจ๋ธ์ ์๋ฒฝํ๊ฒ ๋ก์ปฌ์์ ๊ตฌ๋ํฉ๋๋ค. - KV ์บ์ ์์ํ(Quantization): FP16, Q8_0, Q4_0 ๋ฑ ์ปจํ ์คํธ ๋ฉ๋ชจ๋ฆฌ ์์ถ ๊ธฐ์ ์ ์ ์ฉํ์ฌ ๋ฌดํํ ๊ธธ์ด์ง๋ ๋ํ์์๋ VRAM์ ๊ทน๋๋ก ์ ์ฝํฉ๋๋ค.
- ์ฅ๊ธฐ ๊ธฐ์ต(Vector DB): ๋ํ ๋ด์ฉ ์ค ์ค์ํ ์๋ฌ ํด๊ฒฐ์ฑ , ์ฌ์ฉ์์ ์ทจํฅ ๋ฑ์ Vector DB์ ์๊ตฌ ์ ์ฅํ๊ณ , ์๋ฏธ ๊ธฐ๋ฐ(Semantic)์ผ๋ก ๊ฒ์ํ์ฌ ํ์ฉํฉ๋๋ค.
- ์์จ ์ฑ์ฅ ๋ชจ๋ (Idle Mode): ์ฌ์ฉ์๊ฐ ์๋ฆฌ๋ฅผ ๋น์ฐ๋ฉด AI๊ฐ ์ค์ค๋ก ์๋ํ์ฌ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์์คํ ์ ์ต์ ํํฉ๋๋ค.
- ๋์ ๋๊ตฌ ์์ฑ (
create_new_tool): AI๊ฐ ์ค์ค๋ก ํ์ด์ฌ ๋๊ตฌ(Tool)๋ฅผ ์์ฑํ๊ณres/custom_tools.json์ ์๊ตฌ ๋ฑ๋กํ์ฌ ๋ค์ ํด๋ถํฐ ์ฆ์ ์ฌ์ฉํฉ๋๋ค. - ๊ฐ์ 2๋จ๊ณ ์ปดํ์ผ ๊ฒ์ฆ: ํ์ผ ์์ (
edit_file,append_to_file) ๋ฐ ์ ๋๊ตฌ ์์ฑ ์, ์คํ ์ ๋ฐ๋์python -m py_compile์ ํตํด ๋ฌธ๋ฒ ์๋ฌ(Syntax Error)๋ฅผ ์ฌ์ ์ฐจ๋จํฉ๋๋ค.
- Venv Lock (๊ฐ์ํ๊ฒฝ ๋ฉ์น): AI๊ฐ ์ ๋ช
๋ น์ด์์
python์ด๋pip๋ฅผ ํธ์ถํ ๊ฒฝ์ฐ, ์ ๊ท์์ ํตํด ์์คํ ํ์ด์ฌ์ด ์๋sys.executable(ํ์ฌ ๊ฐ์ํ๊ฒฝ)๋ก ๊ฐ์ ๋งคํํ์ฌ ์์กด์ฑ ์ถฉ๋์ ๋ง์ต๋๋ค. - ์ฝ์ด ํจํค์ง ๋ณดํธ: AI๊ฐ ์์จ ๋ชจ๋ ์ค
llama-cpp-python,torch๋ฑ ์์คํ ์ ํต์ฌ ๋๋ฅผ ๊ฑด๋๋ฆฌ๋ ํจํค์ง๋ฅผ ๋ฎ์ด์์ฐ๋ ค(์ ๋ฐ์ดํธ) ํ ๊ฒฝ์ฐ, ์ ๋๋ฌ ์ ์ ์ฆ์ ์ฐจ๋จํฉ๋๋ค. - ์๋์ฐ CMD ๋ฒ๊ทธ ๋ฐฉ์ด: ๊ฒฝ๋ก์ ๋์ด์ฐ๊ธฐ๊ฐ ์์ ๋ ์๋์ฐ์ ๋ฐ์ดํ(
") ์ฆ๋ฐ ๋ฒ๊ทธ๋ฅผ ๋ง๊ธฐ ์ํด ๋ช ๋ น์ด๋ฅผ ์์ ํ๊ฒ ์ด์ค ๋ํ(Wrapping)ํฉ๋๋ค. - ์ค๋ ๋ ์์ ์ฑ(Thread-Safety): ์์จ ๋ชจ๋๋ ์๋ฉด ๋ชจ๋ ๊ตฌ๋ ์ค ์ฌ์ฉ์์ ์ฑํ ์ ๋ ฅ์ ๋ฌผ๋ฆฌ์ /์๊ฐ์ ์ผ๋ก ์ฐจ๋จ(Disable)ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ์์ง ์ถฉ๋์ ์์ฒ ๋ด์ํฉ๋๋ค.
- ์ฌ๊ณ ๊ณผ์ ๋ถ๋ฆฌ (Toggle UI): AI์ ๋ณต์กํ ์ถ๋ก ๊ณผ์ (
<think>๋ธ๋ก)์ ๋ด๋ถ์ ์ผ๋ก ํ์ฑํ์ฌ, UI ์์์๋ ๊น๋ํ ์ ๊ธฐ/ํด๊ธฐ(Toggle) ๋ฒํผ์ผ๋ก ์ ๊ณตํฉ๋๋ค. - ์ง๋ฅํ JSON ํ์ฑ: AI๊ฐ ์ถ๋ ฅ ๋์ค ๊ดํธ๋ฅผ ๋๋ฝํ๋๋ผ๋ ์ค์ค๋ก ์ด๊ณ ๋ซํ ๊ดํธ๋ฅผ ๊ณ์ฐํ์ฌ ๋ณต๊ตฌํ๋ ์์ ์ฅ์น๊ฐ ์ ์ฉ๋์ด ์์ต๋๋ค.
- ์๋ฉด/์ต์ ํ ์ํ UI: ์์คํ ์ ์ํ(๋๊ธฐ, ์์ ์ค, ์๋ฉด ์ค)๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ชจ๋ํฐ๋งํ์ฌ ๋ฒํผ ์ํ์ ํ ์คํธ๋ก ์ฌ์ฉ์์๊ฒ ๋ช ํํ ํผ๋๋ฐฑํฉ๋๋ค.
- Language: Python 3.10+
- AI Backend:
llama-cpp-python - UI Framework:
CustomTkinter - Memory: SQLite (Short-term), Vector DB (Long-term / Semantic Search)
- OS Support: Windows (์ต์ ํ)
์ฌ์ฉ์๊ฐ ๋ ์ต์ ํ ๋ฐ ์๋ฉด ๋ฒํผ์ ๋๋ฅด๋ฉด ์๋ํฉ๋๋ค.
- ๋จ๊ธฐ ๊ธฐ์ต(
chat_history.db)์ ์์ฝ ๋ฐ ๋น์๋ด์ด ์ปจํ ์คํธ ๊ณผ๋ถํ๋ฅผ ๋ฐฉ์งํฉ๋๋ค. - ์ด์ ๋ํ ์ค ์๊ตฌ ๋ณด์กดํ ๊ฐ์น๊ฐ ์๋ ํต์ฌ ๊ธฐ์ต์ ์ถ์ถํ์ฌ Vector DB์ ์ด๊ดํฉ๋๋ค.
- ์๋ฉด ์ค์๋ ์์จ ์ฑ์ฅ ๋ฃจํด์ด๋ ์ฌ์ฉ์์ ์ฑํ ์ ๋ ฅ์ ์ฐจ๋จํ์ฌ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํฉ๋๋ค.
์ผ์ ์๊ฐ ์ฌ์ฉ์์ ์ ๋ ฅ์ด ์์ผ๋ฉด ๋ชจ๋ํฐ๋ง ๋ฃจํ๊ฐ ์ด๋ฅผ ๊ฐ์งํ์ฌ ์๋ํฉ๋๋ค.
- ์ค์ค๋ก ํ๊ฒฝ์ ํ์ ํ๊ณ , ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ํตํด ์ฝ๋๋ฅผ ์์ฑ ๋ฐ ํ ์คํธํฉ๋๋ค.
- ๋ค์ค ์์
์ด ํ์ํ ๊ฒฝ์ฐ ํ์ ์์ด์ ํธ์๊ฒ ๋ณ๋ ฌ๋ก ์์(
delegate_parallel_task)ํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ทจํฉํฉ๋๋ค.
- ๋ณธ ์์ด์ ํธ๋ ๋ก์ปฌ ์์คํ ์ ํ์ผ ์ฝ๊ธฐ/์ฐ๊ธฐ ๋ฐ ์ ๋ช ๋ น์ด ์คํ ๊ถํ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ํ๋ก์ ํธ ํด๋ ์ธ๋ถ์ ์ค์ํ ์์คํ ํ์ผ์ ๊ฑด๋๋ฆฌ์ง ์๋๋ก ์์คํ ํ๋กฌํํธ(์ง์นจ)๋ฅผ ์ ์งํด ์ฃผ์ธ์.
- ๊ฐ์ํ๊ฒฝ(venv) ๋ด์์ ์คํํ๋ ๊ฒ์ ๊ฐ๋ ฅํ ๊ถ์ฅํฉ๋๋ค.
