pommit은 기업 요구 역량 분석과 사용자 보유 역량 분석을 결합해 포트폴리오 생성을 지원하는 멀티 에이전트 프로젝트입니다.
company_analyzer는 이 전체 프로젝트 안에서 기업 분석 파이프라인을 담당하는 오케스트레이터 영역입니다.
현재 레포는 서비스 전체 에이전트 구성을 포함하며, 각 에이전트는 입출력/연결 검증 중심의 최소 기능(MVP 초기 단계)으로 구현되어 있습니다.
- 기업 분석: JD, 기술 블로그, 제품/솔루션, 저장소 근거를 수집해 요구 역량을 구조화
- 사용자 분석: 사용자 저장소를 기반으로 프로젝트 개요와 커밋 단위 역량 신호를 생성
- 통합 목표: 기업 요구 역량과 사용자 보유 역량을 매핑해 포트폴리오 생성
- 현재는 파이프라인별 최소 기능을 우선 구현하여 에이전트 간 I/O 계약과 오케스트레이션 동작을 검증
company/orchestrator_agent: 기업 분석 파이프라인 총괄 오케스트레이션user/orchestrator_agent: 사용자 분석 파이프라인 총괄 오케스트레이션repository_agent: Python 코드 수집/AST 분석/그래프 산출물 생성service_agent:outputs/기반 제품/솔루션 근거 추출 및 정리job_description_agent: 채용공고(JD)에서 필수/우대 요구 역량 추출tech_blog_agent: 기술 블로그 기반 요구 역량 추출collector_agent+requirement_agent: 근거 통합 및 JD-근거 매핑raw_agent,outline_agent,commit_agent,episode_agent: 사용자 프로젝트/커밋 분석 파이프라인 구성portfolio/portfolio_agent: company/user 분석 결과를 받아 포트폴리오 Markdown 생성 (HTTP API 포함)
pommit/
└── app/agents/
├── company/ # 기업 분석 계열 에이전트
│ ├── orchestrator_agent/
│ ├── repository_agent/
│ ├── service_agent/
│ ├── tech_blog_agent/
│ ├── job_description_agent/
│ ├── collector_agent/
│ └── requirement_agent/
├── user/ # 사용자 분석 계열 에이전트
│ ├── orchestrator_agent/
│ ├── raw_agent/
│ ├── outline_agent/
│ ├── commit_agent/
│ └── episode_agent/
├── portfolio/ # 포트폴리오 에이전트
│ └── portfolio_agent/
└── config/agents/ # 에이전트 입력 샘플 설정
flowchart LR
startNode([START])
endNode([END])
startNode --> portfolioAgent[portfolio_agent]
portfolioAgent --> endNode
현재 구현된 오케스트레이터 그래프:
flowchart LR
startNode([START]) --> repoAgent[repository_agent]
startNode --> serviceAgent[service_agent]
startNode --> blogAgent[tech_blog_agent]
startNode --> jdAgent[job_description_agent]
repoAgent --> collectorAgent[collector_agent]
serviceAgent --> collectorAgent
blogAgent --> collectorAgent
collectorAgent --> requirementAgent[requirement_agent]
jdAgent --> requirementAgent
requirementAgent --> endNode([END])
- 기업 오케스트레이터:
app/agents/company/orchestrator_agent/graph.py - 사용자 오케스트레이터:
app/agents/user/orchestrator_agent/graph.py
사용자 오케스트레이터(에이전트 단위 추상화) 그래프:
flowchart LR
startNode([START]) --> rawAgent[raw_agent]
rawAgent --> outlineAgent[outline_agent]
rawAgent --> commitAgent[commit_agent]
outlineAgent --> episodeAgent[episode_agent]
commitAgent --> episodeAgent
episodeAgent --> endNode([END])
- 구현상
user_orchestrator_agent는 stage 노드(run_raw,run_outline,run_caiv,run_episode)로 구성되며, 각 stage에서 하위 에이전트를 호출하는 방식으로 동작합니다.
bash script/run_orchestrator_agent.shbash script/run_repository_agent.sh https://github.com/octocat/Hello-World.git
bash script/run_service_agent.sh Upstage
uv run python -m app.agents.job_description_agent.graph --url "https://example.com/jobs/12345"
uv run python -m app.agents.tech_blog_agent.graph --text /path/to/blog.txtuv run python -m app.agents.user_orchestrator_agent.graph --repository-url https://github.com/VectorSophie/Smartpickuv run python -m app.agents.raw_agent.graph --repository-url https://github.com/VectorSophie/Smartpick
bash script/run_outline_agent.sh app/agents/raw_agent/data/output/Smartpick/raw_output.json Smartpick
uv run python -m app.agents.commit_agent.graph --commit-low-data-path app/agents/commit_agent/data/input/sample_raw_output.json
bash script/run_episode_agent.sh app/agents/outline_agent/data/output/Smartpick/outline.json app/agents/commit_agent/data/output/Smartpick/commit_agent.jsonHTTP API 서버 (권장):
uv run uvicorn app.agents.portfolio.portfolio_agent.mock_api:app --host 0.0.0.0 --port 8000
# POST /api/portfolio/mock-run (company_id, repository_ref, 또는 dict 직접 주입)그래프 직접 실행:
uv run python -m app.agents.portfolio.portfolio_agent.graph \
--config app/agents/config/agents/portfolio/portfolio_agent/portfolio_agent_input.yaml- 기업 분석 산출물
app/agents/repository_agent/data/output/<repository_name>/app/agents/service_agent/data/outputs/app/agents/tech_blog_agent/data/output/<company_name>/app/agents/job_description_agent/data/output/<company_name>/
- 사용자 분석 산출물
app/agents/raw_agent/data/output/<repo>/app/agents/outline_agent/data/output/<repository_name>/outline.jsonapp/agents/commit_agent/data/output/<repo>/app/agents/episode_agent/data/output/<repository_name>/episodes.jsonapp/agents/user_orchestrator_agent/data/output/<repo>/
- 포트폴리오 통합 산출물
outputs/portfolio/portfolio_agent/<run_id>/merged_orchestrator_output.yamloutputs/portfolio/portfolio_agent/<run_id>/portfolio.md
- Python 3.12+
uv
uv sync# 1) 의존성 설치
uv sync
# 2) 기업 분석 오케스트레이터 실행
bash script/run_orchestrator_agent.sh
# 3) 사용자 분석 오케스트레이터 실행
uv run python -m app.agents.user_orchestrator_agent.graph --repository-url https://github.com/VectorSophie/Smartpickcp .env.example .env.env.example 주요 항목:
UPSTAGE_API_KEY=
UPSTAGE_MODEL=solar-pro2
UPSTAGE_BASE_URL=https://api.upstage.ai/v1/solar
LANGCHAIN_TRACING_V2=true
LANGSMITH_TRACING=true
LANGSMITH_API_KEY=
LANGSMITH_PROJECT=pommit-dev
SUPABASE_URL=
SUPABASE_KEY=
SUPABASE_SERVICE_ROLE_KEY=
ENDPOINT=
S3_ACCESS_KEY=
S3_SECRET_KEY=- 기업 분석 실행 후
repository/service/tech_blog/job_description산출 디렉터리 생성 확인 - 사용자 분석 실행 후
raw/outline/commit/episode/user_orchestrator산출 디렉터리 생성 확인 - 주요 결과 파일(JSON/MD/YAML) 생성 여부 확인
- 현재 단계에서는 에이전트 간 입력/출력 계약과 파이프라인 연결 검증을 우선 확인