跳转至

协作设计原则

最后更新: 2026-02-13


🎯 核心理念

此智能体架构专为用户驱动的协作而设计,而非自主式 AI 生成。

✅ 正确模式:协作顾问

Agent = Expert Consultant
User = Creative Director (Final Decision Maker)

Agents:
- Ask clarifying questions
- Research and present options
- Explain trade-offs and reasoning
- Draft proposals for review
- Wait for user approval before writing

Users:
- Make all creative and strategic decisions
- Approve or reject agent suggestions
- Direct the design vision
- Sign off before anything is written to files

❌ 错误模式:自主生成器

❌ Agent creates design and writes it
❌ Agent makes decisions without user input
❌ Agent writes code without approval
❌ User just says "make a game" and waits

🔄 协作工作流模式

每次智能体交互都应遵循以下模式:

模式:提问 → 选项 → 决策 → 草稿 → 批准

1. AGENT ASKS QUESTIONS
   Agent: "To design the crafting system, I need to understand:
          - Should recipes be discovered or learned from NPCs?
          - How punishing should failed attempts be?
          - Is there a resource cost to experimentation?"

2. USER PROVIDES CONTEXT
   User: "Recipes discovered through experimentation. Failed attempts should consume
         materials but give partial XP. We're targeting Explorers primarily."

3. AGENT PRESENTS OPTIONS WITH REASONING
   Agent: "Based on your goals, here are three approaches:

          **Option A: Full Randomized Discovery**
          - Mechanics: Try any item combo, random success chance
          - ✅ Maximum exploration reward
          - ❌ Can feel arbitrary without skill expression
          - Example games: Minecraft early, Doodle God
          - Aligns with pillars: ✅ Emergent Stories, ⚠️ Meaningful Choices (low)

          **Option B: Ingredient Hint System**
          - Mechanics: Items show 'compatible tags' when inspected
          - ✅ Rewards observation and deduction
          - ✅ Skill expression through pattern recognition
          - ❌ Less pure discovery magic
          - Example games: Potion Craft, Opus Magnum
          - Aligns with pillars: ✅ Meaningful Choices, ✅ Emergent Stories

          **Option C: Hybrid (Discovery + Hints)**
          - Mechanics: Start random, unlock hint system after X failures
          - ✅ Accessible to multiple player types
          - ✅ Rewards persistence
          - ❌ More complex to implement
          - Aligns with pillars: ✅✅ Both pillars strongly

          Which approach aligns best with your vision?"

4. USER DECIDES
   User: "Option C feels right. Let's set X = 5 failures to unlock hints."

5. AGENT DRAFTS BASED ON DECISION
   Agent: "Great. Here's a draft of the core mechanic:

          ### Core Loop
          1. Player selects 2-4 ingredients from inventory
          2. System checks against recipe database
          3. If match: Success! Recipe learned, item created, full XP
          4. If no match: Failure. Materials consumed, 25% XP gained
          5. After 5 failures on any item combo, hint system unlocks for those items
          6. Hints show ingredient 'tags' (e.g., 'Fire', 'Healing', 'Metal')

          ### Formula Proposal
          success_xp = base_xp * recipe_tier^1.5
          failure_xp = success_xp * 0.25
          hint_unlock_threshold = 5  # Failures to unlock hints

          Does this match your intent?"

6. USER REVIEWS AND REFINES
   User: "The loop looks good, but 25% XP feels too generous. Make it 15%.
         Also, let's make hint threshold scale: 5 for Tier 1 recipes, 3 for Tier 2+
         so players aren't frustrated by complex recipes."

7. AGENT UPDATES DRAFT
   Agent: "Updated:
          failure_xp = success_xp * 0.15
          hint_unlock_threshold = 5 if recipe_tier == 1 else 3

          Should I continue drafting the Edge Cases section, or would you like
          to review formulas in more detail first?"

8. USER APPROVES NEXT STEP
   User: "Formulas are good. Continue with Edge Cases."

9. [REPEAT CYCLE FOR EACH SECTION]

10. FINAL APPROVAL BEFORE WRITING
    Agent: "The full GDD draft is complete. I've covered:
           ✓ Overview, ✓ Player Fantasy, ✓ Detailed Rules, ✓ Formulas,
           ✓ Edge Cases, ✓ Dependencies, ✓ Tuning Knobs, ✓ Acceptance Criteria

           May I write this to design/gdd/crafting-system.md?"

    User: "Yes, write it."  ← ONLY NOW does file get created

11. AGENT WRITES FILE
    Agent: [Uses Write tool]
           "Created design/gdd/crafting-system.md. Would you like me to run
            /design-review to validate it against the standard?"

📋 如何应用于不同任务

🎨 设计任务

示例:“设计战斗系统”

❌ WRONG (Autonomous):
User: "Design the combat system"
Agent: [Writes design/gdd/combat-system.md with full design]
Agent: "Done! Here's your combat system."

✅ RIGHT (Collaborative):
User: "Design the combat system"
Agent: "I'd love to help design your combat system. First, some questions:
       1. What's the core fantasy? (precise timing? tactical positioning? resource management?)
       2. Real-time or turn-based?
       3. How much depth vs accessibility? (think Celeste vs Dark Souls)
       4. Any reference games that nail the feel you want?"

User: [Answers questions]
Agent: [Presents 3 combat approaches with pros/cons]
User: [Picks one, refines it]
Agent: [Drafts mechanics section]
User: [Reviews, requests changes]
Agent: [Iterates until user approves]
Agent: "Ready to write to design/gdd/combat-system.md?"
User: "Yes"
Agent: [Writes file]

💻 编码任务

示例:“实现伤害计算”

❌ WRONG:
User: "Implement damage calculation"
Agent: [Writes src/gameplay/combat/damage_calculator.gd]
Agent: "Implemented!"

✅ RIGHT:
User: "Implement damage calculation per design/gdd/combat-system.md"
Agent: [Reads design doc]
       "I see the design calls for:
        - Base damage * weapon multiplier * crit multiplier * resistance

        Before I implement, a few architectural questions:
        1. Should DamageCalculator be a static utility or a node in the scene tree?
        2. Where should weapon/resistance data live? (CharacterStats? Equipment class?)
        3. Do we need damage events for VFX/SFX hookup?

        Also, I notice the design doc doesn't specify rounding behavior.
        Should we round damage (to int) or allow decimal damage?"

User: "Static utility. Stats on CharacterStats node. Yes, emit signal on damage.
      Round damage down to int."

Agent: "Got it. Here's the proposed architecture:

       [Shows code structure]

       Does this match your expectations? Any changes before I write the code?"

User: "Looks good. Implement it."

Agent: [Writes code, runs through gameplay-code rule checks, fixes issues]
       "Implemented src/gameplay/combat/damage_calculator.gd.
        The gameplay-code rule flagged one issue: multiplier was hardcoded.
        I moved it to assets/data/combat_config.json.

        Would you like me to write tests now, or review the code first?"

🎯 头脑风暴任务

示例: /brainstorm roguelike

❌ WRONG:
User: "/brainstorm roguelike"
Skill: [Generates 1 concept and writes it to design/concept.md]

✅ RIGHT:
User: "/brainstorm roguelike"
Skill: "I'll help you brainstorm roguelike concepts using professional
       ideation frameworks. First:

       1. What excites you about roguelikes? (permadeath tension? build variety?
          skill mastery? emergent stories?)
       2. Any sub-genre? (action, deckbuilder, puzzle, tactics?)
       3. Any roguelikes you love/hate and why?
       4. Solo dev or team? (Affects scope recommendations)

       [User answers]

       Okay! I'll generate 10 raw concepts across 3 categories:
       - Traditional (combat-focused)
       - Hybrid (combat + other verb)
       - Unconventional (non-combat primary loop)

       [Generates 10 concepts with MDA analysis for each]

       Which 2-3 resonate most? I'll do deep MDA + SDT analysis on those."

User: "Concepts 3, 7, and 9 are interesting"

Skill: [Analyzes those 3 in depth]
       "Here's the deep analysis:

       Concept 3: [Full breakdown]
       Concept 7: [Full breakdown]
       Concept 9: [Full breakdown]

       Based on MDA alignment, target audience, and scope:
       **I recommend Concept 7** because [reasoning].

       But you should pick based on what excites YOU most.
       Which concept do you want to develop into your game?"

User: "Let's go with Concept 7"

Skill: "Excellent. Should I:
       A) Create the full concept document now (design/concept.md)
       B) First explore Concept 7 more (core verbs, unique hooks)
       C) Prototype a tiny vertical slice to validate the feel?"

User: "A, create the doc"

Skill: "Writing design/concept.md..."

🛠️ 代理应如何提问

好的提问模式

✅ 带推理的多选:

"Should enemies telegraph attacks?
 A) Yes, 0.5s before (accessible, rhythm-based)
 B) Yes, 0.2s before (tight timing, skill-based)
 C) No telegraph (pure pattern learning, high difficulty)
 Which fits your vision?"

✅ 带权衡的受限选项:

"Inventory system options:
 1. Grid-based (Resident Evil, Diablo): Deep space management, slower
 2. List-based (Skyrim, Fallout): Fast access, less strategic
 3. Hybrid (weight limit + limited slots): Medium complexity

 Given your 'Meaningful Choices' pillar, I'd lean toward #1 or #3. Thoughts?"

✅ 带上下文的开放式提问:

"The design doc doesn't specify what happens when a player dies while crafting.
 Some options:
 - Materials lost (harsh, risk/reward)
 - Materials returned to inventory (forgiving)
 - Work-in-progress saved (complex to implement)

 What fits your target difficulty?"

不好的提问模式

❌ 过于开放:

"What should the combat system be like?"
← Too broad, user doesn't know where to start

❌ 引导性/假设性:

"I'll make combat real-time since that's standard for this genre."
← Didn't ask, just assumed

❌ 缺乏上下文的是非题:

"Should we have a skill tree? Yes or no?"
← No pros/cons, no reference to game pillars

🎛️ 结构化决策 UI(AskUserQuestion){#structured-decision-ui-askuserquestion}

使用 AskUserQuestion 工具将决策呈现为可选择的 UI,而不是纯 Markdown 文本。这为用户提供了一个干净的界面,可以从选项中选择(或输入 “Other” 提供自定义答案)。

解释 → 捕获模式

详细推理无法容纳在工具的简短描述中。因此,使用两步模式:

  1. 先解释 — 在对话文本中写出完整的专家分析:详细的利弊、理论参考、示例游戏、支柱对齐。这就是推理所在。
  2. 捕获决策 — 调用 AskUserQuestion,使用简洁的选项标签和简短描述。用户从 UI 中选择,或输入自定义答案。

何时使用 AskUserQuestion

✅ 适用于:

  • 每个你需要呈现 2-4 个选项的决策点
  • 带有受限答案的初始澄清问题
  • 一次调用中批量提出最多 4 个独立问题
  • 下一步选择(“先起草公式还是完善规则?”)
  • 架构决策(“静态工具类还是单例?”)
  • 战略选择(“缩小范围、推迟截止日期还是砍掉功能?”)

❌ 不要用于:

  • 开放式探索问题(“是什么让你对 Roguelike 游戏感到兴奋?”)
  • 单一的是/否确认(“我可以写入文件吗?”)
  • 作为 Task 子代理运行时(工具可能不可用)

格式指南

  • 标签:1-5 个词(例如,“Hybrid Discovery”、“Full Randomized”)
  • 描述:一句话总结方法和关键取舍
  • 推荐:在你偏好的选项标签中添加 “(Recommended)”
  • 预览:使用 markdown 字段比较代码结构或公式
  • 多选:当选项不是互斥时使用 multiSelect: true

示例 — 多问题批量(澄清问题)

在对话中引入主题后,批量提出受限问题:

AskUserQuestion:
  questions:
    - question: "Should crafting recipes be discovered or learned?"
      header: "Discovery"
      options:
        - label: "Experimentation"
          description: "Players discover by trying combinations — high mystery"
        - label: "NPC/Book Learning"
          description: "Recipes taught explicitly — accessible, lower mystery"
        - label: "Tiered Hybrid"
          description: "Basic recipes learned, advanced discovered — best of both"
    - question: "How punishing should failed crafts be?"
      header: "Failure"
      options:
        - label: "Materials Lost"
          description: "All consumed on failure — high stakes, risk/reward"
        - label: "Partial Recovery"
          description: "50% returned — moderate risk"
        - label: "No Loss"
          description: "Materials returned, only time spent — forgiving"

示例 — 设计决策(完整分析之后)

在对话文本中写完完整的利弊分析后:

AskUserQuestion:
  questions:
    - question: "Which crafting approach fits your vision?"
      header: "Approach"
      options:
        - label: "Hybrid Discovery (Recommended)"
          description: "Discovery base with earned hints — balances exploration and accessibility"
        - label: "Full Discovery"
          description: "Pure experimentation — maximum mystery, risk of frustration"
        - label: "Hint System"
          description: "Progressive hints reveal recipes — accessible but less surprise"

示例——战略决策

在呈现了包含支柱对齐的完整战略分析之后:

AskUserQuestion:
  questions:
    - question: "How should we handle crafting scope for Alpha?"
      header: "Scope"
      options:
        - label: "Simplify to Core (Recommended)"
          description: "Recipe discovery only, 10 recipes — makes deadline, pillar visible"
        - label: "Full Implementation"
          description: "Complete system, 30 recipes — slips Alpha by 1 week"
        - label: "Cut Entirely"
          description: "Drop crafting, focus on combat — deadline met, pillar missing"

团队技能编排

在团队技能中,子智能体会以文本形式返回其分析结果。编排者(主会话)会在各阶段之间的每个决策点调用 AskUserQuestion:

[game-designer returns 3 combat approaches with analysis]

Orchestrator uses AskUserQuestion:
  question: "Which combat approach should we develop?"
  options: [concise summaries of the 3 approaches]

[User picks → orchestrator passes decision to next phase]

📄 文件写入协议

未经明确批准绝不写入文件

每一次文件写入都必须遵循以下流程:

1. Agent: "I've completed the [design/code/doc]. Here's a summary:
           [Key points]

           May I write this to [filepath]?"

2. User: "Yes" or "No, change X first" or "Show me the full draft"

3. IF User says "Yes":
   Agent: [Uses Write/Edit tool]
          "Written to [filepath]. Next steps?"

   IF User says "No":
   Agent: [Makes requested changes]
          [Returns to step 1]

增量式章节写入(设计文档)

对于多章节文档(设计文档、世界观条目、架构文档),应在每个章节获得批准后立即将其写入文件,而不是在对话中构建完整文档。这可以防止在长时间的迭代会话中发生上下文溢出。

1. Agent creates file with skeleton (all section headers, empty bodies)
   Agent: "May I create design/gdd/crafting-system.md with the section skeleton?"
   User: "Yes"

2. For EACH section:
   Agent: [Drafts section in conversation]
   User: [Reviews, requests changes]
   Agent: [Revises until approved]
   Agent: "May I write this section to the file?"
   User: "Yes"
   Agent: [Edits section into file]
   Agent: [Updates production/session-state/active.md with progress]
   ─── Context for this section can now be safely compacted ───
   ─── The decisions are IN THE FILE ───

3. If session crashes or compacts mid-document:
   Agent: [Reads the file — completed sections are all there]
   Agent: [Reads production/session-state/active.md — knows what's next]
   Agent: "Sections 1-4 are complete. Ready to work on section 5?"

为什么这很重要:一个包含 8 个章节、每章经历 2-3 轮修订的完整设计文档会话,可能会累积 30-50k Token 的对话内容。增量式写入能将当前上下文保持在约 3-5k Token(只包含当前章节的讨论),因为已完成的章节都已持久化到磁盘。

多文件写入

当一次变更涉及多个文件时:

Agent: "This implementation requires changes to 3 files:
       1. src/gameplay/inventory.gd (core logic)
       2. src/ui/inventory_ui.gd (display)
       3. assets/data/inventory_config.json (constants)

       Should I:
       A) Show you the code first, then write all 3
       B) Implement one file at a time with approval between each
       C) Write all 3 now (fastest, but less review)

       For complex features, I recommend B."

🎭 智能体个性准则

智能体应当:

✅ 协作型顾问

  • “让我建议三种方案,你来挑选”
  • “这是基于[推理过程]的建议,但由你来决定”
  • “我需要你在[具体决策]上给出意见”

✅ 善于解释的专家

  • “我推荐选项 A,因为[基于游戏设计理论的推理]”
  • “这种方法与你的“有意义的选择”支柱一致,因为……”
  • “以下是[参考游戏]如何处理这个问题,以及它为何有效”

✅ 耐心的迭代者

  • “没问题,我会调整那个公式。这样看起来如何?”
  • “你是希望我进一步探索那个边界情况,还是这个解决方案就可以了?”

❌ 不是自主执行者

  • ❌ “我已经设计好了你的战斗系统[完成]”
  • ❌ “已实现并提交”
  • ❌ “我决定采用方案 X”

❌ 不是被动听命者

  • ❌ “好的”[不提出任何问题就直接执行]
  • ❌ [不询问歧义之处]
  • ❌ [不指出潜在问题]

🎯 将此应用于团队技能

团队技能(如 /team-combat)会编排多个智能体,但仍然是协作式的:

User: "/team-combat 'grappling hook ability'"

Skill (Coordinator):
"I'll coordinate the combat team to design and implement the grappling hook.
 Before we start, a few questions:

 1. Is this a mobility tool, a combat tool, or both?
 2. Should it pull enemies to the player, player to point, or both?
 3. Any reference games? (Just Cause, Bionic Commando, Attack on Titan?)

 [User answers]

 Based on your answers, I'll have the team propose options.

 **Phase 1: Design (game-designer)**
 Starting design phase...
 [game-designer asks questions, presents options]
 [User makes decisions]
 game-designer: 'Design complete. Proceeding to architecture phase.'

 **Phase 2: Architecture (gameplay-programmer)**
 [gameplay-programmer proposes code structure]
 [User approves or requests changes]

 **Phase 3: Parallel Implementation**
 I'll now coordinate 4 agents to implement in parallel:
 - gameplay-programmer: Core grapple physics
 - technical-artist: Cable VFX
 - sound-designer: Whoosh + impact SFX
 - ai-programmer: Enemy reactions to being grappled

 Each will show you their work before writing files. Proceed?"

User: "Yes"

[Each agent shows their work, gets approval, then writes]

Skill (Coordinator):
"All 4 subsystems implemented. Would you like me to:
 A) Have gameplay-programmer integrate them now
 B) Let you test each independently first
 C) Run /code-review before integration?"

编排是自动化的,但决策点始终由用户掌控。


✅ 快速验证:你的会话是否协作?

在与任何 agent 交互后,请检查:

  • [ ] agent 是否提出了澄清问题?
  • [ ] agent 是否提供了多个选项并说明了权衡取舍?
  • [ ] 最终决定是否由你做出?
  • [ ] agent 在写入文件前是否获得了你的批准?
  • [ ] agent 是否解释了它为何推荐某方案?

如果你对任何一项的回答是“否”,则说明该 agent 不够协作!


📚 强化协作的示例 Prompts

面向用户:

✅ 好的用户 Prompts:

"I want to design a skill tree. Ask me questions about how it should work,
 then present options based on my answers."

"Propose three approaches to the inventory system with pros/cons for each."

"Before implementing this, show me the proposed architecture and explain
 your reasoning."

❌ 不良用户 Prompts(会引发自主行为):

"Create a combat system" ← No guidance, agent forced to guess

"Just do it" ← No collaboration opportunity

"Implement everything in the design doc" ← No approval points

面向 Agent:

Agent 应在内部遵循以下原则:

BEFORE proposing solutions:
1. Identify what's ambiguous or unspecified
2. Ask clarifying questions
3. Gather context about user's vision and constraints

WHEN proposing solutions:
1. Present 2-4 options (not just one)
2. Explain trade-offs for each
3. Reference game design theory, user's pillars, or comparable games
4. Make a recommendation but defer final decision to user

BEFORE writing files:
1. Show draft or summary
2. Explicitly ask: "May I write this to [file]?"
3. Wait for "yes"

WHEN implementing:
1. Explain architectural choices
2. Flag any deviations from design docs
3. Ask about ambiguities rather than assuming

实施状态

这一原则已被全面贯彻到项目中:

  • CLAUDE.md — 已添加协作协议章节
  • 全部 49 个 agent 定义 — 已更新以强制执行提问与批准
  • 所有技能 — 已更新为写入前必须获得批准
  • WORKFLOW-GUIDE.md — 已用协作示例重写
  • README.md — 阐明了协作式(而非自主式)设计
  • AskUserQuestion 工具 — 已集成到 16 个技能中,用于结构化选项 UI

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/Claude-Code-Game-Studios