
    (<iP                     b   d Z ddlZddlZddlmZ ej
                  j                  d e ee      j                         j                  j                               ddlmZmZmZmZmZmZ  ee      j                         j                  j                  dz  ZdedefdZd	 Zed
k(  r e        yy)u2   Progressive Disclosure 스킬 로딩 벤치마크.    N)Path)KEYWORD_TRIGGERSSECURITY_WHITELIST
SkillLevelclassify_skilllist_skills
load_skillskillstextreturnc                 <    t        | j                  d            dz  S )u-   UTF-8 바이트 수 / 4로 토큰 수 추정.zutf-8   )lenencode)r   s    N/home/jay/workspace/.worktrees/task-2057-dev2/utils/benchmark_skill_loading.pyestimate_tokensr      s    t{{7#$))    c                  |   t        t              } t        |       }d}t        j                         }| D ]+  }	 t        t        |j                        }|t        |      z  }- t        j                         |z
  }d}t        j                         }| D ]R  }t        |j                        t        j                  k(  s*	 t        t        |j                        }|t        |      z  }T t        j                         |z
  }	d}
| D ]+  }|j                   d|j                   }|
t        |      z  }
- d}t               }|j                         }t        j                          D ]1  \  }}|D ]'  }|j                         |v s|j#                  |        1 3 |}|D ]!  }	 t        t        |      }|t        |      z  }# t%        d       t%        d       t%        d       t%        d|        t%                t%        d       t%        d|d	       t%        d
|dd       t%                t%        d       t%        d|
d	       |dkD  rt%        dd|
|z  z
  dz  dd       t%                t%        dt        t&               d       t%        d|d	       t%        d
|	dd       |dkD  rt%        dd||z  z
  dz  dd       t%                t%        d| d       t%        dt)        |              t%        d|d	       |dkD  rt%        dd||z  z
  dz  dd       t%                t%        d       |dkD  rBd||z  z
  dz  }t%        d|dd       |dk\  rt%        d       nt%        d       t%        d       |||
||t)        |      |rt+        d|
|z  z
  dz  d      nd|rt+        d||z  z
  dz  d      nd|rt+        d||z  z
  dz  d      nddd
}dd l}t%                t%        d!       t%        |j/                  |d"d#$             |S # t        $ r Y w xY w# t        $ r Y w xY w# t        $ r Y w xY w)%u   벤치마크 실행.r   z: u   블로그 SEO 전략 회고z<============================================================u*   Progressive Disclosure 벤치마크 결과u   총 스킬 수: u   [Baseline] 전체 로드:u     토큰 수: ,u     로드 시간: z.3fsu)   [Level 1] 이름+설명만 (list_skills):u     절감율:    d   z.1f%u&   [CORE only] 보안 화이트리스트 u   개만 전체 로드:u    [CORE + STANDARD] 프롬프트 'u   ' 트리거:u     트리거된 스킬: u   MoAI-ADK 주장: 81% 절감u   실제 측정 (CORE only):    u+   → PD 도입 가치 있음 (≥30% 기준)u?   ⚠️  경고: PD 도입 가치 재검토 필요 (<30% 절감)uN      CORE 스킬 비중이 너무 높거나, SECURITY_WHITELIST 재조정 권장Q   )
total_skillsbaseline_tokenslevel1_tokenscore_tokenstriggered_tokenstriggered_skillsreduction_level1_pctreduction_core_pctreduction_triggered_pctmoai_claim_pctNu   --- JSON 결과 ---   F)indentensure_ascii)r   
SKILLS_DIRr   timeperf_counterr	   namer   FileNotFoundErrorr   r   COREdescriptionsetlowerr   itemsaddprintr   sortedroundjsondumps)	summariesr   r   baseline_startr   contentbaseline_timer   
core_start	core_timer   metasample_prompttriggered_namesprompt_lower
skill_namekeywordskwr    r,   actualresultsr7   s                          r   	benchmarkrH      s   J'Iy>L O&&(N 	 QVV4Gw77O %%'.8M K""$J !&&!Z__4$Z8w77	 !!#j0I M /&&AMM?+../ 2M #O &&(L 0 6 6 8 
H 	Bxxz\)##J/	 # 	 T2G 88 
(O	
67	(O	\N
+,	G	%'	N?1-
./	mC0
23	G	57	N=+
,-q=?#BBcI#NaPQ	G	237I3J2KK`
ab	N;q/
*+	i_A
./q;#@@CGLANO	G	,]O<
HI	#F?$;#<
=>	N+A.
/0q#3o#EELSQQRST	G	')kO33s:+F3<q9:R<?@STbc %*&","?3Yhq=?+J'Jc&QST UnoUdeQ)F%F#$MqQjk_n5!.>.P*PTW)WYZ#[tuG 	G	
 	$**WQU*
;<NE ! 		 % 4 ! 		s5   (P;(PP.	PP	P+*P+.	P;:P;__main__)__doc__sysr*   pathlibr   pathinsertstr__file__resolveparentutils.skill_loaderr   r   r   r   r   r	   r)   intr   rH   __name__ r   r   <module>rW      s    8 
   3tH~--/66==> ?  (^##%,,33h>
*# *# *
nb zK r   