游戏坐标获取技术全解析:从图像识别到内存读取的实战指南
在游戏开发和自动化测试领域获取游戏内坐标是一个常见但技术门槛较高的需求。无论是为了开发辅助工具、实现自动化脚本还是进行游戏数据分析掌握坐标获取技术都至关重要。不同游戏引擎、不同平台下的坐标获取方法差异很大本文将系统梳理从2D小游戏到3A大作的坐标获取方案涵盖内存读取、图像识别、网络封包分析等多种技术路径为开发者提供一套完整的实战指南。1. 坐标获取的核心原理与适用场景1.1 什么是游戏坐标系统游戏坐标系统是描述游戏内物体位置关系的数学模型。在2D游戏中通常使用笛卡尔坐标系(x,y)而在3D游戏中则使用(x,y,z)三维坐标。需要注意的是屏幕坐标(玩家看到的画面)与世界坐标(游戏内部逻辑位置)是不同的概念两者之间需要通过投影变换进行转换。1.2 坐标获取的主要应用场景游戏辅助开发自动寻路、自动打怪等功能的实现基础自动化测试验证UI元素位置、测试角色移动逻辑数据分析研究玩家行为模式、游戏平衡性分析教学演示游戏开发教学中的位置追踪演示1.3 技术方案选型考量因素选择坐标获取方案时需要考虑多个因素游戏类型(2D/3D)、平台(PC/移动端)、保护机制(反作弊系统)、技术可行性等。简单的小游戏可能只需要图像识别而复杂的3D游戏则需要结合多种技术。2. 环境准备与工具选择2.1 基础环境要求操作系统Windows 10/11 64位多数游戏分析工具基于Windows编程语言Python 3.8 或 C/C#必备工具Cheat Engine、Process Explorer、Visual Studio 2019游戏环境建议使用单机版游戏进行学习测试避免违反在线游戏用户协议2.2 开发工具配置Python环境需要安装以下关键库# 安装必要的Python库 pip install opencv-python numpy pillow pyautogui pip install pymem win32gui win32api2.3 安全与法律注意事项在进行游戏坐标获取前必须明确仅用于学习研究和单机游戏开发严格遵守游戏用户协议不用于在线游戏作弊在测试环境中进行避免影响他人游戏体验尊重游戏开发者的知识产权3. 基于图像识别的坐标获取方案3.1 基础屏幕坐标获取对于简单的2D游戏可以直接通过屏幕像素分析获取坐标import pyautogui import time def get_screen_coordinates(): 获取当前鼠标位置的屏幕坐标 try: while True: x, y pyautogui.position() print(f当前坐标: X{x}, Y{y}) time.sleep(1) except KeyboardInterrupt: print(坐标获取结束) # 使用示例 if __name__ __main__: get_screen_coordinates()3.2 OpenCV模板匹配定位通过图像模板匹配可以识别游戏中的特定元素位置import cv2 import numpy as np import pyautogui def find_template_position(template_path, confidence0.8): 通过模板匹配查找游戏元素位置 template_path: 模板图片路径 confidence: 匹配置信度阈值 # 截取屏幕 screenshot pyautogui.screenshot() screenshot cv2.cvtColor(np.array(screenshot), cv2.COLOR_RGB2BGR) # 读取模板 template cv2.imread(template_path) h, w template.shape[:2] # 模板匹配 result cv2.matchTemplate(screenshot, template, cv2.TM_CCOEFF_NORMED) min_val, max_val, min_loc, max_loc cv2.minMaxLoc(result) if max_val confidence: x, y max_loc center_x x w // 2 center_y y h // 2 return center_x, center_y, max_val else: return None # 使用示例 position find_template_position(player_icon.png) if position: print(f找到玩家图标位置: {position})3.3 基于特征点匹配的坐标获取对于动态变化的游戏元素可以使用特征点匹配import cv2 import numpy as np def feature_match_position(current_screen, reference_image): 使用ORB特征点匹配进行位置识别 # 初始化ORB检测器 orb cv2.ORB_create() # 查找关键点和描述符 kp1, des1 orb.detectAndCompute(reference_image, None) kp2, des2 orb.detectAndCompute(current_screen, None) # 使用BFMatcher进行匹配 bf cv2.BFMatcher(cv2.NORM_HAMMING, crossCheckTrue) matches bf.match(des1, des2) # 按距离排序 matches sorted(matches, keylambda x: x.distance) if len(matches) 10: # 计算Homography矩阵 src_pts np.float32([kp1[m.queryIdx].pt for m in matches]).reshape(-1,1,2) dst_pts np.float32([kp2[m.trainIdx].pt for m in matches]).reshape(-1,1,2) M, mask cv2.findHomography(src_pts, dst_pts, cv2.RANSAC, 5.0) if M is not None: # 计算中心点位置 h, w reference_image.shape[:2] pts np.float32([[0,0], [0,h-1], [w-1,h-1], [w-1,0]]).reshape(-1,1,2) dst cv2.perspectiveTransform(pts, M) return dst return None4. 基于内存读取的坐标获取方案4.1 内存扫描基本原理内存读取是通过直接访问游戏进程内存来获取坐标数据这种方法精度高但技术复杂import pymem import pymem.process class GameMemoryReader: def __init__(self, process_name): 初始化内存读取器 self.pm pymem.Pymem() self.pm.open_process_from_name(process_name) self.module_base self.get_module_base(process_name) def get_module_base(self, module_name): 获取模块基地址 module pymem.process.module_from_name(self.pm.process_handle, module_name) return module.lpBaseOfDll def read_float(self, address): 从指定地址读取浮点数 try: return self.pm.read_float(address) except: return None def read_int(self, address): 从指定地址读取整数 try: return self.pm.read_int(address) except: return None # 使用示例 reader GameMemoryReader(game.exe) player_x reader.read_float(0x12345678) player_y reader.read_float(0x1234567C)4.2 使用Cheat Engine进行内存分析Cheat Engine是强大的内存扫描工具使用步骤附加进程启动Cheat Engine附加到目标游戏进程首次扫描搜索未知初始值记录角色移动前后的数值变化精确查找通过多次移动角色逐步缩小内存地址范围分析指针找到基地址和偏移量建立稳定的地址结构4.3 指针扫描与地址稳定性直接的内存地址往往在游戏重启后失效需要使用指针链def read_pointer_chain(memory_reader, base_address, offsets): 读取指针链指向的最终值 address base_address for offset in offsets[:-1]: address memory_reader.read_int(address offset) if address 0: return None final_offset offsets[-1] return memory_reader.read_float(address final_offset) # 示例指针链读取 player_x read_pointer_chain(reader, 0x400000, [0x10, 0x20, 0x30])5. 基于网络封包分析的坐标获取5.1 网络封包捕获基础对于网络游戏坐标信息通常通过网络封包传输import socket from struct import unpack class PacketSniffer: def __init__(self, interface_ip): self.interface_ip interface_ip self.socket socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP) self.socket.bind((interface_ip, 0)) self.socket.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1) self.socket.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON) def parse_coordinate_packet(self, packet): 解析包含坐标信息的网络封包 # 解析IP头部 ip_header packet[0:20] iph unpack(!BBHHHBBH4s4s, ip_header) # 解析TCP/UDP头部 protocol iph[6] if protocol 6: # TCP tcp_header packet[20:40] # 解析游戏特定的坐标数据格式 # 这里需要根据具体游戏协议进行分析 pass return None5.2 Wireshark协议分析使用Wireshark进行游戏协议分析的基本流程捕获流量在游戏运行时捕获网络数据包过滤分析使用过滤器定位游戏服务器IP相关的数据包协议解析分析数据包结构识别坐标字段模式识别观察角色移动时的数据变化模式5.3 自定义协议解析器针对特定游戏开发协议解析器class GameProtocolParser: def __init__(self): self.packet_handlers { 0x01: self._handle_move_packet, 0x02: self._handle_position_packet } def parse_packet(self, data): 解析游戏数据包 packet_id data[0] if packet_id in self.packet_handlers: return self.packet_handlers[packet_id](data) return None def _handle_move_packet(self, data): 处理移动数据包 if len(data) 13: # 假设坐标包长度为13字节 x unpack(f, data[1:5])[0] # 4字节浮点数 y unpack(f, data[5:9])[0] z unpack(f, data[9:13])[0] return {x: x, y: y, z: z} return None6. 不同游戏引擎的特定方案6.1 Unity引擎游戏坐标获取Unity游戏通常可以使用以下方法// Unity C# 示例 - 需要在游戏内注入或使用MOD框架 using UnityEngine; public class CoordinateGetter : MonoBehaviour { void Update() { // 获取玩家坐标 Vector3 playerPosition transform.position; Debug.Log($玩家坐标: X{playerPosition.x}, Y{playerPosition.y}, Z{playerPosition.z}); // 获取鼠标世界坐标 Ray ray Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out RaycastHit hit)) { Vector3 worldPosition hit.point; Debug.Log($鼠标世界坐标: {worldPosition}); } } }6.2 Unreal Engine游戏坐标获取Unreal Engine游戏的内存结构较为复杂但可以通过模式扫描// UE4 坐标读取示例思路 class UWorld* world GetWorld(); if (world world-PersistentLevel) { for (AActor* actor : world-PersistentLevel-Actors) { if (actor actor-IsA(APlayerController::StaticClass())) { FVector position actor-GetActorLocation(); // 处理坐标数据 } } }6.3 自定义引擎游戏的处理对于自定义引擎的游戏需要逆向分析反汇编分析使用IDA Pro或Ghidra分析游戏逻辑字符串引用查找坐标相关的字符串引用函数调用分析跟踪坐标更新函数调用链内存断点在坐标写入时设置内存断点分析调用栈7. 实战案例2D游戏坐标获取完整示例7.1 案例游戏分析以经典2D游戏为例演示完整坐标获取流程import cv2 import numpy as np import pyautogui import time class Simple2DGameCoordinateGetter: def __init__(self): self.templates { player: cv2.imread(templates/player.png), enemy: cv2.imread(templates/enemy.png) } def get_game_region(self): 识别游戏窗口区域 screenshot pyautogui.screenshot() screenshot cv2.cvtColor(np.array(screenshot), cv2.COLOR_RGB2BGR) # 使用边缘检测识别游戏窗口 gray cv2.cvtColor(screenshot, cv2.COLOR_BGR2GRAY) edges cv2.Canny(gray, 50, 150) # 查找轮廓 contours, _ cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) for contour in contours: x, y, w, h cv2.boundingRect(contour) if w 800 and h 600: # 假设游戏窗口最小尺寸 return (x, y, w, h) return None def monitor_positions(self): 持续监控游戏内对象位置 game_region self.get_game_region() if not game_region: print(未找到游戏窗口) return x, y, w, h game_region while True: # 截取游戏区域 screenshot pyautogui.screenshot(region(x, y, w, h)) game_frame cv2.cvtColor(np.array(screenshot), cv2.COLOR_RGB2BGR) # 识别各个对象 for obj_name, template in self.templates.items(): result cv2.matchTemplate(game_frame, template, cv2.TM_CCOEFF_NORMED) min_val, max_val, min_loc, max_loc cv2.minMaxLoc(result) if max_val 0.8: obj_x max_loc[0] x # 转换为屏幕坐标 obj_y max_loc[1] y print(f{obj_name}位置: ({obj_x}, {obj_y})) time.sleep(0.5) # 每500ms检测一次 # 运行监控 getter Simple2DGameCoordinateGetter() getter.monitor_positions()8. 常见问题与解决方案8.1 图像识别精度问题问题现象模板匹配准确率低经常误识别或漏识别解决方案使用多尺度模板匹配适应不同大小的目标结合颜色空间分析提高特征区分度采用深度学习方法进行目标检测设置合适的置信度阈值平衡召回率和准确率def multi_scale_template_match(image, template, scales[0.8, 1.0, 1.2]): 多尺度模板匹配 best_match None best_confidence 0 for scale in scales: # 缩放模板 width int(template.shape[1] * scale) height int(template.shape[0] * scale) resized_template cv2.resize(template, (width, height)) # 匹配 result cv2.matchTemplate(image, resized_template, cv2.TM_CCOEFF_NORMED) min_val, max_val, min_loc, max_loc cv2.minMaxLoc(result) if max_val best_confidence: best_confidence max_val best_match (max_loc, (width, height), max_val) return best_match8.2 内存地址不稳定问题问题现象游戏更新后内存地址失效需要重新查找解决方案使用特征码扫描代替固定地址建立指针映射表适应不同版本开发自动更新地址的机制使用模块基址偏移量的方式提高稳定性8.3 反作弊系统规避问题现象游戏检测到外部工具介入导致封号或游戏退出解决方案使用合法的测试接口如果游戏提供降低访问频率模拟人类操作模式使用驱动级隐藏技术仅限合法研究用途优先选择单机游戏进行技术验证9. 最佳实践与工程化建议9.1 代码架构设计建立可维护的坐标获取框架from abc import ABC, abstractmethod from typing import Dict, Optional, Tuple class CoordinateProvider(ABC): 坐标获取器抽象基类 abstractmethod def get_coordinates(self) - Dict[str, Tuple[float, float]]: 获取所有目标的坐标 pass abstractmethod def is_available(self) - bool: 检查是否可用 pass class ImageBasedProvider(CoordinateProvider): 基于图像识别的坐标提供器 def __init__(self): self.targets self.load_target_templates() def load_target_templates(self) - Dict[str, np.ndarray]: 加载目标模板 # 实现模板加载逻辑 pass def get_coordinates(self) - Dict[str, Tuple[float, float]]: 通过图像识别获取坐标 coordinates {} screenshot self.capture_screen() for name, template in self.targets.items(): position self.find_template(screenshot, template) if position: coordinates[name] position return coordinates class MemoryBasedProvider(CoordinateProvider): 基于内存读取的坐标提供器 def get_coordinates(self) - Dict[str, Tuple[float, float]]: 通过内存读取获取坐标 # 实现内存读取逻辑 pass9.2 性能优化策略异步处理使用多线程进行图像识别和内存读取缓存机制缓存不变的元素位置减少重复计算增量更新只处理发生变化的位置信息精度平衡根据需求调整检测频率和精度9.3 错误处理与日志记录建立完善的错误处理机制import logging from datetime import datetime class CoordinateService: def __init__(self): self.logger self.setup_logger() self.providers [ImageBasedProvider(), MemoryBasedProvider()] def setup_logger(self): 配置日志系统 logger logging.getLogger(CoordinateService) logger.setLevel(logging.INFO) # 创建文件处理器 fh logging.FileHandler(fcoordinate_log_{datetime.now().strftime(%Y%m%d)}.log) formatter logging.Formatter(%(asctime)s - %(levelname)s - %(message)s) fh.setFormatter(formatter) logger.addHandler(fh) return logger def safe_get_coordinates(self): 安全地获取坐标包含异常处理 for provider in self.providers: if provider.is_available(): try: return provider.get_coordinates() except Exception as e: self.logger.error(fProvider {type(provider).__name__} failed: {e}) continue self.logger.warning(All providers failed to get coordinates) return {}9.4 法律合规与道德考量明确用途仅用于学习研究和个人开发尊重版权不破解商业游戏不开发作弊工具遵守协议严格遵守游戏用户协议技术导向关注技术实现而非实际应用通过系统掌握不同游戏的坐标获取技术开发者可以更好地理解游戏内部机制为游戏开发、测试和分析工作提供有力支持。建议从简单的2D游戏开始实践逐步掌握更复杂的技术方案。

相关新闻

Oracle DBA必学Python:自动化运维实战与技能提升指南

Oracle DBA必学Python:自动化运维实战与技能提升指南

随着企业数据量激增和运维自动化需求提升,传统Oracle DBA的工作边界正在快速扩展。近期在多个Oracle技术社区中,Python与DBA技能结合的讨论热度持续攀升——从自动化巡检脚本到性能监控平台,Python正在成为DBA高效工作的关键工具。本文将以零…

2026/8/1 12:20:22 阅读更多 →
【物理AI】和具身智能是什么关系?

【物理AI】和具身智能是什么关系?

物理AI具体指什么,和具身智能是什么关系 定义先行:两个概念的边界 要回答这个问题,首先需要把两个词分别钉死在各自的定义上,否则后续讨论容易滑向空泛。 具身智能(Embodied Intelligence)指一类"载…

2026/8/1 12:20:22 阅读更多 →
什么是AR智慧运维系统,主要能解决什么问题

什么是AR智慧运维系统,主要能解决什么问题

在工业4.0与产业元宇宙(IMP)深度融合的当下,传统运维模式正面临严峻挑战。设备复杂度指数级上升、资深专家资源稀缺、现场作业数据黑盒化,成为制约制造业数字化转型的核心痛点。AR智慧运维系统并非简单的“视频通话眼镜”&#xf…

2026/8/1 12:19:22 阅读更多 →

最新新闻

Ohook:终极免费Office激活方案,3分钟永久解锁Microsoft 365完整功能

Ohook:终极免费Office激活方案,3分钟永久解锁Microsoft 365完整功能

Ohook:终极免费Office激活方案,3分钟永久解锁Microsoft 365完整功能 【免费下载链接】ohook An universal Office "activation" hook with main focus of enabling full functionality of subscription editions 项目地址: https://gitcode.…

2026/8/1 13:00:35 阅读更多 →
如何免费解锁Wand专业版:WandEnhancer开源增强工具完整指南

如何免费解锁Wand专业版:WandEnhancer开源增强工具完整指南

如何免费解锁Wand专业版:WandEnhancer开源增强工具完整指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 还在为Wand(原W…

2026/8/1 13:00:35 阅读更多 →
基于强化学习的 NPC 走位与掩体选择:从奖励设计到训练崩溃

基于强化学习的 NPC 走位与掩体选择:从奖励设计到训练崩溃

基于强化学习的 NPC 走位与掩体选择:从奖励设计到训练崩溃 一、手写走位规则的尽头:覆盖不了的真实战场 NPC 走位常靠手写规则:血量低找掩体、被瞄就横移、近战贴脸。规则在简单场景够用,但真实战场瞬息万变——多个敌人交叉火力…

2026/8/1 13:00:35 阅读更多 →
AI文本检测与语义重构技术解析

AI文本检测与语义重构技术解析

1. 项目背景与核心挑战 去年帮表弟处理毕业论文时,第一次见识到Turnitin的AIGC检测有多严格。他用了某AI辅助工具生成的文献综述部分,系统直接标出88.3%的AI生成内容风险。这让我意识到,随着AI检测技术迭代,传统的"机翻人工润…

2026/8/1 13:00:35 阅读更多 →
5大架构创新:深度解析League Akari的模块化桌面应用技术实践

5大架构创新:深度解析League Akari的模块化桌面应用技术实践

5大架构创新:深度解析League Akari的模块化桌面应用技术实践 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari是一款基…

2026/8/1 13:00:35 阅读更多 →
IMX219-77IR相机模组:日夜两用原理、驱动集成与场景应用全解析

IMX219-77IR相机模组:日夜两用原理、驱动集成与场景应用全解析

1. 项目概述:IMX219-77IR相机模组深度解析 如果你正在寻找一款能在各种光线条件下,尤其是低光或完全无光环境下稳定工作的相机方案,那么IMX219-77IR这个型号很可能已经进入了你的视野。这不仅仅是一个普通的摄像头,它是一个集成了…

2026/8/1 12:59:35 阅读更多 →

日新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/8/1 5:19:34 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/8/1 10:33:33 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →