2026年2月

贝壳隐藏了 二手房成交价格.

早期 贝壳 app 二手房成交 页面中有一个 价格筛选功能, 虽然 官方隐藏了成交价格,但是通过 价格夹逼 还是能 猜到 具体的成交价格.

现在 新版贝壳 app 已经去掉了 价格筛选功能, 旧版 app 的价格筛选功能也失效了.

大佬们 二手房成交价格 哪里还可以查到? 只能问中介吗?

作者:林润骑(太业)

背景

在多云战略日益普及的今天,企业往往需要在不同云平台部署业务系统,同时又希望将可观测数据统一采集到单一平台进行分析和管理。然而,跨云数据传输的高昂成本成为了企业实施统一可观测性战略的主要障碍。

我们发现,CloudFront 等 CDN 产品的出站流量价格更低,随用量增加还享有阶梯折扣。通过将 CDN 作为数据传输的“跳板”,可以大幅降低跨云传输成本。

基于这一发现,阿里云可观测团队设计了 LoongCollector + CDN 的跨云低成本采集方案:

  • LoongCollector 作为新一代可观测数据采集器,具备 10 倍于同类开源方案的吞吐性能,同时资源占用降低 50% 以上,确保数据链路的高效与稳定。
  • CDN 作为流量出口,利用其价格优势和全球加速能力,在保证传输质量的同时显著降低成本。

本方案可将跨云数据传输成本显著降低,让企业以更低的代价实现统一可观测平台的愿景。

现有方案 & 痛点

image

方案一:纯公网

日志服务 SLS 对外提供公网域名,用户可以直接通过公网将数据发送到 SLS,且 SLS 不收取入站流量费用。

痛点

  • 成本问题:虽然 SLS 不收取入站流量费用,但跨云采集面临源云平台的出站流量费用。以 AWS 为例,数据传输到互联网的费用约为 $0.09/GB,对于大规模数据采集场景,成本不可忽视。
  • 网络质量问题:跨云公网访问受网络波动影响较大,可能出现丢包、延迟增加等问题,影响数据采集的稳定性和实时性。

方案二:纯公网 + SLS 加速域名

SLS 传输加速利用全球分布的云机房,将全球各地用户对日志服务的访问,经过智能路由解析至就近的接入点,使用优化后的网络及协议极大地提升访问速度。

痛点

双重成本:除了源云平台的出站流量费用之外,还需要承担 DCDN 的加速费用,整体成本进一步增加。

方案三:跨云专线打通

通过云服务提供商的专线服务(如 AWS Direct Connect、阿里云高速通道等)建立跨云专用网络连接。

痛点

  • 建设成本高:专线建设需要一次性投入大量资金,包括端口费用、专线租用费用等。
  • 维护复杂:需要专业团队维护专线连接,运维成本高。
  • 灵活性差:专线带宽固定,难以应对突发流量需求。
  • 建设周期长:从申请到开通通常需要数周甚至数月时间。

跨云低成本采集方案

EC2 每月有 100GB 的出站免费额度,但是 CloudFront 的出站和公网访问源站的价格要比 EC2 的价格更低。更重要的是,CDN 产品通常提供分级定价和批量折扣,随着使用量增加,单位成本会进一步降低。通过 CDN 的加速链路,将 SLS 服务设置成源站的方式,我们可以复用 CDN 的转发链路,实现以下优势:

  • 成本优化:利用 CDN 的价格优势,降低数据传输成本。
  • 易于实施:无需建设专线,配置简单,可快速上线。
  • 弹性扩展:按需使用,无需预留带宽,可灵活应对流量波动。

CloudFront 区域数据传输到源站的价格:

image

CloudFront 请求次数价格(每月前 100 万次免费):

image

EC2 出公网价格:

image

以美国地域为例:10TB 的数据,通过 CloudFront 传输,成本比 EC2 直接公网传输可以节约 70%。

整体方案

本方案以 CloudFront 为例,整体的采集方案如图所示:

image

架构概览

AWS EC2(LoongCollector)

  • 部署在 AWS 上的采集/转发程序
  • 主要职责:

a. 从本地/应用采集日志或数据

b. 按 SLS 写入协议组包(HTTP POST)

c. 将数据发送到目标 SLS

CloudFront

  • 作为数据链路的中转入口,提供统一的域名接入点与边缘节点接入能力
  • 主要职责:

a. 接收 LoongCollector 的请求(HTTP/HTTPS)

b. 按行为规则转发到源站(此处源站为阿里云 SLS 的写入端)

SLS(阿里云日志服务)

  • 作为日志/数据接收与存储分析平台
  • 对外暴露 HTTP(S) 写入接口
  • 写入后数据落入指定 Project / Logstore(图中 Project)

SLS ConfigServer(管控端)

  • 用于下发采集配置、心跳、元数据管理、鉴权信息刷新等“控制面”能力
  • 对数据量要求低、实时性要求相对可控

链路分层:管控链路 & 数据链路

A. 管控链路(Control Plane)——直连公网

特点:请求量小、数据量小、对带宽不敏感。

  • LoongCollector 直接通过公网访问 SLS ConfigServer
  • 典型动作包括:

    • 拉取采集配置/规则
  • 选择直连公网的原因:

    • 控制流量小,对成本与链路质量要求不高
    • 架构更简单(减少中转层)

B. 数据链路(Data Plane)——通过 CloudFront 转发到 SLS

特点:持续写入、对稳定性/连通性敏感,可能存在跨境网络波动。

  • LoongCollector 将日志数据以 HTTP POST 方式发送到 CloudFront 域名
  • CloudFront 再将请求回源转发到阿里云 SLS 写入端
  • SLS 接收后写入指定 Project/Logstore

CloudFront 详细配置

这里以采集数据到 SLS 上海地域的 Project 为例。

源配置

image

注意事项:

  1. SLS 的域名不要带 Project 前缀。
  2. CloudFront 访问 SLS 域名,使用 HTTP 或者 HTTPS 都可以。

行为配置

image

image

注意事项:

  1. CDN 默认会缓存响应内容,但 LoongCollector 发送数据是 POST 请求,需要配置为不缓存。
  2. CloudFront 对 SLS 域名的请求,需要转发除 HOST 外所有的 header。

CloudFront 的域名验证

image

直接 Curl CloudFront 域名,如果有如下返回,则说明已配置成功。

{"Error":{"Code":"OLSInvalidMethod","Message":"The script name is invalid : /","RequestId":"XXX"}}

image

LoongCollector 详细配置

使用 HTTP 协议发送数据

# /usr/local/ilogtail/ilogtail_config.json
{
    "primary_region" : "cn-shanghai",
    "config_servers" :
    [
        "https://logtail.cn-shanghai.log.aliyuncs.com"
    ],
    "data_servers" :
    [
        {
            "region" : "cn-shanghai",
            "disable_subdomain" : true,
            "endpoint_list": [
                "http://xxx.cloudfront.net"
            ]
        }
    ],
    ...
}

关键配置说明:

  • config_servers 中,配置 SLS 公网域名,标准格式为 logtail.${region}.log.aliyuncs.com
  • data_servers 中
  • 只需要配置主地域,endpoint_list 中设置成 HTTP 的 CloudFront 域名
  • disable_subdomain: true(关闭子域名转发)

使用 HTTPS 协议发送数据

# /usr/local/ilogtail/ilogtail_config.json
{
    "primary_region" : "cn-shanghai",
    "config_servers" :
    [
        "https://logtail.cn-shanghai.log.aliyuncs.com"
    ],
    "data_servers" :
    [
        {
            "region" : "cn-shanghai",
            "disable_subdomain" : true,
            "endpoint_list": [
                "https://xxx.cloudfront.net"
            ]
        }
    ],
    "enable_host_ip_replace": false,
    ...
}

关键配置说明:

  • config_servers 中,配置 SLS 公网域名,标准格式为 logtail.${region}.log.aliyuncs.com
  • data_servers
  • 只需要配置主地域,endpoint_list 中设置成 HTTPS 的 CloudFront 域名
  • disable_subdomain: true(关闭子域名转发)
  • enable_host_ip_replace: false(关闭 LoongCollector 内部的 DNS 解析)

LoongCollector 资源参数配置

LoongCollector 是部署在 EC2 或者节点上,因此需要预估单机采集的日志的原始数据量,调整资源参数,具体可以参考帮助文档:https://help.aliyun.com/zh/sls/select-a-network-type

image

PS:LoongCollector 进行数据发送的时候,默认采用 LZ4 进行压缩,针对日志数据,可以有 5 ~ 10 倍的压缩效果。

网络质量测试结果

测试场景:

  • 韩国地域 EC2 采集数据到韩国地域 SLS。
  • 数据包压缩后 800K 左右。

image

可以看到在同地域场景下,CloudFront 的访问质量跟直接公网访问基本持平,HTTP 的访问延迟还是略低一些。

限制说明

  • LoongCollector 版本需要>=3.3.0。
  • 目前仅支持日志数据采集,时序、主机监控等数据还不支持通过 CDN 链路发送。
  • 本功能逐步按照地域灰度中,如需使用,可以联系 SLS 技术支持人员。

总结与展望

方案总结

本文介绍的跨云低成本可观测数据实时采集方案,通过 CDN + LoongCollector 的组合,实现了:

  1. 成本降低:相比纯公网方案,显著降低跨云数据传输成本。
  2. 性能提升:利用 CDN 的全球节点和 LoongCollector 的高性能,提升数据采集速度和稳定性。
  3. 易于实施:配置简单,无需建设专线,可快速上线。
  4. 灵活扩展:按需付费,自动弹性扩展,适应流量波动。

LoongCollector 作为新一代统一可观测 Agent,将持续致力于为用户提供高性能、低成本、易使用的跨云数据采集解决方案,助力企业构建统一的可观测平台。

参考资料:

[1] LoongCollector 官方文档

https://github.com/alibaba/loongcollector

[2] AWS CloudFront 官方文档

https://docs.aws.amazon.com/cloudfront/

[3] 阿里云 SLS 官方文档

https://help.aliyun.com/zh/sls/

昨天新开通的账号,今天早上起来一看,已经用了$33.04 。
而且大头竟然是 claude-4.6-opus-high !
这就奇了怪了,昨天开通账号的时候,觉得 4.6-opus 太贵,直接在模型列表中把这个模型关了。所以我无论如何也不可能用到这个模型。

设置里 Agent review 也是关闭的。

最神奇的是:昨天这个时间我还在群里聊天,压根没碰 cursor 。(裂开)

直入正题,我丈母娘 50 多就半身不遂了...
18 线小县城能在封建迷信上一年花几万,但是不愿意去医院看病,天天求神拜佛,信奉各种神佛以及迷信,算命,法事。
我丈人很久前就说过她以后肯定要得大病的,然后她还嘴硬说我得病我也不麻烦你们,她人不坏但是顽固油盐不进,固执的人救不了一点,然后就脑出血了,出血量很大,直接失语+半身不遂,现在全靠我丈人照顾,本来我丈人身体挺好的,这些年也不太行了。
过年的时候去丈人家,很是难受,本来家境还行吧,但是现在过的日子就纯混吃等死的样子,反观我父母这边经常会表示好好保养身体,经常去北京体检,过年的酒桌上也说尽量不给孩子找麻烦,反而是一顿骂我亚健康的状态,紧着催我下楼去散步,心态上差距太大了。

作为现象级的开源 AI Agent 项目,OpenClaw 凭借强大的自主执行能力,正迅速成为能够操作文件、调用系统命令、控制浏览器的“数字员工”。同时,这种能力也带来了一系列的安全风险。例如本地敏感信息外发,执行破坏性高危操作或被远程控制,引发数据泄露、系统损毁、业务中断等严重问题。

针对这些问题,火山引擎重磅推出三层纵深安全防护方案,助力企业构建“安全可控”的数字员工。

  • ·第一层:平台安全,通过访问控制、指令过滤、执行沙箱、技能准入扫描,确保默认安全。
  • ·第二层:AI 助手安全 (AI Assistant Security) ,防范提示词注入、高危操作、敏感信息泄露等导致的风险。
  • ·第三层:供应链安全,提供 Skills 的深度安全检测,避免供应链攻击风险。

平台安全
打造“免疫级”底层环境

火山引擎为通过 ECS 和 Agentkit 部署的 OpenClaw 提供基础安全保障方案,从访问控制、指令过滤、执行环境、安全准入四个维度,构建相应的底层防御能力。

  • ·入口层:默认仅绑定本地端口,减少公网暴露面,强制 token/密码认证及网关鉴权,确保每次访问真实可靠。
  • ·决策层:镜像预置提示词加固策略,自动识别并过滤恶意注入指令,防止 Agent 被“洗脑”或指令篡改。
  • ·执行层:默认在 veFaaS 沙箱中运行,通过容器和网络双隔离机制及非 Root 权限运行,将风险锁定在沙箱内。
  • ·生态层:对镜像和预置 Skills 进行深度扫描检查,持续追踪恶意 Skills 并推动修复。

AI助手安全
打造安全可控的“数字员工”

火山引擎全新发布 AI Assistant Security ,在 OpenClaw 等 AI 助手类智能体的交互环节(如调用大模型、Skills 及工具等),提供针对高危操作、敏感信息泄露、提示词注入等风险的防护和管控。

picture.image

// 三大典型场景,感受安全价值

个人隐私的脱敏和保护:识别身份证号、手机号等敏感信息,严控敏感数据出域,确保个人隐私不被泄露。

高危操作的拦截:在调用工具和技能前,识别如“资金转账、敏感数据外发、文件恶意删除”等高危操作,实现默认阻断或降级为人工确认,避免模糊指令带来不可逆的损失。

提示词攻击的防护:当 AI 数字员工联网访问到恶意网页,其中暗藏的恶意提示词导致 AI 数字员工被远程控制并带来不可控的后果,AI Assistant Security 会提前识别异常并给出安全提示,确保 AI 只执行用户的真实意图。

AI助手安全演示视频

// 快速上手,限时免费试用

目前,火山引擎 AI Assistant Security for OpenClaw 的安全防护方案,面向所有用户开启限时免费试用。

👉 火山引擎客户

  • 已购客户:已购买 OpenClaw ECS 的客户,在云服务器-运维编排-应用更新中点击创建任务,选择安全加固和需要加固的实例,下发任务即可完成防护。

picture.image

  • 新购客户:火山引擎 ECS 标准镜像已自带该防护插件,初始化即拥有安全能力。

picture.image

👉 非火山引擎客户

通过简单的命令自动完成安装。

  1. 1.登入到您部署 OpenClaw 的服务器上执行下方命令,安装插件的命令行工具。
npm i -g @omni-shield/openclaw-cli
  1. 2.安装完成,执行下方命令启动配置流程。
omni-shield-openclaw
  1. 3.安装过程会自动检测环境并生成一个有时效性的登录 URL,通过浏览器访问 URL 跳转登录火山引擎账号,登录完成后,命令行工具自动检测登录状态,自动执行插件的安装和配置流程。
  1. 4.安装完成后,按 Y **重启 OpenClaw 以使配置生效,或执行openclaw gateway restart** 重启正在运行的 OpenClaw 服务,重启后正式生效。

供应链安全
让Skills安全调用

Skills 作为 OpenClaw 的“手”,通过封装特定能力供 OpenClaw 调用以完成复杂任务。然而,随着 Skills 的权限过大及恶意 Skills 的涌现,导致账户凭证外泄、执行木马病毒等安全事件频发。

针对此痛点,火山引擎智能体安全管理平台的扫描功能全面升级,支持对 MCP/Skills 的深度扫描。用户可以自行上传任意 Skills 文件,平台提供预置的扫描规则可对上传的 Skills 进行深度扫描,并输出详细的风险详情,实现了覆盖事前检测、定期巡检、事中拦截的全生命周期安全防护:

  • 风险检测:依托平台预置扫描规则,对 OpenClaw 本地部署的 Skills 进行深度扫描
  • 定期巡检:基于 OpenClaw 的 Cron 机制,支持定期对更新的 Skills 进行自动扫描
  • 动态拦截:当 OpenClaw 的 Skills 被加载时,平台会判断其是否经过扫描。若未经过扫描,平台将即时发起检测,并根据风险评估情况决定是否继续执行

picture.image
(预置扫描规则、上传Skills文件、Skills风险详情)

// 使用教程

目前,火山引擎智能体安全管理平台私有化版本已上线扫描方案,面向所有用户开启限时免费试用。同时,公有云版本将在2月底对外上线,届时欢迎大家体验。

在私有化版本中,对接 OpenClaw 和智能体安全管理平台对 Skills 进行安全扫描,具体操作步骤如下:

  • ·下载智能体安全管理平台的 Skills 扫描安装包; Skills-Security-Scanner
  • ·将上方压缩包解压至 OpenClaw 目录下 ~/.openclaw/workspace/skills/;
  • ·通过 OpenClaw 的对话 Agent 查询 Skills 列表,查看上方 Skills 是否已经被加载;
  • ·通过 OpenClaw 提示词用 Skills-Security-Scanner 对1password(OpenClaw平台自带的Skills)进行扫描;
  • ·通过 OpenClaw 的控制台展现扫描结果,识别潜在威胁。

Skills深度安全扫描演示视频

安全是 AI 真正成为生产力的底线。火山引擎通过三层纵深安全防护方案,助力开发者在享受 AI 效率的同时,无需担心隐私外泄与操作风险。现在,上火山引擎一键安全防护,让你的 AI 助手安全上岗。

发现交通事故的车辆受损情况数据集(1000+张图片已划分、已标注)| AI训练适用于目标检测任务


一、项目背景

随着道路交通量的不断增加,交通事故的发生频率也呈现上升趋势。事故发生后,快速、准确地评估车辆受损情况,对于保险理赔、道路安全分析、交通事故责任判定以及事故风险预警具有重要意义。传统人工评估方法存在效率低、主观性强、覆盖面有限等问题,难以满足现代智能交通系统对数据实时性和精确性的需求。

为此,本数据集专注于交通事故车辆受损情况的识别与分级,面向目标检测与图像分类任务,构建了覆盖多种道路环境与事故类型的高质量图像数据集,可为事故严重程度评估、车辆损伤等级判定及相关智能系统提供可靠的数据支撑。
在这里插入图片描述


数据集下载
链接:https://pan.baidu.com/s/1zYLg1EOwHB-HTBlxQr4w7A?pwd=yhmd
提取码:yhmd

数据集说明
交通事故车辆受损情况数据集

一、数据集简介

交通事故车辆受损情况数据集面向道路交通事故智能分析与车辆损伤等级判定等应用场景构建,适用于目标检测、图像分类及事故严重程度评估等计算机视觉任务。

数据集共包含 1000+ 张真实场景车辆图像,图像来源覆盖多种道路环境与事故形态,能够较好反映车辆在不同事故等级下的受损特征差异。通过对车辆受损程度进行分级标注,可用于训练与评估基于 YOLO 等深度学习模型的事故识别与风险评估能力。

二、数据集配置

数据集共划分 5 个事故等级类别,类别编号与含义如下:

Class ID 类别名称 说明
0 无事故 车辆未发生碰撞或明显损伤
1 轻微事故 轻微剐蹭或小面积损伤,不影响行驶
2 中等事故 明显变形或结构性损伤,影响车辆性能
3 严重事故 车辆主体结构严重破坏,存在较大安全隐患
4 车辆完全报废 车辆严重损毁、翻覆或燃烧,无法修复

覆盖完整事故严重程度梯度

真实道路场景,泛化能力强

结构规范,可直接用于 YOLO
适合教学、科研与工程落地项目

二、数据集概述

本数据集共包含 1000+ 张真实道路交通事故车辆图像,图像来源广泛,涵盖城市道路、高速公路、乡村道路等不同场景,同时覆盖轻微剐蹭到车辆完全报废的全事故等级梯度。每张图像均附带 目标边界框标注与事故等级分类信息,结构规范,可直接用于深度学习模型训练。

📂 数据目录结构

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


三、数据集类别说明

Class ID类别名称说明
0无事故车辆未发生碰撞或明显损伤
1轻微事故轻微剐蹭或小面积损伤,不影响行驶
2中等事故明显变形或结构性损伤,影响车辆性能
3严重事故车辆主体结构严重破坏,存在较大安全隐患
4车辆完全报废车辆严重损毁、翻覆或燃烧,无法修复

特点说明

  • 覆盖完整事故严重程度梯度,便于多等级分类与检测
  • 图像来自真实道路场景,增强模型泛化能力
  • 标注规范、结构统一,可直接用于YOLO等目标检测模型

随着城市交通网络的不断扩张和机动车保有量的快速增加,道路交通事故的发生频率呈现上升趋势。事故发生后,快速、准确地评估车辆受损情况,对于保险理赔、事故责任判定、道路安全管理以及交通事故预警具有重要意义。传统的人工评估方式不仅效率低、耗时长,而且受主观因素影响较大,难以满足现代智能交通系统对实时性和精确性的需求。近年来,随着计算机视觉和深度学习技术的发展,通过图像识别与目标检测实现事故车辆损伤自动识别和等级评估成为可能,这不仅能够提升事故处理效率,还可以为智能交通系统提供数据驱动的决策支持。针对这一需求,本数据集专注于交通事故车辆受损情况的识别与分级,收集了涵盖多种道路环境和事故类型的1000+真实车辆图像,覆盖从轻微剐蹭到车辆完全报废的全事故等级梯度。每张图像均配有规范的目标边界框标注和事故等级分类信息,可直接应用于YOLO系列、Faster R-CNN、SSD、DETR等目标检测模型训练与评估,也适用于图像分类、事故严重程度分析及风险评估等多种计算机视觉任务。该数据集不仅具有科研价值,可支持事故识别算法研究、模型优化及复杂场景下的鲁棒性分析,也具有工程实用性,为智能交通事故分析系统、车辆损伤等级判定和道路安全管理提供了可靠的数据基础,为推动交通安全智能化管理和事故处理自动化提供了有力支撑。

四、数据标注与训练适配

  • 标注类型:目标边界框 + 分类标签
  • 标注格式:YOLO标准txt文件
  • 可直接训练与评估:

    • YOLO系列(v5/v7/v8/v10)
    • Faster R-CNN、SSD、DETR等目标检测模型
    • 图像分类模型(轻量化事故等级判定)

五、适用场景

🚗 智能交通事故分析

  • 事故车辆受损识别
  • 事故等级评估
  • 自动理赔辅助

🛣 城市道路与高速公路安全管理

  • 事故风险统计
  • 事故多发区域分析
  • 交通事故应急调度

🤖 教学科研与模型验证

  • YOLO目标检测教学实验
  • 多等级分类与小样本学习研究
  • 事故识别模型性能测试

六、数据集优势

  1. 多等级事故覆盖:从无事故到车辆完全报废,便于分级建模。
  2. 真实道路场景:增强模型在实际应用中的泛化能力。
  3. 结构规范:训练、验证、测试集划分合理,可直接用于模型训练。
  4. 科研与工程兼顾:适合教学、实验研究及智能交通系统原型开发。

在这里插入图片描述

七、结语

本数据集针对交通事故车辆受损情况进行了精心收集、整理与标注,旨在为智能交通事故分析、车辆损伤等级判定及相关深度学习研究提供高质量数据支持。无论是科研教学、毕业设计,还是工程应用开发,该数据集均可为模型训练与性能评估提供可靠基础,为提升道路交通事故处理效率与安全管理智能化水平提供有力支撑。

总体来看,本交通事故车辆受损情况数据集是一份高度工程化且科研价值兼具的数据资源,覆盖从无事故到车辆完全报废的完整事故等级梯度,充分反映了车辆在不同事故条件下的受损特征差异。数据集包含 1000+ 张真实道路场景图像,涵盖城市道路、高速公路及乡村道路等多样化环境,同时覆盖轻微剐蹭、结构性损伤、严重破坏等多种事故类型,具有较强的泛化能力。所有图像均经过标准化标注,提供目标边界框和事故等级信息,可直接适配YOLO系列、Faster R-CNN、SSD、DETR等主流目标检测模型,显著降低模型训练与实验准备成本。从科研角度看,该数据集可用于多等级事故识别、多类别目标检测、小样本学习及模型鲁棒性分析,支持算法创新与性能优化;从工程应用角度看,它能够为智能交通事故分析系统、车辆损伤等级判定、自动理赔辅助、道路风险统计及应急调度等提供可靠的数据支撑。整体而言,该数据集不仅适用于教学实验、毕业设计及科研论文研究,也为智能交通与事故管理系统的研发与部署提供了坚实的数据基础,是推进交通安全智能化管理的重要资源,为提升事故处理效率、减少交通风险、保障道路安全提供了切实可行的技术支撑。

大家好我是老卫,又到了老卫拆书的时间了。本期我将2026年鸿蒙生态的几本好书分享给大家。

1. 鸿蒙HarmonyOS应用开发入门

由清华大学出版社出版。


一线架构师教你彻底掌握HarmonyOS应用开发。量范例与项目,阅读本书,读者能够学以致用,掌握开发实际应用程序的技能。本书基础与示例相结合,按照边讲边练的思路组织内容。

该书也获得过计算机类畅销新书奖。

2. 鸿蒙HarmonyOS应用开发从入门到精通(第2版)

由北京大学出版社出版。

华为OpenHarmony首席架构师力荐教材:本书通过68个实战示例+4个大型综合性案例+大量即用型优质代码,手把手教你快速掌握核心技术!

3. 仓颉编程从入门到实践

由北京大学出版社出版。


该书是华为官方自研仓颉语言权威指南!本书系统梳理仓颉编程语言的核心特性与设计哲学,是开发者快速上手、深入理解这一面向全场景未来语言的推荐手册。

4. 鸿蒙之光HarmonyOS 6应用开发入门

由清华大学出版社出版。

从零基础到项目实战,掌握HarmonyOS6新特性,资深华为开发者专家带你飞。该书以HarmonyOS 6版本为核心,从基础知识到实战案例,引领读者逐步探索“纯血鸿蒙”原生开发的奥秘。

5. 鸿蒙架构师修炼之道

由北京大学出版社出版。

如果说之前介绍的那几本都是相对比较基础的鸿蒙的入门教程,那么这本《鸿蒙架构师修炼之道》就是面向高端的架构师培养手册。学习本书,可以掌握专家级架构师的思维方式与工作方法。

更多好书分享见我主页。

城市道路设施及道路安全隐患数据集(13000张图片已划分、已标注)| AI训练适用于目标检测任务

一、项目背景

随着智慧城市与智能交通系统(ITS)的快速发展,城市道路的精细化管理成为基础设施建设中的关键课题。井盖缺失、井盖开启、路面坑洞、无标识减速带等问题,不仅影响道路通行质量,还可能引发交通事故。

在自动驾驶、智能巡检车、无人机道路巡检等应用场景中,对道路设施及安全隐患进行实时目标检测与识别,已成为核心技术模块之一。

然而,当前公开可用的道路隐患类数据集相对较少,且类别单一、标注不规范或缺乏完整的数据划分。因此,本数据集围绕城市道路设施与安全隐患目标检测构建,具备:

  • 多类别
  • 标注规范
  • 数据量充足
  • 已完成标准划分
  • 可直接用于YOLO系列训练

为科研与工程应用提供高质量数据支持。
在这里插入图片描述

数据集下载

链接:https://pan.baidu.com/s/1zYLg1EOwHB-HTBlxQr4w7A?pwd=yhmd
提取码:yhmd

数据集说明
道路设施目标检测数据集介绍

本数据集专注于城市道路设施及道路安全隐患的目标检测任务,涵盖常见的井盖、道路坑洞及减速带等设施类型。数据集共包含 约13,000张高质量图像,按训练、验证和测试集划分如下:

训练集(train/images):用于模型训练

验证集(valid/images):用于模型调参与验证

测试集(test/images):用于模型性能评估

数据集包含 5个类别:

井盖(Manhole)

打开的井盖(Open Manhole)

坑洞(Pothole)

减速带(Speed Bump)

无标识减速带(Unmarked Bump)

所有图像均标注了目标的边界框信息,可直接用于目标检测模型(如YOLO系列、Faster R-CNN等)训练与评估。数据集可用于城市道路设施检测、道路安全巡检、智能交通系统及自动驾驶环境感知等研究与应用,为提升城市道路安全和交通管理智能化提供数据支持。

二、数据集概述

本数据集共包含 约13,000张高质量图像,覆盖多种城市道路场景(白天、阴天、不同角度、不同距离等),具有较强的泛化能力。
在这里插入图片描述

📂 数据目录结构

dataset/
├── train/
│   ├── images/
│   └── labels/
├── valid/
│   ├── images/
│   └── labels/
├── test/
│   ├── images/
│   └── labels/
  • train/images:训练集图像
  • valid/images:验证集图像
  • test/images:测试集图像
  • labels:对应YOLO格式标注文件

(已完成标准划分,可直接用于训练)
在这里插入图片描述
在这里插入图片描述


随着智慧城市建设和智能交通系统的不断推进,城市道路的安全与管理问题日益受到重视。道路设施的完好与安全隐患的及时发现,直接关系到交通顺畅、行车安全以及市民的生活质量。在实际道路环境中,井盖缺失或开启、路面坑洞、减速带未标识等情况仍时有发生,这些问题不仅影响道路通行效率,还可能导致交通事故,造成严重的社会和经济损失。传统的人工巡检方式存在效率低、成本高、覆盖面有限等不足,迫切需要结合人工智能技术,通过计算机视觉手段实现对道路设施与安全隐患的自动识别与检测。针对这一需求,本数据集围绕城市道路设施及安全隐患目标检测任务构建,收集并整理了约13,000张高质量图像,覆盖井盖、开启井盖、坑洞、减速带及无标识减速带五类关键目标,同时提供标准化的边界框标注和训练、验证、测试集划分,可直接用于主流目标检测模型的训练与评估。该数据集不仅具备科研价值,可支持目标检测算法研究、模型优化及复杂环境下的鲁棒性分析,也具有工程实用性,为智慧城市道路巡检系统、自动驾驶环境感知以及智能交通管理提供了可靠的数据支撑与实验基础。通过这一数据集,研究者和开发者能够更高效地探索道路安全隐患检测技术,加速人工智能在交通安全领域的应用落地。

三、数据集类别说明

本数据集共包含 5个目标类别

类别名称英文名称说明
井盖Manhole正常关闭状态井盖
打开的井盖Open Manhole存在安全隐患
坑洞Pothole路面破损
减速带Speed Bump标准减速带
无标识减速带Unmarked Bump无明显警示标识

类别特点

  • 井盖与打开井盖区分明确
  • 坑洞覆盖多种形态(小裂缝、大面积破损)
  • 减速带包含不同角度与远近距离
  • 无标识减速带更具实际工程价值

四、标注说明

  • 标注格式:YOLO格式(txt)
  • 标注类型:目标边界框(Bounding Box)
  • 坐标形式:归一化坐标
  • 一图一标注文件

示例格式:

class_id x_center y_center width height

可直接适配:

  • YOLOv5 / YOLOv7 / YOLOv8 / YOLOv10 等
  • Faster R-CNN
  • SSD
  • DETR
  • 其他目标检测模型

五、数据集优势

1️⃣ 数据量充足

13000张图像,满足中小规模检测任务训练需求。

2️⃣ 类别设计具有工程价值

特别是:

  • Open Manhole(开启井盖)
  • Unmarked Bump(无标识减速带)

属于高风险类别,具有现实部署意义。

3️⃣ 场景多样性

  • 不同光照
  • 不同视角
  • 不同距离
  • 不同路况环境

增强模型泛化能力。

4️⃣ 已完成标准划分

训练 / 验证 / 测试集已分离,可直接实验对比。


六、适用场景

🚗 自动驾驶环境感知

  • 路面异常识别
  • 安全风险预警

🛣 城市道路巡检系统

  • 智能巡检车
  • 无人机巡检
  • 城市基础设施管理

🚦 智能交通系统(ITS)

  • 道路风险统计
  • 城市安全评估

🤖 深度学习目标检测教学与实战

  • YOLO系列训练实验
  • 毕业设计
  • 课程项目
  • 科研论文

七、训练建议

如果使用YOLO系列模型,推荐:

  • 输入尺寸:640 / 800
  • Batch size:根据显存调整
  • 训练轮数:100~300 epochs
  • 数据增强:Mosaic + MixUp
  • 适当增加小目标检测权重(针对坑洞类)

如你正在做YOLO单类别或多类别实验,本数据集可直接扩展训练场景。


八、实验效果预期

在合理训练参数下,常见YOLO系列模型可获得:

  • mAP@0.5 > 0.85(视模型大小与训练策略而定)
  • 对明显井盖与坑洞识别准确率较高
  • 对远距离无标识减速带检测具挑战性(更具研究价值)

在这里插入图片描述

九、结语

城市道路安全隐患检测是智慧城市建设的重要一环。本数据集围绕真实道路场景构建,兼具工程实用性与科研价值。

无论你是:

  • 做自动驾驶感知算法
  • 做道路巡检系统开发
  • 做YOLO系列教学实验
  • 做毕业设计 / 论文研究

本数据集都能为你提供完整、规范、可直接训练的高质量数据支持。

如果需要完整数据集、训练配置文件及部署说明,可进一步交流。

综上所述,本城市道路设施及道路安全隐患目标检测数据集围绕实际工程场景构建,兼顾数据规模、类别实用性与标注规范性,具备较强的训练价值与落地意义。数据集覆盖井盖、开启井盖、坑洞、减速带及无标识减速带五类关键目标,不仅包含常规道路设施,还特别强调高风险安全隐患类别,使其在智慧城市管理、道路巡检系统、智能交通系统以及自动驾驶环境感知等方向具备更高的应用价值。约13,000张图像经过清洗、筛选与标准化标注,并完成训练集、验证集、测试集的合理划分,能够直接适配YOLO系列、Faster R-CNN、SSD等主流目标检测框架,显著降低实验准备成本,提高建模效率。从研究角度看,该数据集能够支持小目标检测优化、多类别不均衡问题研究、复杂光照环境鲁棒性分析等技术探索;从工程角度看,可用于道路风险识别、隐患预警统计及智能巡检系统部署测试。整体而言,该数据集不仅适合教学实验与毕业设计使用,也能够作为实际项目原型开发与算法验证的数据基础,为提升城市道路安全管理智能化水平提供可靠的数据支撑与实验环境。

大家好。

最近做了一个小产品:一张 AI 录音卡

起因其实很简单。
最近一直在做 AI 语音相关的产品,但大部分形态都是网页或 App 。后来就在想:如果把它做成一个“实体”,会是什么感觉?

于是做了这张卡片大小的独立录音设备 ——
可以直接录音,上传后自动转写、生成结构化笔记、摘要、行动事项,也可以整理成思维导图。

它不是要取代手机,而是想让“记录”这件事更轻一点。
有时候你只想按一下按钮,把会议、灵感、对话记下来,而不是先打开 App 、再点功能。

有认为为什么不用手机自带的录音?
我的原因很简单:会被电话打断。

官网在这里:
https://hyperai.tracup.com/zh/products/note


这批是小规模制作,更多是一次形态上的实验。

-----------------------

既然发帖了,也做个小活动:

从本帖发布起 24 小时内,
在评论区留下邮箱的朋友中,随机抽 1 位。

送一张 AI 录音卡,包邮到家。

24 小时后我会在帖子里公布结果(只公布邮箱前缀)。

-----------------------

如果你对这种“实体 + AI 工具”的方式有看法,无论是吐槽还是建议,都欢迎直接说。

做产品久了,会越来越在意“形式是否真的有意义”,
也想听听 V2EX 的真实反馈。

最近自己折腾了一个小工具网站: https://www.toolkit.ren

今天发出来跟大家分享一下,也恳请各位大佬多多指点,不吝赐教

做这个站的初衷,就是平时不管是开发写代码、日常办公,还是偶尔处理点小需求,总要找各种零散的小工具,还担心数据安全问题,索性就自己动手了,根据自己实际需求攒了这个小工具站,目前网站每天还在不断的优化中,后续还会添加一些新的资源和文章

目前站里都是我自己平时用得上的功能,覆盖了开发、办公、日常常用的一些小工具,界面做的很简洁,打开就能直接用,不用注册登录,所有数据都在浏览器本地进行,数据安全

现在功能还在慢慢迭代更新,各位大佬不管是哪里用着不顺手、功能有 bug ,还是有想要的工具没加上,都欢迎大家直接提,我都会认真看、认真改~

再次感谢各位大佬多多斧正!

在 AI 原生开发时代,模型能力快速增长,但系统风险也呈非线性膨胀。如何在释放 AI 生产力的同时保持核心资产安全、控制复杂度,是每个工程团队必须面对的关键问题。本文提出“棒棒糖模型 + 螺旋演化”的分层安全架构,将人的操作、Guard 约束、测试计划与 AI 能力层级有机结合:

  • 棒棒糖模型:核心资产是糖头,人的操作路径是棒身,贯穿系统各层,形成可控连接;AI 能力和外部工具是一层层糖衣,其能力释放受棒身约束。

  • 螺旋演化:随着版本迭代和功能扩展,规则密度、测试覆盖率和异常处理能力沿螺旋递增,实现系统随时间动态可控。

这种设计不仅提供静态安全边界,也兼顾系统长期演化风险,确保 AI 能力在复杂环境中被安全、可验证地释放。本文将详细介绍 L0–L6 分层架构、Guard Layer 模块化、单人模式落地实践,以及动态自愈与监控机制,提供可落地的 AI 安全工程方案参考。

1 引言

在 AI 原生开发时代,模型能力迅速增强,但系统风险呈非线性上升。传统架构往往将 AI 置于系统核心,而忽视以下问题:

  • 核心资产边界

  • 权限收敛机制

  • 运行期行为漂移

  • 成本失控路径

当 Agent 或模型出现异常时,损失可能具有放大性与不可逆性。本方案基于 TPDD(Test Plan Driven Development) 方法论,结合:

  • 能力暴露(Capability Exposure)

  • 禁止空间(Forbidden Zone)

  • Failure Thinking

  • Zero Trust 思维

将 AI 系统安全抽象为分层圆 + 动态防御闭环,以在释放 AI 生产力的同时收敛失控风险。

核心原则

  • 空间原则

  • 越靠内层 → 资产价值越高 → 约束必须越强

  • 越靠外层 → 不确定性越大 → 护栏必须越厚

  • 控制权原则

  • 系统核心是数据、权限与控制权

  • 模型属于高风险计算外设,而非信任根

  • 模型视角补充(静态 × 动态)

  • 洋葱模型(Onion Model):刻画任一时刻的信任边界与权限分层(空间视角)

  • Nautilus Spiral 模型:刻画系统随时间的复杂度、测试密度与约束增长(时间视角)

二者关系

  • 横截面安全边界 → 洋葱模型

  • 生命周期演化 → 螺旋模型

该组合可同时解决:

  • 静态安全收敛

  • 动态复杂度膨胀

  • AI 系统长期演化风险

2 分层同心圆架构(由内向外)

🔴 L0 核心资产层(Core Assets)【最内圈】

目标:绝对保护区(Blast Radius Zero Zone) 典型资产:公司数据库、用户隐私、商业机密、源代码仓库、内部高敏知识库、密钥 / Token / 凭证

约束原则

  • ❌ 默认 AI 不可直接访问

  • ❌ 默认 Agent 不可持久触达

  • ❌ 严禁长生命周期凭证

  • ✅ 仅允许 JIT(Just-in-Time)短时授权

  • ✅ 全链路审计可追溯

落地措施

  • API Gateway + RBAC + ABAC 组合授权

  • KMS + 短期凭证轮换

  • 行为基线异常检测

  • 访问风险评分(risk scoring)

  • 自动权限回收

🟠 L1 人员操作层(Human Operators)

目标:管理和约束人为操作风险 涉及角色:开发、QA、BA/PM、运维、数据分析、Prompt 编写者 

主要风险

  • Prompt Injection、误操作、权限滥用

  • 社工攻击、敏感数据误粘贴

  • 长上下文污染

工程化约束

  • 权限校验 + 全审计

  • 高危操作双人确认

  • 隔离执行环境

  • 输入脱敏与 DLP

  • Prompt 风险评分

  • 主动攻击演练与异常注入

说明:人的操作从最外层一直贯穿到最内层,就像 棒棒糖模型的棒身

🟡 L2 测试与约束层(TPDD Guard Layer)⭐ 核心护城河

目标:将系统从“能跑”变为“可控”

Guard 架构

  • Entry Guards(入口收敛)

  • Runtime Guards(运行时持续约束)

  • Shadow Guards(旁路监控)

模块职责

  • Contract Guard:schema 校验、工具调用白名单、权限契约检查 → 防止能力误用

  • Invariant Guard:系统永真条件(不删除文件、不外发敏感数据、不越权访问) → 异常报警

  • Test Guard(TPDD 核心):边界测试、Failure 注入、对抗样本、回归测试、行为快照

  • Token / Cost Guard:context、steps、tool calls、成本限制 → 超额熔断策略、动态阈值与负载感知

落地措施

  • 自动化脚本执行 TPDD 测试计划并记录行为快照

  • 异常行为触发内圈熔断、报警和自动回滚

  • 多 Agent 调度系统联动实时限流

  • 红队验证和主动攻击演练

🔵 L3 AI 能力外圈(Agent / Model Layer)

目标:能力释放层,风险最高 包含:LLM、Agent、Skills/Tools、RAG、多步规划、自动代码生成

工程认知

  • 外圈不应被完全信任

  • 假设可能犯错、被注入、产生幻觉、越界尝试、非线性成本

落地措施

  • AI 执行必须经过 Guard Layer 审核

  • 每次生成操作附带行为日志和审计记录

  • 异常或超阈值行为自动熔断

  • 动态阈值随负载和业务峰值调整

🟣 L4 代码生成层(AI + 人工生成代码)

职责:统一管理 AI 与人工生成代码

  • 自动化回归测试与静态分析

  • 动态安全测试与代码审核

  • 依赖分析与冲突检测

  • 多 Agent 并行生成调度与隔离

  • 生成代码附带行为快照和版本追踪

⚫ L5 验证层(Verification Mesh)

系统级裁决层,三阶段验证

  1. 生成前(静态风险预判)

    生成中(运行监控)

  2. 生成后(功能 / 性能 / 安全验证)

职责

  • 功能安全验证、性能压测、异常检测

  • 红队演练、非线性攻击模拟

  • 发布阻断权归该层

🧠 L6 自愈与韧性层(Resilience & Self-Healing Layer)

目标:维持系统收敛能力

  • Incident Learning Loop:事故归因、策略回放、Guard 规则调优

  • Policy Auto-Tuning:动态调整阈值、限流、授权窗口

  • Self-Healing Flow:会话隔离、权限收缩、Agent 降级、沙盒重启、状态回滚

  • Guard 健康监控:持续监测漏检率、延迟、旁路风险

3 人的角色:贯穿全局的操作轴(棒棒糖模型)

人在 AI 安全架构中,不仅是使用者,更是安全闭环的中枢轴,贯穿 输入 → 约束 → 执行 → 验证 → 自愈

  • L0 核心资产层:临时访问、JIT 授权、审计触发

  • L1 人员操作层:Prompt 编写、运维操作、敏感数据处理

  • L2 测试与约束层:执行 Contract / Invariant Guard、TPDD 测试计划

  • L3 AI 能力外圈:Agent / LLM 调用的审计、行为评分、异常触发

  • L4 代码生成层:生成代码回顾、版本追踪、多 Agent 隔离

  • L5 验证层:功能/性能/安全验证、红队演练、异常阻断

  • L6 自愈与韧性层:异常触发回滚、会话隔离、Agent 降级

可视化比喻

  • 棒头(Candy Head):核心资产,保护最严格

  • 棒身(Candy Stick):人的操作路径,贯穿各层,形成受控连接

  • 糖衣(Candy Coating):AI 能力和外部工具,能力释放受棒身控制

  • 动态演化(螺旋/TPDD):沿棒身逐步增加规则密度、测试覆盖率和异常处理能力,实现系统随时间持续安全可控

通过这一设计,人的操作持续校准 Guard、TPDD 测试和异常监控,使 AI 能力在复杂系统中安全释放,同时保持核心资产的高度保护。

4 Nautilus Spiral 演化视角(动态复杂度增强)

同心圆模型刻画任意时刻的静态信任边界与权限层级,明确“当前可以访问什么、不能访问什么”,棒棒糖模型加入了人类可以介入的视角。

AI 系统随版本迭代、功能扩展而成长,代码量、复杂度和行为多样性逐步外扩,仅依赖静态洋葱无法完整描述长期演化风险。

螺旋模型要点

  • 螺旋对应版本沉积,每圈螺旋代表一次版本迭代

  • 外圈规模更大、复杂度更高,但结构与内圈一致

  • 动态规则与测试密度递增,Guard 规则、Failure 注入、监控指标随版本增长

  • TPDD 测试计划自动联动,覆盖率提升、异常注入增强

指标化落地

  • 测试密度(tests / KLOC)随版本递增

  • Guard 覆盖率逐步细化、自动化执行

  • 行为异常率实时监控、阈值动态调整

  • Token / Cost 消耗斜率、风险评分动态计算

静态 + 动态结合

  • 同心圆:回答“当前边界在哪里”

  • Nautilus Spiral:回答“随时间边界如何膨胀、规则如何增强”

通过结合,两者确保系统长期安全可控。

5 安全执行流推荐路径(受控闭环)

Human / User

L2 Entry Guards(Contract / Invariant / Token / Cost)

Agent / Model (L3)

↕ 多轮受控交互

L2 Runtime Guards(Contract / Invariant / Cost)

Code Generation Layer (L4)

Verification Mesh (L5)

Core Assets (L0, JIT 授权)

L6 Resilience Loop

禁止路径

  • User → Agent → DB

  • Agent → 高权限 Tool(无审计)

  • AI → 长生命周期凭证

关键工程语义

  • Guard 双阶段:Entry + Runtime → 防止“一次放行,全程裸奔”

  • 执行流受控,Agent 持续接受约束与异常监控

  • Verification 分布三阶段 → 目标尽早失败

  • Core Assets 默认不可达,临时授权、自动过期、全链路审计

6 OPC / 单人模式小型团队改进方案

核心目标: 

  • 单人或小团队环境,实现可控、安全闭环

  • 阻止越界操作、实时监控异常、自动回滚、沙盒隔离、精细化成本/Token 管理

改进措施

  • 沙盒化执行:完全隔离、会话隔离、JIT Token、自动回滚、状态快照

  • 自动化 Contract / Invariant Guard:契约检查 + Invariant 监控 + 规则自动升级

  • 行为异常评分与阈值触发:异常评分、滑动窗口、自适应阈值

  • Token / Cost 精细化管理:按操作类型、上下文动态调整、超阈值自动熔断

  • 简化自愈机制:会话隔离、沙盒重启、权限收缩、状态回滚

  • 渐进式开发与定期 Review:每日/每周复盘 TPDD 测试计划、日志和 Guard 效能

核心架构

Human / User

L2 Entry Guards

Agent / Model 执行层(沙盒 + 异常评分 + Token/Cost 精细化)

L4 Code Generation Layer(自动回滚 + 多 Agent 隔离)

L5 Verification Mesh(静态/动态/功能/性能验证)

Core Assets / L0(JIT 授权 + 全链路审计)

L6 Resilience & Self-Healing

7 整合三者

  • 横截面:洋葱 → 当前边界

  • 人的操作:棒棒糖 → 贯穿层级

  • 纵向演化:螺旋 → 动态复杂度和规则增长

  • 总结三者关系:静态 + 操作 + 动态 → 安全闭环

总结

  • 核心资产永远在内圈,模型能力在外圈受控释放

  • Guard Layer 模块化、动态化、可反馈,是系统安全核心

  • 单人模式仍可落地,但依赖最小可行安全套件

  • 能力暴露 + 禁止空间 + Failure Thinking 架构落地,为 AI 工程提供可控、可验证、可维护的实践方法

  • 动态量化阈值、负载感知、红队演练是改进后的关键增强点

Text polished by GPT; images generated by AI.

 

JDK 26,自JDK 25以来的第一个非长期支持(LTS)版本,已经达到了其二号候选版本,正如甲骨文公司 Java 平台组首席架构师Mark Reinhold所宣布的那样。主干源代码库在 2025 年 12 月初被分支到 JDK稳定化代码库(Rampdown 阶段 1),它定义了 JDK 26 的特性集。关键缺陷,如回归或严重的功能问题,可能会被解决,但必须通过修复请求流程获得批准。根据发布计划,JDK 26 将于 2026 年 3 月 17 日正式发布。

 

最终的 10 个新特性集,以 JEP 的形式,可以分为五(5)类:核心 Java 库、热点、Java 语言规范、安全库和客户端库。

 

其中五个(5)个新特性被归类为核心 Java 库:

 

 

其中两个(2)个新特性被归类为 HotSpot:

 

 

其中有一个(1)个新特性被归类为 Java 语言规范:

 

 

其中有一个(1)个新特性被归类为安全库:

 

 

最后,有一个(1)个新特性被归类为客户端库:

 

 

我们研究了其中的一些新特性,和它们所属主要 Java 项目——AmberLoomPanamaValhallaLeyden,这些项目旨在孵化一系列组件,最终通过精心策划的合并到 JDK 中。

 

Amber 项目

JEP 530,模式、instanceof和switch中的原始类型(Primitive Types in Patterns, instanceof, and switch,第四轮预览),提出了第四次预览,此前三次预览分别在 JDK 25 至 JDK 23 中交付。本次包括两项变更:增强无条件精确性的定义;以及在 switch 结构中应用更严格的支配性检查。

 

Loom 项目

JEP 525,结构化并发(Structured Concurrency,第六轮预览),在 JDK 19 至 JDK 25 中交付的五轮预览之后,提出了第六轮预览。这个功能通过引入结构化并发的概念来简化并发编程,将“在不同线程中运行的一组相关任务视为一个工作单元,从而简化错误处理和取消,提高可靠性,并增强可观测性。”唯一的重大变更是向StructuredTaskScope.Joiner接口添加了onTimeout()方法,允许该接口的实现在超时后返回结果。

 

Panama 项目

JEP 529,向量API(Vector API,第十一轮孵化),在 JDK 16 至 JDK 25 中交付的十轮孵化之后,提出了第十一轮孵化,自 JDK 25 以来没有实质性的实现变更。这个功能引入了一个 API,用于“表达在支持的 CPU 架构上可靠地在运行时编译为最佳向量指令的向量计算,从而实现优于等效标量计算的性能。”向量 API 将继续孵化,直到项目Valhalla的必要功能作为预览功能可用。届时,向量 API 团队将调整向量 API 及其实现以使用它们,并将向量 API 从孵化阶段提升到预览阶段。

 

安全库

JEP 524,加密对象PEM编码(PEM Encodings of Cryptographic Objects,第二轮预览),在 JDK 25 中交付的第一轮预览,即 JEP 470,加密对象的PEM编码(预览)之后,提出了第二轮预览。变更包括:将PEMRecord类重命名为PEM;以及增强PEMEncoderPEMDecoder类以支持KeyPairPKCS8EncodedKeySpec类的加密和解密。

 

HotSpot

JEP 522,G1 GC:通过减少同步提高吞吐量(G1 GC: Improve Throughput by Reducing Synchronization),提议减少 G1 垃圾收集器的开销,以改善应用程序线程和 GC 线程之间的同步。

 

JEP 516,适用于任何GC的Ahead-of-Time对象缓存(Ahead-of-Time Object Caching with Any GC),提议增强 JEP 483,任何 GC 的提前类加载和链接,该功能在 JDK 24 中交付,以改善启动和预热时间,使其可以与任何垃圾收集器一起使用,包括低延迟的 Z 垃圾收集器(ZGC)。

 

JDK 27

 

计划于 2026 年 9 月发布 GA 版本,目前JDK 27只针对一(1)个 JEP。但是,根据大量的 JEP 候选和草稿,特别是那些已经提交的或增量预览版,我们可以推测哪些 JEP 有可能包含在 JDK 27 中。

 

JEP 401,值类和对象(Value Classes and Objects,预览版),在Valhalla项目的支持下,提议通过值对象增强语言,这些值对象定义为:只包含 final 字段;没有身份;并且仅由它们各自字段的值来区分。

 

JEP 草案 8376595,延迟常量(Lazy Constants,第三次预览),在 JDK 26 和 JDK 25 即将发布的两轮预览之后,提出了第三轮预览,并包含两项变更:从LazyConstant接口中移除isInitialized()orElse()方法,因为它们与此功能的设计目标不一致;以及一个新的工厂方法ofLazy(),它可以为所有三种 Java 集合类型创建稳定的、预定义的元素,即:ListSetMap

 

JEP 草案 8329758,使用ZGC实现更快的启动和预热(aster Startup and Warmup with ZGC),提议增强 Z 垃圾收集器,以更有效地根据应用程序的需求分配内存。通过创建一个小型的初始堆来减少操作系统的开销,可以最小化启动时间。

 

请注意,草案 JEP 可能会随时更改。我们预计甲骨文公司将很快开始针对 JDK 27 的目标,增加额外的 JEP。

 

原文链接:

https://www.infoq.com/news/2026/02/java-26-so-far/

家里目前有一个显示器,但是没有主机,想着配置一个 Mac Mini ,有摄影爱好,修修图干啥的。因为自己用的就是苹果全家桶,并且办公也用 Mac 比较熟悉。感觉 Mac 的系统也比较稳定,保值率高。

1. 但是我看国补优惠都抢不到(坐标陕西)
2. 闲鱼问了一下 Mac Mini 员工优惠,几个商家都说不支持🤣

求助 v 友们,有啥靠谱的渠道能优惠一点买到

在企业数字化转型进程中,CRM(客户关系管理)已成为打通获客-销售-供应链全链路的核心枢纽。不同厂商基于技术底座、生态资源与行业定位,在各业务模块的能力表现差异显著。本文选取10款主流CRM产品,从获客、销售、订单管理、发货/物流跟踪、统计分析、上下游协同六大核心维度展开深度对比,为企业选型提供专业参考。

一、核心能力总览对比表

品牌获客核心能力销售核心能力订单核心能力发货/物流跟踪核心能力统计分析核心能力上下游协同核心能力
超兔一体云多渠道集客(线上+线下),线索智能化处理,活动成本核算精细化客户管理,多跟单模型适配,360°跟单视图多订单类型支持,全流程执行管控原生发货单+物流跟踪,扫码签收,供应链协同多引擎数据分析,可视化展示,ROI与转化率评估OpenCRM平台,上游供应商全流程协作,下游客户全链路互动
Oracle CX跨渠道营销自动化,CDP整合多源数据,AI驱动精准触达销售云全流程打通,CPQ简化报价,区域配额管理与SCM/ERP深度集成,全订单生命周期跟踪原生SCM集成,运输路线监控,交付预测AI实时预测,360°客户视图,营销ROI、销售绩效多维度分析PRM伙伴管理,SCM协同供应链计划,适合制造/高科技行业深度协同
Pipedrive多渠道线索收集,需依赖外部工具扩展获客渠道可视化销售漏斗,AI销售建议,中小团队轻量化管理基础订单记录,需集成第三方系统无原生功能,需外部集成实时销售报告,团队绩效监控,收入预测侧重内部销售,上下游协同能力弱
Nimble社媒数据整合,客户兴趣图谱,精准社媒获客AI工作流优化,内部团队协作,销售流程深度不足无原生订单功能,需外部系统补充无原生功能,需外部集成客户行为微观洞察,智能留存提醒,分析维度较窄侧重内部销营协同,供应链上下游支持不足
红圈CRM统一客户库,自定义营销活动,效果分析商机全生命周期管理,漏斗预测,红圈通APP协同订单关联客户,CRM+支持合同全生命周期管理无明确原生功能自定义报表,行业经营监控指标,多维度数据统计CRM+支持供应商/采购管理,覆盖供应链需求端客户
钉钉CRM市场活动规划,统一客户信息管理,开源字节CRM强化线索管理销售漏斗跟踪,开源字节CRM支持通话质检、日报输出集成合同订单,开源字节CRM支持库存核算、往来对账开源字节CRM支持订单发货跟踪、库存变更记录客户趋势分析,开源字节CRM实时数据仪表盘钉钉生态支持外部协作,开源字节CRM财务协同对接上下游
Zoho CRM多渠道线索捕获,自动打分分配可视化销售漏斗,自定义销售流程,自动化跟进提醒基础订单管理,需Inventory扩展模块强化需Inventory模块实现物流跟踪内置报表/BI工具,多维度销售、转化率分析侧重内部管理,供应链协同需第三方集成
腾讯企点CRM腾讯生态公私域联动,智能活码拉新,CDP全域用户画像企微会话分析,私域社群营销自动化,销售过程可视化基础订单记录,需集成电商/ERP系统无原生功能,需外部集成CDP全域分析,FA融合分析辅助决策强私域客户运营,供应商/经销商管理能力有限
神州云动CloudCC内置MA营销自动化,多渠道线索管理与活动追踪全流程销售管理,适配复杂项目型销售,智能业绩预测对接ERP同步订单,部分版本支持物流状态查询可对接ERP实现物流跟踪自定义报表/BI,深度分析销售效能、客户价值伙伴管理模块,支持经销商/渠道商协同,适合B2B企业
EC CRM多渠道线索自动抓取,智能分配销售漏斗管理,通话录音AI质检,销售过程合规化基础订单记录,需API对接第三方系统无原生功能,需外部集成销售数据仪表盘,实时团队绩效与转化监控侧重内部销售管理,上下游协同能力弱

二、分模块深度对比

1. 获客能力:渠道覆盖与智能化程度

获客是CRM的前端入口,核心差异体现在渠道整合能力、数据精准度、成本可追溯性三个维度:

  • 全渠道智能化标杆:超兔一体云覆盖线上(百度/巨量引擎/官网/微信/小程序)+线下(地推/会销)全场景,支持线索自动查重、归属地识别、活动成本均摊;Oracle CX通过CDP整合多源客户数据,AI驱动跨渠道精准触达,适合大型企业全域营销。
  • 生态专属获客:腾讯企点CRM依托微信/企微生态实现公私域线索联动,智能活码降低拉新门槛;Nimble聚焦社媒数据整合,生成客户兴趣图谱,适合跨境电商、互联网品牌。
  • 轻量化基础获客:Pipedrive、EC CRM仅提供基础线索收集能力,需依赖外部工具扩展渠道,适合中小团队快速启动。

获客渠道能力脑图(Mermaid)

mindmap
  root((获客渠道能力对比))
    全渠道智能化
      超兔一体云
        线上:百度/巨量/官网/微信/小程序
        线下:地推/会销专属码
        智能:查重/成本核算/自动提醒
      Oracle CX
        跨渠道:邮件/社交/广告
        数据:CDP多源整合
        AI:精准触达/策略优化
    腾讯生态专属
      腾讯企点CRM
        微信/企微公私域联动
        智能活码拉新
        CDP全域画像
    社媒专属
      Nimble
        LinkedIn/Twitter社媒整合
        客户兴趣图谱
    钉钉生态专属
      钉钉CRM
        钉钉生态活动管理
        开源字节CRM线索管控
    轻量化基础
      Pipedrive
        邮件/表单收集
        需外部工具扩展
      EC CRM
        电话/微信/广告抓取
        智能分配

2. 销售能力:跟单模型与场景适配

销售模块是CRM的核心,差异体现在跟单模型灵活性、流程自动化、客户洞察深度

  • 多场景适配标杆:超兔一体云提供三种核心跟单模型,覆盖小单快单(三一客模型)、中长单(商机模型)、复杂项目(多方项目模型),并支持360°跟单视图、AI通话分析、自动日报生成;神州云动CloudCC适配复杂项目型销售,智能业绩预测功能为B2B企业提供决策支持。
  • 大型企业全流程管控:Oracle CX通过销售云打通计划-执行全流程,CPQ模块简化“询价-配置-报价”,确保销售承诺与库存、供应链能力匹配。
  • 中小团队轻量化工具:Pipedrive以可视化销售漏斗为核心,AI销售建议帮助团队聚焦高优先级线索;EC CRM主打通话录音AI质检,提升销售合规性。

超兔一体云小单快单跟单流程时序图(Mermaid)

sequenceDiagram
    participant 销售
    participant 超兔系统
    participant 客户
    销售->>超兔系统: 创建客户(自动查重+工商信息补全)
    超兔系统->>销售: 分配三一客跟单任务(定人/定时/定动作)
    销售->>客户: 按节点首次触达
    客户->>销售: 反馈初步需求
    销售->>超兔系统: 记录跟进动作,更新客池状态
    超兔系统->>销售: 自动生成日报,触发下节点提醒
    销售->>客户: 二次跟进,确认需求细节
    客户->>销售: 同意下单
    销售->>超兔系统: 转化为订单,同步客户生命周期状态

3. 订单与发货/物流跟踪:流程闭环能力

该模块核心差异在于订单类型覆盖、原生功能完整性、供应链协同效率

  • 全订单类型支持:超兔一体云支持服务型(合同)、实物型(标准/批发/定制/套餐等)、特殊型(维修/外勤工单)等10+订单类型,实现从锁库到供应商直发的全流程自动化;Oracle CX与SCM/ERP深度集成,跟踪订单从创建到交付的全生命周期状态。
  • 生态集成强化:钉钉CRM(开源字节版)支持库存核算、发货跟踪与库存变更记录;红圈CRM+提供合同全生命周期管理与结算功能。
  • 依赖外部集成:Pipedrive、Nimble、腾讯企点CRM等无原生订单/物流功能,需对接电商平台、ERP或物流系统实现闭环。

4. 统计分析:数据洞察与决策支持

统计分析的核心是数据维度广度、AI驱动能力、可视化程度

  • AI驱动全维度分析:Oracle CX提供AI实时销售预测、360°客户视图,覆盖营销ROI、销售绩效、客户行为等多维度;超兔一体云通过多引擎(同比环比、多表聚合、单日KPI)实现数据深度挖掘,支持自定义数字卡片与图表。
  • 行业化指标支撑:红圈CRM+内置行业经营监控指标,适配工程、快消等垂直行业需求;神州云动CloudCC的自定义BI工具可深度分析销售效能与客户价值。
  • 轻量化基础分析:Pipedrive、EC CRM提供实时销售报告与团队绩效监控,满足中小团队基础决策需求。

5. 上下游协同:供应链链路打通

上下游协同的核心是伙伴管理深度、数据共享效率、流程自动化

  • 全链路协同标杆:超兔一体云通过OpenCRM平台实现上游供应商(询价/采购/对账/评分)与下游客户(报价/订单/物流/投诉)的全流程协同;Oracle CX通过PRM(伙伴关系管理)与SCM模块,实现供应商、经销商的深度协同,适合制造、高科技等重供应链行业。
  • 行业化协同:神州云动CloudCC的伙伴管理模块支持经销商/渠道商协同;红圈CRM+覆盖供应商管理与采购量价双控。
  • 弱协同型:Pipedrive、Nimble、EC CRM仅聚焦内部销售流程,无上下游协同核心功能。

三、品牌能力雷达图评分(满分10分)

品牌获客销售订单发货/物流统计分析上下游协同
超兔一体云999899
Oracle CX1010991010
Pipedrive685475
Nimble764364
红圈CRM787587
钉钉CRM778778
Zoho CRM887686
腾讯企点CRM986586
神州云动CloudCC898799
EC CRM886575
    • *

四、选型建议

  1. 全链路数字化转型需求:优先选择超兔一体云(高性价比全功能)或Oracle CX(大型企业全域管控),覆盖从获客到供应链的全流程闭环。
  2. 中小销售团队轻量化管理:选择Pipedrive(可视化漏斗)或Zoho CRM(高性价比基础功能),快速启动销售流程。
  3. 私域运营核心需求:选择腾讯企点CRM,依托微信/企微生态实现公私域联动与客户精细化运营。
  4. B2B复杂项目型销售:选择神州云动CloudCC,适配项目全生命周期管理与渠道伙伴协同。
  5. 钉钉生态深度绑定用户:选择钉钉CRM(开源字节版) ,利用钉钉生态实现内部协作与上下游财务对接。

综上,CRM系统的选型需紧密匹配企业的业务规模、核心场景与长期数字化战略:大型企业可优先考虑全域管控能力突出的Oracle CX或高性价比全链路覆盖的超兔一体云;中小团队可聚焦轻量化工具快速启动;垂直场景(如私域、B2B项目销售)则需锚定生态专属或行业适配型产品。通过精准匹配CRM核心能力与业务需求,可有效实现获客效率提升、销售流程闭环、供应链协同提效,为企业数字化转型筑牢核心底座。

作者:vivo 互联网前端团队- Fang Liangliang

多地区销量持续增长、业务运营诉求与日俱增,悟空作为一站式h5搭建平台,需要先发完成多地区化能力改造,基于复用、提效的思路,探索多地区系统方案,实现多地区一体化运作。

1分钟看图掌握核心观点👇

动图封面

动图封面

图 1 VS 图 2,您更倾向于哪张图来辅助理解全文呢?欢迎在评论区留言

一、目标

悟空系统多地区化共线改造,用一套代码、一套架构实现多地区部署,后续的增量功能一次开发,全量复用,已有机房实现100%复用,新增机房节约90%开发成本;

开发者开发组件的方式不需要做任何改变,公共npm依赖包无需迁移,开发者低成本完成组件迁移;

本文将深度解析悟空系统多地区共线改造的架构设计,从页面多语言、站点的编译、npm私服、开发者等环节进行解析,让读者能够有所收获。

二、整体方案设计

开发之前,我们进行了整体的梳理,涉及的范围如下图所示:

业务分层图

从用户层、服务层、调度层进行拆解,可以进一步分析出需要实施的要点,如图所示:

整体功能点梳理图

进行整体的分析之后,我们可以从平台侧开始一层层的进行拆解,从用户能直观看到的web层,到用户感知比较弱的编译服务层,再到私服和底层库的处理上,核心主要分为三个模块进行改造:平台改造、编译服务、npm私服\&底层库。

三、模块拆解

3.1 平台改造

这部分介绍平台web侧的改造,主要分为三个方向:中英文改造、平台登录改造、国家码存储改造。

平台中英文国际化改造

背景 :平台本身是用的vue进行开发,所以这里我们采用Vue.js + vue-i18n的国际化解决方案,支持中文(zh)和英文(en)双语切换。

我们来看一段核心代码示例:

// i18n.js 核心配置 
// 语言包配置,方便扩展 
const messages = {   
  zh: { ...zh, ...zhLocale },  // 中文语言包 + Element UI中文   
  en: { ...en, ...enLocale }   // 英文语言包 + Element UI英文 
} 
// 基于域名的地区检测 // 不同地区自动读取对应语言包 
const domainConfigMap = new Map([   
  ['****.vivo.com.cn', { region: '01', local: 'zh' }],     // 01地区 读取zhLocale语言包 
  ['****.vivo.com', { region: '02', local: 'en'}],    // 示例:02地区 读取enLocale语言包
  ['in-****.vivo.com', { region: '03', local: 'en' }]      // 示例:03地区 读取enLocale语言包 
])

使用vue-i18n有以下几点优势

  • **成熟稳定 :**vue-i18n是Vue.js生态中最成熟的国际化库,与Vue 2.x完美兼容
  • **功能完善 :**支持复数形式、日期时间格式化、数字格式化等高级特性
  • **性能优异 :**采用懒加载机制,按需加载语言包,减少初始加载时间
  • **开发友好 :**提供丰富的API和插值语法,支持嵌套翻译和动态参数

平台登录改造

悟空平台会存在多个机房场景,如何使用同一个域名做为入口,简化多地区登录场景链路。

我们设计了一个多地区统一域名入口,进入之后运营可以根据需求切换不同地区,不需要在单独保存各个地区的独立链接,登录链路也会整合到入口域名,整体链路如下图所示:

代码示例如下:

getUucLogin (key, region) => { 
  ... 
  const locationUrl = getLocationUrl(region, env) // 回跳的链接根据地区信息来区分 
  return `${originMap[region][env]}/#/login?orgfrom=${locationUrl}/project${key}` // uuc登录地址融合地区信息和环境信息 
}

通过上述的方案,我们将机房的匹配集成在系统内部进行,减少用户感知,降低用户使用成本,这样可以做到统一域名入口,运营不需要本地记录多个地址,同时平台还提供便捷的地区切换能力,极大的提升跨地区运营的便利程度。

国家码存储方案

用户选择国家之后,悟空需要存储当前地区的地区码、语言码、时区信息,并且对应地区的站点语言和生效时间都要和地区时区匹配,而平台本身除了新开tab需要携带地区信息外还有开发者组件、iframe嵌套需要获取地区信息的场景,针对这些场景,悟空平台采用三层级的国家码存储策略:

① 新开tab时,地区信息通过URL参数携带

// 项目跳转时携带地区参数 
goList(projectId) {   
  const params = { projectId: projectId }   
  const wkCountryInfo = Utils.tools.getCountryInfoParams()  // 获取地区参数   
  const query = {...params, ...wkCountryInfo}  // 合并参数   
  this.$router.push({ path: '/main', query: query }) 
} 
// 例如 getCountryInfoParams 返回格式:{ loc: 'AA', lan: 'th_AA', tz: 'REGION/aa' }

② Vuex Store存储,地区信息在应用状态中持久化存储,开发者可以在组件内通过store读取国家码信息。

// Store中的地区信息存储 
state: {   
  siteConfig: {     
    wkCountryInfo: {       
      loc: 'AA',           // 地区信息       
      lan: 'th_AA',        // 语言码         
      tz: 'REGION/aa'   // 时区     
    }   
  } 
}
// 获取Store中的地区信息 
const storeCountryInfo = store.getters['edit/snapInfo'].wkCountryInfo || store.getters['interactive/snapInfo'].wkCountryInfo

③ LocalStorage缓存,用户地区选择持久化到本地存储,适用于iframe嵌套场景。

如果父子iframe是同源策略可以直接读取LocalStorage,如果非同源策略可以通过postMessage获取地区信息。

// 地区切换时的存储逻辑
changeRegion(value) {
  const item = this.headerRegion.list.find(v => v.countryCode === value)
  const wkCountryInfo = {
    loc: item.countryCode, // 如:'AA', 'BB', 'CC'
    lan: item.languageCode, // 如:'th_AA', 'en_BB', 'zh_CC'
    tz: item.timezone// 如:'REGION/aa', 'REGION/bb'
}
localStorage.setItem('__wk_platform_region_info_', JSON.stringify(wkCountryInfo))
}

三级存储有以下几点优势:

  • **状态一致性 :**三层存储机制确保地区信息在不同场景下的一致性
  • **用户体验 :**地区切换后新开Tab自动继承地区设置
  • **容错机制 :**多级地区码存储策略,避免地区信息丢失
  • **合规保障 :**满足不同地区的数据本地化存储法规

3.2 编译服务改造

介绍完平台web侧的改造内容后,接下来会详细介绍悟空系统编译服务多地区化改造方案。该方案通过统一的配置管理、多机房部署策略、差异化构建流程等技术手段,实现了01地区、02地区、03地区 的全面支持。

整体架构设计

整体架构图

该架构图展示了悟空互动平台多地区改造的整体设计思路:

  • **地区识别:**根据环境变量或请求参数识别目标地区
  • **机房分发:**将请求路由到对应地区的服务器
  • **配置管理:**每个地区使用独立的配置文件
  • **代码分离:**不同地区使用专门的前端代码目录
  • **依赖隔离:**DLL文件和API包按地区分离

核心技术方案

整体方案设计完毕之后,我们接下来一层层解析每个环节的改造。

① 统一环境配置管理

  • 配置入口统一化

通过对context.ts文件进行改造,实现不同机房部署的统一入口处理。

// 示例代码
// server/src/app/extend/context.ts
get env(): Ienv {
  return env[process.env.REGION || 'AA'][(this as any).app.config.env]
}

通过上述代码,我们可以发现环境配置读取从只有一级的环境区分改造为机房信息+环境的二级目录结构,这样修改后服务启动时,代码内部通过env方法可以获取当前机房信息下对应环境的全部配置信息,方便全局调用。

核心特性:

  • 通过 process.env.REGION 环境变量动态选择地区配置
  • 支持 01、02、03 三个地区
  • 结合 app.config.env 实现环境级别的配置分发
  • 分层配置结构

统一配置入口改造完毕之后,接下来我们介绍下入口文件往下一层去查询每个机房各个环境具体配置信息的改造。

配置文件信息按地区和环境进行分层管理改造后,整体目录结构如下所示:

// 目录结构:
server/src/app/util/env/
├── index.ts          # 配置入口
├── 01             # 01地区配置
│   ├── index.ts
│   ├── local.ts
│   ├── test.ts
│   ├── prod.ts
│   └── ...
├── 02             # 02地区配置
│   ├── index.ts
│   ├── test.ts
│   ├── prod.ts
│   └── ...
└── 03        # 03地区配置
    ├── index.ts
    ├── test.ts
    ├── prod.ts
    └── ...

通过上述目录结构可以看出,不同机房的配置信息一目了然,相互独立,方便维护和定位问题,后续新增机房信息时,只需要按照当前规则添加即可,不需要额外关心内部业务逻辑。

整体流程分为以下四个步骤:

  • 应用启动时读取region地区信息
  • 根据region值选择对应地区配置目录(01/02/03)
  • 结合egg_server_env选择具体环境配置文件(local/test/prev/prod)
  • 返回最终配置信息,供各个目录使用

② ZooKeeper服务发现与调度改造

  • 环境隔离策略

由于测试环境和预发环境都部署在01和02机房,通过模拟的方式支持01、02地区,而线上环境才是真正的物理隔离机房,因此在ZooKeeper服务发现中需要特殊处理(01、02为示例地区信息):

核心调度逻辑改造如下:

// server/src/app.js 
const isTestOrPreEnv = process.env.EGG_SERVER_ENV.includes('test') || process.env.EGG_SERVER_ENV.includes('pre');
// 添加机房信息
let group = isTestOrPreEnv ? `${process.env.REGION || 'AA'}-${process.env.EGG_SERVER_ENV}`: process.env.EGG_SERVER_ENV
const serviceClient = new BeehiveService({
  zkhost: ctx.env.zkHost,
  pong: true,
  services: {
    siteService: ctx.service.site,
    dspService: ctx.service.genDsp
  },
  config: c.Config(c.group(group), c.maxTimeout(3 * 60 * 1000))
})

通过上述代码,我们可以发现服务注册和发现都需要按照机房信息+环境信息作改造,这样可以有效避免测试环境和预发环境,站点编译时调度的机房出现异常,线上环境由于物理机房隔离,服务注册和发现可以不做调整。

  • 不同环境的ZooKeeper配置

介绍完环境隔离策略后,接下来我们介绍下不同环境的zk配置信息的改造。

测试环境(模拟多地区):

// 所有地区测试环境都使用同一个ZK集群
zkHost: 'zookeeper-*****.vivo.xyz:2183'
// 但通过group区分:01-test, 02-test, 03-test

预发环境(模拟多地区):

// 所有地区预发环境使用同一个ZK集群
zkHost: 'common-zk-****.vivo.lan:2181'
// 通过group区分:01-prev, 02-prev, 03-prev

生产环境(真实隔离机房):

// 机房1(示例名称)
zkHost: 'common-*****-zk.vivo.lan:2181'
// 机房2(示例名称)
zkHost: 'in-common-*****-zk.vivo.lan:2181'
// 机房3(示例名称)
zkHost: 'app.*****.zk.prd.****.vivo.lan:2181'

通过上述两个地方改造,服务发现分组策略如下所示:

  • **本地开发:**跳过ZooKeeper连接,避免开发环境干扰
  • **测试/预发环境:**使用{region}-{env} 格式进行分组,如01-test、02-prev
  • **生产环境:**直接使用环境名prod_wk,依靠物理机房隔离

③ 多机房构建策略

编译服务在生成站点时,还会对每个站点的主js文件做dll拆包处理,将公共依赖打包成独立的dll基座文件,降低页面的主资源体积,提升加载速度,那么针对多地区改造场景,我们会做哪些处理呢?

  • 差异化DLL构建

针对不同地区我们需要使用不同的API包,实现差异化的DLL构建:

01地区DLL配置:

// webpack.dll.config.js
const vendors = [
  ....
  '@vivo/wk-api',  // 01地区专用API
  'vue-lazyload',
]

module.exports = {
  output: {
    path: path.join(__dirname, './dll'),  // 输出到dll目录
    filename: '[name].[hash].js',
  },
  // ...
}

02、03地区DLL配置:

// webpack.dll.02.config.js //webpack.dll.03.config.js
const vendors = [
  ....
  '@vivo/asia-wk-api',  // 02、03地区专用API
  'vue-lazyload',
]

module.exports = {
  output: {
    path: path.join(__dirname, './dll-02'),  // 输出到dll-02目录或者dll-03
    filename: '[name].[hash].js',
  },
  // ...
}

在基座dll文件构建时,由于多地区的登录、分享、埋点合规等存在较大差异,我们对多地区场景做了单独的底层库封装,dll文件生成需要根据不同地区分别构建并输出到不同目录。

  • 构建脚本配置

修改dll配置文件时,同时也需要在 package.json 中配置不同地区的构建命令(01、02由于保密,均为地区示例信息):

//代码示例
{
  "scripts": {
    // DLL构建
    "dll": "npx webpack --config webpack.dll.config.js",
    "dll:01": "npx webpack --config webpack.dll.01.config.js",
    "dll:02": "npx webpack --config webpack.dll.02.config.js",
    
    // 服务启动
    "start_test_01": "EGG_SERVER_ENV=test REGION=01 yarn dock_start",
    "start_prev_01": "EGG_SERVER_ENV=prev REGION=01 yarn dock_start",
    "start_prod_01": "EGG_SERVER_ENV=prod_wk REGION=01 yarn dock_start",
    "start_test_02": "EGG_SERVER_ENV=test REGION=02 yarn dock_start",
    "start_prev_02": "EGG_SERVER_ENV=prev REGION=02 yarn dock_start",
    "start_prod_02": "EGG_SERVER_ENV=prod_wk REGION=02 yarn dock_start"
  }
}

通过上述指令的改造,我们可以很清晰的看到不同地区的dll构建指令都根据region信息做了区分,方便后续的机房扩充和维护。

④ Webpack多机房配置改造

这里主要介绍webpack打包时如何实现不同地区的dll动态引入,以及将国家码等信息编译到站点内。

  • 动态DLL引用

不同地区的dll文件构建完毕之后,我们需要在 webpack.pkg.config.js 中实现基于地区的动态DLL引用:

// 代码示例
// webpack.pkg.config.js
const dllReferencePlugin = config.plugins.find(plugin => {
  const name = plugin.constructor.name
  if (['DllReferencePlugin'].includes(name)) {
    returntrue
  }
})

if (dllReferencePlugin && dllReferencePlugin.options) {
  dllReferencePlugin.options.context = pageTempPath
  // 动态dll文件引用改造,根据wukong.region:01,02,03 来设置manifest路径
  const DLL_DIR = wukong.region === '02' ? 'dll-02' : 
                  wukong.region === '03' ? 'dll-03' : 'dll'
  dllReferencePlugin.options.manifest = require(`./${DLL_DIR}/manifest.json`)
  ....
}

通过上述示例代码,我们需要将不同机房构建dll文件时生成的manifest.json进行不同动态引入改造,避免站点运行时,相同依赖通过chunkid进行匹配时,出现错乱导致页面异常。

  • 全局配置注入

通过编译服务能够拿到平台web用户在哪个地区编译发布的站点,但是这些信息如何编译到用户可访问的每个站点里呢?

我们通过wk_siteInfo将地区信息注入到前端:

// webpack.pkg.config.js
const site_option = {
  host: ip.address(),
  port: 8080,
  stPath: '****',
  loginPath: '****',
  wk_siteInfo: { 
    siteId,  
    ....
    wkCountryInfo, // 地区信息、时区、语言码信息
    region,  // 地区信息
  },
  ...wukong
}
// 完成地区信息的注入
// index.html
<script>
  // 示例代码 :window.wk_siteInfo = JSON.stringify(htmlWebpackPlugin.options.wk_siteInfo)
</script>

通过修改webpack.config.js,将站点的地区信息、时区、语言码等信息注入到wk_siteInfo,然后通过htmlWebpackPlugin将打包后的地区码信息注入到html中,这样就能实现页面对地区信息读取。

⑤多地区部署流程

构建流程图

该流程图详细展示了多地区构建部署的完整流程:

  1. **地区选择:**根据目标部署地区选择相应的构建分支
  2. **DLL构建:**为不同地区构建专用的DLL文件,使用对应的API包
  3. **Web构建:**使用地区特定的前端代码目录进行构建
  4. **CDN部署:**将构建产物部署到对应地区的CDN服务
  5. **服务启动:**使用正确的环境变量启动对应地区的服务

环境变量配置:

编译服务改造技术亮点

① 统一入口设计

  • 通过context.ts实现配置分发的统一入口
  • 运行时动态选择地区配置,无需重新编译
  • 支持环境变量覆盖,便于容器化部署

② 差异化API包管理

  • 01地区使用@vivo/wk-api
  • 02、03地区使用@vivo/asia-wk-api
  • DLL构建时自动选择对应API包,避免冗余

③ 服务发现机制

  • 测试/预发环境通过group区分地区
  • 生产环境依靠物理机房隔离,统一使用prod_wk分组
  • 自动识别环境类型,动态选择ZooKeeper集群和分组策略
  • 本地开发环境自动跳过服务发现,避免干扰

④ 智能构建策略

  • Webpack配置根据region参数动态调整
  • 自动扩展DLL manifest内容路径
  • dll基座互相独立

⑤ 前端代码隔离

  • 不同地区使用独立的前端代码目录
  • 保持核心业务逻辑复用的同时实现地区定制
  • SDK初始化时自动注入地区信息

通过上述的整套共线方案设计,后续新增国家机房时,新增地区只需配置相应环境文件,无需修改核心代码,配置结构清晰,各地区配置完全隔离,节约90%重复建设成本,提升了系统的灵活性和可扩展性。

通过统一的技术架构和清晰的配置管理,成功实现了"一套代码,多地部署"的目标,为悟空互动平台的多地区化业务发展提供了坚实的技术保障。

3.3 npm私服\&底层库

介绍完编译服务后,接下来介绍私服的代理策略和公共底层库的外销化改造。

npm私服

悟空除了服务业务运营,还有开发者部分,基于目前开发者整体的开发习惯,我们需要做到开发者零感知,实现02地区npm包的部署。

基于此我们有以下三点目标:

  • 开发者在办公网络可以直接开发、发布各机房环境的组件
  • 一套PaaS服务为多个机房提供组件物料的管理和发放
  • 确保物料传输合规

为了实现上述目标,我们做了一套完整的02地区私服方案设计,具体如下图所示:

开发者开发组件上传,维持01机房npm私服开发上传习惯,无需新增02机房源,npm物料仍然托管在01npm私服。

同时在02机房建设代理npm私服,通过ip白名单与悟空通信,私服本身通过verdaccioss服务配置代理:

uplinks:
  zhan-npm:
    url: http://****.vivo.lan:8080
packages:
  '**':
  ...
    # allow all known users to publish packages
    # (anyone can register by default, remember?)
    # if package is not available locally, proxy requests to 'npmjs' registry
    proxy: zhan-npm

通过02机房代理私服的方式,既能减少了悟空开发需要额外多维护02机房源,同时也降低了开发者组件包维护成本,实现本地不需要新增任何npm源,即可实现02机房包的开发上线流程。

底层库外销改造

wk-api是悟空平台封装的底层npm库,为了实现多机房场景下,业务组件多地区场景请求接口域名不变,我们通过fetch统一拦截器+header国家码信息,直接将业务组件的请求转发到不同国家的接口服务。

具体实现代码如下:

// 请求拦截器 - 动态URL路由
axios.interceptors.request.use(config => {
  const { region } = app;
  
  // 根据region动态获取prodUrl
  if (region === '01') {
    config.baseURL = 'https://****.vivo.com.cn';
  } elseif (region === '02'||region === '03') {
    config.baseURL = 'https://****.vivo.com';
  } 
  
  // 请求头注入
if (wkCountryInfo.loc; wkCountryInfo.lan; wkCountryInfo.tz) {
      code = `loc=${wkCountryInfo.loc};lan=${wkCountryInfo.lan};tz=${wkCountryInfo.tz}`;
      loc = wkCountryInfo.loc;
    }
    config.headers = Object.assign(config.headers, {
      'X-I8n-Code': code,
      'X-Wukong-Loc': loc
    }); 
  return config;
});

统一拦截器策略有以下优点:

  • **零侵入性:**业务组件无需关心当前部署环境,统一使用相同的API调用方式
  • **智能路由:**根据 region 参数自动选择对应机房的服务器地址
  • **请求头增强:**自动注入地理位置、来源页面等关键信息,支持后端的精细化处理

四、总结

悟空系统的整体改造从上到下可以分为用户能直观看到的平台改造,然后到用户感知不到的编译服务改造,最后是开发者也无需感知的外销私服部署,从前期梳理到后续一个个模块的拆解,出方案,进行开发落地,最终实现了以下目标:

  • 一种架构、一套代码实现多地区部署
  • 增量功能,无需重复开发,多地区复用
  • 新增地区机房部署,能够节约90%以上的成本,开发者组件外销迁移成本降低90%

低代码一度是企业软件行业最火爆的概念之一。不管是国内还是国外,低代码都是行业领头羊的标配。比如,国外的Microsoft Corporation、Oracle、Salesforce,国内的金蝶、用友、北森等。

但随着各种AI大模型的问世,低代码的消息似乎很少再听到了。

前几天,有个创业者后台私信我:老师,现在AI都能写代码了,你说低代码这个赛道还有前途吗?会不会过两年就变成一堆没人要的电子垃圾?

这个问题问得挺扎心的。特别是作为一名业内人士,我表示很慌!

不过正好,我最近在研究一家深圳的公司,叫织信,他们家就是做低代码出身的。公司叫基石协作。今天借着他们家的情况,聊聊我的看法。

一、低代码到底是个什么东西?

很多人对低代码有误解,觉得低代码就是“拖拖拉拉,拼拼凑凑”,做个简单的表单、搞个审批流,仅此而已。你要是这么理解,那确实,AI来了,这玩意儿第一个被淘汰。

但真正的低代码,没那么简单。

织信的创始人跟我说过一句话,我印象很深:“低代码本质上不是拖拽,是企业应对变化的战略能力。”

什么意思?

你看啊,任何一个企业,只要活过三年,一定会遇到一个问题:现有的软件不好用了。业务变了,流程改了,但软件改不动。

不改吧,业务跑不顺。改吧,找原厂报价,动辄几十万,排期半年后。

自己招人开发,一个高级工程师月薪两三万,招三个,干一年,成本怎么也得一百万左右。最后终于等到系统做好,但是业务需求已经发生改变,这个速度实在跟不上脚步了。

这就是企业的真实困境。

而低代码解决的就是这个问题。

低代码开发模式让企业能用相对低的成本,快速响应业务的变化,能给企业提供一套“可生长的数字底座”。

二、低代码的真正门槛:不是技术,是钱

但是,做低代码有个巨大的坑:太烧钱了。

有多烧钱呢?

据我所知,国内几家头部SaaS公司在低代码平台上的投入,都是以“亿”为单位的。北森的纪伟国甚至说过一句话:为了做PaaS,北森差点掉进坑里爬不出来。

织信也不例外。

他们从2018年开始做低代码,一做就是8年。前两年几乎没有任何市场声音,就是埋头写代码、搭架构。创始人跟我说,那几年最难的时候,团队每天都在问自己:我们是在做一件正确的事,还是在往坑里跳?

为什么要这么死磕?

因为低代码这东西,没有捷径。你要让企业能“低代码”开发,首先你自己得把那些复杂的底层逻辑都用代码写好。权限模型、数据模型、流程引擎、API网关……每一个模块都得从零搭起来。这不是“低代码”,这是“高投入”。

那为什么还要做?

两个原因。

第一,全代码开发的成本,企业扛不住。一个中型企业,一年IT预算就几百万,全用来养开发团队都不够,更别说应对业务变化了。

第二,用全代码写的功能,系统一升级就容易崩。原因在于你今天写个插件,明天原厂系统升级,插件就废了。而低代码配置出来的功能,天然和核心系统解耦,兼容性好得多。

所以,低代码产品赌的就是:企业需要的不是更便宜的代码,而是更敏捷的业务。

三、AI来了,低代码慌不慌?

回到开头那个问题:AI都能写代码了,低代码会不会被淘汰?

说实话,这个问题确实问到了点子上。

你想啊,以前为什么需要低代码?因为写代码贵、写代码慢、写代码的人不好招。现在AI来了,写代码的成本正在断崖式下跌。一个初中生,用Cursor,可能一天就能写出一套小程序。

那低代码的价值在哪?

织信的团队给了我一个很有意思的视角:“以前是人用软件,以后是AI用软件。”

你仔细想想,AI怎么用软件?

今天AI写代码,本质上还是在模仿人的操作——识别界面、点击按钮、输入内容。但软件是为人类设计的,按钮是给人点的,菜单是给人看的。AI用这套东西,就像让你用筷子喝汤,能喝,但别扭。

未来的软件,应该是为AI设计的。

什么意思?

就是软件不再只有“人机界面”,还要有“机机界面”。AI可以直接调用软件的能力,不需要通过界面。

这时候,低代码的价值就出来了。

因为低代码平台天然是结构化的。你在低代码平台里建一个“客户表”,系统知道这是“客户”;你设一个“合同金额”字段,系统知道这是“金额”。所有的数据、流程、权限,都有清晰的语义。

这套结构化的东西,恰恰是AI能理解的。

很多低代码缠上现在就在做一件事:把他们的低代码平台,从一个“面向人类的开发工具”,进化成一个“面向AI的操作系统”。

他们提供语义能力——AI可以直接问“上个月签了多少合同”,系统知道“合同”是什么,“签”是什么意思。

他们提供图谱能力——AI能看懂业务流程的全貌,知道从“线索”到“商机”到“合同”是怎么流转的。

他们提供接口能力——AI可以直接调用系统能力,帮你创建一个项目、发起一个审批、生成一份报表。

你看,这不是低代码被AI干掉,而是低代码成了AI的“操作手册”。

四、最后的话

简单再总结一下这个问题:AI能写代码了,低代码会不会变成一堆垃圾?

我的答案是:会,也不会。

那些只会做“拖拉拽”的低代码,一定会被淘汰。因为当代码本身变得廉价,“不用写代码”这个优势就不存在了。

但那些能帮助企业构建“结构化数字能力”、能成为“AI操作系统”的低代码,不仅不会被淘汰,反而会成为企业数字化的核心底座。

就像低代码正在做的——他们不是在和AI竞争,而是在为AI铺路。

最后说一句:任何技术都有生命周期,但企业应对变化的需求,永远不会消失。

只要这个需求在,低代码就有存在的价值。只是,它需要进化。

而进化的方向,不是和AI比写代码,而是让AI更懂业务。

这才是真正的“低代码”。

在 LoRaWAN 项目部署过程中,如何快速完成传感器数据解析与物模型构建,是影响交付效率的关键因素。ThinkLink 物模型引擎全面兼容 TTN 与 ChirpStack 的 Decoder 解码机制,可直接复用厂商提供的解码脚本,显著缩短部署周期。本文以 星纵智能 的 EM300-SLD 水浸传感器为例,详细说明如何在 ThinkLink 上完成物模型配置。


一、步骤一:获取官方 Decoder 代码

EM300-SLD 官方解码脚本地址:

https://github.com/Milesight-IoT/SensorDecoders/blob/main/em-series/em300-sld/em300-sld-decoder.js

ThinkLink 支持 ChirpStack / TTN 标准解码格式,无需改写函数框架,仅需确认输出字段名称。


二、步骤二:创建 ThinkLink 物模型

进入 ThinkLink 平台 → 模型管理 → 新建模型:

  1. 填写模型名称、标签、备注
  2. 代码格式选择:ChirpStack
  3. 将 GitHub 获取的完整 Decoder 代码粘贴至编辑区
  4. 保存模型

此时平台已具备解析原始 Payload 的能力。


三、步骤三:配置实时数据字段

⚠ 关键注意:字段“标识符”必须与 Decoder 返回字段完全一致。

建议添加字段:

  • water\_leak\_status(漏水状态)
  • battery\_voltage(电池电压)
  • temperature(温度)
  • signal\_quality(RSSI / SNR)

完成字段配置后保存。


四、步骤四:绑定物模型到设备

进入设备管理页面:

  1. 打开对应 EM300-SLD 设备
  2. 选择物模型
  3. 绑定已创建模型
  4. 保存

设备再次上报数据后即可实时展示结构化数据。


五、进阶应用:数据增强与逻辑扩展

ThinkLink 支持在 Decoder 基础上进行二次开发:

  • 单位换算
  • 阈值判断与告警状态输出
  • 信号质量等级分析
  • 注入网关信号强度
  • 设备在线状态建模

通过“解析 + 计算 + 建模”一体化能力,实现更智能的数据建模方式。


六、TKL + EB 组合方案:LoRaWAN 存量改造新模式

ThinkLink(TKL)结合 EdgeBus(EB)边缘能力,可实现:

  • 硬件先行 软件后置
  • 协议转换与规则引擎远程更新
  • 标准化接入路径 加速规模复制

该模式尤其适用于传统有线传感器升级 LoRaWAN 场景。


如需设备对接支持,欢迎联系门思科技。
免费提供对接服务,仅需提供样品及说明文档即可启动流程。

ThinkLink 体验地址
https://thinklink.manthink.cn

V 友们好,我是 Most.Box 的独立开发者。
作为一个喜欢瞎折腾的程序员,我一直有个执念:我们的数据到底属于谁?
Notion 体验很好,但数据在别人的服务器上;网盘空间很大,但动不动就和谐文件。如果不掌握数据的所有权,在这个数字时代,我们其实是在“裸奔”。
很多懂 Web3 的朋友会说,用 IPFS 啊,用去中心化存储啊。但现实是,让普通人去保管 12 个英文单词组成的“助记词”太反人类了。丢了助记词,资产全无;被盗了,神仙难救。
于是,为了对抗遗忘,为了守护记忆与隐私,我利用业余时间开发了 Most.Box。你可以把它当作一个永不丢失、绝对私密、抗审查的个人知识库

🛠 它是怎么解决上述痛点的?

  1. 无助记词登录
    在 Most.Box 中,你的身份(私钥)是由你的 “用户名 + 密码” 通过确定性算法( PBKDF2 + SHA256 )实时计算生成的。私钥从未在网络上传输,只在你的浏览器内存中短暂存在。走到任何电脑前,输入账号密码,数据自动从去中心化网络召回解密。
  2. IPFS/Crust 永续备份
    纯 IPFS 节点掉线数据就没了。Most.Box 深度集成了 Crust Network 。当你保存笔记时,应用会自动在 Crust 链上发起“存储订单”,全球节点为你冗余备份,只要网络在,数据就在。
  3. 端到端加密的极致隐私:
    使用了 X25519 (NaCl Box) 进行端到端加密。你的笔记在离开浏览器前就变成了乱码。我作为开发者,也完全不知道你存了什么。
  4. 丝滑的编辑器体验
    前端基于 Next.js 16 (App Router) + React 19 + Mantine UI 。编辑器用了 Milkdown ,支持类 Typora 的所见即所得体验、代码高亮和数学公式。纯静态导出 (SSG),甚至可以直接部署在 IPFS 上。

💬 写在最后
我始终相信“代码即武器”。在这个充满不确定性的世界里,我们要用技术武装自己,把数据的控制权从巨头手中拿回来。
目前项目的前端已经完全开源 (MIT 协议),没有任何黑盒操作。

刚刚开发完成,肯定还有很多 Bug 和粗糙的地方。诚挚邀请 V 站的各位大佬体验、捉虫、吐槽。如果有感兴趣参与开源贡献的,也极其欢迎!

引言

从 2025 年初开始,大模型领域进入了新一轮加速发展阶段。随着大模型在企业内部系统和生产环境中的落地,大模型推理逐渐演化为一类重要的基础设施能力。在这一背景下,围绕大模型推理访问、资源管理与安全控制的 AI 网关(AI Gateway) 受到了业界的广泛关注(参见参考资料 [1] [3] [5])。

由于 AI 网关仍处于快速演进阶段,不同厂商和社区对其定位与边界的理解并不完全一致。本文尝试基于当前较为主流的工程实践,对大模型推理场景中的工作机制 以及 AI 网关的角色、作用和分类方式 进行系统性说明。

1. 大模型的推理场景

在说明 AI 网关之前,有必要先明确大模型推理场景的基本工作机制。

016fcc15a0b14d1ff625e8b676006563.png

图1 大模型推理场景的工作机制

站在“智能体(Agent)”的视角,一个典型的大模型推理场景可以抽象为以下几类交互关系(见图1):

  • 用户 → 智能体:用户向智能体发起请求
  • 智能体 → 大语言模型:智能体通过 LLM API 调用大语言模型进行推理
  • 智能体 → 传统服务:智能体调用已有业务系统或工具提供的能力
  • 智能体 → 智能体:智能体之间进行协作或能力委托

在接口层面,OpenAI API [6]的接口语义正在逐步成为事实上的接口参考标准(de facto standard),但在底层推理系统和企业内部场景中,仍然存在大量非 OpenAI 协议的实现方式。与此同时,MCP(Model Context Protocol)[7]等协议更多用于工具能力描述和上下文编排,其底层调用仍然依赖 HTTP、gRPC 或内部 RPC 等通信机制。对于智能体之间的协作,也正在出现 A2A(Agent to Agent)[8]等新型协议尝试。

2. 大模型推理场景中的网关

02eacff54a768d396c7541037ccd0bb8.png

图2 大模型推理场景中的网关

在上述推理场景中,随着调用链条变长、资源成本上升以及安全风险增加,单纯依靠传统 API 网关已难以满足需求。围绕大模型推理,业界逐步形成了三类不同侧重点的“网关型能力”[2](参见图2):

  • AI 网关(AI Gateway):用于对 LLM 资源消费进行统一控制
  • 推理网关(Inference Gateway):用于对 LLM 推理资源进行抽象和调度
  • 智能体网关(Agent Gateway):用于控制智能体对工具或其他智能体的调用

需要说明的是,上述分类主要是从功能和职责视角对大模型推理场景中的网关能力进行拆分。在实际工程实现中,这些能力可能由同一个网关系统统一承载,也可能以插件、子模块或独立组件的形式存在,其具体形态取决于系统规模、组织复杂度以及对稳定性和演进性的要求。

本文后续将重点讨论 推理网关 与 AI 网关。智能体网关由于仍处于快速演进阶段,这里不做展开,感兴趣的读者可参考资料 11。

3. 推理网关(Inference Gateway)

推理网关的定位

推理网关并不直接执行模型推理,其核心职责是:

  • 对 LLM 推理资源进行抽象
  • 在多个推理实例之间进行调度
  • 控制推理请求的访问路径与生命周期

可以将推理网关理解为 连接推理客户端与底层推理实例的重要控制节点

推理网关的工作场景

b1499c4e5ef5cd879ceba10c8bceb1f1.png

图3 推理网关的工作场景

如 图3 所示,在一个 Kubernetes 集群中,通常会部署多种不同规格或不同模型的推理资源(例如 Qwen-72B、DeepSeek-32B 等)。每一种模型资源对应一个推理池(Inference Pool),而一个推理池中则包含多个推理实例。

推理网关的核心工作包括:

  • 根据请求中指定的模型名称,将请求路由到对应的推理池
  • 在目标推理池中,为该请求选择一个合适的推理实例

GPU 推理调度的复杂性

与传统基于 CPU 的服务实例相比,基于 GPU 的推理实例在调度层面存在显著差异:

  • GPU 推理实例的并发处理能力有限,更容易出现过载
  • 推理实例通常维护 KV Cache 等状态,不同实例之间的状态差异会直接影响延迟和吞吐
  • 是否命中缓存,对整体性能和资源消耗有决定性影响

因此,在推理实例选择上,简单的轮询或最小连接策略往往难以取得理想效果,需要结合实例负载、缓存状态、排队情况等多维信息进行调度。

目前,业界已经出现多种实现方案(参见 [4] [9] [10])。其中,Gateway API Inference Extension [4]作为 Kubernetes 社区的官方项目,引入了 EPP(EndPoint Picker)[9]作为独立的调度组件(见 图 3)。EPP 负责感知推理实例状态,并向推理网关返回合适的目标实例。

上述对比主要针对典型 Web 服务负载与大模型推理负载的差异进行说明,实际生产环境中仍需结合具体模型特性和业务请求模式进行设计。

4. AI网关(AI Gateway)

AI 网关的核心职责

AI 网关最重要的职责是 对 LLM 资源消费进行统一控制。

24af84dbfb95feb4248f52f2dc137952.png

图4 传统服务网关的工作场景

在传统服务网关场景中(见 图 4),不同业务通常对应各自独立的服务资源,网关的主要任务是完成路由和基础治理。而在大模型推理场景中,由于推理资源成本高昂,不同业务往往需要共享同一组推理资源池(见 图 5)。

8450a097aa4402359c366f16f8b4bb3c.png

图5 AI网关的工作场景

在这种模式下,AI 网关需要承担以下职责:

  • 对不同调用方的并发数、配额和使用总量进行控制
  • 缓解多业务竞争同一推理资源时带来的服务质量波动
  • 为上层业务提供稳定、可预期的访问体验内容

安全与合规控制

对入向提示词和出向模型结果进行内容安全检测,也是 AI 网关的重要能力之一。

在工程实践中,通常会将内容安全检测系统独立部署(参见 图 5),由 AI 网关通过远程调用的方式进行集成。这种模式具有以下优势:

  • 安全策略变更频繁,可降低对核心转发路径稳定性的影响
  • AI 网关可以对异常或不可用的检测节点进行自动摘除
  • 便于同时集成多个厂商或多种检测能力

在实际落地过程中,往往需要结合同步检测、异步审计以及分级处置策略,在安全性与端到端延迟之间取得平衡。

统一入口与多资源池调度

为LLM的调用提供统一入口,是 AI 网关的另一项关键价值。

在单LLM资源池场景下(见图6),AI 网关与推理网关往往可以合并部署,由同一组件同时完成资源消费控制和实例级调度。

74e07ef4b51638c2a86cdb7a8e0925c2.png

图6 AI网关的工作场景(单LLM资源池)

而在多LLM资源池场景下(见图7),AI网关和推理网关会分离部署。对于LLM的消费者来说,只需要发送请求到AI网关,而不需要关心LLM资源池的具体物理位置。AI网关会基于预置的调度比例、LLM资源池的忙闲状态、访问速度、成本等信息,将请求发往合适的LLM资源池

在该场景下,AI 网关实际上承担了跨推理池、跨模型、甚至跨地域和跨云环境的二级调度角色,用于在成本、性能和可用性之间进行全局权衡。

26af1d582e567a64598b9e6bd3454fcf.png

图7 AI网关的工作场景(多LLM资源池)

5. 总结

本文围绕大模型推理场景,对 AI 网关的产生背景、核心作用以及3种AI网关职责(推理网关、AI网关、智能体网关)之间的关系进行了系统性说明。

总体来看,AI 网关并不是一个单一形态的产品,而是一组围绕大模型推理逐步演进的关键能力集合。在成本控制、安全合规、访问质量和系统演进性等方面,AI 网关都将发挥越来越重要的作用。

随着大模型推理基础设施的持续发展,可以预见,AI 网关将在未来几年内成为企业级 AI 系统架构中的关键组成部分。

参考资料

作者简介

章淼,博士,1994年进入清华大学计算机科学与技术系学习,2004年获得博士学位,2004年至2006年在清华大学留校任教,在清华期间曾参与中国第一代核心路由器的研制工作。2012年起在百度工作超过十年,聚焦云网络基础架构的研发工作,是BFE开源项目的发起人。在百度期间积极推动软件工程能力提升,曾担任百度代码规范委员会主席,2021年10月被授予百度代码规范委员会荣誉主席。2022年出版《代码的艺术:用工程思维驱动软件开发》。2023年4月起担任瑛菲网络CEO,聚焦研发面向云和大模型场景的现代化流量管理平台。