
    (j                        U d Z ddlmZ ddlmZmZ dZded<   dZdZ	 ed	
           G d d                      Z
ddZddZdddZdS )u  MBTI 人格 → 行为旋钮映射。

为什么这么设计:逐个硬编码 16 型会僵化且无法组合。这里把 MBTI 拆成 4 个独立轴,
每轴映射到一个 [0,1] 的行为旋钮,再由轴 + 年龄派生出更细的倾向。这些旋钮后续会
注入 agent 决策的 prompt,作为"性格参数";其中 assertiveness 专门用于制造性格摩擦,
对冲 instruction-tuned 模型"过度礼貌、没主见"的通病(见 PRD §4.9)。

注:下方派生公式是 v0 启发式,待真实仿真后校准(PRD §12 P0)。
    )annotations)asdict	dataclass))EI)NS)FT)JPztuple[tuple[str, str], ...]_AXESg?皙?T)frozenc                  b    e Zd ZU dZded<   ded<   ded<   ded<   ded<   ded<   ded	<   ddZdS )BehaviorProfileu7   agent 的性格行为旋钮,全部归一化到 [0,1]。floatsocial_initiativenovelty_seekingagreeablenessroutine_strictnessassertivenessrisk_tolerance	night_owlreturndict[str, float]c                     t          |           S )N)r   )selfs    //root/genesis-world/src/genesis/persona/mbti.pyto_dictzBehaviorProfile.to_dict"   s    d||    N)r   r   )__name__
__module____qualname____doc____annotations__r     r!   r   r   r      s         AA     r!   r   mbtistrr   c                   t          | t                    st          dt          |                     |                                                                 }t          |          dk    rt          d|           t          |t                    D ])\  }\  }}|||fvrt          d| d|d| d|           *|S )uG   校验并规整 MBTI 字符串(大写去空格),非法抛 ValueError。u   MBTI 必须是字符串,得到    u"   MBTI 必须是 4 个字母,得到 u   非法 MBTI u   :字母 u    不属于 /)	
isinstancer)   
ValueErrortypestripupperlenzipr   )r(   codeletterhilos        r   normalize_mbtir8   &   s    dC   KI4::IIJJJ::<<D
4yyA~~FdFFGGGe,, \ \R"b!!ZDZZFZZQSZZVXZZ[[[ "Kr!   xr   c                >    t          dt          d|                     S )Ng        g      ?)maxmin)r9   s    r   _clamp01r=   3   s    sCQKK   r!      ageintc                |   t          |           }|d         dk    |d         dk    |d         dk    |d         dk    f\  }}}}|rt          nt          }|rt          nt          }|rt          nt          }	|rt          nt          }
t          d	|z
  d
z            }t          ddd|	z
  z  z   d|dz
  z  dz  z             }t          ddd|
z
  z  z   d|z  z   d|z  z             }t          ddd|
z
  z  z   d|z  z             }t	          |||	|
t          |d          t          |d          t          |d                    S )uS   把 MBTI + 年龄映射成行为旋钮。年龄主要影响作息与冒险倾向。r   r      r      r
      r   (   g      I@g?r   g      ?g      ?gffffff?)r   r   r   r   r   r   r   )r8   _HIGH_LOWr=   r   round)r(   r?   r4   is_eis_nis_fis_jr   r   r   r   youthr   r   r   s                  r   mbti_to_behaviorrN   7   s   $DQ3Q3Q3Q3	D$d "&/4#-eeO!+EEtM"&0D b3h$&''E cQ&''#1BS1H*IA*MM M tq--..1FFuT N sa*<&<==eKLLI+'#-M1--^Q//	1%%   r!   N)r(   r)   r   r)   )r9   r   r   r   )r>   )r(   r)   r?   r@   r   r   )r%   
__future__r   dataclassesr   r   r   r&   rF   rG   r   r8   r=   rN   r'   r!   r   <module>rQ      s      # " " " " " ) ) ) ) ) ) ) ) &V U U U U
 $        
 
 
 
! ! ! !% % % % % % %r!   