尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Akari助手:基于LCU API的开源英雄联盟效率工具全解析

发布时间:2026/9/26 6:49:37

资讯中心
01
ARTICLE

Akari助手:基于LCU API的开源英雄联盟效率工具全解析

Akari助手:基于LCU API的开源英雄联盟效率工具全解析
英雄联盟玩家对效率工具的需求其实一直存在一个尴尬的断层。官方客户端能做的事情有限第三方工具要么收费、要么闭源、要么更新滞后版本一更新就集体趴窝。我自己从S8开始折腾各种辅助工具从最早的手动改配置文件到后来用Python脚本调LCU接口再到接触League-Toolkit生态踩过的坑能写一本小册子。Akari助手算是这个方向上目前比较完整的一个开源方案它基于LCU API和Node.js技术栈把对局查询、自动接受、战绩分析、段位展示这些高频需求打包成了一个桌面应用。这篇内容适合两类人一类是想直接用工具提升游戏体验的普通玩家另一类是想研究LCU API调用、想自己动手改功能的技术玩家。我会从它到底解决了什么问题讲起把架构原理、安装配置、核心功能、常见故障排查都拆开说清楚最后分享一些我自己改配置和调参数的经验。1. 先搞清楚Akari到底解决了哪些真实痛点1.1 官方客户端做不到的那些事英雄联盟官方客户端本身是一个封闭的Electron应用它暴露给玩家的功能是经过筛选的。你没法在选人阶段自动查看队友的近期战绩没法在匹配成功后自动接受对局没法在游戏结束后快速导出本局详细数据。这些需求看起来小但累积起来对游戏体验的影响很大。尤其是排位赛选人阶段的信息差往往决定了你这把是认真打还是随便玩。LCU APILeague Client Update API是客户端内部使用的一套REST接口它运行在本地的一个随机端口上通过一个lockfile进行鉴权。官方没有公开文档但社区通过抓包和逆向整理出了大量可用端点。Akari助手的本质就是把这些端点封装成了玩家能直接用的功能。它不修改游戏内存不注入进程只是读取客户端本身就在传输的数据所以从原理上说是相对安全的。1.2 和同类工具相比的差异化定位市面上类似的工具不少有收费的、有带广告的、有只做单一功能的。Akari的定位是全能开源免费。全能体现在它覆盖了从选人阶段到对局结束的完整流程开源意味着你可以看到每一行代码在做什么不用担心后台偷偷上传数据免费则降低了使用门槛。League-Toolkit是这个生态里的核心依赖库它提供了一套TypeScript/JavaScript的LCU连接封装。Akari基于它构建了上层UI和业务逻辑。这种分层设计的好处是即使客户端API有变动只需要更新Toolkit层上层功能不用大改。我自己研究过它的源码结构整体架构是清晰的对于想学习ElectronNode.js桌面应用开发的人来说也是一个不错的参考项目。1.3 哪些人适合用哪些人不适合适合用的人经常打排位的玩家需要快速查看队友和对手战绩喜欢研究数据、想导出对局记录做分析的玩家对开源项目感兴趣、想学习LCU API调用的开发者。不太适合的人对第三方工具有天然不信任感的玩家只玩娱乐模式、对战绩数据无所谓的玩家电脑配置极低、不想多跑一个后台进程的玩家。有一点必须说清楚任何第三方工具都存在理论上的风险虽然Akari只做只读操作但使用前你应该自己评估是否接受这个风险。我的态度是了解原理之后再决定用不用比盲目跟风要靠谱得多。2. 从LCU API到桌面应用Akari的技术架构拆解2.1 LCU API的连接机制与鉴权流程英雄联盟客户端启动后会在安装目录下生成一个lockfile文件里面包含了进程名、PID、端口号和鉴权token。格式大概是这样的LeagueClient:12345:54321:abcdefghijklmnop四个字段分别用冒号分隔进程名、PID、端口、token。Akari启动后第一件事就是找到这个文件解析出端口和token然后构造一个HTTPS请求去连接本地客户端。注意是HTTPS不是HTTP而且客户端用的是自签名证书所以代码里需要忽略证书验证。const { LeagueClient } require(league-toolkit); const client new LeagueClient({ lockfilePath: C:/Riot Games/League of Legends/lockfile, pollInterval: 1000 }); client.on(connect, async () { const summoner await client.request(GET, /lol-summoner/v1/current-summoner); console.log(当前召唤师:, summoner.displayName); });这段代码展示了最基本的连接流程。pollInterval是轮询间隔意思是每隔1秒检查一次客户端是否启动。这个值不建议设得太小否则会频繁读取文件增加不必要的IO开销。我一般设1000到2000毫秒实测下来响应速度和资源占用比较平衡。2.2 Node.js在其中的角色与版本选择Akari的后端逻辑跑在Node.js上前端是Electron的渲染进程。为什么选Node.js而不是Python或者Go核心原因是League-Toolkit本身就是TypeScript写的同语言栈可以减少跨语言调用的复杂度。另外Electron天然就是Node.js环境前后端可以共享代码和类型定义。Node.js版本方面我建议用18 LTS或20 LTS。18.20.4这个版本我实测过稳定性很好。不建议用太新的奇数版本比如21.x因为某些原生模块可能还没适配。也不建议用16.x虽然能跑但部分依赖库已经不再支持了。安装Node.js的步骤不复杂去官网下载LTS版本的安装包一路下一步就行。安装完成后在命令行里验证node -v npm -v如果两个命令都能正常输出版本号说明环境没问题。国内用户如果下载慢可以配置淘宝镜像npm config set registry https://registry.npmmirror.com这个镜像同步频率很高日常使用基本感觉不到和官方源的差异。2.3 Electron桌面壳的选型理由用Electron做桌面应用争议一直存在。反对的人说它臃肿、占内存。但对于Akari这个场景Electron其实是合理的选择。原因有三第一LCU API是REST接口用JavaScript调用最自然第二Electron可以复用大量Web生态的UI组件开发效率高第三目标用户是游戏玩家电脑配置普遍不差多跑一个Electron进程的影响可以接受。Akari的窗口设计是常驻托盘悬浮窗的形式。悬浮窗在选人阶段会自动弹出显示队友战绩对局中可以通过快捷键呼出。这种交互设计比传统的独立窗口更贴合游戏场景不会遮挡游戏画面。2.4 数据存储与本地缓存的取舍Akari会把查询过的战绩数据缓存在本地用的是SQLite。为什么要缓存因为LCU API的战绩查询接口有频率限制频繁请求会被限流。缓存策略是同一召唤师的战绩在5分钟内不重复请求直接读本地。这个时间窗口是我自己调过的太短了起不到缓存作用太长了数据会过时。数据库文件默认放在用户目录下的.akari文件夹里。如果你想清理缓存直接删掉这个文件夹就行下次启动会重新建。我建议定期清理一下尤其是版本更新后旧数据格式可能不兼容。3. 从零开始把Akari跑起来完整安装与配置流程3.1 环境准备Node.js安装的细节与坑虽然前面提了Node.js安装但这里要展开说几个容易出问题的地方。第一安装路径不要有中文和空格。我见过有人装在D:\我的软件\nodejs下面结果npm各种报错。第二安装时勾选Add to PATH否则命令行里找不到node命令。第三如果你之前装过旧版本建议先卸载干净再装新版本残留的环境变量会导致版本混乱。验证安装是否成功除了node -v还可以跑一个简单的脚本// test.js const os require(os); console.log(Node版本:, process.version); console.log(系统平台:, os.platform()); console.log(CPU架构:, os.arch());用node test.js运行如果能正常输出信息说明Node.js环境完全正常。3.2 获取Akari源码编译与直接下载的对比Akari有两种获取方式直接下载打包好的安装包或者从源码编译。普通用户建议直接下载安装包省事。开发者或者想改功能的用户可以从GitHub仓库clone源码自己编译。源码编译的流程git clone https://github.com/akari-project/akari.git cd akari npm install npm run build npm startnpm install这一步可能会比较慢因为要下载Electron的二进制文件。如果卡住不动可以设置Electron镜像npm config set electron_mirror https://npmmirror.com/mirrors/electron/这个配置能显著加快下载速度。我自己编译过几次第一次没设镜像等了快20分钟设了之后3分钟搞定。3.3 首次启动的配置项逐条说明Akari首次启动会引导你完成基础配置。几个关键选项客户端路径自动检测通常能找对如果找不到就手动指定League of Legends的安装目录。自动接受对局建议开启但排位赛慎用因为有时候你需要时间考虑要不要秒。战绩查询范围可以设最近10场、20场或全部。设太大会拖慢查询速度我一般设20场。悬浮窗透明度默认70%可以根据自己喜好调。太透明看不清太不透明挡视野。快捷键默认是CtrlShiftA呼出主窗口。如果和游戏内快捷键冲突可以改。配置文件存在config.json里位置在用户目录的.akari文件夹下。你可以直接编辑这个文件但改之前先关掉Akari否则退出时会被覆盖。3.4 验证是否连接成功的三个信号怎么知道Akari已经成功连上客户端了看三个地方第一托盘图标从灰色变成彩色第二主界面顶部显示你的召唤师名称和等级第三选人阶段悬浮窗能正常弹出并显示数据。如果托盘图标一直是灰色说明没连上。排查顺序先确认游戏客户端是否已启动并登录再检查lockfile路径是否正确最后看防火墙有没有拦截本地回环连接。我遇到过Windows防火墙把Node.js的本地连接拦了的情况在防火墙设置里放行就行。4. 核心功能逐个拆哪些值得开哪些建议关4.1 选人阶段战绩速查的实现逻辑这是Akari使用频率最高的功能。选人阶段客户端会通过LCU API推送当前房间的玩家列表Akari监听到这个事件后并行查询每个玩家的近期战绩然后渲染到悬浮窗上。查询用的是/lol-match-history/v1/products/lol/{puuid}/matches这个端点。注意它用的是puuid而不是召唤师名因为召唤师名可以改puuid是唯一的。Akari内部会先通过/lol-summoner/v1/summoners把召唤师名转成puuid再查战绩。显示的信息包括最近20场的胜率、KDA、常用英雄、当前段位。这些数据在选人阶段的参考价值很高。比如你发现队友最近20场胜率只有30%那这把可能要调整策略多帮其他路。注意战绩查询有频率限制如果同时查10个人的战绩可能会触发限流。Akari内部做了队列控制但如果你手动频繁刷新还是可能被临时限制。建议不要狂点刷新按钮。4.2 自动接受与自动禁选的边界自动接受对局这个功能我的建议是匹配和灵活组排可以开单双排建议关。原因很简单单双排你需要时间判断阵容和队友自动接受会让你失去这个缓冲期。自动禁选功能要谨慎使用。Akari允许你设置一个禁用优先级列表它会按顺序尝试禁用。但问题是如果列表里的英雄都被禁了或者被队友选了它可能会随机禁一个这就很危险。我的做法是只设一个必禁英雄不设备选这样即使没禁到也不会乱禁。{ autoAccept: true, autoBan: { enabled: true, champions: [Yasuo], fallbackToNone: true } }fallbackToNone设为true的意思是如果首选英雄不可用就不禁用任何英雄而不是随机选一个。这个配置我强烈建议开启。4.3 对局数据导出与复盘分析Akari可以在对局结束后自动导出本局详细数据包括每个玩家的出装、伤害、经济曲线等。导出格式支持JSON和CSV。JSON适合程序处理CSV适合用Excel打开看。我自己用这个功能做复盘。把最近20场的CSV导出来用Excel做个透视表看看自己在哪些时间段经济落后、哪些英雄胜率低。这种数据驱动的复盘比凭感觉回忆靠谱得多。导出的数据存在.akari/exports目录下文件名格式是{日期}_{对局ID}.csv。如果你不想每次都手动导出可以在设置里开启自动导出这样每局结束都会自动保存。4.4 段位展示与好友对比功能Akari可以在悬浮窗上显示你和好友的段位对比。这个功能的数据来源是/lol-ranked/v1/current-ranked-stats端点。显示内容包括当前段位、LP、胜场、负场。好友对比功能需要你手动添加好友到列表里。添加后Akari会定期刷新他们的段位数据。注意这个刷新是有限制的太频繁会被限流。我一般设30分钟刷新一次足够用了。段位展示的UI可以自定义支持显示为徽章、文字或者进度条。我个人喜欢进度条形式能直观看到距离晋级还差多少LP。5. 踩坑实录那些让我折腾半天的故障与修复5.1 连接失败lockfile读取权限问题这是最常见的问题。Akari启动后一直显示等待客户端连接但游戏明明已经开了。排查下来发现是lockfile读取权限的问题。Windows下如果游戏安装在C盘Program Files目录普通用户可能没有读取权限。解决方法有两种一是以管理员身份运行Akari二是把游戏安装目录的读取权限开放给当前用户。我推荐第二种因为每次都以管理员运行太麻烦。具体操作右键游戏安装目录 - 属性 - 安全 - 编辑 - 添加当前用户 - 勾选读取和执行。5.2 版本更新后功能失效的排查链路游戏客户端每次大版本更新LCU API都可能有变动。Akari功能失效的典型表现是能连上客户端但某些功能报错或者返回空数据。排查链路是这样的第一步看Akari的日志文件位置在.akari/logs目录下找ERROR级别的记录第二步确认League-Toolkit是否有更新如果有就升级第三步如果Toolkit也没更新去GitHub的Issues页面看看有没有人反馈同样的问题。我遇到过一次版本更新后战绩查询返回403错误后来发现是端点路径变了。这种问题只能等社区更新自己改的话需要抓包分析新的端点门槛比较高。5.3 悬浮窗不显示或闪烁的解决方案悬浮窗不显示通常是Electron的窗口层级问题。游戏是全屏模式时悬浮窗可能被覆盖。解决方法把游戏改成无边框窗口模式这样悬浮窗就能正常显示在最上层。闪烁问题一般是渲染进程和主进程通信频率过高导致的。可以在设置里降低悬浮窗的刷新频率从默认的500毫秒改成1000毫秒。我改过之后闪烁明显减少。还有一个偏方在Electron启动参数里加--disable-gpu-compositing有时候能解决某些显卡驱动导致的渲染异常。但这个参数会影响性能只在确实有问题时用。5.4 内存占用过高的优化经验Akari跑久了内存占用会上升这是Electron应用的常见问题。我观察下来主要是战绩缓存和日志文件累积导致的。优化措施第一定期清理.akari/cache目录第二在设置里限制日志文件大小比如最大10MB超过就自动轮转第三如果长时间不玩直接把Akari退出不要让它常驻后台。我自己的做法是设了一个定时任务每周清理一次缓存目录。清理后内存占用能从500MB降到200MB左右。6. 进阶玩法改配置、写插件、参与开源6.1 配置文件的高级参数调优除了基础设置Akari的config.json里还有一些高级参数可以调参数名默认值建议值说明pollInterval10001500客户端检测间隔单位毫秒cacheExpiry300600战绩缓存过期时间单位秒maxLogSize524288010485760日志文件最大字节数requestTimeout50008000API请求超时时间单位毫秒maxConcurrentRequests53最大并发请求数maxConcurrentRequests这个参数值得说一下。设得太高查询速度快但容易触发限流设得太低查询慢但稳定。我试过设10结果连续几把都被限流后来降到3就再没出过问题。6.2 基于League-Toolkit写一个自定义查询脚本如果你想自己写脚本查数据League-Toolkit提供了很简洁的API。下面是一个查当前召唤师最近5场战绩的脚本const { LeagueClient } require(league-toolkit); async function main() { const client new LeagueClient(); await client.connect(); const summoner await client.request(GET, /lol-summoner/v1/current-summoner); const puuid summoner.puuid; const matches await client.request( GET, /lol-match-history/v1/products/lol/${puuid}/matches, { begIndex: 0, endIndex: 5 } ); matches.games.forEach((game, i) { console.log(第${i 1}场: ${game.gameMode} - ${game.gameDuration}秒); }); client.disconnect(); } main().catch(console.error);这个脚本可以直接用Node.js运行。注意begIndex和endIndex是分页参数查太多场次会慢。6.3 给Akari提交代码或反馈问题的正确姿势如果你想给Akari贡献代码流程是标准的GitHub PR流程fork仓库 - 创建分支 - 修改代码 - 提交PR。提交前确保代码通过了lint检查并且写了对应的测试。反馈问题时提供以下信息能帮助开发者快速定位Akari版本号、Node.js版本、操作系统版本、游戏客户端版本、完整的错误日志。如果问题能稳定复现附上复现步骤。我见过很多人只写一句用不了这种issue基本没人理。6.4 开源许可证与二次开发的注意事项Akari用的是MIT许可证这意味着你可以自由使用、修改、分发甚至商用。但有一个条件必须保留原作者的版权声明。如果你基于Akari做了二次开发在发布时要在显著位置注明原始项目。二次开发时要注意不要引入有传染性的GPL代码否则你的整个项目可能被迫开源。我建议二次开发前先看一下依赖树的许可证情况用license-checker这个工具可以快速扫描。7. 我对这类工具的一些个人看法用了这么久Akari我最大的感受是工具本身不决定你的游戏水平但它能帮你把精力集中在真正重要的事情上。以前选人阶段我要手动切出去查队友战绩现在悬浮窗直接显示省下来的注意力可以用在思考对线策略上。另一个体会是开源项目的生命力在于社区。Akari能保持更新靠的是一群志愿者的持续投入。如果你觉得这个工具好用除了给star更好的支持方式是反馈有价值的issue、提交PR、或者在社区里帮助其他用户。我自己提交过两个小bug的修复虽然代码量不大但被合并的时候还是挺有成就感的。最后说一个实际建议任何第三方工具都不要无脑全开。先搞清楚每个功能在做什么再决定开不开。比如自动接受对局在低分段可能帮你省时间但在高分段可能让你错过关键的阵容判断窗口。工具是为人服务的别反过来被工具牵着走。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。