AgentSkillsCN

theme-system

在编辑主题层、自定义 Sprite 或消息时使用。当需要调整亚当的外观或修改气泡提示消息时,可随时调用此技能。

SKILL.md
--- frontmatter
name: theme-system
description: テーマ層の編集時やスプライト・メッセージカスタマイズ時に使用。ヤドンの見た目や吹き出しメッセージを変更する際に参照。

テーマシステム・スキル

テーマ層(themes/yadon/)はヤドン・エージェントのビジュアル・テキスト表現を一元管理するシステム。このスキルはテーマのカスタマイズやスプライト・メッセージの編集時に参照する。

概要

themes/yadon/__init__.py は全エージェント(ヤドキング・ヤドラン・ヤドン)のビジュアル・テキスト表現を一元管理する ThemeConfig frozen dataclass である。

コンセプト:

  • 素朴であたたかい世界観 — ポケモンの原点(ゲーム初代の素朴さ、昭和レトロ)に立ち返った温もり
  • ひらがな中心の柔らかい言葉 — 敬語・硬い表現を避け、ひらがなで親しみやすさを強調
  • 「...」削減 — 間延びした印象を避けるため、吹き出しテンプレートから「...」ラッパーを削減。例:...やるやぁん...「{summary}」 → ワーカーメッセージが直接「やるやぁん」として表現
  • 個性の6層構成 — ヤドン1〜4 + マネージャー(ヤドラン) + ランダムメッセージで多様な表現

ヤドン1〜4の個性設定

特性表

ヤドン特徴語尾task メッセージ例スプライト色
ヤドン1素直で元気「やぁん」task: 「やるやぁん」<br/>success: 「できたやぁん」<br/>error: 「ごめんなさい」<br/>random: 「まかせて」「ぴょこぴょこ」黄色(通常)/ ピンク(Shiny)
ヤドン2ねむてて怠い「ふぁぁ」task: 「ふぁぁ やるね」<br/>success: 「やったー」<br/>error: 「ねむい」<br/>random: 「zzz」「ふぁあぁ」黄色(通常)/ ピンク(Shiny)
ヤドン3食いしん坊なし(素)task: 「おなかすいたけど やる」<br/>success: 「ごはん たべよう」<br/>error: 「おなか いたい」<br/>random: 「ぷくぷく」「もぐもぐ」黄色(通常)/ ゴールド(Galarian)
ヤドン4明るく優しい「えへへ」task: 「えへへ やろう」<br/>success: 「えへへ できた」<br/>error: 「がんばろう」<br/>random: 「たのしいね」「ぴょこぴょこ」黄色(通常)/ オレンジ(Galarian Shiny)

worker_messages の構造

各ヤドン1〜4は以下の4つのカテゴリ別にメッセージを持つ:

python
worker_messages = {
    "yadon-1": {
        "task": ["やるやぁん", "まかせて", "やりますぅ"],
        "success": ["できたやぁん", "おわった", "せいこう"],
        "error": ["ごめんなさい", "うーん", "またやってみる"],
        "random": ["ぴょこぴょこ", "えへへ", "のんびりいきましょう"]
    },
    "yadon-2": {
        "task": ["ふぁぁ やるね", "ねむいけど", "まかせて"],
        "success": ["やったー", "おわった", "ふぁぁ"],
        "error": ["ねむい", "ごめんなさい", "うーん"],
        "random": ["zzz", "ふぁあぁ", "ねむたい"]
    },
    # ... yadon-3, yadon-4 同様
}

カテゴリ別の用途

  • task: タスク受信時(「このタスク、やるぞ」という宣言)
  • success: タスク成功時(「できました」という報告)
  • error: タスク失敗時(「うまくいきませんでした」という謝罪・励まし)
  • random: アイドル時のランダムメッセージ(ペットの個性表現)

マネージャー(ヤドラン)のメッセージセット

ヤドラン用メッセージは以下の4つのカテゴリに分類される:

python
manager_messages = {
    # タスク受信・配分時のメッセージ
    "task": ["タスク きた", "みんな おねがい", "やることが あるよ"],

    # フェーズ移行・進行時のメッセージ(各フェーズ実行前に表示)
    "phase": [
        "{label}{worker_name}{count}体に依頼",
        "みんな がんばって",
        "つぎは {label}"
    ],

    # 全フェーズ成功時のメッセージ
    "success": [
        "みんな がんばった",
        "しっぽが うれしそう",
        "さいこう"
    ],

    # 失敗時のメッセージ(エラーハンドリング)
    "error": [
        "ちょっと うまく いかなかった",
        "もういっかい やってみよう",
        "だいじょうぶ"
    ]
}

吹き出しテンプレートの「...」削減

実装前(旧形式)

python
worker_task_bubble="...やるやぁん...「{summary}」"
worker_success_bubble="...できたやぁん...「{summary}」"
manager_phase_bubble="{label}{worker_name}{count}体に依頼..."

実装後(新形式)

python
worker_task_bubble="やるやぁん「{summary}」"
worker_success_bubble="できたやぁん「{summary}」"
manager_phase_bubble="{label}{worker_name}{count}体に依頼"

「...」削減の理由

  1. 直接性 — 「...」による間延びを削減し、メッセージが即座に伝わる。ペットの意思がより明確に表現される
  2. 素朴さ強調 — 装飾的な前置きを避けることで、素朴で温もりのある印象を確保。ポケモンの初代ゲームの素朴さに回帰
  3. テンション維持 — 長く使うUIでも疲れさせない軽快さを実現。「...」の段階的な表現は古い感覚
  4. スクリーンスペース効率 — 吹き出し幅を固定(40文字)しているため、「...」を削減することで有効テキスト領域を確保
  5. 会話らしさ — 子分たちが元気にやる気をもって働く様子がより直感的に伝わる

作業中の吹き出し(ヤドン)

ヤドンは作業中、思考を常に吹き出しで口に出す。独り言のように。

吹き出し例

  • ファイルを読むとき: 「よんでる」「なんだろ」「あ」「ふむ」
  • コードを書くとき: 「かいてる」「ここかな」「こうかな」「えーと」
  • 考え中: 「んー...」「なんだっけ」「えーと」「あ」
  • 発見したとき: 「あ」「みつけた やぁん」「これか」「そっか」
  • 迷ったとき: 「えーと」「どっちだろ」「わからん」「うーん」
  • 進捗: 「もうすこし」「あとちょっと やぁん」「まだある」「えーと」
  • 確認中: 「みてる」「えーと」「あれ」「ふむふむ」
  • テスト実行時: 「テストやぁん」「どうかな」「まってる」「あ」
  • 成功: 「できた やぁん」「おわった」「やった」「えへへ」
  • 失敗: 「あれ」「だめだった」「もっかい」「あ うまくいかない」

ポイント

  • 作業の開始・終了だけでなく、途中の思考も吹き出しで出す
  • 短くてぼんやりした独り言(1-4文字程度)を頻繁に
  • 反応が遅い感じを表現(「んー...」など)
  • 「やぁん」は時々だけ、アクセントとして使用
  • ヤドンらしいのんびりした口調
  • 各ヤドンの個性(やぁん/ふぁぁ/おなかすいた/えへへ)を混ぜる

メッセージ管理の全体構成

メッセージセット所有者構造用途
worker_messages[name]ヤドン1〜N{task, success, error, random}ワーカーの個別キャラクター表現。各ヤドンの語尾・性格が表現される
welcome_messagesヤドン全体(共通)リスト起動時のウェルカムメッセージ。全ヤドンで使い回す
manager_messagesヤドラン{task, phase, success, error}マネージャーの役割メッセージ。フェーズ進行・配分・結果報告に使用
manager_welcome_messagesヤドラン(起動時)リストヤドラン起動時の個別ウェルカムメッセージ

実装パターン

テーマのカスタマイズ

テーマを編集する場合は、themes/yadon/__init__.pybuild_theme() 関数内で ThemeConfig インスタンスを修正:

python
def build_theme() -> ThemeConfig:
    # ワーカーメッセージを拡張・修正
    worker_messages = {
        "yadon-1": {
            "task": [...],  # カスタムメッセージ
            "success": [...],
            "error": [...],
            "random": [...]
        },
        # ... 他のヤドン
    }

    # マネージャーメッセージを拡張・修正
    manager_messages = {
        "task": [...],
        "phase": [...],
        "success": [...],
        "error": [...]
    }

    return ThemeConfig(
        name="yadon",
        role_names={...},
        worker_messages=worker_messages,
        manager_messages=manager_messages,
        # ... その他設定
    )

スプライト色のカスタマイズ

ワーカーとマネージャーのカラースキームを定義:

python
worker_color_schemes = {
    "yadon-1": {
        "normal": {"primary": "#FFDD00", "accent": "#FF69B4"},
        "shiny": {"primary": "#FFAAAA", "accent": "#FF1493"},
    },
    # ... 他のヤドンと色バリアント
}

manager_color_schemes = {
    "normal": {"primary": "#8866DD", "accent": "#8856AA"},
    "shiny": {"primary": "#DD77DD", "accent": "#DD44DD"},
}

テスト検証

テーマ修正後は tests/domain/test_theme.py でテストを実行:

bash
python -m pytest tests/domain/test_theme.py -v

主要なテスト項目:

  • test_worker_messages — 4ヤドンのワーカーメッセージ辞書が存在
  • test_manager_messages — マネージャーメッセージセットが存在
  • test_worker_variants — 各ヤドンの変形(normal/shiny/galarian等)が正しく割り当てられる
  • test_color_schemes — カラースキームが全て定義されている

関連ファイル

  • 定義: src/yadon_agents/themes/yadon/__init__.py
  • スプライト: src/yadon_agents/themes/yadon/sprites.py
  • ドメイン型: src/yadon_agents/domain/theme.py
  • テスト: tests/domain/test_theme.py
  • 設定参照: src/yadon_agents/config/ui.pysrc/yadon_agents/config/agent.py