# Agent Architecture ## 개요 Galaxis-Po 투자 분석 에이전트 시스템. 자연어 쿼리를 받아 도구를 활용하여 투자 분석을 수행합니다. ## 구조 ``` backend/app/agents/ ├── __init__.py ├── tools/ # Meta-tool 패턴 │ ├── types.py # ToolResult, RegisteredTool │ ├── registry.py # 도구 레지스트리 │ ├── meta_tool.py # MetaTool 베이스 클래스 │ ├── finance/ # 금융 데이터 도구 │ │ ├── get_financials.py │ │ ├── get_market_data.py │ │ └── sub_tools.py │ ├── search/ # 검색 도구 │ │ ├── web_search.py │ │ └── news_search.py │ └── filesystem/ # 파일 도구 │ ├── read_file.py │ ├── write_file.py │ └── edit_file.py ├── skills/ # SKILL.md 시스템 │ ├── types.py # SkillMetadata, Skill │ ├── loader.py # SKILL.md 파서 │ ├── registry.py # 스킬 디스커버리 │ ├── tool.py # use_skill 도구 │ └── builtin/ # 내장 스킬 │ ├── dcf/SKILL.md │ └── kim-jong-bong-strategy/SKILL.md └── core/ # 에이전트 코어 ├── agent.py # 에이전트 루프 ├── compact.py # 컨텍스트 압축 ├── prompts.py # 시스템 프롬프트 ├── scratchpad.py # 실행 로그 ├── tool_executor.py # 동시 도구 실행 └── rules.py # RULES.md 로더 ``` ## 핵심 패턴 ### Meta-tool NL 쿼리를 받아 LLM(fast tier)으로 적절한 sub-tool을 선택하여 실행합니다. ### SKILL.md YAML frontmatter + 마크다운 본문으로 구성된 전문 분석 워크플로우입니다. 에이전트가 use_skill 도구로 스킬을 로드하면 해당 워크플로우를 따릅니다. ### 도구 동시성 concurrency_safe 플래그로 읽기 전용 도구는 병렬 실행, 쓰기 도구는 직렬 실행합니다. ### 컨텍스트 압축 토큰 수가 임계값을 초과하면 LLM으로 대화를 요약하여 컨텍스트를 압축합니다. ## API ### POST /api/agent/query 동기 응답. 에이전트 실행 후 최종 결과 반환. ### POST /api/agent/stream SSE 스트리밍. 도구 실행 과정을 실시간으로 전달. ## LLM 연동 app.services.llm.get_chat_model()을 통해 LangChain BaseChatModel 사용. ModelTier.FAST(라우팅/압축), ModelTier.STRONG(분석/추론).