鸿蒙游戏里的 AI Agent 设计


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

大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括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 是这样的:

ts 复制代码
// 典型状态机
if (playerInRange) {
  attack()
} else {
  patrol()
}

特点:

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

而 AI Agent:

ts 复制代码
// 决策驱动
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、原始游戏状态

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

问题:

  • 不统一
  • 不适合 AI

2、抽象状态

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

3、状态获取

ts 复制代码
// services/GameStateService.ets
export class GameStateService {

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

}

核心原则:

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

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

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

1、基础动作

ts 复制代码
// models/Action.ets
export type Action =
  | 'LEFT'
  | 'RIGHT'
  | 'JUMP'
  | 'ATTACK'
  | 'IDLE'

2、执行动作

ts 复制代码
// 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

ts 复制代码
// 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

ts 复制代码
// 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、游戏循环

ts 复制代码
function gameLoop() {
  update()
  render()
}

2、接入 Agent

ts 复制代码
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、本地推理

ts 复制代码
async runModel(input) {
  return await localModel.infer(input)
}

优点:

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

2、分层策略

ts 复制代码
if (simpleCase) {
  return ruleAgent.decide(state)
} else {
  return modelAgent.decide(state)
}

提升性能。

八、进阶:多 Agent 系统

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

1、敌人 AI

ts 复制代码
enemyAgent.decide(state)

2、队友 AI

ts 复制代码
allyAgent.decide(state)

3、玩家 AI

ts 复制代码
playerAgent.decide(state)

形成:

复制代码
多智能体系统(Multi-Agent)

九、常见坑

1、状态设计过复杂,AI 学不会。

2、动作过多,决策空间爆炸。

3、性能问题,每帧调用模型会卡顿。

解决:

ts 复制代码
// 降频
if (frame % 5 === 0) {
  action = await agent.decide(state)
}

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

解决:

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

总结

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

复制代码
玩家 → Agent
操作 → Action
感知 → State

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

1、抽象世界

ts 复制代码
Game → GameState

2、定义行为

ts 复制代码
Input → Action

3、接入循环

ts 复制代码
GameLoop → Agent → Action

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

复制代码
人玩游戏
AI 也能玩游戏
甚至 AI 比人更会玩

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

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

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

下一代 AI 系统的"环境层"。

相关推荐
剑穗挂着新流苏3122 小时前
202_深度学习的动力源泉:矩阵微积分与自动求导 (Autograd)
人工智能·pytorch·python·深度学习·神经网络
CDN3602 小时前
360CDN 产品实测合集:CDN / 高防 / SDK 游戏盾真实反馈
运维·游戏·网络安全
亚历克斯神2 小时前
Flutter 组件 t_stats 的适配 鸿蒙Harmony 实战 - 驾驭高性能统计学运算、实现鸿蒙端海量数据实时态势感知与工业级描述性统计方案
flutter·harmonyos·鸿蒙·openharmony·t_stats
键盘鼓手苏苏2 小时前
Flutter 组件 angel3_orm_mysql 的适配 鸿蒙Harmony 实战 - 驾驭专业 ORM 映射引擎、实现鸿蒙端与 MySQL 数据库的透明映射与高性能 SQL 审计方案
flutter·harmonyos·鸿蒙·openharmony·angel3_orm_mysql
左手厨刀右手茼蒿2 小时前
Flutter 组件 serverpod_swagger 的适配 鸿蒙Harmony 实战 - 驾驭 API 文档自动化、实现鸿蒙端全栈联调与 Swagger UI 动态审计方案
flutter·harmonyos·鸿蒙·openharmony·serverpod_swagger
钛态2 小时前
Flutter 三方库 discord_interactions 的鸿蒙化适配指南 - 在 OpenHarmony 打造高效的社交机器人交互底座
flutter·harmonyos·鸿蒙·openharmony·discord_interactions
加农炮手Jinx2 小时前
Flutter 组件 dascade 的适配 鸿蒙Harmony 实战 - 驾驭级联式异步数据流、实现鸿蒙端响应式 UI 状态泵与复杂业务逻辑解耦方案
flutter·harmonyos·鸿蒙·openharmony
陆业聪2 小时前
AI 时代最被低估的工程师技能:把需求写清楚
android·人工智能·aigc
国医中兴2 小时前
Flutter 组件 r_flutter 的适配 鸿蒙Harmony 实战 - 驾驭资源映射自动化、实现鸿蒙端资产强类型引用与资产冲突静态校验方案
flutter·r语言·harmonyos