# A24 キャラクター設定テンプレート 新スキーマ草案

## 目的
- A24 ガイド改訂版で定義した Layer 構造・心理モデル運用・LLM 入力・ログ運用を一つの YAML に統合する。
- 初期化サービス、LLM プロンプト、現場運用（ログ・レビュー）で共通して利用できる最小公倍数のスキーマを示す。

## ルート構造
```yaml
character_book:
  version: "0.1.0"
  last_updated: ""
  default_logging:
    root: "records/characters/"
    log_file_pattern_by_character: "<log_root>/<character_id>/<YYYYMMDD>_<scene>.md"
    template_ref: "docs/log_templates/character_scene_log.md"  # 実ファイル作成後に更新
  characters:
    main: []
    supporting: []
    antagonists: []
    background: []
```

## キャラクター共通フォーマット
> Character entries live under character_book.characters.<category> (categories: main / supporting / antagonists / background).
```yaml
- character_id: "protagonist"
  display_name: "虫明 直人"
  status:
    lifecycle: "active"        # active / archived / pending
    last_reviewed: ""
    reviewer: ""
  layers:
    layer1_psychology:
      role: "主人公"
      hook_summary: |
        役割・ストーリー目標と一緒に、読者が抱く期待と差別化ポイントを1文で。意外な2要素の組み合わせ＋現実の体験に基づく具体ディテールを必ず1つ含める。
      values: ["効率最優先", "正義感"]
      core_motivations:
        primary: "ログを制御して平穏に生きる"
        secondary: ["仲間を守る", "技術探究"]
      enduring_fears: ["チームの崩壊", "再び中間管理に戻ること"]
      traumas: ["The Architectとの意識リンク事故"]
      psychological_models:
        primary:
          framework: "MBTI"
          type: "ENFP"
          rationale: "直感優先で仲間を重視する傾向が強い"
        secondary:
          - framework: "Enneagram"
            type: "Type 7"
            rationale: "刺激追求と回避傾向がある"
        psychological_exceptions:
          - trigger: "追い詰められる/時間制約"
            deviation: "Type 1 的な完璧主義が顕在化し語気が硬くなる"
          - trigger: "仲間の裏切りを察知"
            deviation: "衝動的な単独行動に走る（普段のチーム優先と逆）"
        summary_bullets:
          - "動機→仲間の安全と効率の最大化"
          - "判断→直観で状況把握→価値観で評価→最小工数の行動"
          - "感情→失敗=ユーモアで緩和／成功=軽い皮肉でクローズ"
        decision_flow:
          decision_step_perception: "ログで状況把握"
          decision_step_evaluation: "価値観/効率基準でスコア付け"
          decision_step_action: "最小工数で実行"
          decision_step_emotional_aftermath: "皮肉・諦観でカバー"
      character_goals:
        external: "いじめから逃れる"
        internal: "黒雪姫を助ける"
        integration_type: "synergy"  # synergy/conflict/evolution
        synergy_description: "両者が「戦う理由」として統一される"
        conflict_description: ""
        evolution_stages: []
      traits_positive: ["観察眼が鋭い", "仲間思い"]
      traits_negative: ["皮肉屋", "怠惰"]
      emotional_patterns:
        likes: ["効率化"]
        dislikes: ["レガシーコーチング"]
        momentary_fears: ["強制残業"]
      inner_conflicts:
        - "効率 vs 正義感"
      conflict_arcs:
        short_term: ["期限内に成果を出すために倫理を妥協しそうになる衝動"]
        long_term: ["自分の効率至上主義と仲間の尊厳の両立"]
      growth_vector:
        current_arc: "責任と向き合う"
        future_hook: "The Architect と和解"
        short_term_arc: "短期：チームの前で弱さを開示する"
        long_term_arc: "長期：効率と倫理の統合を学ぶ"
    layer2_physical:
      appearance:
        height: "165cm"
        build: "中肉中背"
        hair: "黒髪・寝癖"
        eyes: "黒"
      distinguishing_features:
        - "眉間に皺"
        - "猫背"
      attire:
        typical: "学園ローブ"
        variants: []
      symbolic_features:
        - feature: "摩耗した腕時計"
          meaning: "時間制約への過敏さ（決断の早さの源）"
    layer3_capabilities_skills:
      combat_skills: []
      non_combat_skills: ["デバッグ魔術", "リファクタリング"]
      magical_abilities:
        - name: "DEBUGログ可視化群"
          description: "ログを可視化"
      technical_assets:
        tools: ["中間コンパイル魔術"]
      limitations:
        - type: "resource"
          detail: "F級魔力で高出力魔法を連発できない"
        - type: "time"
          detail: "深夜帯は集中力が落ち判断ミスが増える"
        - type: "social"
          detail: "学内の評判が低く重要会議に招かれにくい"
    layer4_social_network:
      affiliations:
        - name: "魔術学園"
          role: "1年生"
      relationships:
        - target: "天宮あすか"
          status: "共同研究"
          stakes: "研究の成功可否が双方の評価に直結"
          shared_experiences: ["初回実験の失敗を共に乗り越えた"]
          value_conflicts: ["効率重視 vs 品質重視"]
          resonance_points: ["弱者救済の理念"]
          change_potential: "敵対→和解→相互尊重の余地あり"
        - target: "黒川センパイ"
          status: "指導/圧力"
          stakes: "推薦状の可否"
          value_conflicts: ["現状維持 vs 改革"]
      social_position:
        public_image: "F級落ちこぼれ"
        hidden_value: "世界最高のデバッグ適性"
    layer5_expression_behavior:
      speech_profile:
        baseline_tone: "標準語・皮肉混じり"
        modes:
          formal: { tone: "丁寧・簡潔", sentence_endings: ["です", "ます"] }
          casual: { tone: "砕けた・速い", sentence_endings: ["だよな", "だな"] }
          angry: { tone: "短く刺す", patterns: ["断定・命令形を増やす"] }
          joyful: { tone: "軽やか・比喩増", patterns: ["相手を持ち上げる"] }
        voice_drift_rules:
          - when: "例外(trigger=追い詰め)"
            drift: "フォーマル寄り・命令形増加"
          - when: "仲間の裏切りを察知"
            drift: "一人称が『俺』固定・語尾短縮"
        sentence_endings:
          casual: ["だよな", "だな"]
        personal_pronouns:
          self: ["俺", "僕"]
        catchphrases:
          frustration: ["めんどうだな"]
      behavioral_patterns:
        work_style: "効率重視"
        coping_mechanisms: ["皮肉", "ユーモア"]
    narrative_notes:
      foreshadowing_hooks: []
      unresolved_questions: []
  llm_prompt_profile:
    default_scene_goal: "仲間を鼓舞して問題を解決"
    inputs_template:
      scene_role_and_goal: "主人公として交渉を収める（時間制約あり 5分）"
      psych_summary: [
        "動機→仲間の安全と効率の最大化",
        "判断→直観→価値観評価→最小工数の行動",
        "感情→失敗=ユーモア/成功=軽い皮肉"
      ]
      emotional_state: "焦り:中/希望:低"
      constraints: ["禁則語リスト", "敬語維持", "一人称=俺"]
      deliberate_voice_drift: "trigger=時間制約。命令形が増えるが侮辱語は不可"
      output_format_mode: "台詞のみ / 台詞＋モノローグ"
      response_style_hint: "短文中心・比喩は1つまで"
    post_review_checklist:
      last_run: ""
      reviewer: ""
      items:
        values_motivation_alignment: { status: "pending", notes: "" }
        speech_rule_compliance: { status: "pending", notes: "" }
        deliberate_voice_drift_alignment: { status: "pending", notes: "" }
        emotional_flow_alignment: { status: "pending", notes: "" }
        decision_flow_trace_present: { status: "pending", notes: "意思決定の4段階が台詞に反映されているか" }
      summary: ""
  logging:
    character_log_directory: "<log_root>/<character_id>/"  # default_logging.root から派生
    guidance: "命名: <YYYYMMDD>_<scene>.md"
    last_entry: ""
  lite_profile_hint:
    use_lite: false
    minimal_fields:
      lite_scene_goal_copy: ""
      lite_values_copy: []
      lite_speech_tone_copy: ""
      lite_banned_phrases_copy: []
  episode_snapshots:
    - episode_id: "ep001"
      moment: "図書塔の初対面"
      psychology_delta:
        values_shift: []
        fears_change: []
        new_exception_triggers: []
      relationship_delta:
        - target: "天宮あすか"
          change: "不信→協力の芽"
      notes: "次回以降の判断に『信頼の試し』ルールを追加"
```

`character_goals` の external/internal/integration_type は、A25 チェックリストの二重動機検証（設計/執筆/レビュー各段階）と連携する。整合性確認の詳細手順は [A25_キャラクター設計チェック.md](A25_キャラクター設計チェック.md) を参照し、ここで定義した値が後工程の自動/手動チェックの基準となる。

## Lite テンプレ参照
- `lite_profile_hint.use_lite = true` のキャラは `layer1_psychology.values/core_motivations` と `layer5_expression_behavior.speech_profile` のみ保持し、他レイヤーは省略可。
- Lite 設定でも `llm_prompt_profile.inputs_template` は最小限保持し、`psych_summary` は空リスト許容。

## 今後の検討
1. `episode_snapshots` をどこまで自動生成させるか（A24 Stage3 との連携方式）。
2. `capabilities` セクションを Layer5 に畳み込むか、独立ノードのままにするか。
3. 初期化サービスでのデフォルト値設定（空配列/空文字の扱い）。

