基于LLM Wiki的分层规则驱动游戏开发系统

核心理念:AI 编码的效率,不在算法之精准,而在多智能体协同之无冲突;智能体的精度,不在模型之强弱,而在框架约束之恰如其分。

  本文构建一套**从用户规则 → 项目规则 → Skill → 上下文管理 → 自带Agent → Cursor三层规则**的完整规范体系,让零编程游戏开发落地为可复用的工程化工具。

目录

  1. 规则分层总览

  2. 用户规则(User Rules)

  3. 项目规则(Project Rules)

  4. Skill(可复用能力模块)

  5. 上下文管理(Context Management)

  6. 自带Agent设置(Built-in Agents)

  7. Cursor三层规则(Three-tier Rules in Cursor)

  8. LLM Wiki 集成与反馈进化

  9. 完整部署示例


1. 规则分层总览

本系统通过6层规则体系,实现从用户偏好到编辑器行为的全链路约束,确保多智能体协同无冲突、开发流程标准化、成果可复用。各层级规则的核心信息如下表所示:

层级 名称 作用范围 存储位置 示例
L1 用户规则 特定用户(跨项目) 用户配置文件 “我喜欢简洁的注释”
L2 项目规则 当前游戏项目 项目根目录 `.rules/` “必须使用Canvas API”
L3 Skill 全局可复用能力 中心Skill仓库 “平台跳跃任务拆解模板”
L4 上下文管理 动态会话 内存 + LLM Wiki 当前设计文档片段
L5 自带Agent 固定角色智能体 系统预置 策划师Agent配置
L6 Cursor三层规则 编辑器级行为 `.cursor/rules/` 全局、项目、本地规则

设计原则:下层规则继承上层,但可以被上层覆盖;规则越具体,优先级越高。


2. 用户规则(User Rules)

用户规则定义个人偏好,适用于该用户创建的所有游戏项目,确保不同项目中保持一致的开发习惯。规则存储在 `~/llm_wiki/user_rules.json`,支持自定义配置和动态加载。

2.1 规则格式

{
  "user_id": "alice@example.com",
  "preferences": {
    "language": "zh-CN",
    "code_style": "2 spaces, no semicolons",
    "complexity": "simple",   // simple | moderate | complex
    "feedback_mode": "auto",  // auto | manual
    "default_platform": "web",
    "asset_level": "placeholder"  // placeholder | ai_generated | professional
  },
  "custom_rules": [
    "对于任何游戏,优先考虑单人模式,不要提联网功能。",
    "所有提示词必须包含中文说明。",
    "任务拆解粒度不超过15分钟。"
  ]
}

2.2 在系统中加载用户规则

后端启动时自动读取用户规则,并将其注入到LLM的system prompt中,确保所有智能体都遵循用户偏好,核心代码如下:

async function loadUserRules(userId) {
  const userRulesPath = path.join(USER_RULES_DIR, `${userId}.json`);
  if (await fs.exists(userRulesPath)) {
    return JSON.parse(await fs.readFile(userRulesPath));
  }
  return defaultUserRules;
}

// 在调用LLM前注入用户规则
systemPrompt += `\n【用户规则】\n${JSON.stringify(userRules.custom_rules)}\n请遵守以上规则。`;

3. 项目规则(Project Rules)

项目规则针对具体游戏项目,用于约束该项目的技术选型、代码风格、设计规范等,所有参与该项目的Agent都会严格遵循。规则存储在项目根目录的 `.rules/` 文件夹中,支持按模块拆分管理。

3.1 目录结构

my_game_project/
  .rules/
    tech_stack.md      # 技术栈约束
    coding_style.md    # 代码风格
    game_design.md     # 设计规范
    tasks_format.md    # 任务拆分格式
  docs/
  src/
  ...

3.2 示例:`tech_stack.md`

# 技术栈规则 (Project Rule)

1. 前端:HTML5 + Canvas API + Vanilla JavaScript (ES6+)
2. 禁止:React, Vue, jQuery, Phaser等任何第三方框架
3. 游戏循环:requestAnimationFrame,目标60FPS
4. 碰撞检测:轴对齐包围盒(AABB),不使用第三方物理库
5. 资源:所有图片/音效内嵌为base64或相对路径,不依赖外部CDN

3.3 项目规则加载

在协调器(Orchestrator)启动时,会为每个项目创建一个隔离的规则上下文,根据Agent角色分发对应的规则,确保规则精准作用于目标智能体,核心代码如下:

class ProjectRuleContext {
  constructor(projectPath) {
    this.rules = this.loadAllRules(projectPath);
  }
  
  getRulesForAgent(agentRole) {
    // 根据Agent角色返回相关规则
    if (agentRole === 'Programmer') return this.rules.tech_stack + this.rules.coding_style;
    if (agentRole === 'Designer') return this.rules.game_design;
    return this.rules.all;
  }
}

4. Skill(可复用能力模块)

Skill 是跨项目的原子能力单元,类似可调用的函数,封装了特定场景下的完整能力(如平台跳跃机制设计、任务拆解等)。每个Skill包含触发词、输入参数、输出格式和关联规则,存储在中心仓库 `/skills/`,可被多个项目引用,提升开发效率。

4.1 Skill 结构

# skills/platformer_jump_skill.yaml
name: platformer_jump_skill
description: 为平台跳跃游戏生成跳跃机制的提示词和设计建议
triggers:
  - "跳跃手感"
  - "跳跃高度"
  - "跳跃机制"
parameters:
  - name: jump_type
    type: enum
    options: [fixed, variable]
    default: variable
  - name: air_control
    type: boolean
    default: true
output:
  format: markdown
  content: |
    ## 跳跃机制设计
    类型:{jump_type}
    空中控制:{air_control}
    推荐提示词:请实现{ jump_type == "variable" ? "按得越久跳越高" : "固定高度" }的跳跃...
rules_applied:
  - 总是先询问跳跃类型再生成代码
  - 可变跳跃需包含计时器逻辑

4.2 Skill 调用方式

在对话中,用户或系统可通过 `@skill 技能名称` 的方式调用Skill,后端解析后会自动执行技能逻辑,并将输出结果注入到当前会话上下文中,核心代码如下:

// 解析消息中的 @skill 指令
function parseSkills(text) {
  const skillRegex = /@skill\s+([a-zA-Z0-9_]+)/g;
  let match;
  while ((match = skillRegex.exec(text)) !== null) {
    const skillName = match[1];
    const skill = loadSkill(skillName);
    if (skill) {
      // 执行Skill,返回结果替换 @skill 占位符
      text = text.replace(`@skill ${skillName}`, executeSkill(skill));
    }
  }
  return text;
}

4.3 Skill 与 LLM Wiki 的联动

每次Skill执行后,系统会将其输入输出、用户反馈记录到LLM Wiki的 `/skills/logs/` 目录,用于后续分析优化Skill本身,实现能力的持续迭代。


5. 上下文管理(Context Management)

上下文管理负责维护会话状态、项目知识、临时记忆,确保多轮对话和Agent之间的信息不丢失、不冲突,为智能体决策提供完整、准确的依据。

5.1 三层上下文结构

层级 内容 生命周期 存储
会话层 当前对话历史、用户临时输入 单次会话 内存
项目层 设计文档、任务清单、代码版本 整个项目周期 LLM Wiki (`/sessions/`)
知识层 规范库、Skill定义、用户规则 持久化 LLM Wiki (`/specs/`, `/skills/`)

5.2 上下文注入策略

每次调用LLM前,系统会动态构建上下文,整合各层级信息,确保智能体获取所需的全部约束和信息,核心代码如下:

async function buildContext(sessionId, userInput, stage) {
  const session = sessions.get(sessionId);
  const projectId = session.projectId;
  
  // 1. 会话历史(最近10轮,避免上下文过长)
  const recentHistory = session.history.slice(-10);
  
  // 2. 项目设计文档当前版本(从Wiki读取)
  const designDoc = await readWikiFile(projectId, 'ALIGNMENT.md');
  
  // 3. 当前阶段的任务清单(如果存在)
  const tasks = await readWikiFile(projectId, 'tasks.json');
  
  // 4. 匹配的规范(基于用户输入的关键词)
  const relevantSpecs = await matchSpecs(userInput);
  
  // 5. 用户规则
  const userRules = await loadUserRules(session.userId);
  
  return {
    history: recentHistory,
    design: designDoc,
    tasks: tasks,
    specs: relevantSpecs,
    userRules: userRules,
    stage: stage
  };
}

5.3 上下文冲突解决

当不同来源的规则发生冲突时,遵循以下优先级(从高到低),确保规则执行的一致性:

用户规则 > 项目规则 > 会话层指令 > 知识层规范


6. 自带Agent设置(Built-in Agents)

系统内置5个专业Agent,覆盖游戏开发全流程(策划、架构、编码、测试等)。每个Agent拥有独立的角色定义、边界约束、提示词模板和允许使用的Skill列表,配置统一存储在 `config/agents.json`,支持灵活调整。

6.1 Agent配置示例

{
  "agents": [
    {
      "name": "Planner",
      "role": "游戏策划师",
      "model": "doubao-1.5-pro",
      "system_prompt_file": "prompts/planner_system.txt",
      "allowed_skills": ["clarify_mechanic", "art_style_selector"],
      "rules_scope": ["game_design.md"],
      "output_format": "markdown",
      "user_interaction": "must_confirm_before_next"
    },
    {
      "name": "Architect",
      "role": "架构师",
      "model": "doubao-1.5-pro",
      "system_prompt_file": "prompts/architect_system.txt",
      "allowed_skills": ["task_decomposer", "mermaid_generator"],
      "rules_scope": ["tech_stack.md", "tasks_format.md"],
      "output_format": "markdown+mermaid",
      "user_interaction": "auto_continue"
    },
    {
      "name": "Programmer",
      "role": "程序员",
      "model": "deepseek-v3",
      "system_prompt_file": "prompts/programmer_system.txt",
      "allowed_skills": ["canvas_game_loop", "collision_aabb"],
      "rules_scope": ["coding_style.md", "tech_stack.md"],
      "output_format": "html+css+js",
      "user_interaction": "silent"
    },
    {
      "name": "QA",
      "role": "测试官",
      "model": "deepseek-r1",
      "system_prompt_file": "prompts/qa_system.txt",
      "allowed_skills": ["playtest_simulator", "performance_check"],
      "rules_scope": ["test_report_format.md"],
      "output_format": "markdown",
      "user_interaction": "report_only"
    }
  ]
}

6.2 Agent 调用流程

协调器根据用户需求,选择合适的Agent链并依次调用。每个Agent执行时,会自动加载其专属的system prompt、允许使用的Skill和对应的项目规则,确保输出符合约束,核心代码如下:

async function runAgent(agentName, input, context) {
  const agentConfig = getAgentConfig(agentName);
  const systemPrompt = await readFile(agentConfig.system_prompt_file);
  const projectRules = loadProjectRulesForAgent(agentConfig.rules_scope);
  const fullPrompt = `${systemPrompt}\n\n【项目规则】\n${projectRules}\n\n【输入】\n${input}`;
  
  const response = await callLLM(agentConfig.model, fullPrompt, context);
  return response;
}

7. Cursor三层规则(Three-tier Rules in Cursor)

Cursor编辑器提供三层规则机制,用于控制AI编码行为。本系统生成的最终提示词会自动适配该规则格式,便于用户直接复制到Cursor中使用,实现系统与编辑器的无缝对接。

7.1 Cursor三层规则定义

层级 文件名/位置 作用范围 示例内容
全局规则 `~/.cursor/rules/global.mdc` 所有项目 “总是使用中文注释”
项目规则 `<项目根>/.cursor/rules/*.mdc` 当前项目 “使用Canvas API”
本地规则 `<项目根>/.cursor/rules/local/*.mdc` 当前用户在该项目的覆盖 “我的API Key: xxx”

7.2 规则文件格式(`.mdc`)

Cursor规则采用Markdown + YAML Frontmatter格式,便于编辑和识别,示例如下:

---
description: 项目技术栈约束
globs: *.js,*.html
alwaysApply: true
---
# Canvas游戏开发规范

1. 必须使用 `requestAnimationFrame` 实现游戏循环。
2. 碰撞检测使用AABB算法,不允许使用第三方库。
3. 所有游戏状态变量统一定义在 `gameState` 对象中。
4. 禁止使用 `eval` 和 `innerHTML` 动态生成代码。

7.3 从本系统生成Cursor规则

系统可自动将项目规则(`.rules/`)和用户规则转换为Cursor规则文件,无需手动编辑,核心代码如下:

function generateCursorRules(projectRules, userRules) {
  let cursorRules = [];
  
  // 转换技术栈规则
  if (projectRules.tech_stack) {
    cursorRules.push(`
---
description: 技术栈约束
globs: *.js,*.html
alwaysApply: true
---
${projectRules.tech_stack}
    `);
  }
  
  // 转换用户代码风格规则
  if (userRules.preferences.code_style) {
    cursorRules.push(`
---
description: 代码风格(用户偏好)
globs: *.js
alwaysApply: false
---
${userRules.preferences.code_style}
    `);
  }
  
  // 写入 .cursor/rules/ 目录
  writeCursorRules(cursorRules);
}

7.4 三层规则在开发中的实际效果

  • 全局规则:保证所有项目的基本质量(如禁止 `eval`,避免安全风险)。

  • 项目规则:确保当前游戏符合技术选型(如强制使用Canvas,避免框架依赖)。

  • 本地规则:允许开发者临时覆盖规则(如调试时放宽性能要求,提升开发效率)。

本系统会将项目规则映射为Cursor的项目规则,用户规则部分映射为本地规则,实现开发流程的无缝衔接。


8. LLM Wiki 集成与反馈进化

LLM Wiki 是系统的知识底座,负责存储所有规则、会话记录、Skill和反馈日志,结合Obsidian实现可视化管理,同时通过反馈链路实现系统的自进化。

8.1 Wiki 结构(兼容Obsidian)

Wiki目录结构设计兼容Obsidian,支持双链、图谱视图等功能,便于规则的可视化管理和维护,结构如下:

/llm_wiki/
  .cursor/               # Cursor全局规则会链接到这里
  user_rules/            # 用户规则JSON
  projects/
    {projectId}/
      .rules/            # 项目规则(git跟踪)
      sessions/          # 会话记录
      specs/             # 从反馈提炼的规范
      skills/            # 项目级自定义Skill
  global_skills/         # 全局Skill库
  specs_index.json       # 规范索引

8.2 反馈 → 规范 → 规则 的转化链路

系统通过闭环反馈机制,实现规则的持续优化,具体链路如下:

  1. 用户在某次对话中对智能体输出点击“不满意”(反馈)。

  2. 规范提炼Agent分析反馈内容,生成新的规范条目(存入 `specs/`)。

  3. 系统管理员(或自动机制)将高频、通用的规范,提升为项目规则或用户规则。

  4. 项目规则会自动同步到Cursor的项目规则文件中,影响后续代码生成。

8.3 Obsidian 双链与规则可视化

在Obsidian中打开 `/llm_wiki` 仓库后,可实现规则的可视化管理和快速关联:

  • 每个规则文件(`.mdc` 或 `.md`)可相互链接,形成知识网络。

  • 用 `[[项目规则/tech_stack]]` 引用技术栈规则,点击即可跳转查看。

  • 用 `[[用户规则/alice]]` 查看特定用户的偏好设置。

  • 支持图谱视图,直观查看规则之间的引用关系和层级关联。

注:Obsidian客户端可通过官网 https://obsidian.md/ 下载,打开 `/llm_wiki` 文件夹即可完成集成。


9. 完整部署示例

以下为系统的完整部署步骤和实际使用示例,帮助开发者快速上手,实现零编程游戏开发。

9.1 搭建步骤

  1. 克隆系统仓库(假设已有仓库,若需获取完整代码,可参考文末说明)。

  2. 安装依赖:在项目根目录执行命令 `npm install`,安装express、chokidar、openai等依赖。

  3. 配置用户规则:编辑 `config/default_user_rules.json`,设置默认的用户偏好和自定义规则。

  4. 配置项目规则:在目标游戏项目目录下创建 `.rules/` 文件夹,放入 `tech_stack.md`、`coding_style.md` 等规则文件。

  5. 启动服务:执行命令 `npm start`,启动后端服务。

  6. Cursor配置:将项目根目录作为Cursor项目打开,系统会自动生成 `.cursor/rules/` 规则文件,无需手动配置。

注:GitHub仓库 https://github.com/example/llm-game-builder 目前解析失败,暂无法获取完整代码,后续可检查链接后重新获取。

9.2 示例:做一个“太空射击游戏”

用户规则(alice)
{"custom_rules": ["所有游戏必须支持键盘和触摸两种操作"]}
项目规则(space_shooter/.rules/tech_stack.md)
使用Canvas API,玩家飞船为三角形,敌人为圆形。
系统运行流程
  1. 用户输入:“做太空射击游戏”。

  2. 协调器加载用户规则(支持键盘+触摸)和项目规则(Canvas、飞船/敌人形状)。

  3. 策划师Agent提问:“射击方式是单发还是连发?”(根据规范自动澄清关键细节)。

  4. 用户回答后,架构师Agent拆分任务(如飞船绘制、敌人生成、碰撞检测等)。

  5. 程序员Agent生成代码,自动遵循项目规则中的“三角形飞船”“Canvas API”约束,同时满足用户规则的操作要求。

  6. 最终代码可直接复制到Cursor中,Cursor加载项目规则进一步辅助编码,确保代码符合规范。


结语

本文构建了一套从用户到编辑器、从规则到技能的完整AI辅助游戏开发规范体系。通过分层规则、Skill复用、上下文隔离、自带Agent以及Cursor三层规则的有机结合,实现了“零编程、高复用、自进化”的游戏开发工具,降低游戏开发门槛,提升开发效率。

后续工作

  • 实现规则的可视化编辑界面(基于Obsidian插件开发)。

  • 建立公共Skill市场,支持开发者上传、下载、分享可复用Skill。

  • 支持更多的目标平台(如微信小游戏、Unity),扩展工具的适用场景。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐