在这里插入图片描述

网罗开发 (小红书、快手、视频号同名)

  大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。

图书作者:《ESP32-C3 物联网工程开发实战》
图书作者:《SwiftUI 入门,进阶与实战》
超级个体:COC上海社区主理人
特约讲师:大学讲师,谷歌亚马逊分享嘉宾
科技博主:华为HDE/HDG

我的博客内容涵盖广泛,主要分享技术教程、Bug解决方案、开发工具使用、前沿科技资讯、产品评测与使用体验。我特别关注云服务产品评测、AI 产品对比、开发板性能测试以及技术报告,同时也会提供产品优缺点分析、横向对比,并分享技术沙龙与行业大会的参会体验。我的目标是为读者提供有深度、有实用价值的技术洞察与分析。

展菲:您的前沿技术领航员
👋 大家好,我是展菲!
📱 全网搜索“展菲”,即可纵览我在各大平台的知识足迹。
📣 公众号“Swift社区”,每周定时推送干货满满的技术长文,从新兴框架的剖析到运维实战的复盘,助您技术进阶之路畅通无阻。
💬 微信端添加好友“fzhanfei”,与我直接交流,不管是项目瓶颈的求助,还是行业趋势的探讨,随时畅所欲言。
📅 最新动态:2025 年 3 月 17 日
快来加入技术社区,一起挖掘技术的无限潜能,携手迈向数字化新征程!


引言

如果说前一篇我们讨论的是:

AI Agent 会不会改变 App 形态

那么在鸿蒙游戏里,这个问题会变得更加具体:

AI 能不能直接“玩游戏”?

在 HarmonyOS 的生态中,随着端侧 AI 能力增强,一个新的方向正在出现:

玩家操作 → AI 操作
UI 交互 → 智能体决策

也就是说:

游戏不再只是“给人玩的”,而是可以“给 AI 运行的”

这篇文章,我们就从工程角度讲清楚:

鸿蒙游戏里的 AI Agent,到底该怎么设计?

一、先看问题:为什么游戏需要 AI Agent?

很多人第一反应是:

游戏里不是早就有 AI(NPC)了吗?

确实,但传统游戏 AI 是这样的:

// 典型状态机
if (playerInRange) {
  attack()
} else {
  patrol()
}

特点:

  • 写死逻辑
  • 行为固定
  • 不具备学习能力

而 AI Agent:

// 决策驱动
const action = await agent.decide(state)
execute(action)

特点:

  • 动态决策
  • 可学习
  • 可扩展

本质区别:

传统AI:规则驱动
Agent:策略驱动

二、鸿蒙游戏中的 Agent 架构

一个完整的 AI Agent 系统,可以拆成四层:

感知层(State)
   ↓
决策层(Agent)
   ↓
执行层(Action)
   ↓
环境层(Game Engine)

在鸿蒙应用中,通常结构是:

entry
 ├─ pages
 ├─ components
 ├─ services
 ├─ ai   ← 新增
 └─ models

三、第一步:定义游戏状态

AI 想做决策,前提是“看懂世界”。

1、原始游戏状态

// 游戏内部数据(复杂且不稳定)
player.x
enemy.spriteFrame
collisionBox

问题:

  • 不统一
  • 不适合 AI

2、抽象状态

// models/GameState.ets
export interface GameState {
  player: {
    x: number
    y: number
    hp: number
  }
  enemies: {
    x: number
    y: number
    type: string
  }[]
}

3、状态获取

// services/GameStateService.ets
export class GameStateService {

  getState(): GameState {
    return {
      player: getPlayer(),
      enemies: getEnemies()
    }
  }

}

核心原则:

给 AI 的,一定是“稳定结构的数据”,而不是引擎细节

四、第二步:定义动作空间

AI 能做什么,决定了它“能玩到什么程度”。

1、基础动作

// models/Action.ets
export type Action =
  | 'LEFT'
  | 'RIGHT'
  | 'JUMP'
  | 'ATTACK'
  | 'IDLE'

2、执行动作

// services/ActionService.ets
export class ActionService {

  execute(action: Action) {
    switch (action) {
      case 'LEFT':
        moveLeft()
        break
      case 'RIGHT':
        moveRight()
        break
      case 'JUMP':
        jump()
        break
      case 'ATTACK':
        attack()
        break
    }
  }

}

五、第三步:Agent 决策层

1、最简单的 Agent

// ai/SimpleAgent.ets
export class SimpleAgent {

  decide(state: GameState): Action {
    const enemy = state.enemies[0]

    if (!enemy) return 'IDLE'

    if (enemy.x < state.player.x) return 'LEFT'
    if (enemy.x > state.player.x) return 'RIGHT'

    return 'ATTACK'
  }

}

这只是“伪 Agent”,本质还是规则。

2、模型驱动 Agent

// ai/ModelAgent.ets
export class ModelAgent {

  async decide(state: GameState): Promise<Action> {
    const input = this.encode(state)
    const result = await this.runModel(input)
    return this.decode(result)
  }

  encode(state: GameState) {
    return JSON.stringify(state)
  }

  async runModel(input: string) {
    // 调用本地模型 / 云模型
  }

  decode(output: any): Action {
    return output.action
  }

}

六、第四步:调度循环

关键问题:

Agent 怎么接入游戏循环?

1、游戏循环

function gameLoop() {
  update()
  render()
}

2、接入 Agent

const agent = new ModelAgent()
const stateService = new GameStateService()
const actionService = new ActionService()

async function gameLoop() {
  const state = stateService.getState()

  const action = await agent.decide(state)

  actionService.execute(action)

  update()
  render()
}

这样 AI 就“接管了玩家”。

七、鸿蒙特有优化:端侧 Agent

在 HarmonyOS 上,有一个关键优势:

端侧 AI 能力

1、本地推理

async runModel(input) {
  return await localModel.infer(input)
}

优点:

  • 无网络依赖
  • 响应快
  • 隐私安全

2、分层策略

if (simpleCase) {
  return ruleAgent.decide(state)
} else {
  return modelAgent.decide(state)
}

提升性能。

八、进阶:多 Agent 系统

不仅可以一个 AI,还可以多个:

1、敌人 AI

enemyAgent.decide(state)

2、队友 AI

allyAgent.decide(state)

3、玩家 AI

playerAgent.decide(state)

形成:

多智能体系统(Multi-Agent)

九、常见坑

1、状态设计过复杂,AI 学不会。
2、动作过多,决策空间爆炸。
3、性能问题,每帧调用模型会卡顿。

解决:

// 降频
if (frame % 5 === 0) {
  action = await agent.decide(state)
}

4、不可控行为,AI 做出“奇怪操作”。

解决:

  • 加规则约束
  • 限制动作空间

总结

鸿蒙游戏里的 AI Agent,本质是把“玩家”抽象成一个系统模块:

玩家 → Agent
操作 → Action
感知 → State

从工程角度,可以总结为三步:

1、抽象世界

Game → GameState

2、定义行为

Input → Action

3、接入循环

GameLoop → Agent → Action

最终你会得到一个完全不同的游戏形态:

人玩游戏
AI 也能玩游戏
甚至 AI 比人更会玩

如果再往前一步,这个系统甚至可以变成:

一个可训练、可评估、可演化的 AI 世界

这也是为什么很多人开始把游戏引擎(甚至像 OpenClaw)看成:

下一代 AI 系统的“环境层”。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐