hi-ai
Model Context Protocol based AI development assistant with 35 specialized tools featuring Knowledge Graph memory, session context auto-injection, and code dependency analysis
Installation
npx @su-record/hi-aiAsk AI about hi-ai
Powered by Claude ยท Grounded in docs
I know everything about hi-ai. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
Hi-AI
Model Context Protocol ๊ธฐ๋ฐ AI ๊ฐ๋ฐ ์ด์์คํดํธ
TypeScript + Python ์ง์ ยท 35๊ฐ ์ ๋ฌธ ๋๊ตฌ ยท ์ง์ ๊ทธ๋ํ ๋ฉ๋ชจ๋ฆฌ ยท ์ธ์ ์ปจํ ์คํธ ์๋ ์ฃผ์
๋ชฉ์ฐจ
- ๊ฐ์
- ์ฃผ์ ๊ธฐ๋ฅ
- v2.1.0 ์ ๋ฐ์ดํธ
- ์ค์น
- ๋๊ตฌ ์นดํ๋ก๊ทธ
- ์ํคํ ์ฒ
- ์ฑ๋ฅ
- ๊ฐ๋ฐ ๊ฐ์ด๋
- ๋ผ์ด์ ์ค
๊ฐ์
Hi-AI๋ Model Context Protocol (MCP) ํ์ค์ ๊ตฌํํ AI ๊ฐ๋ฐ ์ด์์คํดํธ์ ๋๋ค. ์์ฐ์ด ๊ธฐ๋ฐ ํค์๋ ์ธ์์ ํตํด 35๊ฐ์ ์ ๋ฌธํ๋ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ฉฐ, ๊ฐ๋ฐ์๊ฐ ๋ณต์กํ ์์ ์ ์ง๊ด์ ์ผ๋ก ์ํํ ์ ์๋๋ก ๋์ต๋๋ค.
ํต์ฌ ๊ฐ์น
- ์์ฐ์ด ๊ธฐ๋ฐ: ํ๊ตญ์ด/์์ด ํค์๋๋ก ๋๊ตฌ๋ฅผ ์๋์ผ๋ก ์คํ
- ์ง์ ๊ทธ๋ํ ๋ฉ๋ชจ๋ฆฌ: ๋ฉ๋ชจ๋ฆฌ ๊ฐ ๊ด๊ณ๋ฅผ ๊ทธ๋ํ๋ก ๊ตฌ์ฑํ์ฌ ์ฐ๊ด ์ ๋ณด ํ์
- ๋ค์ค ์ธ์ด ์ง์: TypeScript, JavaScript, Python ์ฝ๋ ๋ถ์
- ์์กด์ฑ ๋ถ์: ์ฝ๋ ๊ฐ ์์กด ๊ด๊ณ ์๊ฐํ ๋ฐ ์ํ ์ฐธ์กฐ ๊ฐ์ง
- ์ํฐํ๋ผ์ด์ฆ ํ์ง: 100% ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง ๋ฐ ์๊ฒฉํ ํ์ ์์คํ
์ฃผ์ ๊ธฐ๋ฅ
1. ์ง์ ๊ทธ๋ํ ๋ฉ๋ชจ๋ฆฌ ์์คํ
๋ฉ๋ชจ๋ฆฌ ๊ฐ ๊ด๊ณ๋ฅผ ๊ทธ๋ํ๋ก ๊ตฌ์ฑํ์ฌ ์ฐ๊ด ์ ๋ณด๋ฅผ ํ์ํ๋ 11๊ฐ์ ๋๊ตฌ:
- ์ธ์ ์ปจํ ์คํธ ์๋ ์ฃผ์ : ์ธ์ ์์ ์ ์ด์ ๋ฉ๋ชจ๋ฆฌ์ ์ง์ ๊ทธ๋ํ๋ฅผ ์๋์ผ๋ก ๋ก๋ (v2.1 ์ ๊ท)
- ๊ด๊ณ ์ฐ๊ฒฐ: ๋ฉ๋ชจ๋ฆฌ ๊ฐ ์๋ฏธ๋ก ์ ๊ด๊ณ ์ค์ (related_to, depends_on, implements ๋ฑ)
- ๊ทธ๋ํ ํ์: BFS/DFS ์๊ณ ๋ฆฌ์ฆ์ ํตํ ์ฐ๊ด ๋ฉ๋ชจ๋ฆฌ ํ์
- ๋ฉํฐ ์ ๋ต ๊ฒ์: 5๊ฐ์ง ๊ฒ์ ์ ๋ต ์ง์ (keyword, graph_traversal, temporal, priority, context_aware)
- ํ์๋ผ์ธ: ์๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ํ์คํ ๋ฆฌ ์๊ฐํ
์ฃผ์ ๋๊ตฌ:
get_session_context- ๐ ์ธ์ ์์ ์ ์ปจํ ์คํธ ์๋ ๋ก๋ (v2.1 ์ ๊ท)save_memory- ์ฅ๊ธฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ๋ณด ์ ์ฅrecall_memory- ์ ์ฅ๋ ์ ๋ณด ๊ฒ์link_memories- ๋ฉ๋ชจ๋ฆฌ ๊ฐ ๊ด๊ณ ์ฐ๊ฒฐget_memory_graph- ์ง์ ๊ทธ๋ํ ์กฐํsearch_memories_advanced- ๋ฉํฐ ์ ๋ต ๊ฒ์create_memory_timeline- ํ์๋ผ์ธ ์์ฑprioritize_memory- ๋ฉ๋ชจ๋ฆฌ ์ฐ์ ์์ ๊ด๋ฆฌ
2. ์๋งจํฑ ์ฝ๋ ๋ถ์
AST ๊ธฐ๋ฐ ์ฝ๋ ๋ถ์ ๋ฐ ํ์ ๋๊ตฌ:
- ์ฌ๋ณผ ๊ฒ์: ํ๋ก์ ํธ ์ ์ฒด์์ ํจ์, ํด๋์ค, ๋ณ์ ์์น ํ์
- ์ฐธ์กฐ ์ถ์ : ํน์ ์ฌ๋ณผ์ ๋ชจ๋ ์ฌ์ฉ์ฒ ์ถ์
- ์์กด์ฑ ๊ทธ๋ํ: ์ฝ๋ ๊ฐ ์์กด ๊ด๊ณ ์๊ฐํ (v2.0 ์ ๊ท)
- ์ํ ์ฐธ์กฐ ๊ฐ์ง: ์ํ ์์กด์ฑ ์๋ ํ์ง (v2.0 ์ ๊ท)
- ๋ค์ค ์ธ์ด: TypeScript, JavaScript, Python ์ง์
์ฃผ์ ๋๊ตฌ:
find_symbol- ์ฌ๋ณผ ์ ์ ๊ฒ์find_references- ์ฌ๋ณผ ์ฐธ์กฐ ์ฐพ๊ธฐanalyze_dependency_graph- ์์กด์ฑ ๊ทธ๋ํ ๋ถ์ (v2.0 ์ ๊ท)
3. ์ฝ๋ ํ์ง ๋ถ์
ํฌ๊ด์ ์ธ ์ฝ๋ ๋ฉํธ๋ฆญ ๋ฐ ํ์ง ํ๊ฐ:
- ๋ณต์ก๋ ๋ถ์: Cyclomatic, Cognitive, Halstead ๋ฉํธ๋ฆญ
- ๊ฒฐํฉ๋/์์ง๋: ๋ชจ๋ ๊ตฌ์กฐ ๊ฑด์ ์ฑ ํ๊ฐ
- ํ์ง ์ ์: A-F ๋ฑ๊ธ ์์คํ
- ๊ฐ์ ์ ์: ์คํ ๊ฐ๋ฅํ ๋ฆฌํฉํ ๋ง ๋ฐฉ์
์ฃผ์ ๋๊ตฌ:
analyze_complexity- ๋ณต์ก๋ ๋ฉํธ๋ฆญ ๋ถ์validate_code_quality- ์ฝ๋ ํ์ง ํ๊ฐcheck_coupling_cohesion- ๊ฒฐํฉ๋/์์ง๋ ๋ถ์suggest_improvements- ๊ฐ์ ์ ์apply_quality_rules- ํ์ง ๊ท์น ์ ์ฉget_coding_guide- ์ฝ๋ฉ ๊ฐ์ด๋ ์กฐํ
4. ํ๋ก์ ํธ ๊ณํ ๋๊ตฌ
์ฒด๊ณ์ ์ธ ์๊ตฌ์ฌํญ ๋ถ์ ๋ฐ ๋ก๋๋งต ์์ฑ:
- PRD ์์ฑ: ์ ํ ์๊ตฌ์ฌํญ ๋ฌธ์ ์๋ ์์ฑ
- ์ฌ์ฉ์ ์คํ ๋ฆฌ: ์์ฉ ์กฐ๊ฑด ํฌํจ ์คํ ๋ฆฌ ์์ฑ
- MoSCoW ๋ถ์: ์๊ตฌ์ฌํญ ์ฐ์ ์์ํ
- ๋ก๋๋งต ์์ฑ: ๋จ๊ณ๋ณ ๊ฐ๋ฐ ์ผ์ ๊ณํ
์ฃผ์ ๋๊ตฌ:
generate_prd- ์ ํ ์๊ตฌ์ฌํญ ๋ฌธ์ ์์ฑcreate_user_stories- ์ฌ์ฉ์ ์คํ ๋ฆฌ ์์ฑanalyze_requirements- ์๊ตฌ์ฌํญ ๋ถ์feature_roadmap- ๊ธฐ๋ฅ ๋ก๋๋งต ์์ฑ
5. ์์ฐจ์ ์ฌ๊ณ ๋๊ตฌ
๊ตฌ์กฐํ๋ ๋ฌธ์ ํด๊ฒฐ ๋ฐ ์์ฌ๊ฒฐ์ ์ง์:
- ๋ฌธ์ ๋ถํด: ๋ณต์กํ ๋ฌธ์ ๋ฅผ ๋จ๊ณ๋ณ๋ก ๋ถํด
- ์ฌ๊ณ ์ฒด์ธ: ์์ฐจ์ ์ถ๋ก ๊ณผ์ ์์ฑ
- ๋ค์ํ ๊ด์ : ๋ถ์์ /์ฐฝ์์ /์ฒด๊ณ์ /๋นํ์ ์ฌ๊ณ
- ์คํ ๊ณํ: ์์ ์ ์คํ ๊ฐ๋ฅํ ๊ณํ์ผ๋ก ๋ณํ
์ฃผ์ ๋๊ตฌ:
create_thinking_chain- ์ฌ๊ณ ์ฒด์ธ ์์ฑanalyze_problem- ๋ฌธ์ ๋ถ์step_by_step_analysis- ๋จ๊ณ๋ณ ๋ถ์format_as_plan- ๊ณํ ํ์ํ
6. ํ๋กฌํํธ ์์ง๋์ด๋ง
ํ๋กฌํํธ ํ์ง ํฅ์ ๋ฐ ์ต์ ํ:
- ์๋ ๊ฐํ: ๋ชจํธํ ์์ฒญ์ ๊ตฌ์ฒด์ ์ผ๋ก ๋ณํ
- ํ์ง ํ๊ฐ: ๋ช ํ์ฑ, ๊ตฌ์ฒด์ฑ, ๋งฅ๋ฝ์ฑ ์ ์ํ
- Gemini ์ต์ ํ: Google Gemini API ํ๋กฌํํ ์ ๋ต
์ฃผ์ ๋๊ตฌ:
enhance_prompt- ํ๋กฌํํธ ๊ฐํanalyze_prompt- ํ๋กฌํํธ ํ์ง ๋ถ์enhance_prompt_gemini- Gemini ํ๋กฌํํ ์ ๋ต
7. ์ถ๋ก ํ๋ ์์ํฌ
๋ณต์กํ ๋ฌธ์ ์ ์ฒด๊ณ์ ๋ถ์:
- 9๋จ๊ณ ์ถ๋ก : ๋ฌธ์ ๋ถํด, ๊ฐ์ค ํ์, ์ํ ํ๊ฐ
- ๋ ผ๋ฆฌ์ ๊ฒ์ฆ: ์์ ์ฑ๊ณผ ์ ๋ฐ์ฑ ๋ณด์ฅ
์ฃผ์ ๋๊ตฌ:
apply_reasoning_framework- 9๋จ๊ณ ์ถ๋ก ํ๋ ์์ํฌ
8. ์ฌ์ฉ ๋ถ์ (v2.0 ์ ๊ท)
๋๊ตฌ ์ฌ์ฉ ํต๊ณ ๋ฐ ๋ถ์:
- ๋ฉ๋ชจ๋ฆฌ ํต๊ณ: ์นดํ ๊ณ ๋ฆฌ๋ณ ๋ถํฌ, ์๊ฐ๋ณ ํ๋
- ๊ทธ๋ํ ๋ถ์: ์ฐ๊ฒฐ ํต๊ณ, ํด๋ฌ์คํฐ ์ ๋ณด
์ฃผ์ ๋๊ตฌ:
get_usage_analytics- ์ฌ์ฉ ๋ถ์ ์กฐํ
9. UI ํ๋ฆฌ๋ทฐ & ์๊ฐ
preview_ui_ascii- ASCII UI ํ๋ฆฌ๋ทฐget_current_time- ํ์ฌ ์๊ฐ ์กฐํ
Hi-GCloud ์ฐ๋
Hi-AI๋ hi-gcloud MCP์ ํจ๊ป ์ฌ์ฉํ๋ฉด ๊ฐ๋ ฅํ GCP ์ด์ + ์ฝ๋ ์์ ์ํฌํ๋ก์ฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ฐ๋ ๋ฐฉ์
hi-gcloud์์ ์๋ฌ๋ฅผ ๋ฐ๊ฒฌํ๋ฉด hi-ai ๋๊ตฌ๋ฅผ ์๋์ผ๋ก ์ถ์ฒํฉ๋๋ค:
๐ Cloud Run ๋ก๊ทธ: my-api
๐ด 3๊ฐ์ ์๋ฌ๊ฐ ๋ฐ๊ฒฌ๋์์ต๋๋ค.
๐ก hi-ai ์ฐ๋ ๊ฐ๋ฅ: ์๋ฌ ๋ถ์์ด ํ์ํ๋ฉด analyze_problem ๋๊ตฌ๋ก ์์ธ์ ๋ถ์ํ๊ณ ,
๊ด๋ จ ์ฝ๋๋ฅผ ์ฐพ์ ์์ ๋ฐฉ์์ ์ ์ํ ์ ์์ต๋๋ค.
์ํฌํ๋ก์ฐ ์์
User: "๋ฐฐํฌ๊ฐ ์คํจํ์ด"
[hi-gcloud]
โ gcp_run_logs๋ก ์๋ฌ ๋ก๊ทธ ์กฐํ
โ ์๋ฌ 3๊ฑด ๋ฐ๊ฒฌ, hi-ai ์ฐ๋ ํํธ ์ ๊ณต
[hi-ai ์๋ ์ฐ๋]
โ analyze_problem์ผ๋ก ์๋ฌ ์์ธ ๋ถ์
โ find_symbol๋ก ๊ด๋ จ ์ฝ๋ ์์น ํ์
โ suggest_improvements๋ก ์์ ๋ฐฉ์ ์ ์
โ save_memory๋ก ํด๊ฒฐ ๋ฐฉ๋ฒ ์ ์ฅ (์ฌ๋ฐ ๋ฐฉ์ง)
์ค์น
๋ MCP๋ฅผ ํจ๊ป ์ค์นํ๋ฉด ์๋์ผ๋ก ์ฐ๋๋ฉ๋๋ค:
{
"mcpServers": {
"hi-ai": {
"command": "npx",
"args": ["-y", "@su-record/hi-ai"]
},
"hi-gcloud": {
"command": "npx",
"args": ["-y", "@polin-go/hi-gcloud"]
}
}
}
์ฐ๋ ๋๊ตฌ ๋งคํ
| hi-gcloud ์ํฉ | hi-ai ์ถ์ฒ ๋๊ตฌ |
|---|---|
| ์๋ฌ ๋ก๊ทธ ๋ฐ๊ฒฌ | analyze_problem, find_symbol |
| ๋ฐฐํฌ ์คํจ | step_by_step_analysis, suggest_improvements |
| ์ฑ๋ฅ ๋ฌธ์ | analyze_complexity, check_coupling_cohesion |
| ๋น์ฉ ์ฆ๊ฐ | format_as_plan |
v2.1.0 ์ ๋ฐ์ดํธ
์ฃผ์ ๋ณ๊ฒฝ์ฌํญ
Hi-AI v2.1.0์ ์ธ์ ์ปจํ ์คํธ ์๋ ์ฃผ์ ๊ธฐ๋ฅ์ ๋์ ํ ๋ง์ด๋ ๋ฆด๋ฆฌ์ค์ ๋๋ค.
์ ๊ท ๊ธฐ๋ฅ
| ๊ธฐ๋ฅ | ์ค๋ช |
|---|---|
get_session_context ๋๊ตฌ | ์ธ์ ์์ ์ ์ด์ ๋ฉ๋ชจ๋ฆฌ, ์ง์ ๊ทธ๋ํ, ํ์๋ผ์ธ์ ํ ๋ฒ์ ์กฐํ |
hi-ai://context/session ๋ฆฌ์์ค | ํด๋ผ์ด์ธํธ๊ฐ ๋ฆฌ์์ค๋ฅผ ์ฝ์ ๋ ์๋์ผ๋ก ์ปจํ ์คํธ ์ ๊ณต |
| ๋๊ตฌ description ๊ฐ์ | LLM์ด ์ธ์ ์์ ์ ์๋์ผ๋ก ์ปจํ ์คํธ๋ฅผ ํ์ ํ๋๋ก ์ ๋ |
๋ณ๊ฒฝ ์์ฝ
| ํญ๋ชฉ | v2.0.0 | v2.1.0 | ๋ณํ |
|---|---|---|---|
| ๋๊ตฌ ๊ฐ์ | 34๊ฐ | 35๊ฐ | +1๊ฐ |
| ๋ฆฌ์์ค ๊ฐ์ | 3๊ฐ | 4๊ฐ | +1๊ฐ |
| ์ธ์ ์ปจํ ์คํธ | ์๋ | ์๋ ๊ถ์ฅ | ๊ฐ์ |
v2.0.0 ์ ๋ฐ์ดํธ
์ฃผ์ ๋ณ๊ฒฝ์ฌํญ
Hi-AI v2.0.0์ ์ง์ ๊ทธ๋ํ ๊ธฐ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์์คํ ๊ณผ ๊ณ ๊ธ ์ฝ๋ ๋ถ์ ๊ธฐ๋ฅ์ ๋์ ํ ๋ฉ์ด์ ๋ฆด๋ฆฌ์ค์ ๋๋ค.
์ ๊ท ๊ธฐ๋ฅ (6๊ฐ ๋๊ตฌ)
| ๋๊ตฌ | ์ค๋ช |
|---|---|
link_memories | ๋ฉ๋ชจ๋ฆฌ ๊ฐ ๊ด๊ณ ์ฐ๊ฒฐ (์ง์ ๊ทธ๋ํ) |
get_memory_graph | ์ง์ ๊ทธ๋ํ ์กฐํ/์๊ฐํ (Mermaid ๋ค์ด์ด๊ทธ๋จ ์ง์) |
search_memories_advanced | 5๊ฐ์ง ์ ๋ต์ ๋ฉํฐ ๊ฒ์ |
create_memory_timeline | ์๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ํ์๋ผ์ธ |
analyze_dependency_graph | ์ฝ๋ ์์กด์ฑ ๋ถ์ ๋ฐ ์ํ ์ฐธ์กฐ ๊ฐ์ง |
get_usage_analytics | ์ฌ์ฉ ํต๊ณ/๋ถ์ |
์ํคํ ์ฒ ๊ฐ์
- index.ts: 37๊ฐ switch case โ ๋์ ๋์คํจ์น ํจํด
- MemoryManager: ์ง์ ๊ทธ๋ํ ๊ธฐ๋ฅ ์ถ๊ฐ (395์ค โ 823์ค)
- ์ฝ๋ ์ต์ ํ: ๋ถํ์ํ ์์กด์ฑ ์ ๊ฑฐ (puppeteer-core)
์ค์น
์์คํ ์๊ตฌ์ฌํญ
- Node.js 18.0 ์ด์
- TypeScript 5.0 ์ด์
- MCP ํธํ ํด๋ผ์ด์ธํธ (Claude Desktop, Cursor, Windsurf)
- Python 3.x (Python ์ฝ๋ ๋ถ์ ์)
์ค์น ๋ฐฉ๋ฒ
NPM ํจํค์ง
# ๊ธ๋ก๋ฒ ์ค์น
npm install -g @su-record/hi-ai
# ๋ก์ปฌ ์ค์น
npm install @su-record/hi-ai
Smithery ํ๋ซํผ
# ์ํด๋ฆญ ์ค์น
https://smithery.ai/server/@su-record/hi-ai
MCP ํด๋ผ์ด์ธํธ ์ค์
Claude Desktop ๋๋ ๋ค๋ฅธ MCP ํด๋ผ์ด์ธํธ์ ์ค์ ํ์ผ์ ์ถ๊ฐ:
{
"mcpServers": {
"hi-ai": {
"command": "hi-ai",
"args": [],
"env": {}
}
}
}
๋๊ตฌ ์นดํ๋ก๊ทธ
์ ์ฒด ๋๊ตฌ ๋ชฉ๋ก (35๊ฐ)
| ์นดํ ๊ณ ๋ฆฌ | ๋๊ตฌ ์ | ๋๊ตฌ ๋ชฉ๋ก |
|---|---|---|
| ๋ฉ๋ชจ๋ฆฌ - ๊ธฐ๋ณธ | 6 | save_memory, recall_memory, list_memories, delete_memory, update_memory, prioritize_memory |
| ๋ฉ๋ชจ๋ฆฌ - ๊ทธ๋ํ | 4 | link_memories, get_memory_graph, search_memories_advanced, create_memory_timeline |
| ๋ฉ๋ชจ๋ฆฌ - ์ธ์ | 1 | get_session_context ๐ |
| ์ฝ๋ ๋ถ์ | 3 | find_symbol, find_references, analyze_dependency_graph |
| ์ฌ๊ณ | 4 | create_thinking_chain, analyze_problem, step_by_step_analysis, format_as_plan |
| ์ฝ๋ ํ์ง | 6 | analyze_complexity, validate_code_quality, check_coupling_cohesion, suggest_improvements, apply_quality_rules, get_coding_guide |
| ๊ณํ | 4 | generate_prd, create_user_stories, analyze_requirements, feature_roadmap |
| ํ๋กฌํํธ | 3 | enhance_prompt, analyze_prompt, enhance_prompt_gemini |
| ์ถ๋ก | 1 | apply_reasoning_framework |
| ๋ถ์ | 1 | get_usage_analytics |
| UI | 1 | preview_ui_ascii |
| ์๊ฐ | 1 | get_current_time |
ํค์๋ ๋งคํ ์์
๋ฉ๋ชจ๋ฆฌ ๋๊ตฌ
| ๋๊ตฌ | ํ๊ตญ์ด | ์์ด |
|---|---|---|
| save_memory | ๊ธฐ์ตํด, ์ ์ฅํด | remember, save this |
| recall_memory | ๋ ์ฌ๋ ค, ๊ธฐ์ต๋ | recall, remind me |
| get_session_context | ์ธ์ ์์, ์ปจํ ์คํธ | session start, context |
| link_memories | ์ฐ๊ฒฐํด, ๊ด๊ณ | link, connect |
| get_memory_graph | ๊ทธ๋ํ, ๊ด๊ณ๋ | graph, relations |
| search_memories_advanced | ๊ณ ๊ธ ๊ฒ์, ์ฐพ์ | advanced search, find |
์ฝ๋ ๋ถ์ ๋๊ตฌ
| ๋๊ตฌ | ํ๊ตญ์ด | ์์ด |
|---|---|---|
| find_symbol | ํจ์ ์ฐพ์, ํด๋์ค ์ด๋ | find function, where is |
| analyze_dependency_graph | ์์กด์ฑ, ๊ด๊ณ | dependency, relations |
| analyze_complexity | ๋ณต์ก๋, ๋ณต์กํ์ง | complexity, how complex |
| validate_code_quality | ํ์ง, ๋ฆฌ๋ทฐ | quality, review |
์ํคํ ์ฒ
์์คํ ๊ตฌ์กฐ
graph TB
subgraph "Client Layer"
A[Claude Desktop / Cursor / Windsurf]
end
subgraph "MCP Server"
B[Hi-AI v2.1.0]
end
subgraph "Core Libraries"
C1[MemoryManager + Graph]
C2[ContextCompressor]
C3[ProjectCache]
C4[PythonParser]
end
subgraph "Tool Categories"
D1[Memory Basic x6]
D2[Memory Graph x4]
D2b[Memory Session x1]
D3[Code Analysis x3]
D4[Thinking Tools x4]
D5[Quality Tools x6]
D6[Planning Tools x4]
D7[Prompt Tools x3]
D8[Reasoning x1]
D9[Analytics x1]
D10[UI/Time x2]
end
subgraph "Data Layer"
E1[(SQLite Database)]
E2[Project Files]
end
A <--> B
B --> C1 & C2 & C3 & C4
B --> D1 & D2 & D2b & D3 & D4 & D5 & D6 & D7 & D8 & D9 & D10
C1 --> E1
C3 --> E2
C4 --> E2
D1 --> C1 & C2
D2 --> C1
D3 --> C3 & C4
D5 --> C4
D9 --> C1
ํต์ฌ ์ปดํฌ๋ํธ
MemoryManager (v2.0 ํ์ฅ)
- ์ญํ : ์๊ตฌ ๋ฉ๋ชจ๋ฆฌ ์ ์ฅ์ ๋ฐ ์ง์ ๊ทธ๋ํ ๊ด๋ฆฌ
- ๊ธฐ์ : SQLite, better-sqlite3
- ๊ธฐ๋ฅ: CRUD, ๊ฒ์, ์ฐ์ ์์, ๊ทธ๋ํ ๊ด๊ณ, BFS/DFS ํ์
- ์ต์ ํ: WAL ๋ชจ๋, ์ธ๋ฑ์ฑ, Prepared Statements
ContextCompressor
- ์ญํ : ์ปจํ ์คํธ ์์ถ ๊ด๋ฆฌ
- ์๊ณ ๋ฆฌ์ฆ: ์ฐ์ ์์ ๊ธฐ๋ฐ ์์ถ
- ๊ธฐ๋ฅ: ์ค์๋์ ๋ฐ๋ฅธ ์ ํ์ ๋ณด์กด
ProjectCache
- ์ญํ : ts-morph ํ๋ก์ ํธ ์บ์ฑ
- ์ ๋ต: LRU ์๊ณ ๋ฆฌ์ฆ
- ๊ธฐ๋ฅ: ๋ฐ๋ณต ๋ถ์ ์ฑ๋ฅ ํฅ์
- ์ ํ: 100MB/ํ๋ก์ ํธ, 200MB ์ ์ฒด
PythonParser
- ์ญํ : Python ์ฝ๋ AST ๋ถ์
- ๋ฐฉ๋ฒ: subprocess ์คํ
- ๊ธฐ๋ฅ: ์ฌ๋ณผ ์ถ์ถ, ๋ณต์ก๋ ๊ณ์ฐ
- ์์ : ํ์์์, ์๋ ์ ๋ฆฌ
๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง (v2.0)
-- memories ํ
์ด๋ธ
CREATE TABLE memories (
key TEXT PRIMARY KEY,
value TEXT NOT NULL,
category TEXT NOT NULL DEFAULT 'general',
timestamp TEXT NOT NULL,
lastAccessed TEXT NOT NULL,
priority INTEGER DEFAULT 0
);
-- memory_relations ํ
์ด๋ธ (v2.0 ์ ๊ท)
CREATE TABLE memory_relations (
id INTEGER PRIMARY KEY AUTOINCREMENT,
sourceKey TEXT NOT NULL,
targetKey TEXT NOT NULL,
relationType TEXT NOT NULL,
strength REAL DEFAULT 1.0,
metadata TEXT,
timestamp TEXT NOT NULL,
UNIQUE(sourceKey, targetKey, relationType)
);
์ฑ๋ฅ
์ฃผ์ ์ต์ ํ
ํ๋ก์ ํธ ์บ์ฑ
- LRU ์บ์๋ฅผ ํตํ ๋ฐ๋ณต ๋ถ์ ์ฑ๋ฅ ํฅ์
- 5๋ถ TTL๋ก ์ต์ ์ํ ์ ์ง
- ๋ฉ๋ชจ๋ฆฌ ์ ํ์ ํตํ ๋ฆฌ์์ค ๊ด๋ฆฌ
๋ฉ๋ชจ๋ฆฌ ์์
- SQLite ํธ๋์ญ์ ์ผ๋ก ๋ฐฐ์น ์์ ์ต์ ํ
- ์๊ฐ ๋ณต์ก๋ ๊ฐ์ : O(nยฒ) โ O(n)
- ์ธ๋ฑ์ฑ์ ํตํ ๋น ๋ฅธ ์กฐํ
๊ทธ๋ํ ํ์ (v2.0)
- BFS/DFS ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํจ์จ์ ํ์
- Union-Find๋ก ํด๋ฌ์คํฐ ๊ฐ์ง
- ๊ฒฝ๋ก ์ฐพ๊ธฐ ์ต์ ํ
๊ฐ๋ฐ ๊ฐ์ด๋
ํ๊ฒฝ ์ค์
# ๋ฆฌํฌ์งํ ๋ฆฌ ํด๋ก
git clone https://github.com/su-record/hi-ai.git
cd hi-ai
# ์์กด์ฑ ์ค์น
npm install
# ๋น๋
npm run build
# ๊ฐ๋ฐ ๋ชจ๋
npm run dev
ํ ์คํธ
# ์ ์ฒด ํ
์คํธ ์คํ
npm test
# Watch ๋ชจ๋
npm run test:watch
# UI ๋ชจ๋
npm run test:ui
# ์ปค๋ฒ๋ฆฌ์ง ๋ฆฌํฌํธ
npm run test:coverage
์ฝ๋ ์คํ์ผ
- TypeScript: strict ๋ชจ๋
- ํ์
:
src/types/tool.ts์ฌ์ฉ - ํ ์คํธ: 100% ์ปค๋ฒ๋ฆฌ์ง ์ ์ง
- ์ปค๋ฐ: Conventional Commits ํ์
์ ๋๊ตฌ ์ถ๊ฐ
src/tools/category/๋๋ ํ ๋ฆฌ์ ํ์ผ ์์ฑToolDefinition์ธํฐํ์ด์ค ๊ตฌํsrc/index.ts์toolHandlers์ ๋ฑ๋กtests/unit/๋๋ ํ ๋ฆฌ์ ํ ์คํธ ์์ฑ- README ์ ๋ฐ์ดํธ
๊ธฐ์ฌ์
ํน๋ณ ๊ฐ์ฌ
- Smithery - MCP ์๋ฒ ๋ฐฐํฌ ๋ฐ ์ํด๋ฆญ ์ค์น ํ๋ซํผ ์ ๊ณต
๋ผ์ด์ ์ค
MIT License - ์์ ๋กญ๊ฒ ์ฌ์ฉ, ์์ , ๋ฐฐํฌ ๊ฐ๋ฅ
์ธ์ฉ
์ด ํ๋ก์ ํธ๋ฅผ ์ฐ๊ตฌ๋ ์์ ์ ์ฉ๋๋ก ์ฌ์ฉํ์ค ๊ฒฝ์ฐ:
@software{hi-ai2025,
author = {Su},
title = {Hi-AI: Knowledge Graph-Based MCP Server for AI-Assisted Development},
year = {2025},
version = {2.1.0},
url = {https://github.com/su-record/hi-ai}
}
Star History
Hi-AI v2.1.0
์ง์ ๊ทธ๋ํ ๋ฉ๋ชจ๋ฆฌ ยท ์ธ์ ์ปจํ ์คํธ ์๋ ์ฃผ์ ยท ์์กด์ฑ ๋ถ์ ยท 35๊ฐ ์ ๋ฌธ ๋๊ตฌ
Made with โค๏ธ by Su
๐ Homepage ยท ๐ Documentation ยท ๐ Issues ยท ๐ฌ Discussions
