互动游戏团队如何将性能体验优化做到TOP级别

一、背景

随着互动游戏业务 DAU 量级增加,性能和体验重要性也越发重要,好的性能和体验不仅可以增加用户使用体感,也可以增加用户对于互动游戏的使用粘性。

对现状分析,主要存在首屏渲染速度慢、打开页面存在白屏、页面加载过多资源等问题,核心手段是增加骨架、接口优先级调整、预渲染、减小包体积等。

优化后,互动游戏签到功能做到同类业务性能体验 Top 级别,下面是优化后数据:

  • 首屏渲染速度:优化后提升首屏渲染速度 39%。
  • 首屏骨架:骨架体积大小减少 44%(压缩后减少 50%)。
  • 首次加载总资源:资源总体积优化后,大小减少 69%。

二、骨架

骨架屏是指在页面加载时,临时显示出页面的主要结构,可以让用户在等待页面加载完成时,得到视觉上的反馈,提升页面的用户体验。

100.jpeg

骨架示意图vs数据渲染

109.jpeg

108.jpeg

可以看出在接口返回数据之前,可以先使用骨架得到一些界面反馈。

三、缓存

虽然骨架屏可以让用户在视觉上得到反馈,毕竟不是真实的数据,总体还是有一些简陋,用户也可能并不知道这块区域实际渲染的是什么样的内容,若是网络环境不好,很可能会长时间的停留在骨架屏阶段,为了增强一些体感,使用缓存进一步对页面进行优化。

107.jpeg

使用缓存渲染具备以下优势:

  • 与骨架屏相比,缓存渲染十分接近用户最终所见,因为每次接口返回数据都会更新缓存,用户再次进入时看到的都是自己上次进入时的数据。
  • 当用户处在弱网或者断网等不可抗力的环境中时,可以得到较为完整的页面数据展示,可以很好减弱用户环境带来的网络营销。

使用缓存注意事项:

  • 一些缓存渲染应屏蔽事件响应,避免造成不必要的报错和客诉。比如商品的缓存渲染,由于商品存在下架、优惠券调整等情况,缓存的数据和实际数据会存在一定的偏差。
  • 缓存渲染逻辑需要更加前置,不应该将缓存渲染的逻辑放在原本的位置,这样会拖慢渲染的时机。

四、接口后置

浏览器对同一时间内的请求数量是有限制的,既并发请求限制。当一个页面首次渲染时需要浏览器发起很多接口请求,用于填充页面渲染需要的数据,若是对于页面渲染时的请求数量不加以控制,便可能导致一些问题出现。

现在有 home 和 info 两个接口,home 接口返回的数据是首屏渲染需要依赖的,info 接口返回的数据则不是首屏必须依赖的。假设现在还有一些其他请求占据了并发请求限制的数量,导致 home 接口请求变慢。

105.jpeg

若是 info 接口响应慢,长时间占据这浏览器的请求进程,会导致页面首屏渲染速度更慢,那么就需要有个一套方案可以根据接口的优先级进行加载顺序控制,可以将顺序变为如下。

104.jpeg

方案: 当页面加载完成后一定时间后,进行低优先级接口的请求,或者触发页面的滚动、点击等时立即进行接口请求。

此方案适用于:确定接口延迟加载并不会阻塞用户的交互和操作。

将其封装为一个 hooks,便于复用,直接先看代码再解释:

import { useRM, createRM } from 'xxx'

const listen = (type: string, listener: () => void) => {
  const l = () => {
    listener()
    document.removeEventListener(type, l)
  }
  document.addEventListener(type, l)
}

const pageFlowModule = createRM(
  {
    assemble(state) {
      const reactionObserver = () => {
        state.isUserReactioned = true
      }

      ;['scroll', 'mousedown', 'touchstart'].forEach((type) => {
        listen(type, reactionObserver)
      })
      setTimeout(reactionObserver, 4000)
    },
  },
  { isUserReactioned: false },
)

pageFlowModule.actions.assemble()

export const usePageFlow = () => {
  const [state] = useRM(pageFlowModule)
  return state
}

使用:

import { usePageFlow } from 'xxx'

const Demo = () => {
    const { isUserReactioned } = usePageFlow()

    const fetchHanlder = useCallback(() => {
        // 接口请求数据
    }, [])

    useEffect(() => {
        if(isUserReactioned) {
            fetchHanlder()
        }
    }, [isUserReactioned, fetchHanlder])

    return <div>{/* 渲染接口返回的数据 */}</div>
}

从上面代码可以看到,会将一些非首屏需要的请求后置,后置的接口可以在页面加载完成 4s 后自动触发调用,也会在用户有触屏、滚动页面等行为的时触发接口的调用。

五、骨架优化

签到和许愿树目前主文档中除了骨架部分还包含了一些公共的 JS 和 CSS,对不同资源类型进行拆分、汇总后发现,不管是签到还是许愿树,实际包含 HTML + JS 部分仅占极小比例,大量的流量消耗在了 CSS 上。

对 HTML 中 CSS 部分再进行梳理发现,文件中包含的除了骨架的 CSS 部分和公共组件库的 CSS 部分之外,还包含了大量弹框的 CSS。这三类中,骨架的 CSS 要保留,公共组件库的 CSS 可以拆分但是难度较大,剩下的就是弹框或者非骨架部分的 CSS。

  • 需要把弹框部分组件做异步加载,保证预渲染的时候这部分 CSS 文件不会被加载到。
  • 拆分骨架组件,把骨架组件从业务组件中剥离,预渲染的时候只渲染和加载骨架部分,不加载其余主文件部分 CSS,进一步缩小骨架。

    102.jpeg

六、localStorage性能问题

在做优化之前,并未意识到 localStorage 所隐藏的性能问题,业务中使用了大量的本地存储,使用 Performance 记录一下存储消耗的时间。

记录核心代码:

export const setMallFlowStoreData = (data: any) => {
  performance.mark('start_localstorage_operation')
  // localStorage 操作.....
  performance.mark('end_localstorage_operation')

  performance.measure('localstorage_operation_duration', 'start_localstorage_operation', 'end_localstorage_operation')
}

输出记录的时间:

const entries = performance.getEntriesByName('localstorage_operation_duration')
const TOTAL_TIME = entries.reduce((current, next) => {
return current + next?.duration
}, 0)

console.log('全部记录:', entries, '共耗时:', TOTAL_TIME)

输出结果:

可以看到通过 localStorage 进行一次存储操作,大致需要耗时 0.2-0.5ms之间,若是当页面存在大量的前端的存储操作时,低端机型在存储操作上消耗甚至达到 10-20ms,若是代码写的不合理,导致页面 reload、反复触发获取操作等情况,这个时间又将会成倍的增加。

接下来先一起看看为何会存在性能方面的问题和解决方案。

存储数据

问题:

localStorage 的存储是同步的操作,因此在存储大量数据时,可能会导致阻塞 UI 线程,影响用户体验。

方案:

核心思路便是将同步操作转换为异步操作,这样就不会阻塞 UI 线程。

  • 使用 Web Worker ,会增加一些项目维护的复杂度,且其是 HTML5 标准中新增的技术,存在一定的兼容性(ChatGPT 给的,应该是错误答案,并未在 MDN 中看到)。

201.png

  • 使用 setTimeout、setInterval,兼容性绝对的好,但是并未从根本解决问题。
  • 不用 localStorage,直接上 IndexDB,但是由于代码项目原因,不能改动原有的太多逻辑。

综合解决方案和历史原因,只能退而求其次选择 setTimeout 的方式解决这个问题。

读取数据

问题:

每次读取 localStorage 数据时,都需要从磁盘中读取数据,因此在处理大量数据时,可能会出现性能问题。

方案:

可以将数据进行放到内存中缓存处理,在用户的整个操作周期内只从 localStorage 获取一次数据,需要注意的是每次对数据进行操作时,需要将 localStorage 和内存缓存的数据同步更新。

数据类型转换

问题:

在存储和读取数据时,需要将数据进行序列化和反序列化操作。这些操作可能会导致性能问题。

方案:

使用 JSON.stringify() 和 JSON.parse() 函数来处理数据的序列化和反序列化。

经过对 localStorage 存储优化以后,在红米 note 11 上面进行了简单测试,首屏打开速度提升,对于整体提升首屏提升约 2%。

七、动效执行时机

页面存在渐入渐现的动效,在页面首次加载时,由于渐现动效的存在,会延迟用户感知该模块,从而导致感觉页面存在更多时间的白屏,动效如下: 

203.gif

核心问题是首次渲染直出 DOM 结构,不走渐现动效便可,这个比较偏向于逻辑处理,属于体验优化的范畴,主打的就是在后续有相关首屏动效时,有意识对其做一下处理,保证首屏首次渲染的完整度。

八、渲染模块的取舍

首先看一下两种状态各自的样式:未签到 VS 已签到。

204.png

签到业务的日历会根据用户当天签到状态进行渲染,存在已签到和未签到两种渲染逻辑,由于当前的架构限制,并不能在预渲染时感用户的签到状态,导致日历部分的渲染会滞后,严重影响页面的首屏渲染速度。

第一版本优化

将签到状态进行缓存,当用户进入签到时的大致流程如下:

207.jpeg

当用户进入页面时,会优先获取缓存中的数据进行渲染,确保用户可以第一时间看到日历部分的渲染,这里需要注意:1. 缓存需要结合用户 token 一起判断,避免造成切换账号时造成数据污染。2. 若是用户第一次进入或者当天未签到,会使用系统时间作为小日历上的数字展示,当用户修改了系统时间设置时,日期判断会存在误差。

缓存数据必然会先于接口响应数据,因此页面第一时间看到的肯定是缓存数据(没有缓存数据,会默认使用未签到数据)所渲染的页面,那么当接口响应完成时,需要使用真实的数据触发页面的 rerender,需要注意处理,避免造成页面闪烁。

虽然这样做可以提高页面的渲染体感,当进入页面时,顶部区域还是会存在一定时间的空白,毕竟还是需要执行 JS 后才能执行骨架渲染逻辑,本质提升速度为:接口响应时间 - JS 执行时间,在低端机表现会较为好一些,高端机体感并非太明显。

第二版优化

日历部分由于已签到和未签到的样式存在着较大的出入,不能像某些竞品一样:已签、未签的整体页面布局并未有区分,使用一套公用的渲染逻辑,这样也导致签到业务需要将渲染日历部分的动作滞后,那么核心就是怎么解决这个问题。

综合考虑后,决定将未签到样式作为预渲染时直接生成 DOM,这样可以保证用户未签到的状态下进入到页面可以第一时间对的状态,也可以更快的完成首屏的渲染。

若是用户已签到,便在此基础之上复用今日签到的逻辑,就是会在签到完成后展示一个小的动效,将小日历变成大日历的样式。这样做的好处可以是获取到用户真实状态后,自动切换到大日历状态,效果如下。

309.gif

结合用户行为分析:多数用户一天不会多次访问,也就是在即不怎么牺牲高频率访问用户的体验之下,提高了绝大多数用户的体验。

九、首屏数据优先请求

前置小知识:最大并发请求数

为了避免浏览器过度占用系统资源,浏览器对于同一域名下的请求数量是有一定限制的,也就是常见的浏览器最大请求数量。

以 Chrome 浏览器举例:同一域名下,HTTP 协议最多允许同时存在 6 个 TCP 连接进行,HTTPS 协议最多为 4 个。

业务现状

签到进入页面共计加载许多接口。

其中首屏渲染需要的几个核心接口如图红色标记所示,核心的接口滞后会导致页面数据渲染的更慢,严重影响体验,那么到底影响多少呢?可以在浏览器 Network 中查看 Waterfall。

304.png

核心接口是在其他完成后开始,是因为其没有赶上浏览器第一批次接口请求队列中,需要等待前面某些接口结束后,才会将其放到请求队列中。

动作

有了问题,接下来便是如何做:

  • 首先是制定方案,如何确保接口的请求可以搭上浏览器请求队列的第一班车,本质是将之前散落在各个组件内的 useEffect 中的初始化逻辑进行提取,统一触发。
  • 梳理接口和首屏渲染的关联度,确定哪些接口的优先级权重更高。

核心代码如下:

export const StartModule = createRM(
  {
    init() {
      SigninTopModule?.actions?.getHomeData()
      AdModule?.actions?.reqAdInfoList()
      HomeModule?.actions?.getBubbleList()
    },
  }
)

在页面初始化时执行 StartModule?.actions?.init(),将核心接口优化执行,通过控制接口请求顺序,签到业务在此提升了大致 6-8% 的首屏渲染速度。

十、字体使用和优化

字体加载和优化是前端开发中的一个重要问题,特别是在移动端和低网络状况下。下面是一些字体加载和优化的技巧。

FOUT问题

通过设置 Font-Display 属性可以控制字体加载时的显示效果,包括 Auto、Swap、Block、FallBack 和 Optional 几种模式,可以减少字体加载时间和防止文本闪烁。

设置属性为FallBack时效果: 

33.gif

可以看到日期存在明显的 FOUT(无样式文本闪现)问题,设置 Swap 也是类似效果,并不符合预期。

设置属性为 Block 时效果: 

22.gif

可以看到第一时间并没有渲染日期,而是有点的短暂空白,因为其可以避免 FOUT,字体文件必须在后台下载完全后,文本才能显示。

最终选择了 font-display: block;效果会更好一些。

注意,并不是整个页面都使用 Block 属性,对于一些非首屏关键渲染的样式,使用 fallback 更为合适一些,因为其会使用浏览器默认字体,所以还是需要结合业务、场景合理使用。

字体库大小,你得懂

先看一个 GPT 对于签到业务常用字体库打下的统计:

DIN Condensed 字体库的大小在几百KB 到几MB之间 Helvetica Neue 字体库的大小在几MB到十几MB之间

也就是这两种字体的大小,如果不加以处理,全部加载的大小在几 MB 到十几 MB 之间,对于前端项目而言,这是挺夸张的一件事。

可以和设计人员沟通,将字体库中常用的字体导出,前端项目仅仅引入需要的字体就好,比如 DIN Condensed 字体都是使用在阿拉伯数字上,并不会在其他字上使用,那么只需要将阿拉伯数字导出即可。比如汉字,根据《现代汉语通用字表》(GB/T 13000-2018),常用汉字(包括简体字和繁体字)共计 3500 个,其中常用的一般是指前 1000 个左右的汉字,那么在使用字体库的时候,是不是可以默认只需要导出部分即可。

经过处理后的字体库大小如下图:

0981.png

字体库数量,你得控制

上面说了一个字体库的大小是多大,就算是经过处理,最少也会有 30KB 大小,所以项目引入的字体种类是需要控制的,不能设计同学使用了多少种类字体设计,我们就要照单全收。

当设计同学新增字体库时,如果字体使用在 3 次以内,是不是可以使用图片来代替文字,或者使用现有的字体库来平替。

十一、慎用三方库

业务中存在一些简单的校验、转换和动效并不需要引入三方库,尤其是因为一个较为简单的功能引入了一个较为大且冷门的库时,不仅会增加项目的打包体积,还会增加项目后续维护的沟通、学习成本。

例如下面一个简单切换动效: 

210.gif

是一个比较常规的切换动效,却在项目中引入了一个第三方库来实现,该库的使用也是有一些学习成本,因为其具备实现比较复杂的动效能力,在业务动效具备一定复杂度且非首屏的场景下,是可以考虑引入使用的,否则类似这种首屏便需要加载的动效,还是慎重。

上述的切换动效 CSS 实现代码如下:

@keyframes bigScale {
  0% {
    opacity: 0;
    transform: scale(0.95);
  }

  to {
    transform: scale(1);
    opacity: 1;
  }
}

@keyframes smallScale {
  0% {
    transform: scale(1);
    opacity: 1;
  }

  to {
    transform: scale(0.95);
    opacity: 0;
  }
}

.squareInCenter {
  animation: 0.3s linear 0s 1 normal forwards running bigScale;
}

.squareOutCenter {
  animation: 0.3s linear 0s 1 normal forwards running smallScale;
}

在业务开发的过程中,尤其是 C 端的页面,在实现功能时对于引入额外的库是一件需要十分谨慎的事情,在内部就看到不少项目在引入关于日期处理方面的库时,DayJS、MomentJS 同时都会引用到项目中,B 端项目都不能忍,更何况 C 端项目。

十二、总结

本文仅仅介绍得物前端增长团队在互动游戏侧一些体验优化实践心得,后续还在不断迭代和优化,将实践经验应用扩大至多个业务中,将整个互动游戏性能体验优化至 TOP 级别。

*文/来骏

本文属得物技术原创,更多精彩文章请看:得物技术官网

未经得物技术许可严禁转载,否则依法追究法律责任!

相关推荐

压测AI Agent 治理与评测调优实践|得物技术

本文介绍智能分析Agent在压测调试中上线后的治理闭环建设:通过Langfuse记录完整执行链路,结合用户反馈与Trace还原问题根因;利用CLI Mock固化证据数据集,实现相同场景下的回测验证。基于固定案例与五档评分机制,持续评估方案质量、延迟与成本,确保修复有效且无新问题引入,推动Agent能力迭代优化。

SmartCodeTech的博客 309

从中心调度到自驱协作多 Agent 架构的三次反转|得物技术

本文探讨多Agent系统中的控制权分配问题,提出三大协作架构:Master Agent(中心调度)、任务看板(共享状态)与Advisor(轻量咨询)。通过划清上下文边界与模型边界,强调应以信息相关性而非职业标签划分Agent。三种模式分别将决策权集中于中心、下放至共享状态、再下沉至执行者,形成控制权逐步下沉的演进路径。案例显示,合理设计可提升复杂任务的并行性、弹性与可维护性。

SmartCodeTech的博客 420

Jev 实战:为AI工作流引入轻量决策层 x10倍提速|得物技术

完成这三个场景后,我对适用边界有了更明确的认识:它们都可以先定义答案范围,再根据判断结果驱动下一步操作。接入时,我会优先明确输入、选项、采纳条件和兜底路径,再评估Jev是否适合承担这一环节。结合这些实践,我更容易理解Jev(TypeSafe System One)作为专用结构化决策模型不生成自然语言,而是返回带概率的判断结果。后续接入时,我会继续从脚本中边界明确的判断任务开始,分别验证准确性、耗时和费用,再决定是否扩大使用范围。下面整理了相关能力、限制和接入要点,便于查阅。

SmartCodeTech的博客 345

国产算力·昇腾 910C 大模型推理优化(下):源码修改与算子优化,提速30%|得物技术

本文延续上篇,深入vllm-ascend源码优化:通过多流重叠实现MoE共享专家并行计算,消除冗余事件开销,并解除与FUSED_MC2的互斥限制,实现c=1下TPOT从8.2ms降至8.0ms;优化decode阶段host侧开销,引入状态跟踪跳过冗余拷贝;设计Block Table CPU快路径,规避小batch下NPU kernel启动延迟;针对GDN层融合L2Norm至recurrent kernel,减少算子调用与内存往返。综合优化后推理性能显著提升,形成可复用的昇腾910C大模型推理优化方法论。

SmartCodeTech的博客 244

国产算力·昇腾 910C 大模型推理优化(上):镜像更新与参数调优,提速 40%|得物技术

文中详细给出每一项优化的动机、实现(含具体源码改动路径与关键代码片段)、验证数据与踩坑记录(包括十余项实测无效或负向的尝试),希望为同样在国产算力上做推理优化的团队提供一份可直接复用的工程参考。

SmartCodeTech的博客 225

动态规则的 Agent 实践:用确定性工程驾驭 LLM 的资产智能验收

面对财务验收中规则多变、材料非结构化、核对复杂等痛点,传统规则引擎难以应对。系统采用“规则即配置”思路,由大语言模型(LLM)负责理解合同、扫描件等非结构化材料并执行语义比对,工程系统则保障流程编排与可追溯性。通过异步处理、幂等设计、三类流量隔离及双通道(文本/图像)处理,实现高效稳定运行。结合用户反馈构建自动标准答案,辅以试跑、回测与发布门禁机制,形成闭环质量体系。底层采用确定性工作流架构,确保行为可预期、可测试,真正实现灵活规则的快速迭代与安全上线。

SmartCodeTech的博客 344

发一张图,它居然“跃“出屏幕了?一文读懂得物 3D 空间图片技术实践

3D 空间图片功能的落地,涉及模型生成、内容分发、客户端渲染之间的一系列取舍。本文重点分享如何生产出高质量、小体积的模型,以及如何在手机上流畅运行。

SmartCodeTech的博客 555

别再只卷向量检索了,得物交易搜索如何用“生成式”实现召回范式跃迁?

你搜"af1",它得给你"空军一号"。这一年,得物交易搜索把召回从"做选择题"改成了"写答案"——不再从商品池里"找"最像的,而是让模型自己"生成"你真正想要的。从 LLM 语义索引到 HLLM、语义 ID,搜索是怎么从"检索"走向"生成"的?

SmartCodeTech的博客 594

指标平台:从语义底座到智能消费的实践路径|得物技术

这篇文章想做的,不是在本体化的宏大叙事上再叠加一层理论,而是把我们在真实落地中验证过的路径讲清楚:语义底座怎么从零建立起来、怎么保证质量不失控、怎么支撑 Text2SQL 和 AI Coding 两条消费主线,以及沿着这条路径往前走,下一步该往哪个方向发力。

SmartCodeTech的博客 316

企业级 MultiAgent 落地:Plan 模式与主子 Agent 协作|得物技术

基于 AgentScope Java 的企业级 MultiAgent 平台,为研发、数据分析和知识问答等场景提供统一的模型调用、工具接入、任务编排、流式输出与运行追踪能力。

SmartCodeTech的博客 302

得物小摊 AI Native 演进实录:用 Harness 构建可控 AI 交付

AI Coding 一个人用很顺手,进了团队就漏:指令没人审、经验难沉淀、过程看不见、链路不闭环。作者团队基于 Multica 做了 EP-Harness,把 Agent 当成员管,给它套一层可执行、可观察、可治理的 Harness,并让反馈闭环。成果:可追溯决策、多 Agent 协作,高频异常从每 4 小时 2400 多条降到个位数,对得物技术补上团队级 AI 协作关键一环。

SmartCodeTech的博客 542

企业级 MultiAgent 的记忆系统:短期上下文与四层记忆架构实现|得物技术

在 MultiAgent 平台中,Agent 的"记忆"能力是实现智能对话和个性化服务的核心资产。本文深入剖析 Agent 记忆系统的设计理念与实现细节,重点解析长期记忆架构的写入与加载流程,涵盖 LLM 智能判断、语义检索、Token 预算控制、冲突处理等关键技术,为开发者提供完整的技术实现参考。

SmartCodeTech的博客 502

EP-Harness:从个人 AI Coding 到团队级 Agent 工作流|得物技术

AI Coding 个人用得爽,一到团队就崩。EP-Harness 把 Agent 从聊天工具变成团队协作成员——可管理、可追溯、可闭环。落地后高频异常从 2400+/4h 收敛到个位数。

SmartCodeTech的博客 694

得物知识问答:复合检索 Agent 的系统设计实践

从"搜到什么用什么"到"搜→筛→挖→验"自主决策闭环——我们造了一个有判断力的 RAG Agent,不是套壳。

SmartCodeTech的博客 734

实战从零开始构建一个Coding Agent:Violin |得物技术

理解了 coding agent 的构建原理,也就掌握了理解其他 agent 的一把钥匙。笔者对每天都在使用的 agent 原理很感兴趣,于是决定自己写一个:violin。

SmartCodeTech的博客 927

AI Native 交易核心系统的研发范式|得物技术

如何改造旧研发流程适配 AI 编码?本文提出五道标准化关口治理思路,依托 Claude Code Spec-Driven 插件打通需求澄清、方案设计、TDD 落地、门禁管控与埋点监控,构建带人工确认门控的完整工作流,以五层自底向上架构实现 AI 编码规范化落地。

SmartCodeTech的博客 975

推荐系统体验的数字化突破:得物自动化评测平台的技术实践|AICon 文章整理

「得物推荐 AI Harness 工程化实践系列」的末篇内容,本系列共三篇连载。本篇(末篇)详解得物推荐评测平台的完整技术体系:从主观体验量化到大模型自动化评测流水线,涵盖多维度指标设计、人机协作提示词校验闭环、分布式任务调度与成本精控等核心工程实现,以及单周百万级审计需求下实现 91% 资源成本优化的工业级落地实战细节。

SmartCodeTech的博客 1494

RAG 核心概念与原理:Chunking、Embedding、相似度、HNSW 与多路召回|得物技术

决定 RAG 效果的关键不在大模型,而是文本切块、查询改写、多路召回与精排。合理切块存好知识库内容,向量匹配抓语义、BM25 匹配关键词互补。先优化用户提问,快速召回一批相关文档,再用精排模型精细筛选,整套检索流程配合到位,问答准确度才会明显提升。

SmartCodeTech的博客 1079

从“机械应答“到“服务伙伴“:得物高可控智能客服的 Agent 工程实践|AICon 演讲整理

本次分享围绕以下核心技术展开:客服 Agent 挑战与架构设计(Single-Agent→Multi-Agent→Harness);高可控性数据飞轮(PE 自动化 + DPO 训练);RL 策略训练和人工经验对齐;多轮半双工消息流控制。

SmartCodeTech的博客 749

得物推荐系统诊断 Agent:从 “调接口” 到 “会思考”|AICon 演讲整理

本文是得物技术专家在 AICon 上海演讲整理的技术实录。AICon上海2026_全球人工智能开发与应用大会暨大模型应用生态展_InfoQ技术大会「得物推荐 AI Harness 工程化实践系列」的中篇内容,本系列共三篇连载。本篇(中篇)进一步详解得物推荐复杂业务场景下,AI代码从生成、防护校验到安全上线的完整技术体系、自研AI Harness整体架构框架、全流程安全防护机制、混合智能体核心算法实现,以及工业级工程落地的实战细节。

SmartCodeTech的博客 1364

得物 OceanBase 落地实践

得物选型OceanBase多模数据库应对业务挑战,通过验证其高可用架构、存储压缩技术及混合负载处理能力。测试显示OceanBase在复杂查询场景性能较MySQL提升130-200倍,在高并发TP/AP混合场景表现优异,存储成本降低40%+。通过DBA内部报表业务试点验证其稳定性后,逐步推广至核心业务场景,优化数据库技术栈,实现性能与成本的双重收益。

SmartCodeTech的博客 1383

AI UITester:AI Native 的 UI 自动化测试新范式|得物技术

ai_uitester 代表了 AI Native 的 UI 自动化测试新范式:这不仅是工具的升级,而是测试范式的转变 ------ 从 "代码驱动" 转向 "视觉驱动",从 "人工调试" 转向 "AI 自愈",从 "三端分离" 转向 "统一抽象"。

SmartCodeTech的博客 779

从狂野代码到按目标生产:得物推荐 AI Harness 的工程化实践|AICon 演讲整理

本文是得物技术专家在 AICon 上海演讲整理的技术实录。「得物推荐 AI Harness 工程化实践系列」的开篇内容,本系列共三篇连载。将系统拆解得物推荐复杂业务场景下,AI 代码从生成、防护校验到安全上线的完整技术体系,逐一详解自研 AI Harness 整体架构框架、全流程安全防护机制、混合智能体核心算法实现,以及工业级工程落地的实战细节。本篇(上篇):将整体介绍团队自研的 AI Harness 体系,包括建设思路、全生命周期防护机制、混合智能体架构及落地效果。

SmartCodeTech的博客 1080

从表单到 Agent:得物社区活动搭建的 AI 实践之路

一场营销活动从策划到上线,运营要在三个系统间跳转 10 + 次、填写 40 + 个字段。我们用 AI 重新设计了这条链路 —— 从 “AI 帮你填表单” 到 “两阶段 Agent + 聚合工作台”。这篇文章记录的不是技术细节,而是这条路上的选择和反思。

SmartCodeTech的博客 744

从埋点需求到规则资产:Hermes Agent 重构得物数仓工作流

埋点和指标需求中,消耗数据承接方的不是生成答案,而是补齐证据链、对齐历史口径、识别下游影响,并在生产写入前留下可追溯的确认记录。本文数据承接方指承接业务需求的数据同学或业务合作伙伴;后文讨论内部研发、元数据、查询和门禁能力在流程中的角色。

SmartCodeTech的博客 656

让 Claude Code 拥有自我进化和记忆系统|得物技术

本文记录了为 Claude Code 构建的一套持久化记忆与自我学习系统的设计思路与实现细节。这套系统让 AI 助手能够跨越会话边界记住用户习惯,并在每次对话结束后自动提炼行为规律和系统信息,通过向量检索快速提取关键信息,下一次对话时主动应用,逐步进化为更懂你的编程伙伴。

SmartCodeTech的博客 994

用 LLM Agent 重构告警排查流程|得物技术

告警排查需频繁切换日志、APM、链路追踪等多个平台,耗时 10~30 分钟,且高度依赖个人经验。我们做了 Troubleshooter——用 LLM Agent 自动完成数据采集、根因分析和处置建议生成。上线后中位数排查耗时从 20 分钟降到 4.4 分钟,覆盖 11 个服务和 10+ 种告警类型。

SmartCodeTech的博客 1007

HorizonVault 技术深潜:如何在 HDD 上做出 100GB/s+ 级大吞吐分布式存储|得物技术

HorizonVault是一款面向Kafka远程存储的高吞吐分布式存储引擎,通过分布式并行写入和状态感知调度解决冷数据存储的三大核心问题:吞吐瓶颈、性能抖动和恢复能力。系统采用分层架构,Meta负责全局资源调度,Broker处理请求路由,Store实现本地磁盘管理,形成完整的写入治理链路。通过将HDD磁盘提升为一等资源,实现顺序追加写入、多盘并行和慢盘隔离,在保证高吞吐的同时控制延迟。存储结构采用DiskStore组织磁盘资源,LogSegment顺序写入数据,IndexSegment定位读取,Change

SmartCodeTech的博客 892

Claude Code Harness 工程:数仓侧落地方案|得物技术

Harness 工程通过职责分层实现研发流水线可靠性提升。Claude 负责需求理解与代码生成等语义层工作;hooks 负责规范检查等确定性执行;Subagents 隔离血缘查询、自测等高 token 操作;Memory 承载跨会话状态持久化。四层协同使数仓 AI 开发从"对话式辅助"转变为"规则驱动的自动化流程"。

SmartCodeTech的博客 1101

BP Claw 破解 AI 编码输入难题 ——FlinkSpec 需求智能化实践|得物技术

本文为 FlinkSpec 系列之开篇,亦是这场工程化变革的序章。BP Claw 所立之处,不过链路之源。FlinkSpec 所图,乃以 AI 之力,将实时数仓从需求落地至验收上线的全程工序,熔铸为一套精密自洽、生生不息的智能工程体系。宏图未竟,后续系列将逐章揭幕,敬请期待!

SmartCodeTech的博客 1039
上一篇: SpEL应用实战
下一篇: 2024首场沙龙|上海 · 得物技术沙龙-「稳定生产」专场报名开启!
得物技术
得物技术 得物技术官方账号 得物技术官方账号
博客等级 码龄6年 2492粉丝 408原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值