news 2026/10/1 2:00:11

给Agent装上判断器:Laya决策+Jev校验,构建可预期的智能体

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
给Agent装上判断器:Laya决策+Jev校验,构建可预期的智能体

最近不少朋友在聊 Agent,从简单的“工具调用”到复杂的“多步任务编排”,聊着聊着就发现一个很现实的问题:大家给 Agent 堆了很多工具、写了一大篇提示词,可真正跑起来的时候,往往是第一步分析得头头是道,第二步就开始卡壳,第三步干脆给了个错误结果还当作成功返回。

我最近在项目里换了思路——给 Agent 单独加一个“判断器”。说白了,就是在 Agent 的执行链路里安排一个专门的模块,负责在关键时刻做裁决:这一步该调哪个工具,这个输出能不能信,任务应该继续做还是停下来换条路。这个思路直接让我把 Laya 和 Jev 这两个模型都拉进来用了。Laya 负责决策规划,相当于给 Agent 装了一个“上层大脑”;Jev 负责代码推理与执行判断,让 Agent 在写代码、查数据、执行命令时不至于瞎跑。

这篇文章把判断器的思路、Laya 和 Jev 的分工、部署方式、选型建议,以及我实际踩过的坑一起整理出来。如果你是正在做 Agent 开发的工程师,或者打算给现有 Agent 加一层稳定性的判断模块,可以参考这里的做法。不一定适合所有场景,但大概率能帮你少走几周弯路。

1. 为什么 Agent 需要“判断器”

1.1 Agent 的循环困境:生成太容易,判断太难

现在市面上主流的 Agent 框架,本质都是一个循环:大模型生成下一步动作,执行工具,观察返回结果,再生成下一步。这个循环看似简单,但真正跑起来会发现一个严重的不对称——生成一个动作太容易了,但判断这个动作对不对、结果可不可信,几乎全凭大模型“临场发挥”。

举一个常见的例子:你让 Agent 查一下最近一周的销售数据。Agent 决定调用数据库工具,执行了一条 SQL,数据库返回了空结果。正常来说,正确判断是“查询没数据,需要检查表名或时间范围”,但不少 Agent 会把“空结果”当成“没有销售额”,直接给出一个误导性的总结。这就是典型的“生成与判断失衡”——模型很会生成文字,但不会判断自己的行动是否真的达成了目标。

我给判断器下的定义就是:在 Agent 的每一步行动前后,加入一个独立的裁决环节。行动前,它决定该不该做、怎么做;行动后,它评估结果是否可信、是否满足约束。这个环节不参与具体的文本生成,只输出决策和评分。把判断从生成里剥出来,是 Agent 稳定性的关键一步。

1.2 “判断器”到底判断什么

在项目里,我把判断器的职责拆成了四类,这样比较好落地:

  • 意图判断:用户输入的目标是否真的被理解了。比如用户说“帮我看看服务器状态”,Agent 是要执行 SSH 命令还是读取监控 API,意图判断会决定它往哪走。
  • 工具选择判断:面对多个可用工具,选哪个、不选哪个。这一步比想象中难,因为很多模型的“工具选择”其实是提示词里的惯性,而不是基于当前状态的推理。
  • 结果校验判断:工具返回的数据是否有效、是否完整、是否符合预期的格式。这一步是判断器最容易发挥作用的地方,比如 SQL 空结果、API 超时、命令报错,都需要专门校验。
  • 终止判断:Agent 是继续执行、重新规划,还是停下来把结果交给用户。没有终止判断的 Agent,很容易陷入“循环调工具但永远不给结论”的死循环。

你可能会说,这些事让大模型自己判断不就行了?问题是,通用大模型太容易被上下文带偏。它看到前一步自己写的分析,往往会顺着往下走,而不是跳出来客观评估。一个独立的判断器,恰恰因为它不参与生成,反而更容易做出“冷酷”的判断。

1.3 Laya 和 Jev 在判断链上的位置

我把 Laya 和 Jev 定位在判断链的不同层级。Laya 更像“行动前决策器”,输入当前状态、目标、可用工具列表、历史记录,输出的是“下一步该做什么”;Jev 更像“行动中裁判员”,专注于代码、数据、系统命令层面的正确性判断,比如生成一段 SQL、判断一段脚本的执行风险、审查一次代码变更是否可靠。

简单来说,Laya 回答“要不要做、先做哪件事”,Jev 回答“这件事做得对不对、代码有没有问题”。两者配合起来的逻辑是:先想清楚,再动手;动手之后,还能自我检查。这样 Agent 就不会像个无头苍蝇一样反复横跳了。

2. Laya:Agent 决策规划的上层大脑

2.1 Laya 到底是一个什么样的模型

很多人在搜“Laya 模型”“Laya 决策”,这说明大家已经注意到,Agent 的决策层不应该继续依赖通用对话模型。Laya 就是这一类“决策专用模型”的代表。它不做长篇大论的内容生成,而是聚焦在“下一步动作的推理与规划”。

我理解 Laya 的设计思路是:把决策问题形式化。输入是一段结构化的状态描述(包括目标、环境信息、工具清单、历史动作序列),输出是一个决策对象——动作名称、参数、优先级、预计检查点。它相当于把“Agent 下一步应该做什么”变成一个可解析、可验证的结构化问题,而不是让模型自由发挥写一段话。

这里要提醒一点:Laya 不是替代大模型做回答,而是替代大模型做“决策前的推理”。比如在一个客服 Agent 里,用户问“我的订单为什么还没发货”,Laya 的职责是判断第一步应该查订单接口还是查物流接口,而不是直接生成一段客服话术。生成话术的事继续交给大模型,但决定“该查什么”的事,交给 Laya。

2.2 把 Laya 接入 Agent 的决策层

我在项目里给 Laya 设计了一个很薄的包装层。核心逻辑是:Agent 每一次需要做选择的时候,控制器把当前状态压缩成一段 JSON,调用 Laya 的决策接口,拿到结构化决策后再执行对应工具。伪代码如下:

import json def decide_with_laya(state: dict, tools: list, history: list) -> dict: # 1. 组织决策上下文 prompt = build_decision_prompt( goal=state["goal"], current_state=state["snapshot"], tools=tools, history=history[-5:] # 只保留最近 5 步,避免上下文膨胀 ) # 2. 调用 Laya 决策接口 raw = laya_client.decide(prompt=prompt, temperature=0.0) # 3. 解析为结构化决策 decision = parse_decision(raw) return decision def build_decision_prompt(goal, current_state, tools, history): return ( f"目标:{goal}\n" f"当前状态:{json.dumps(current_state, ensure_ascii=False)}\n" f"可用工具:{json.dumps(tools, ensure_ascii=False)}\n" f"最近历史:{json.dumps(history, ensure_ascii=False)}\n" f"请输出决策 JSON,格式为 {{\"action\": \"工具名或特殊动作\", \"params\": {{}}, " f"\"check_points\": [\"执行前检查项\"], \"priority\": 1}}" )

这里有个细节值得注意:temperature必须设成 0,或者尽可能低。判断器要的不是“想象力”,而是“确定性”。如果决策模型每次给的行动计划都不一样,那下游所有环节都会跟着不稳定。

parse_decision里一定要做容错处理。模型可能输出不合法 JSON,也可能多输出几句解释。我的做法是:先尝试直接json.loads,失败后再用正则提取 JSON 片段。如果还是失败,就让控制器走默认分支——不执行任何工具,把当前状态返回给用户。宁可少做事,也不能做错事。

2.3 实际使用中的决策质量评估

用 Laya 之后,我养成了一个习惯:每次决策都留日志,然后定期评估决策质量。我主要看三个指标:

  • 决策有效率:决策出的行动真正帮助任务前进的比例。如果一个 Agent 连续三次决策都在调同一个失败的接口,那说明判断器的上下文里缺了“该接口已失败”的信息。
  • 决策周转时间:从状态输入到决策输出的延迟。Laya 如果部署在本地,这个时间通常在几百毫秒到 1-2 秒之间;如果走远程 API,还会加上网络延迟。周转时间太长,会拖垮整个 Agent 的响应速度。
  • 回退率:Agent 执行完动作后,被校验环节“打回”的比例。回退率太高,说明判断器的行动前决策质量不够——它在行动前没预见到可能失败的风险。

我自己的经验是,决策有效率如果能稳定在 80% 以上,后续的任务成功率会明显改善。低于 60% 的话,问题往往不在 Laya,而在喂给它的状态信息不完整。这时候要做的不是换模型,而是把状态快照的字段补全。

3. Jev:代码生成与执行的底层判断器

3.1 Jev 的本质:不只会写代码,还会“证明”代码

聊完 Laya,再聊 Jev。热词里大量出现“Jev 模型”“Jev 模型官网”“Jev 密钥”,这说明很多人已经在尝试把它用到自己的流程里。Jev 给我的感觉是:它不是一个普通的代码生成模型,而是一个偏向“代码推理与验证”的模型。普通代码模型擅长从注释生成函数,Jev 更擅长判断一段代码是否真的可靠。

我拿它做过一件很实际的事:代码审查。把一段改动过的代码 diff 发给 Jev,让它指出潜在的问题,包括边界条件、类型错误、资源泄漏、并发隐患。试验下来,它对结构化的问题非常敏感,尤其是那种“看起来能跑但逻辑上经不起推敲”的代码,Jev 能给出很具体的怀疑点。

还有搜索热词提到的“斯坦福教授用 Jev 构建数据系统”,这个方向也说得通。数据系统对代码正确性的要求极高,一点小错误就可能导致数据不一致。Jev 这种偏“证明”思路的模型,天然适合跟数据管道、SQL 生成、数据校验这类场景配合。

3.2 在 Codex 与现有工具链中接入 Jev

热词里有“Jev 在 Codex 中使用”,这一点应该会引起不少人的兴趣。Codex 是 OpenAI 出的编码 Agent 工具,它本身就是一个会写代码、会跑命令、会自查循环的 Agent。但 Codex 默认的推理后端并不一定适合所有项目需求,尤其当你想让它更“较真”地对代码做推理时,接入 Jev 是一个很自然的想法。

接入方式要看 Codex 当前版本的配置能力,通常是通过 config 文件指定模型提供方和模型名。思路类似于:

# 以配置项为例,具体参数名以实际版本为准 model_provider = "jev-provider" model = "jev-prover"

如果你的项目不是基于 Codex,而是用别的 Agent 框架,接入 Jev 也不复杂。我常用的一种方式是:保留原有 Agent 执行链路,但把“代码验证”这一步抽出来,交给 Jev 独立完成。比如 Agent 生成一段 SQL 后,先不直接执行,而是把 SQL 发给 Jev 做一次风险审查,确认没有明显的注入风险、语义错误后再执行。这一步虽然增加了一次调用开销,但换来的是稳得多的执行结果。

还有一点,Jev 不只适合“写代码”阶段。在数据系统场景里,它也可以用来校验数据转换脚本、检查 ETL 任务的边界逻辑。我的原则是:凡是要动数据的地方,前置一个 Jev 校验,都能减少大部分低级事故。

3.3 Jev 密钥申请与 API 调用注意事项

很多人在搜“Jev 密钥”“Jev 模型申请”,如果 Jev 走的是官方 API 渠道,那你需要先申请访问权限,拿到的密钥通常有配额限制。这里有一个非常关键的经验:不要把密钥写在 Agent 的提示词里,更不要塞进工具参数中。密钥要走环境变量或密钥管理服务,在调用端注入到请求头里。

import os from jev_client import JevClient client = JevClient( api_key=os.environ["JEV_API_KEY"], # 从环境变量读取,而不是硬编码 base_url=os.environ.get("JEV_BASE_URL", "https://api.jev.example.com") ) # 校验一段 SQL result = client.verify_sql( statement="SELECT user_id, count(*) FROM orders GROUP BY user_id", dialect="postgresql", checks=["syntax", "semantic", "risk"] )

如果你不想申请密钥,或者所在团队对数据出境有要求,可以选择社区开源的 Jev 变体。很多模型官方会放出开源版本,或者有第三方做兼容实现,你可以用 Ollama 这类工具本地跑起来。这样既保留了 Jev 的“判断”逻辑,又不依赖外部 API。不过要注意,开源变体和官方的能力差距是真实存在的,尤其是复杂推理场景下,本地小参数量的变体可能达不到预期。这个在选型的时候要有心理准备。

4. 部署方案与选型指南

4.1 本地部署与 API 调用的取舍

我遇到的第一个选择就是:Laya 和 Jev 到底是调用别人提供的 API,还是自己本地部署?这没有一个标准答案,完全取决于你的场景。下面是我做决策时反复参考的对比表:

对比项本地部署API 调用
初期成本需要 GPU 或高性能服务器,成本高按量付费,小规模场景更便宜
延迟内网调用,延迟低,可控受网络影响,高峰期有波动
数据隐私数据不出内网,适合敏感业务数据经过第三方服务,需评估合规性
可控性可以微调、换版本、自定义提示词版本更新由服务方控制
维护成本需要自己管运维、监控、版本升级运维成本几乎为零

我做项目时的一般倾向是:原型验证和低延迟要求不高的场景,先用 API 跑通流程,把判断器的逻辑调对;确认逻辑稳定后再考虑本地部署。不要一上来就买显卡,因为大部分 Agent 不稳定的问题,根本原因根本不是推理速度,而是判断逻辑没设计好。

4.2 用 Ollama 本地部署 Laya 和 Jev 的实操流程

Ollama 是目前本地部署大模型最省事的工具,很多人在搜“Ollama 本地部署”“DeepSeek 本地部署”,其实同一个工具也适合跑 Laya 和 Jev 的开源版本。下面是完整的操作流程:

第一步,安装 Ollama。这一步没什么稀奇,去官网下载对应系统的安装包即可。安装完成后在终端里确认版本:

ollama --version

第二步,拉取模型。以某个开源版本的模型名为例:

ollama pull laya-decision ollama pull jev-prover

第三步,如果默认版本不满足你的场景,可以用 Modelfile 自定义。比如我想让 Jev 在返回答案时永远输出 JSON,方便下游解析,可以在 Modelfile 里写:

FROM jev-prover SYSTEM """ 你是一个代码推理与验证器。你只接收代码或数据相关的问题, 输出必须是严格 JSON 格式,格式为: {"verdict": "pass|risk|fail", "reasons": ["原因1", "原因2"], "suggestions": ["建议1"]} """

然后构建并运行:

ollama create jev-prover-json -f ./Modelfile ollama run jev-prover-json

第四步,把 Ollama 的接口接到 Agent 里。Ollama 默认在 11434 端口提供服务,调用方式非常直接:

import requests response = requests.post( "http://localhost:11434/api/generate", json={ "model": "jev-prover-json", "prompt": "请校验这段 SQL 的风险:SELECT * FROM users WHERE id=1 OR 1=1", "stream": False, "temperature": 0.0 } ) result = response.json()["response"]

这里要强调一个我在实践中踩过的坑:Ollama 本地模型的上下文窗口是有限的,默认可能只有 2048 或 4096。如果你的判断器输入里塞了太多历史记录,模型会把前面的关键信息“忘掉”。我的做法是,在传给判断器之前,先用一个固定的模板把状态信息压缩成不超过 1500 字的结构化摘要,再喂给模型。这个细节很大程度上决定了判断器到底准不准。

4.3 在 Jetson Orin 与 RK3588 上的边缘部署

热词里有人搜“RK3588 部署 YOLOv8”“Jetson Orin 本地部署”,说明边缘 AI 这块关注度很高。如果你的 Agent 判断器要跑在边缘设备上,比如机器人的控制板、车载设备、工业控制器,那部署方式会跟服务器上完全不一样。

Jetson Orin 走的是 NVIDIA CUDA 生态,部署比较顺利。流程一般是:先用 JetPack 刷好系统,安装 PyTorch 和 TensorRT,再把模型转换成 TensorRT 引擎,最后用一个轻量的服务框架把模型包成 HTTP 接口。Orin 的内存版本决定了你能跑多大模型,我自己常用的经验是:7B-8B 参数量的量化模型在 Orin 上可以比较流畅地跑,超过这个规模就会明显吃力。

RK3588 的情况不太一样。它是瑞芯微的 SoC,主打 NPU 算力,但软件生态比 CUDA 差一些。部署时要用 RKNN 工具链把模型转换成 RKNN 格式,转换过程中有些算子可能不支持,需要手动调整网络结构或者用 CPU 算子兜底。所以在 RK3588 上,我建议优先选择 1B-3B 的小模型,并且一定做 INT8 量化。

边缘部署的判断器模型如果效果不好,不要马上怀疑模型不行。先检查功耗和散热,模型跑久了降频,推理质量会明显下降。我遇到过几次“同一段输入,白天判断正确晚上就出错”的诡异现象,最后发现是设备过热降频导致的结果波动。

4.4 选型决策表:不同场景到底怎么选

场景推荐方案原因
云端 Agent 原型验证官方 API 调用 Laya + Jev快速迭代,不折腾基础设施
企业内部私有化 Agent本地部署 Laya 决策器 + 官方或开源 Jev数据敏感,需内网闭环
边缘机器人/工控设备量化版 Laya + 轻量规则判断算力和功耗受限,重量级模型不现实
编码 Agent 增强Codex 接入 Jev 做代码审查利用 Jev 的代码正确性判断能力
数据系统建设Jev 校验 SQL/ETL 脚本数据问题前置拦截,减少脏数据

我不是说每个团队都要照搬这个表格,但至少建议做一个类似的梳理。选择不是越强越好,而是匹配链路:你的 Agent 最缺的是“规划判断”还是“执行校验”,决定了你应该重点投入 Laya 还是 Jev。

5. 常见问题与排查技巧

5.1 “Agent execution terminated due to error”这类报错怎么查

这个报错是搜索热词,也是我做 Agent 经常遇到的。很多人一看“terminated”就以为是代码 bug,其实大部分时候是中断机制和判断器配合出问题。我的排查思路是三步走:

  • 看日志尾部:确认终止发生在哪一层。是模型调用层、工具执行层,还是判断器解析层?每层报错的特征不一样。模型层通常是超时或配额不足;工具层通常出现命令退出码非 0;判断器层通常是 JSON 解析失败。
  • 看工具返回:如果 Agent 在调用某个工具后立刻终止,很可能是工具返回了一个异常结构,导致后续解析崩了。我会先单独跑一遍那个工具,确认返回格式是否稳定。
  • 看上下文是否截断:上下文过长被截断也会引发“terminated”。判断器对上下文的依赖很强,被截断后可能输出了不完整的决策,控制器收到后无从执行,只能终止。

这三个步骤能解决我碰到的绝大部分此类问题。

5.2 上下文长度与判断精度问题

判断器对上下文是“吃”得很凶的,但吃进去太多又会消化不良。我见过一个项目,把完整工具调用历史全部传给 Laya,导致模型在小规模任务上频繁误判。解决办法是压缩历史:只保留最近 3 轮动作和结果,外加一个“长期状态快照”。快照里放不会频繁变化的信息,比如用户目标、当前环境、关键标记,比如某个接口已经失败两次了。

另外,判断器的输入结构要尽量保持稳定。我给 Laya 和 Jev 分别设计了固定的输入模板,绝不随便加自然语言描述。结构稳定之后,模型的输出质量也稳定得多。这一点非常值得新手注意。

5.3 密钥管理与 Agent 安全

Agent 安全是我近期比较关注的话题,判断器在这里能发挥很重要的作用。我的观点是:判断器不只是为了让 Agent 跑得稳,也是安全边界的一部分。在给判断器设定输入时,我会加一组合规约束,比如工具白名单、命令黑名单、结果敏感词校验。这些约束可以在模型判断之前先用规则引擎过滤一遍,模型只负责“规则之外”的模糊判断。

关于密钥管理,再强调一遍:不要把 Jev 的密钥放在 Agent 提示词或调试信息里。有个很隐蔽的坑是,Agent 在出错时会把上下文原样打印出来,如果密钥在上下文里就会直接泄露。还有,如果你把 Agent 的日志接入到第三方监控系统,也要确认日志里有没有脱敏处理。密钥该轮换就要轮换,别攒到被薅了才想起来。

5.4 避坑清单

最后整理一个避坑清单,都是我在实践中用真金白银换来的经验:

  • 不要把判断器当成万能工具。判断器只解决“决策与校验”问题,不解决提示词混乱的问题。提示词本身一塌糊涂,判断器再强也救不回来。
  • 对 JSON 输出做容错。无论用 Laya 还是 Jev 还是任何模型,输出非标准 JSON 的概率都不低。解析失败要能优雅降级,不要直接异常导致整个 Agent 崩溃。
  • 白名单比黑名单好用。在判断器的工具建议里,用“明确允许的工具集合”做拦截,比“禁止名单”更安全也更高效。黑名单永远有漏网之鱼。
  • 回退机制必须设计。判断器给出的决策如果执行失败,Agent 要有明确的“二次决策”路径。最忌讳的是执行失败后原地重试同一个工具,大概率只会再失败一次。
  • 日志比模型重要。每个决策、每步执行、每次校验,都要落日志。没有日志就谈不上排查,更谈不上优化。
  • 别一上来就上几百亿大模型。判断器模型的参数量不是越大越好。参数量大,延迟高、成本高、维护难。先从小模型验证逻辑,确需更强推理再升级。
  • 边缘设备先量化再部署。RK3588 和 Jetson 这类边缘设备,不量化就部署大模型,十有八九会爆内存。量化和轻量化应该是第一步而不是最后的优化项。
  • 密钥定期轮换,日志注意脱敏。这两个问题在长周期项目里特别容易放松,一旦出事就是大事。

我个人在实际操作中的体会是:给 Agent 加判断器,最大的收益不是任务成功率提升多少个百分点,而是整个系统变得“可预期”了。以前我看 Agent 日志,经常一头雾水,不知道它下一步为什么做那个决定;现在有了 Laya 的决策记录和 Jev 的校验记录,每一步都有明确的裁决依据,出了问题一眼就能定位到是哪个判断环节漏了。

最后再分享一个小技巧:给判断器加一个“运行中反思”的机制。每次工具执行结束后,让 Jev 对结果做一个临时评分,比如 0 到 1 的置信度;Laya 在下一次决策时会把累计置信度作为输入之一。一旦连续多次执行置信度低于阈值,就让 Agent 主动回退到上一步重新规划,而不是硬着头皮往下走。我实测下来,这个机制对“多步骤任务稳定性”的提升比换更大模型还要明显。判断器不是一步到位的设计,它需要在运行中不断根据反馈调整自己的判断口径,这也是 Agent 系统走向工程化的必经之路。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 2:00:10

线性回归:从房价建模到单层神经网络的深度学习第一课

人工智能深度学习机器学习教程 【免费下载链接】d2l-zh 《动手学深度学习》:面向中文读者、能运行、可讨论。中英文版被70多个国家的500多所大学用于教学。 项目地址: https://gitcode.com/GitHub_Trending/d2/d2l-zh 点击查看 免费下载 导读 线性回归…

作者头像 李华
网站建设 2026/10/1 1:59:57

企业微信外部群机器人消息分类:规则引擎与机器学习协同实现

1. 外部群机器人消息流的真实形态:先搞清我们拿到了什么做企业微信外部群机器人,很多团队的起步姿势都一样:先在群里拉一个自建应用机器人,配上回调地址,然后写一段"收到消息自动回复"的逻辑。听起来很简单&…

作者头像 李华
网站建设 2026/10/1 1:58:36

马德拉群岛徒步全攻略:火山海岛路线、装备与行程规划

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/1 1:57:32

【Linux】常用命令速查

Linux 常用命令速查表查看进程内存映射pmap -x <pid> # 查看进程的内存映射信息查看系统架构uname -m # 查看操作系统架构&#xff08;x86_64 / arm64 等&#xff09;find 查找当前目录及其子目录指定文件find . -name "libt2sdk.so" …

作者头像 李华
网站建设 2026/10/1 1:57:31

性能优化——首屏优化

1. 构建优化&#xff0c;减少资源体积 Webpack / Vite 配置压缩&#xff1a;使用 terser 压缩 JS&#xff0c;cssnano 压缩 CSS。 Tree Shaking&#xff1a;在 Vue/React 项目中确保使用 ESM&#xff0c;剔除无用代码。 代码分割&#xff08;按需加载&#xff09;&#xff1a…

作者头像 李华