2026年1月

z0scan 是一款轻量级的安全扫描工具,主要用来快速检测目标网站、服务器或者网络服务里常见的安全问题,比如开放的端口、弱口令、漏洞信息等。

1. 先下文件

安装包下载:https://pan.quark.cn/s/1592753454d8

2. 找个地方放文件

下载完是个exe程序,别直接丢桌面(容易误删),建议新建个文件夹,比如 D:\tools\z0scan,把exe拖进去。

3. 运行它!

双击 z0scan-windows-amd64.exe—— 这时候可能会弹提示问“是否允许此应用对你的设备做更改”,点 (放心,这步是正常操作)。

4. 等它自己装完

不用手动点下一步!程序会自动跑进度条,等个几十秒(具体看电脑快慢),看到窗口提示“安装完成”或者直接关了,就装好了。

我想让 AI 分析一下第三方 jar 包提供的一个类每次都 new 会不会造成内存泄漏,但是我发现无法把这个类添加到 cursor 对话框里。

最后我指明了这个类的名称发给 cursor ,它竟然把这个 jar 包解压缩到了我项目路径下再去做分析,并且分析完剩下的 tmp 文件都留着。。。。

有没有其他更优雅的办法呢?

前言:如果说 2023 年是“大模型”的破壳时刻,那么 2026 年则被科技界正式定义为 “智能体(AI Agent)元年”。这一年,AI 完成了从“只会聊天的计算器”到“能办事的数字员工”的跨越。一场关于行动力、自主权与新赛道的产业革命已然拉开序幕。

一、 范式跃迁:从“静态生成”到“动态执行”


2026 年,我们正见证 AI 逻辑的根本性扭转。过去,大模型以“知”见长,而现在的智能体以“行”取胜。

  • 自主决策的闭环: 智能体不再是被动等待指令的对话框,而是具备目标感知、环境交互与任务规划能力的“数字生命”。
  • 具身智能的延伸: 通过多模态模型的融合,智能体开始走出屏幕,深入到自动驾驶、智能制造以及复杂的个人事务处理中,实现了从“辅助工具”到“行动主体”的质变。

二、 赛道开辟:2026 产业生态的三大爆发点


在这一条全新的赛道上,三根核心支柱正支撑起万亿级的市场空间:

1. 智能体原生市场的形成

如同当年的 App Store 改变了移动互联网,2026 年的“智能体市场”成为了新的流量入口。开发者不再仅仅提供算法,而是发布具备专业技能(如理财顾问、代码架构师、健康管家)的独立智能单元。

2. 跨系统协同的“数字劳动力”

智能体之间开始学会“对话”。通过标准化的协作协议,不同的智能体可以像人类部门一样相互配合,完成从市场调研到方案落地的一站式自动化办公。

3. 可信治理与责任伦理

随着 AI 拥有了代理权,2026 年也成为了“AI 治理元年”。全球范围内关于智能体身份认证、行为审计与权限分级的法律框架基本成型,为新赛道的狂飙突进安上了“安全阀”。


三、 角色再造:人类从“操作员”转型为“协调者”


智能体的普及并非对人的取代,而是对人类价值的重新定义。在 2026 年的工作流中,人类的角色发生了以下转变:

人类设定目标(What to do)- 智能体规划路径(How to do)

人类判断价值(Why it matters)- 智能体执行交付(Get it done)

未来的核心竞争力,不再是你会不会写代码或画图,而是你是否具备“智能体调度能力”——即如何高效地管理一群 AI 智能体来达成复杂的商业目标。


四、 结语:开辟者,终将定义未来


2026 年,大幕已启。智能体来了,它带来的不仅是技术的迭代,更是一次文明层面的协作升级。在这条新赛道上,先行者正在重塑行业逻辑,而跟随者也将在 AI 原民的时代找到新的生态位。

这或许就是“智能体元年”最深刻的启示:技术的终点,永远是人的升华。

本文章和图片由AI负责生成

作者介绍

苏国庆

资深审计内控专家 | 全栈架构师

Oinone Codelab 开源组织 核心用户

行业领先内控审计公司技术负责人,10 年+ 行业深耕,拥有从架构设计至业务落地的全链路闭环能力。

精通全栈开发与数据治理,在复杂数据采集及深度分析领域造诣深厚,擅长攻克高难度业务数据挑战。

在国家大力推进教育治理体系和治理能力现代化的背景下,财政部、教育部联合发布《关于进一步加强高等学校内部控制建设的指导意见》(财会〔2024〕16号),明确提出到2026年基本建成制度健全、权责清晰、制衡有力、运行有效、风险可控、监督到位的高校内部控制体系。

如何让内部控制体系实际融入单位业务并服务于单位治理,让风险可监测、可跟踪、可预警、可纠偏,成为现实难题。以此为驱动,河南中审科技有限公司依托数式Oinone低代码平台,成功打造了面向各级院校的“院校内部控制数智化服务平台”,以真实业务场景为载体,探索出了一条“用内控规则驱动业务、用数据支撑治理”的可落地路径。不仅响应了国家对高校治理能力提升的战略要求,更充分展现了Oinone作为企业级产品化引擎在复杂业务场景中的强大支撑能力。

政策驱动内部控制成为单位治理能力提升的重要抓手

近年来,国家层面持续释放明确信号:

第十四届全国人大常委会第十次会议表决通过《关于修改(中华人民共和国会计法)的决定》,首次将内部控制写入会计法,明确提出“各单位应当建立、健全本单位内部会计监督制度,并中华人民共和闻会计法纳入本单位内部控制制度”,为各单位开展内部控制评价工作提供了坚实的法律保障。

2023年2月8日,中共中央办公厅、国务院办公厅印发了《关于进一步加强财会监督工作的意见》,并发出通知,要求各地区各部结合实际认真贯彻落实。其中,《意见》从5个方面明确要求完善“内部控制”:

图片

尤其是在高校领域,财政部、教育部最新文件明确要求:

规范债务管理,加强对外合作管理,强化科研管理,加强财政专项项目管理,规范非学历教育办学行为,强化所属企业管理,规范附属单位和校内独立核算单位管理,加强教育基“6+N"金会管理。全面提升高等学校内部控制的信息管理水平。

到2026年,基本建立制度健全、权责清晰、制衡有力、运行有效、风险可控、监督到位的内部控制体系。

图片

充分发挥高等学校党委在内部控制建设中的领导作用,内部控制相关重要议题应提请党委决策审议。明确高等学校校长是内部控制建设和实施工作的首要责任人明确学校领导班子其他成员是各自分管领域内部控制建设与实施的负责人。内部控制工作应纳入高等学校领导班子年度履职清单。

现实痛点为什么“有内控,却防不住风险”

在大量高校实践中,我们发现几个高度共性的难题:

图片

1.建设成效与预期存在偏差

· 建设成果与单位业务不匹配未达建设预期成效;

· 未将内部控制融入单位业务流程业务覆盖不全面;

· 未形成对单位治理的支撑作用无法充分发挥管控效能;

2.传统建设方法无法满足新要求

· 传统内控建设方法耗费工时多、质量低、效果差;

· 需采购第三方服务与过“紧日子”的要求不符合;

· 对人员专业能力和经验依赖性高无法确保内控建设质量和效果;

3.风险管控响应滞后

· 传统模式依赖人工排查风险管控响应存在滞后;

· 人工识别易出现风险遗漏判断结果存在偏差;

· 风险管控以事后补救整改为主事前防控不足;

这些问题的本质在于:内控规则没有进入业务系统“跑起来”。

关键支撑数式 Oinone 平台让内控数字化、数智化、数治化

高校内控系统对平台能力要求高:业务复杂、规则多、变化快、国产化要求严格。

数式Oinone在本项目中,成为内控数智化真正落地的关键底座。基于内部控制体系成果构建内控规则库,形成单位管控的业务底座,实现内部控制数字化;通过内部控制形成基于规则前置的经济业务的全流程应用,实现内部控制数智化;基于内控规则对业务过程深度分析,让数据话说,挖掘潜在风险,织密廉政风险防范网,实现内部控制数治化。

1.数据驱动:平台级能力的统一建模与演进基础

数式Oinone以元数据驱动作为平台的底层设计理念,将应用中的模型、页面、流程、权限、集成关系等共性要素统一抽象为可管理的元数据对象,使系统具备:

· 可建模:核心业务要素在平台层面形成统一描述,而不是分散在各类实现代码中;

· 可复用:已沉淀的模型结构、交互模式和流程能力可在不同应用、不同项目中复用;

· 可演进:通过元数据的差量管理和版本管理机制,支撑产品持续迭代和升级;

基于这一能力,平台实现了产品结构与实现逻辑的解耦,为复杂业务系统的长期演进、模块扩展和规模化交付提供了稳定而可持续的技术基础。

图片

2.低无一体:效率与灵活兼得

面对高校差异化管理需求,又可通过Java / Vue原生代码深度扩展,实现了真正的 “低无一体”开发模式,既快,又不受限。

图片

3.复杂流程建模能力,匹配真实内控场景

Oinone原生支持复杂流程引擎,使内控规则能够完整嵌入真实业务流转,而非简单审批。

图片

4.标品与个性化共存,支撑规模化复制

· 内控核心能力被沉淀为标准产品;

· 学校个性化规则以扩展包方式实现;

· 标品可持续升级,个性化不被覆盖;

图片

Oinone“产品化引擎”的能力解决了:项目能交付,产品却难迭代的行业共性难题。

5.国产化全栈支持,满足政务要求

平台全面适配:国产操作系统、国产数据库、国产中间件。

图片

落地成效内控从“制度约束”走向“治理工具”

基于 Oinone 平台构建的内控系统,在高校实际应用中,实现了:

✅ 规则前置

制度要求自动融入业务,不符合规则的操作即时提示或限制。

✅ 风险可视

预算执行、项目进度、合同履约、资产变动等 全流程可回溯。

✅ 管理闭环

问题发现 → 预警 → 整改 → 留痕,全程留痕可追溯。

✅ 治理升级

内部控制体系成果成为单位治理的“业务底座”

Oinone 平台成为单位治理的“技术底座”;

内部控制执行过程成为单位治理的“数据底座”;

“业务底座”+“技术底座”+“数据底座”促进单位治理能力进阶升级。

用Oinone,让专业能力变成可复制的产品

高校内控数智化实践证明:

优秀的平台,能够让复杂制度变得可运行,让专业能力变得可复制。

数式Oinone并不仅是一个低代码工具,而是一个面向软件公司的企业级产品化引擎:

· 帮助软件企业沉淀行业能力;

· 支撑标准产品与个性化交付并行;

· 让“项目经验”真正升级为“产品能力”。

而基于 Oinone 打造的内控数智化平台,也正在成为高校治理现代化进程中的重要数字基础设施。

ARC-AGI 测试

ARC-AGI 测试,是只给 AI 一两个「图形变形、变位、变色」的例子,根据这个例子,让 AI 做下一道题。

类似于数字猜谜时,我出 2,4,6 然后填(8)作为例子,然后再出 1,3,5 让 AI 填(7)。ARC-AGI 只不过是用图形的方式。

ARC-AGI 的核心假设

ARC-AGI 的核心假设是,人类是被进化调教的智能,预制了一些核心的先验知识(即娘胎里带来的),这些核心先验知识,是关于「物体恒常性」、「目标导向性」、「大小计数」、「形状拓扑」这些物理先验知识的。所以未来的 AGI ,应该也要对齐到这些。

可以理解的 ARC-AGI-1 和 ARC-AGI-2

前 2 版还可以理解(动手试试看):

第 1 版: https://arcprize.org/play?task=007bbfb7

ARC-AGI-1

第 2 版: https://arcprize.org/play?task=1ae2feb7

ARC-AGI-2

只不过,前 2 版都难不住现在的 AI: https://arcprize.org/leaderboard

ARC-AGI-SCORE

变态的 ARC-AGI-3

既然前 2 版难不倒 AI ,那就开发第 3 版啊,于是第 3 版全面升级,开始用互动游戏来测试了。

但,第 3 版这是谁出的第一个啊,太变态了!!

试试看,你能不能解出来: https://three.arcprize.org/games/ls20

ARC-AGI-3

腾讯云这两天全量上了 passkey 登录,刚才试了一下,登录后竟然还要微信扫码校验,太逆天了。

阿里云都上了不知道多久了,而且也不需要二次校验,之前的 200M 服务器也是摸着阿里云过河,抄都不会抄真是连一根毛都比不过

前言

本篇文章主要讲解 RBAC 权限方案在中后台管理系统的实现

在公司内部写过好几个后台系统,都需要实现权限控制,在职时工作繁多,没有系统性的来总结一下相关经验,现在人已离职,就把自己的经验总结一下,希望能帮助到你

本文是《通俗易懂的中后台系统建设指南》系列的第九篇文章,该系列旨在告诉你如何来构建一个优秀的中后台管理系统

权限模型有哪些?

主流的权限模型主要分为以下五种:

  • ACL模型:访问控制列表
  • DAC模型:自主访问控制
  • MAC模型:强制访问控制
  • ABAC模型:基于属性的访问控制
  • RBAC模型:基于角色的权限访问控制

这里不介绍全部的权限模型,有兴趣你可以看看这篇文章:权限系统就该这么设计,yyds

如果你看过、用过市面上一些开源后台系统及权限设计,你会发现它们主要都是基于 RBAC 模型来实现的

为什么是 RBAC 权限模型?

好问题!我帮你问了下 AI

对比维度ACL (访问控制列表)RBAC (基于角色)ABAC (基于属性)
核心逻辑用户 ↔ 权限
直接点对点绑定,无中间层
用户 ↔ 角色 ↔ 权限
引入“角色”解耦,权限归于角色
属性 + 规则 = 权限
动态计算 (Who, When, Where)
优点模型极简,开发速度快,适合初期 MVP结构清晰,复用性高,符合企业组织架构,维护成本低极度灵活,支持细粒度控制
(如:只能在工作日访问)
缺点用户量大时维护工作呈指数级增长,极易出错角色爆炸:若特例过多,可能导致定义成百上千个角色开发复杂度极高,规则引擎难设计,有一定的性能消耗
适用场景个人博客、小型内部工具中大型后台系统、SaaS 平台 (行业标准)银行风控、AWS IAM、国家安全级系统

总结来说,在后台系统的场景下,RBAC 模型在灵活性(对比ACL)和复杂性(对比ABAC)上取得了一个很好的平衡

RBAC 概念理解

RBAC 权限模型,全称 Role-Based Access Control,基于角色的权限访问控制

模型有三要素:

  • 用户(User):系统主体,即操作系统的具体人员或账号
  • 角色(Role):角色是一组权限的集合,代表了用户在组织中的职能或身份
  • 权限(Permission):用户可以对系统资源进行的访问或操作能力

RBAC 的设计是将角色绑定权限,用户绑定角色,从而实现权限控制

RBAC 权限模型

并且,它们之间的逻辑关系通常是多对多的:

用户 - 角色 (User-Role): 一个用户可以拥有多个角色(例如:某人既是“项目经理”又是“技术委员会成员”)

角色 - 权限(Role-Permission): 一个角色包含多个权限(例如:“人事经理”角色拥有“查看员工”、“编辑薪资”等权限)

主导权限控制的前端、后端方案

市面上这些开源 Admin 的权限控制中,存在两种主要的权限主导方案:前端主导的权限方案和后端主导的权限方案

前端主导的权限方案

前端主导的权限方案,一个主要的特征是菜单数据由前端维护,而不是存在数据库中

后端只需要在登录后给到用户信息,这个信息中会包含用户的角色,根据这个角色信息,前端可以筛选出具有权限的菜单、按钮

这种方案的主要逻辑放在前端,而不是后端数据库,所以安全性没保障,灵活性也较差,要更新权限,就需要改动前端代码并重新打包上线,无法支持“动态配置权限”

适合一些小型、简单系统

后端主导的权限方案

后端控制方案,即登录后在返回用户信息时,还会给到此用户对应的菜单数据和按钮权限码等

菜单数据、按钮权限码等都存在数据库,这样一来,安全性、灵活性更高,要更新权限数据或用户权限控制,提供相应接口即可修改

倒也不是说前端完全不用管菜单数据,而是前端只需要维护一些静态菜单数据,比如登录页、异常页(404、403...)

在企业级后台系统中,后端主导的权限方案是比较常用的,本文只介绍后端主导的权限方案

权限方案整体流程

在开始写代码之前,要清晰知道整体实现流程,我画了一张图来直观展示:

权限方案整体流程

后台系统中的 RBAC 权限实战

权限菜单类型定义

首先,在前后端人员配合中,我们最好约定一套菜单数据的结构,比如:

import type { RouteMeta, RouteRecordRaw, RouteRecordRedirectOption } from 'vue-router';
import type { Component } from 'vue';
import type { DefineComponent } from 'vue';
import type { RouteType } from '#/type';

declare global {
  export interface CustomRouteRecordRaw extends Omit<RouteRecordRaw, 'meta'> {
    /**
     * 路由地址
     */
    path?: string;
    /**
     * 路由名称
     */
    name?: string;
    /**
     * 重定向路径
     */
    redirect?: RouteRecordRedirectOption;
    /**
     * 组件
     */
    component?: Component | DefineComponent | (() => Promise<unknown>);
    /**
     * 子路由信息
     */
    children?: CustomRouteRecordRaw[];
    /**
     * 路由类型
     */
    type?: RouteType;
    /**
     * 元信息
     */
    meta: {
      /**
       * 菜单标题
       */
      title: string;
      /**
       * 菜单图标
       */
      menuIcon?: string;
      /**
       * 排序
       */
      sort?: number;
      /**
       * 是否在侧边栏菜单中隐藏
       * @default false
       */
      hideMenu?: boolean;
      /**
       * 是否在面包屑中隐藏
       * @default false
       */
      hideBreadcrumb?: boolean;
      /**
       * 当只有一个子菜单时,是否隐藏父级菜单直接显示子菜单内容
       * @default false
       */
      hideParentIfSingleChild?: boolean;
    };
  }

  /**
   * 后端返回的权限路由类型定义
   */
  export type PermissionRoute = Omit<CustomRouteRecordRaw, 'component' | 'children' | 'type'> & {
    /**
     * 路由ID
     */
    id?: number;
    /**
     * 路由父ID
     */
    parentId?: number;
    /**
     * 组件路径(后端返回时为字符串,前端处理后为组件)
     */
    component: string;
    /**
     * 子路由信息
     */
    children?: PermissionRoute[];
    /**
     * 路由类型
     */
    type: RouteType;
  };
}
router.d.ts 找到类型文件

以上面的类型定义为例,我们约定 PermissionRoute 类型是后端返回的权限路由类型:

我这里使用 ApiFox 来 Mock 权限路由数据,数据是这样的:

clean-admin ApiFox 文档在线地址

路由表 Mock 数据

从登录页到路由守卫

权限方案的第一步,是登录并拿到用户信息

假设我们现在用 Element Plus 搭建起了一个登录页面,当用户点击登录时,我们需要做这几件事:

  1. 调用登录接口,将账号、密码发送给后端进行验证,验证通过则返回 JWT 信息
  2. 将返回的 JWT 信息保存到本地,后续每次请求都携带 Token 来识别用户身份并决定你能拿到的权限路由数据
  3. 触发路由守卫拦截

登录操作

account-login.vue 找到全部代码

基本 Vue Router 配置

登录完成后,我们就可以触发路由守卫了,但在写路由守卫之前,我们先来配置一下基本的 Vue Router

在整个权限系统中,我们将路由数据分为两种:

  1. 静态路由:系统固定的路由,比如登录页、异常页(404、403...)
  2. 动态路由:由后端接口返回的用户角色对应的菜单路由数据

静态路由是直接由前端定义,不会从后端接口返回、不会根据用户角色动态变化,所以这部分路由我们直接写好然后注册到 Vue Router 中即可

Vue Router 配置:

import { createRouter, createWebHashHistory } from 'vue-router';
import type { RouteRecordRaw } from 'vue-router';
import type { App } from 'vue';
import type { ImportGlobRoutes } from './typing';
import { extractRoutes } from './helpers';
import { afterEachGuard, beforeEachGuard } from './guards';

/** 静态路由 */
const staticRoutes = extractRoutes(
  import.meta.glob<ImportGlobRoutes>(['./modules/constant-routes/**/*.ts'], {
    eager: true,
  }),
);

/** 系统路由 */
const systemRoutes = extractRoutes(
  import.meta.glob<ImportGlobRoutes>(['./modules/system-routes/**/*.ts'], {
    eager: true,
  }),
);

const router = createRouter({
  history: createWebHashHistory(),
  routes: [...staticRoutes, ...systemRoutes] as RouteRecordRaw[],
  strict: true,
  scrollBehavior: () => ({ left: 0, top: 0 }),
});

beforeEachGuard(router);
afterEachGuard(router);

/** 初始化路由 */
function initRouter(app: App<Element>) {
  app.use(router);
}

export { router, initRouter, staticRoutes };
图中的静态路由和系统路由是同一类路由数据,即静态路由

这个配置文件可以在 router/index.ts 找到

这个基本的 Vue Router 配置,做了这么几件事:

  1. 导入 modules 文件夹下的静态路由进行注册
  2. 路由初始化配置 initRouter ,在 main.ts 中调用
  3. 注册全局前置守卫 beforeEach、全局后置守卫 afterEach

我们实现动态路由注册的逻辑就写在 beforeEach

值得一提的是,使用了 import.meta.glob 来动态导入指定路径下的文件模块,这是 Vite 提供的一种导入方式,参考:Vite Glob 导入

路由守卫与动态注册

路由守卫是 Vue Router 提供的一种机制,主要用来通过跳转或取消的方式守卫导航:Vue Router 路由守卫

重头戏在全局前置守卫 router.beforeEach 中实现,来看看我们做哪些事:

import { ROUTE_NAMES } from '../config';
import type { RouteRecordNameGeneric, RouteRecordRaw, Router } from 'vue-router';
import { getLocalAccessToken } from '@/utils/permission';
import { userService } from '@/services/api';
import { nprogress } from './helpers';
import { storeToRefs } from 'pinia';

/** 登录认证页面:账号登录页、短信登录页、二维码登录页、忘记密码页、注册页... */
const authPages: RouteRecordNameGeneric[] = [
  ROUTE_NAMES.AUTH,
  ROUTE_NAMES.ACCOUNT_LOGIN,
  ROUTE_NAMES.SMS_LOGIN,
  ROUTE_NAMES.QR_LOGIN,
  ROUTE_NAMES.FORGOT_PASSWORD,
  ROUTE_NAMES.REGISTER,
];

/** 页面白名单:不需要登录也能访问的页面 */
const pageWhiteList: RouteRecordNameGeneric[] = [...authPages];

export function beforeEachGuard(router: Router) {
  router.beforeEach(async (to) => {
    /** 进度条:开始 */
    nprogress.start();

    const { name: RouteName } = to;

    const userStore = useUserStore();
    const { getAccessToken, getRoutesAddStatus, registerRoutes } = storeToRefs(userStore);
    const { setRoutesAddStatus, setUserInfo, logout } = userStore;

    /** 访问令牌 */
    const accessToken = getAccessToken.value || getLocalAccessToken();

    // 1.用户未登录(无 Token)
    if (!accessToken) {
      const isWhitePage = pageWhiteList.includes(RouteName);
      // 1.1 未登录,如果访问的是白名单中的页面,直接放行
      if (isWhitePage) return true;

      nprogress.done();

      // 1.2 未登录又不在白名单,则拦截并重定向到登录页
      return { name: ROUTE_NAMES.ACCOUNT_LOGIN };
    }

    // 如果已登录用户试图访问登录页,避免重复登录,要强制重定向到首页
    if (authPages.includes(RouteName)) {
      nprogress.done();
      return { name: ROUTE_NAMES.ROOT };
    }

    // 判断是否需要动态加载路由的操作
    if (!getRoutesAddStatus.value) {
      // isRoutesAdded 默认为 false(未持久化),在已经动态注册过时会设置为true,在页面刷新时会重置为 false
      try {
        // 1.拉取用户信息
        const userInfo = await userService.getUserInfo();

        // 2.将用户信息存入 Store
        setUserInfo(userInfo);

        // 3.动态注册路由,registerRoutes 是处理后的路由表
        registerRoutes.value.forEach((route) => {
          router.addRoute(route as unknown as RouteRecordRaw);
        });

        // 4.标记路由已添加
        setRoutesAddStatus(true);

        // 5.中断当前导航,重新进入守卫
        return { ...to, replace: true };
      } catch (error) {
        // 获取用户信息失败(如 Token 过期失效、网络异常)
        logout();
        nprogress.done();
        // 重定向回登录页,让用户重新登录
        return { name: ROUTE_NAMES.ACCOUNT_LOGIN };
      }
    }

    return true;
  });
}
before-each-guard.ts 找到全部代码

上面的代码已经给出了很详细的注释,从整体角度来讲,我们做了两件事:

  1. 处理一些情况,比如用户未登录、登录后访问登录页、白名单等情况
  2. 拉取用户信息,动态注册路由

路由守卫逻辑图

在路由守卫中“拉取用户信息”,一般来说,除了返回用户本身的信息外,还会给到权限路由信息、权限码信息,这里的数据结构可以跟后端进行约定

比如在 vue-clean-admin 中,返回的数据结构是这样的:

在 ApiFox 文档可以找到用户接口说明:ApiFox 文档 - 用户信息

后端路由结构的转化

在通过“拉取用户信息”拿到路由数据后,并不是直接注册到 Vue Router,而是需要进行处理转化,才能符合 Vue Router 定义的路由表结构,registerRoutes 就是处理后的路由表,处理后的类型定义可以参考 CustomRouteRecordRaw

处理什么内容呢?

比如,接口拿到的路由数据字段 component 是一个字符串路径,这是一个映射路径,映射到前端项目下的真实组件路径

路由表结构转换

实现路由结构转换的代码,我写在了 router/helpers.ts,最主要逻辑是 generateRoutes 函数:

/**
 * 生成符合 Vue Router 定义的路由表
 * @param routes 未转化的路由数据
 * @returns 符合结构的路由表
 */
export function generateRoutes(routes: PermissionRoute[]): CustomRouteRecordRaw[] {
  if (!routes.length) return [];
  return routes.map((route) => {
    const { path, name, redirect, type, meta } = route;
    const baseRoute: Omit<CustomRouteRecordRaw, 'children'> = {
      path,
      name,
      redirect,
      type,
      component: loadComponent(route),
      meta: {
        ...meta,
        // 是否在侧边栏菜单中隐藏
        hideMenu: route.meta?.hideMenu || false,
        // 是否在面包屑中隐藏
        hideBreadcrumb: route.meta?.hideBreadcrumb || false,
        // 当只有一个子菜单时,是否隐藏父级菜单直接显示子菜单内容
        hideParentIfSingleChild: route.meta?.hideParentIfSingleChild || false,
      },
    };

    // 是目录数据,设置重定向路径
    if (type === PermissionRouteTypeEnum.DIR) {
      baseRoute.redirect = redirect || getRedirectPath(route);
    }
    // 递归处理子路由
    const processedChildren =
      route.children && route.children.length ? generateRoutes(route.children) : undefined;

    return {
      ...baseRoute,
      ...(processedChildren ? { children: processedChildren } : {}),
    };
  });
}

经过 generateRoutes 处理的路由表,再 addRoute 到 Vue Router 中

侧边栏菜单的渲染

当路由守卫的逻辑走完后,就进入到首页,在首页中,我们会根据路由表(转换过的)来渲染侧边栏菜单

侧边栏菜单是拿 Element Plus 的 el-menu 组件来做的,我们封装了一个菜单组件,除了渲染路由数据外,也更方便自定义配置菜单属性(meta)来实现一些功能

封装不难,就是拿处理后的路由表循环渲染 menu-item,根据 meta 配置项来实现"是否隐藏菜单","当只有一个子菜单时,是否隐藏父级菜单直接显示子菜单内容"等

菜单组件封装

菜单组件的封装代码在 basic-menu 文件夹中

到这一步,已经实现了动态权限路由及侧边栏菜单的渲染,但还不算完

因为我们还不能自由定义菜单信息、角色信息、用户信息来实现权限控制,在下一篇文章来聊聊管理模块

了解更多

系列专栏地址:GitHub 博客 | 掘金专栏 | 思否专栏

实战项目:vue-clean-admin

交流讨论

文章如有错误或需要改进之处,欢迎指正

一、

前天,Kimi 突然发布了旗舰模型 K2.5,事先没有一点风声。

在国内,Kimi 是比较低调的公司,关注度相对不高。但是,它的产品并不弱。

半年前,K2 模型一鸣惊人,得到了很高的评价,公认属于全球第一梯队。所以,新版本 K2.5 出来以后,立刻上了新闻,在黑客新闻、推特等平台都是热门话题。

著名开发者 Simon Willion 当天就写了详细介绍

但是,这一次真正有趣的地方,不是模型本身,而是 Kimi 做了另一件事。

二、

这次的 K2.5 很强,各方面比 K2 都有进步。官方给出的评测跑分,基本都是全球前三位,甚至第一名(见发布说明)。

根据 LMArena(现改名为 arena.ai)的榜单,Kimi K2.5 的编码能力,是所有开源模型的第一,在总榜上仅次于 Claude 和 Gemini(下图)。

但是,最大的亮点其实不是模型,而是 Kimi 同时发布了一个基于这个模型的 Agent(智能体)。

也就是说,这次其实同时发布了两样东西:K2.5 模型和 K2.5 Agent。K2.5 是底层模型,K2.5 Agent 则是面向最终用户的一个网络应用。

我的印象中,这好像是第一次,大模型公司这么干。以前发布的都是模型本身,没见过谁把模型和 Agent 绑在一起发布的。

这么说吧,Kimi 走上了一体化的道路。

三、

大家知道,大模型是底层的处理引擎,Agent 是面向用户的上层应用。

它们的关系无非就是两种:分层开发和一体化。前者是大模型跟 agent 分开,各自开发;后者是做成一个整体一起开发。

前不久,被 Meta 公司高价收购的 Manus,就是分层开发的最好例子。

Manus 使用的模型是 Anthropic 公司的 Claude,它自己在其上开发一个独立的智能体,最终被收购。

它的成功鼓舞了许多人投入智能体的开发。因为模型的投入太大,不是谁都能搞的,而智能体的投入比较少,再小的开发者都能搞。

Kimi 这一次的尝试,则是朝着另一个方向迈出了一大步,把大模型和 Agent 合在了一起。毕竟,大模型公司自己来做这件事更方便,更有利于扩大市场份额、争取用户。

很难说,这两种做法哪一种更好。就像手机一样,苹果和安卓的外部应用,可以更好地满足用户需求,而自带的内置应用则能充分跟操作系统融合,用起来更顺滑。

四、

模型的测试已经很多了,下面我就来测一下,这次发布的 K2.5 Agent。

看得出来,Kimi 对 Agent 很重视,倾注了很大心血,发布说明的大部分篇幅介绍的都是 Agent 的功能。

其中有几个功能是比较常规的:

(1)Kimi Office Agent:专家级的 Word、Excel、PowerPoint 文件生成。

(2)Kimi Code:对标 Claude Code 的命令行工具,专门用于代码生成。

(3)长程操作:一次性完成最多1500步的操作,这显然在对标以多步骤操作闻名的 Manus。

我比较在意的是下面两个全新的功能,都是第一次看到,其他公司好像没有提过。

(4)视觉编程:通过模型的视觉能力,理解图片和视频,进而用于编程。只要上传设计稿和网页视频,就能把网页生成出来。

(5)蜂群功能(agent swarm):遇到复杂任务时,Agent 内部会自动调用最多100个 Agent,组成一个集群,并发执行任务,比如并发下载、并发生成等。

碍于篇幅,我就简单说一下,我的"视觉编程"测试结果。

五、

首先,打开 Kimi 官网,K2.5 已经上线了,能够直接使用(下图)。

注意,模型要切换到"智能体模式" K2.5 Agent。

我的第一个测试是动效生成,即上传一段动画效果的视频,让它来生成。下面是原始动画,是用 Lottie 库做的。

上传后,在网页输入提示词:

视频里面的动画效果,一模一样地在网页上还原出来

模型很快推断出,这是橘猫玩球的动画。然后,居然把动画每一帧都截图了,进行还原。

最终,它使用 Python 生成了 SVG 动画文件。

尾巴、眼球、小球滚动的动画效果,都正确还原出来了。可惜的是,主体的小猫是由多个 SVG 形状拼接而成,没法做到很像。

大家可以去这个网址,查看最终效果和网页代码。

六、

第二个测试是上传一段网站视频,让模型生成网站。

我在 B 站上,随便找了一个设计师网站的视频

大家可以去访问这个网站,看看原始网页的效果。

我把视频上传到模型,然后要求"把视频里面的网站还原出来"。

生成的结果(下图)完全超出了我的预期,还原度非常高,几乎可以直接上线。

大家可以去这个网址,查看生成的结果。

七、

经过简单测试,我的评价是,Kimi K2.5 Agent 的"视觉编程"不是噱头,确实有视觉理解能力,完全能够生成可用的结果。

目前看上去,Kimi 这次"模型 + Agent"的一体化尝试是成功的。一方面,强大的 Agent 发挥出了底层模型的能力,方便了用户使用;另一方面,模型通过 Agent 扩展了各种用例,可以吸引更多的用户,有利于自身的推广。

最后,在当下国际竞争的格局之中,一体化还有一个额外的优势。

Manus 依赖的是美国模型,最终不得不选择在海外注册公司,而 Kimi 的底层模型是自研的,而且开源,完全不存在卡脖子的风险。

(完)

https://www.v2ex.com/t/1188621 的后续

虽然证据很多,但这个作者死猪不怕开水烫。看了 reddit 才知道他是惯犯了,而且对版权问题很了解,可能有律师指点。作为个人开发者是没有精力和财力诉诸公堂的,除了道德谴责做不了什么。遇到这种人非常损伤开源热情。

我的笔记需求:轻量、支持同步、分享方便
刚进 2 站的时候有老友分享可以免费获取它的终身订阅 superthread 终身会员限时领取
一圈体验下来,还是挺不错的

优点:

  1. 轻量、反应快,操作流畅,排版美观
  2. 自带图床
  3. 跟随账号同步
  4. 支持多人协作
  5. 可以一键创建分享链接,比如这个 测试文档

缺点:

  1. 代码编辑器没有自动缩进
  2. 创建笔记的操作步骤有点多,体验有阻塞感

PixPin_2026-01-29_18-10-07

本着闲着也是闲着的态度,
开始琢磨看看能不能通过插件实现一键创建笔记的功能
发现官方有 api 文档 ,可以按需调接口实现部分功能
image

于是思路有了:

  • 注入一个“创建笔记”按钮
  • 点击触发“创建页面”请求
  • 接口调用成功后触发history.pushState切换到创建的笔记

codex 启动!

最后效果:
PixPin_2026-01-29_18-24-11


写在最后

我是没想到一个小小的功能还要这么折腾去实现,可能是我的使用方式不对吧facepalm

真实的海洋是动态且充满复杂相互作用的,藏在数据深处的洋流如何能可见、可理解?在制作“全球洋流”案例之前,我们面临的挑战是:如何将覆盖全球、深达5000米的洋流数据转化为实时、交互、直观的可视化体验?如何让包含23亿个数据值的全球洋流场在三维地球上“动”起来?
我们的目标很简单:让全球洋流的每一次流动,都能被看见、被分析、被应用

在三维数字地球表面,不计其数的发光粒子循着洋流轨迹奔腾穿梭——从北大西洋涡旋的回旋缠绕,到南极绕极流的绵延浩荡,再到深海底层流的隐秘流动,原本藏在数据深处的全球洋流,终以全维度、实时态的形式完整“显形”。

大规模粒子渲染,还原真实洋流的具象表达

接下来,我们将以技术实现者的视角,介绍这一个个让抽象的洋流数据转化为可直观感知的动态场景,从北极冰盖下的隐秘涡旋到赤道太平洋的大气海洋耦合,每一个“分镜头”背后,都是算法与物理规律的高度契合。

一、极地系统:冰封下的有序运动

1. 北极环流 • 波弗特涡旋

镜头聚焦北冰洋加拿大海盆,粒子以缓慢而稳定的顺时针轨迹旋转,形成直径约1000公里的巨大顺时针螺旋结构。粒子从边缘向中心缓慢汇聚,轨迹清晰显示涡旋的完整边界,精准还原北冰洋 波弗特涡旋 的特征——“几乎静止的旋转”的空间结构和时间持续性。

2.南极绕极流:全球海洋的“连接纽带”

镜头从南极上空俯视,粒子呈环绕南极的连续光环,环绕南极大陆无任何断裂以强劲、连续的轨迹,技术通过大范围坐标系适配,完美还原其连接三大洋的“传送带”功能。

二、边界流:海洋的“高速公路”

沿大陆边缘流动的洋流,受海陆分布和地形强烈影响。这类洋流在粒子渲染中表现为狭窄、高速、色彩鲜明的带状流动,粒子轨迹平直密集,流速梯度极大。

1.墨西哥湾流与黑潮:西边界强化流

北大西洋的墨西哥湾流和北太平洋的黑潮代表了“西边界强化”现象。粒子形成狭窄密集的高速丝带,紧贴大陆坡流动,流轴稳定。墨西哥湾流,全球最强的暖流之一,自美国佛罗里达海峡至纽芬兰岛的路径,粒子以高速密集轨迹流动,湾流呈现鲜明的橙红色,与周围蓝绿色冷水形成强烈对比。

黑潮与墨西哥湾流齐名的西边界强流,因水体透明度高、呈现深蓝色而得名。沿中国台湾东岸、日本群岛南岸延伸,靛蓝色粒子轨迹如“黑丝带”般清晰勾勒,精准还原其与周边海水的界限特征。

2.秘鲁、加那利与本格拉寒流:东边界的“冷输送带”

聚焦南美洲西岸秘鲁寒流、北大西洋东部加那利寒流、南大西洋东部本格拉寒流三大沿岸洋流。洋流沿大陆边缘流动的洋流,受海陆分布和地形强烈影响。粒子呈现宽缓的沿岸流动带,粒子速度较西边界流放缓,呈扩散特征。
加那利寒流通过大规模粒子精准勾勒分布与流动特征:数千粒子沿非洲西北部海岸呈狭长带状南下,轨迹紧贴大陆架边缘,密度由近岸向大洋方向逐步稀疏,清晰呈现其“贴岸流动、势力随离岸距离衰减”的分布规律,直观还原寒流沿程延伸特征。

本格拉寒流则通过粒子渲染形成鲜明呼应:近岸区域粒子呈现明显的“向上汇聚”轨迹,从深海层粒子向上层海域攀升,且上升流区域粒子密度显著高于周边,精准呈现其沿非洲西南海岸分布、近岸上升流旺盛的核心特征,粒子轨迹的垂直运动形态,更将这一寒流“深层营养盐向上输送”的关键属性具象化。

聚焦南美洲西岸秘鲁寒流,镜头贴近南美洲西海岸,粒子模拟向北流动的寒流及沿岸上升流,粒子在沿岸密集,离岸后扩散,展示了上升流将深层水带到表层的过程,清晰呈现其造就世界著名渔场的核心逻辑。

三、季风驱动流:北印度洋季风环流

作为全球唯一受大陆季风支配、流向季节性逆转的环流,镜头聚焦阿拉伯海与孟加拉湾核心区域:
•夏季模式(6-9月):粒子从索马里沿岸向东流动,在阿拉伯海形成顺时针大漩涡。索马里沿岸粒子呈现强烈的上升运动,垂向速度被放大100倍可视化
•冬季模式(12-2月):粒子流向完全逆转,形成逆时针环流。孟加拉湾粒子密集,反映冬季东北季风驱动的盆地尺度环流
•过渡期紊乱:季风转换期间(4-5月、10-11月),粒子运动杂乱,轨迹交叉频繁,反映流场的不稳定状态。

五、赤道流系:海洋的“多层立交”

赤道流系(含南/北赤道流、赤道潜流),镜头覆盖赤道太平洋上空及海表,粒子轨迹与大气环流箭头协同运动,生动呈现驱动厄尔尼诺现象的大气-海洋耦合机制——表层洋流的东西向流动与下层海水的上涌、下沉动作精准联动,让原本抽象的气候驱动因子变得具象可感,为科研人员研究厄尔尼诺现象提供了直观的动态工具。

六、跨洋副热带环流:大洋“漩涡”

涵盖南太平洋副热带环流、南印度洋副热带环流,大洋中部的大尺度闭合环流,构成全球海洋环流的基本单元环流边缘粒子密集,形成清晰的"粒子墙"。粒子呈现巨大涡旋结构,南印度洋洋流以宽阔的逆时针轨迹铺展,清晰区分厄加勒斯暖流(非洲东岸南下)与西澳大利亚寒流的流向差异;南太平洋环流则展现出宏大缓慢的逆时针旋转,粒子在环流中心稀疏分布,呼应其“海洋沙漠”(最清澈、生命最稀少区域)的特征,技术通过粒子密度智能分配,还原了洋流能量分布的真实状态。


这些生动的洋流“分镜头”,最终汇聚成一幅完整的全球海洋动力图景。所有可视化效果均基于真实数据与物理规律。下面我们将以技术实现者的视角,解析系统如何通过粒子追踪与动态渲染,精确再现全球经典洋流现象。

数据挑战:从静态数字到动态图像的数据壁垒

原始洋流数据藏在 NetCDF 格式的 “数据黑箱” 里,覆盖经度-180°至180°,纬度-80°至90°,垂直方向包含40个深度层。4500×4251×40 的原始分辨率意味着单文件就包含近 8 亿个数据点,每个网格点记录海水流速、流向的核心向量信息,单时间步数据量达 9.18 GB。
传统技术要么无法承载海量数据的实时运算,要么只能通过静态图表间接推测洋流动态,难以精准还原其复杂的三维运动特征,形成了“数据丰富但应用受限”的行业痛点。真正的突破需要从数据预处理到最终渲染的全流程重构。

1. 智能数据压缩:在保留与精简间寻找平衡

原始数据 4500×4251×40 的分辨率虽然精准,但计算量巨大。直接处理原始数据在实时交互场景中不可行。我们基于海洋动力学特征的智能抽稀算法,有针对性的进行特征保留,相当于 “把 4K 电影压缩成 1080P——既保留了关键洋流的细节特征,又让系统能在普通工作站上流畅运行。这种 “减法” 的智慧,让复杂的科研数据不再是实验室的专属,而是能被更多人轻松访问的动态可视化工具。

2. 三维瓦片地球的 “精准画布”:全球、全维度映射

全球洋流的经纬度跨度达 - 180°~180°、-80°~90°,要在三维瓦片地图上精准贴合,就像给地球 “穿衣服”—— 不仅要合身,还要能跟着地球自转、缩放自适应。我们的系统支持大范围坐标系动态适配,从南极冰盖到赤道暖流,每一道粒子轨迹都能与真实地理位置精准对齐。

3. GPU并行架构:粒子系统的实时演化

海量数字粒子同时在地球表面运动,每个粒子都要根据洋流向量实时计算轨迹,每秒要完成数百万次向量运算。我们用 GPU 并行计算技术,从数据解析、粒子更新到最终渲染,全流程在GPU上完成,每个 GPU 线程处理一个粒子,实现真正的数据级并行,粒子通过实例化渲染技术批量提交,结合深度测试与透明度混合,与三维地形瓦片无缝融合。

多模式可视化:从不同视角理解海洋

1. 地理模式:直观的空间认知

地理模式提供最符合认知的视角,与标准地图服务集成,叠加国界、国家名称等参考信息,用户可以自由旋转缩放,观察全球尺度环流格局,聚焦特定水层流动特征。

2 分析模式:深入的科学研究

为专业用户设计分析模式,支持多坐标系同时显示。天球坐标系从宇宙视角展示洋流与地球轨道关系;赤道面与黄道面叠加可视化,揭示太阳辐射与地球自转对环流的复合影响等,提供深入分析工具。

3 交互模式:灵活的动态理解

用户可通过参数面板,实时调节粒子生命周期、尺寸、尾迹长度等参数,对选择特定粒子或区域进行追踪,观察水团在数天至数月时间尺度上的运动路径,就像给洋流装了 “动态心电图”,细微的涡旋和暗流都能被精准捕捉。

在线体验地址:
https://www.tuguan.net/online-experience/code-sandbox4.html#向量图层_全球洋流图_stream
(请复制链接在浏览器中访问)

结语:可视化作为认知桥梁

从 23亿 数据点到指尖流动的光影,它构建了连接抽象数据与人类认知的桥梁,将复杂的海洋动力过程转化为可交互、可探索、可理解的视觉语言。
在气候变化深刻影响人类社会的今天,理解海洋这一地球系统关键组成部分变得尤为重要。我们的工作表明,通过创新的计算与可视化方法,曾经专属于超级计算机与领域专家的海洋环流知识,现在能够以直观形式服务于更广泛的科研、教育与应用领域。
从 NetCDF 数据的“黑箱”破解,到 GPU 实时运算的算力突破,再到全维度场景的精准呈现,本次案例印证了数字孪生、三维渲染技术在复杂向量场数据可视化中的技术优势。未来,我们将持续深耕技术创新,让更多“看不见”的自然规律,通过技术手段转化为可感知、可应用的价值成果,赋能更多行业实现数字化升级。

生成式 AI 的投资回报远超预期?Snowflake 调研全球 1900 位企业与 IT 专业人士后发现平均 ROI 高达 41%!点击下载完整报告

随着大语言模型能力的成熟,围绕 AI 智能体的讨论正在迅速升温。构建一个能够执行任务、调用工具的 Agent,已经不再是少数团队的专属能力。但在这场技术热潮之下,一个更现实的问题逐渐浮出水面:当智能体不再停留在演示环境,而是被放入真实业务系统中运行时,会发生什么?

CrewAI 创始人兼 CEO Joao Moura 以实践者的视角,在 BUILD 2025 大会上系统梳理了 AI 智能体从概念、原型走向生产环境过程中,所面临的一系列关键问题。这场分享的核心,并不在于“如何快速做出一个 Agent”,而在于如何让 Agent 在复杂系统中长期、稳定地工作。

从“会生成”到“会决策”:重新理解智能体的能力边界

在分享中,Joao 首先回到一个基础问题:什么才是 AI 智能体真正的能力来源。

他指出,很多人已经非常熟悉大语言模型在内容生成上的表现,例如生成文本、改写表达、调整语气。这些能力本质上仍然是“输出导向”的,模型根据输入,生成一段结果。

而智能体的出现,源于另一类能力的被系统性使用:决策能力。当模型不仅要给出答案,还需要在多个选项之间做出判断,并说明为什么选择其中一个时,它开始参与“思考过程”。

在此基础上,当系统为模型提供可调用的工具,并赋予其一个明确目标,模型就不再只是被动响应请求,而是开始围绕目标不断判断下一步行动。这种行动可能包括调用内部系统、获取业务数据、更新状态,甚至触发后续流程。

智能体并不是某种全新的技术形态,而是一个围绕目标进行持续决策与行动的系统。理解这一点,是后续讨论生产化问题的前提。

真正的分水岭:为什么原型和生产完全是两回事

在谈到智能体落地时,Joao 明确指出了一个现实情况:从原型到生产,并不是一次线性升级,而是一道本质不同的门槛。

原型阶段,团队关注的往往是“能不能跑起来”;而进入生产环境后,关注点会迅速转向“能不能持续运行”。这时,模型本身反而不再是唯一变量,系统层面的复杂性开始占据主导。

智能体一旦被放入真实业务系统,就意味着它将与 ERP、CRM 等核心系统交互,其行为可能直接影响业务流程。在这种情况下,系统是否稳定、决策是否可控、行为是否可预测,都会变成不可回避的问题。

很多阻碍智能体进入生产的因素,并不来自 AI 本身,而是来自工程、架构和系统集成层面的现实约束。这也是为什么不少 Agent 项目停留在 Demo 阶段,却迟迟无法真正上线的原因。

决策、工具与执行:Agent 在系统中的运行方式

一个智能体并不是简单地“调用模型”,而是需要在决策、工具调用和执行之间形成闭环。模型负责判断当前状态下应该采取什么行动,而系统则需要确保这些行动能够被安全、准确地执行。

当智能体需要调用外部工具时,问题并不止于“能不能连上接口”,而在于调用是否可控、结果是否可追踪、失败是否可恢复。这些因素,都会直接影响智能体是否具备进入生产环境的条件。

在这种结构下,Agent 更像是一个被嵌入到系统中的“决策节点”,而不是一个独立存在的智能模块。它的价值,取决于整个系统是否为它提供了稳定的运行土壤。

当数量上升:规模化带来的管理问题

当智能体不再是单点实验,而是开始成批部署时,另一个问题随之出现:如何管理这些 Agent。

规模化并不意味着简单复制更多实例。随着智能体数量的增加,部署、运行、监控和管理本身会迅速成为新的复杂系统。如果缺乏系统性的设计,智能体越多,整体风险反而越高。

回到整场分享的核心,Joao 传递出的判断其实非常清晰:AI 智能体的真正价值,并不在于是否足够聪明,而在于是否能够被可靠地使用。

当讨论从“能不能做”转向“值不值得用”,从原型转向生产,智能体面临的已经不是技术炫技的问题,而是工程与系统成熟度的检验。也正是在这个阶段,智能体才真正开始进入创造长期价值的轨道。

原视频地址:https://www.snowflake.com/en/build/americas/agenda/?login=ML

🔥【活动推荐】2 月 2 日-6 日,Snowflake Discover重磅上线!这是一场免费、线上、可实时互动的技术活动,旨在帮助您全面提升数据与 AI 能力,深入了解如何更高效地管理、整合与分析数据。4 天时间 18 场技术干货分享,由来自亚太地区的一线技术专家亲自分享与讲解~

点击报名 Discover,更多 Snowflake 精彩活动请关注专区

最近深度使用 GitHub Copilot 、Cursor 以及各种大模型写代码,产生了一种强烈的“身份恍惚”。

以前,我的核心价值是将模糊的需求,转化为精准的逻辑和优雅的代码。我的武器是编程语言、设计模式和算法。

现在,我发现我的工作越来越多地变成:

  1. 拆解需求,把它变成 AI 能理解的一连串精准的“提示词”。
  2. 评审 AI 生成的代码,像导师批改作业一样,指出它的逻辑漏洞、性能问题和安全隐患。
  3. 用人类智慧去缝合AI 生成的代码块,理解它看似合理但实则诡异的“脑回路”。

这让我想起一个比喻:我们仿佛从建筑师,变成了建筑材料的质检员和自动施工机器的调教师

我不再亲手砌每一块砖,但我必须更懂砖的好坏,更懂如何指挥机器砌出我想要的形状。如果机器砌错了,我甚至要去理解它“为什么觉得这样砌是对的”。

这种转变带来的困惑是:

  • 技能树的剧变:未来更重要的,是“需求工程”、“提示词工程”、“代码评审与甄别”的能力吗?传统的算法和系统设计深度还那么重要吗?
  • 价值的再定位:如果 AI 能生成大部分“正确”的代码,那我的不可替代性,是建立在更难的“模糊问题”上,还是建立在“验收与纠错”的权威上?
  • 职业的终极形态:会分化成“AI 调教师”(高阶架构师,用自然语言指挥 AI 构建复杂系统)和“逻辑装配工”(负责微调和集成 AI 产出)吗?

想听听大家的感受和看法:你是在享受这种“如虎添翼”的赋能感,还是在警惕这种“温水煮青蛙”的能力迁移?面对这个看似必然的趋势,我们个人该如何规划和准备,才能不被浪潮拍在沙滩上?

今年,来来回回操作大 A 折腾了快一个月,小仓位搞了几只股都盈利出的,一看总收益总共才不到十个点,觉得太没意思了,索性这周清了大部分然后单吊一只,直接把这个月收益干没了,还倒贴了,回撤了十来个点。准备开摆了

版本:IntelliJ IDEA 2025.1.3
macOS 26

使用 cmd+tab 切换其他应用,再切换回来,大概率出现 IDEA 页面无法点击,部分按键有反应,只有右上角进入/退出全屏才能恢复正常。

太折磨人了,有时候查资料(问 AI )需要浏览器、IDEA 来回切换,但经常卡住,很影响心态,各位大佬遇见过类似的情况吗,如何解决啊

市面上 AI 课程一大堆,但要么太理论,要么太基础。本文对 Coursera 上 6 门优质 AI 课程进行了评测,结合国内初级开发者视角,帮你看懂各课程适合什么人、侧重点是什么,以及如何按自己的起点与目标做出选课决策。

导语

想系统学 AI 的程序员,近两年大概都干过一件事:

打开 Coursera 或其他平台,看到铺天盖地的 AI/ML 课程,然后 —— 关掉网页,继续刷短视频。

不是你不想学,而是:

  • 有的课过于理论,上了几节就被数学公式劝退;
  • 有的课过于入门,讲半天“什么是 AI”,却完全帮不上忙;
  • 真正能让你在简历和工作里都“有感觉”的课,又埋在一大堆选项里。

本文筛选出了 6 门“不浪费时间、能换来实际职业价值”的 Coursera 课程,并结合初级开发者视角,帮你搞清楚:

  • 这 6 门课,各自适合谁?
  • 如果你是初级开发者,应该先上哪一门?
  • 上完之后,应该怎么把所学变成真正的项目经验?

问题:AI 课很多,真正适合职场开发者的却不多

过去一年,很多人都有类似经历:

  • 带着“我要系统学 AI”的决心报了课;
  • 三节课之后,发现不是太抽象,就是太基础;
  • 最后课程一堆“进行中”,真正完成的少之又少。

大部分 AI 课程存在两个极端

  1. 要么面向研究生,数学证明一大堆,工作中很难直接用上;
  2. 要么把你当成完全不会电脑的小白,讲得过于浅,学完也不知道能干嘛。

而身处职场、尤其是入行 1–5 年的开发者,真正想要的是:

  • 上完课可以直接放到简历上的实打实的项目或证书
  • 能够帮助自己在团队里承担更多和 AI 相关的工作;
  • 在未来 1–2 年的职业选择里,多几条通道,而不是只会“跟风看热闹”。

所以,问题并不是“要不要学 AI”,而是:

怎样选到既不浪费时间、又能真实提升职场竞争力的 AI 课程?

误区:两种最常见的“选课踩坑”

误区一:只看“最难、最硬核”,结果半途而废

很多程序员的直觉是:

“一定要选最硬核、最学术的课,才显得值。”

结果报了课才发现:

  • 你要先补完一整套高数、概率统计、线性代数;
  • 课程作业更像研究生作业,而不是工程项目;
  • 上了几周,既看不见和工作场景的连接,也看不到短期内的产出。

这种“过度学术化”的路径,

  • 对想做科研或者攻读相关学位的人当然有价值;
  • 但对大多数只想把 AI 用到工作里的开发者来说,性价比非常低

误区二:只看“最轻松、最快拿证”,结果学完没用

另一种极端,是专门找:

  • 课时少、作业简单、几乎不用动手;
  • 全程在听“AI 概念故事”,几乎没有真实项目;
  • 学完唯一收获就是“多了一个证书链接”。

这类课程短期看很爽,

  • 但它既不会改变你写代码的方式;
  • 也很难在面试中解释“你到底掌握了什么”。

好课程既不能只停留在概念层面,也不能把你扔进纯数学海洋。

它应该:尊重你的智商,又尊重你的时间。


方法:一套更靠谱的 AI 选课思路

我们可以用一套简单的三问法来筛课:

  1. 课程是否清楚标明“适合谁”?

    • 是给完全不写代码的人,还是给开发者、产品、管理者?
  2. 课程是否有“可展示”的成果?

    • 项目、作业、证书,是否能放到简历或作品集中?
  3. 课程内容能否连接到 1–2 年内的职业机会?

    • 比如:AI 产品经理、AI 应用开发、数据驱动业务岗位等。

在这套筛选逻辑下,本文精选出的 6 门 Coursera 课程,大致覆盖了三类典型需求:

  • “我想从零开始理解 AI,并做点东西”
  • “我需要为团队、公司做 AI 相关的业务决策”
  • “我已经会写代码,想向更专业的 AI 工程方向迈一步”

下面将这 6 门课逐一拆解,告诉你适合哪些人学。


6 门 Coursera AI 课程逐一拆解

1)IBM 的人工智能导论(Introduction to Artificial Intelligence)

IBM 的人工智能导论

链接:https://www.coursera.org/learn/introduction-to-ai

一句话理解:

既照顾零基础,又不只是“科普故事”的 AI 入门课,
用动手实验带你跑通从概念到简单应用的闭环。

课程亮点:

  • 通过 实操实验 而不是长篇理论介绍 AI 基础;
  • 覆盖机器学习、深度学习、神经网络等核心概念;
  • 你会真正去 构建一个面向业务场景的生成式 AI 解决方案
  • 涉及 NLP、计算机视觉、机器人等典型应用方向;
  • 有一个简短但重要的 AI 伦理 模块,帮你建立底线意识。

适合谁:

  • 入行 1–3 年、已经会一门编程语言的开发者;
  • 想要一个“既不劝退、又有实战味道”的 AI 第一门课;
  • 希望拿到一个可以放 LinkedIn/简历上的 IBM 证书。

作为初级开发者,可以这样用这门课:

  • 把课程里的业务案例,

    • 尽量贴近自己所在行业(如电商、金融、物流);
    • 在完成作业的基础上,再自己加一点小改造;
  • 上完课后写一篇小总结:

    • “如何用生成式 AI 优化我们团队的某个流程”,
    • 这是非常适合放到公众号或内部分享的内容。

2)Andrew Ng 的 AI For Everyone

Andrew Ng 的 AI For Everyone

链接:https://www.coursera.org/learn/ai-for-everyone

一句话理解:

这不是教你写代码的课,而是教你
看懂 AI 项目真正的边界与机会,尤其适合想往“技术 + 业务”方向走的人。

课程亮点:

  • Andrew Ng 的教学能力不用多说,讲解清晰、接地气;
  • 面向 非技术背景跨职能角色(产品、运营、管理者等);
  • 重点讲:

    • AI 实际能做什么、不能做什么;
    • 如何在组织中识别 AI 机会;
    • 一个 AI 项目从立项到上线大致长什么样;
  • 有专门的 AI 战略模块,讲如何规划路线图和预算。

适合谁:

  • 想往 Tech Lead / 架构 / 产品化 路线发展的开发者;
  • 在中小团队里,已经开始参与需求评审、方案设计的人;
  • 希望和老板、业务方沟通 AI 方案时,能讲清楚利弊和边界。

作为初级开发者,你可以这样用:

  • 上完课之后,试着为你所在团队/部门写一页纸:

    • “我们这半年有哪些可行的 AI 应用机会”;
  • 即使你暂时做不了这些项目,这份文档也会:

    • 让你在团队里显得更“懂业务 + 懂技术”;
    • 成为你日后做晋升述职、项目立项时的素材库。

3)Google 的人工智能导论(Introduction to AI)

Google 的人工智能导论

链接:https://www.coursera.org/learn/google-introduction-to-ai

一句话理解:

从 Google 视角讲的“AI 是怎么从数据中学会东西的”,
重点在于让你弄清楚 能力与局限,而不是只会喊“好强大”。

课程亮点:

  • 是 Google AI Essentials 专项课程的一部分,结构清晰;
  • 讲清楚:

    • AI 如何从数据中学习;
    • 现实世界里的 能力边界 在哪里;
  • 特别强调 人的监督与参与

    • 反对“AI 自动跑就行”的想象;
  • 涉及:

    • 自然语言处理(NLP);
    • 大语言模型(LLM)应用;
    • 如何设计 AI 工作流;
  • 还有关于 创新和批判性思维 的部分,提醒你不要做“工具奴隶”。

适合谁:

  • 已经在使用 ChatGPT / Claude / Copilot 等工具的开发者;
  • 想更系统地理解“这些 LLM 背后大概在干嘛”;
  • 希望在做方案评估和技术选型时,有更多判断力的人。

对于初级开发者的用法:

  • 把课程里学到的 AI 工作流思想,套到你日常的一个小项目:

    • 例如:日志分析、简单问答机器人、文档检索助手;
  • 尝试用课程中的方法,画一个 “我们团队内部的 AI 工作流草图”

    • 这是你在团队里带节奏的好机会。

4)宾夕法尼亚大学的商业人工智能(AI For Business Specialization)

宾夕法尼亚大学的商业人工智能

链接:https://www.coursera.org/specializations/ai-for-business-wharton

一句话理解:

这是面向“想把 AI 用在商业上”的人,
帮你从营销、风控、人力等多个角度看 AI 如何改变业务。

课程亮点:

  • 这是一个 专项课程(Specialization),包括 4 门课;
  • 核心围绕:

    • 大数据、机器学习如何支撑商业决策;
    • AI 在 营销、用户生命周期、风险管理 等领域的落地;
  • 有专门讲 AI 伦理与治理 的内容;
  • HR 与人才管理模块很特别:

    • 讲机器学习如何用在招聘、绩效、员工发展;
  • 案例实操包括:欺诈检测、信用风险、个性化推荐等;
  • 结业证书来自沃顿商学院,对简历有加成。

适合谁:

  • 金融、电商、SaaS 等领域工作的工程师或产品人;
  • 正在向 技术负责人 / 业务负责人 方向发展的人;
  • 想系统理解“AI + 业务”的,尤其是对数据驱动决策感兴趣的人。

对初级开发者的意义:

  • 如果你现在还主要写 CRUD 业务代码,

    • 这门课会帮你看到系统背后的“生意逻辑”
  • 你可以从课里挑一两个案例,

    • 结合自己的行业,写一份“小型 AI 业务方案”,
    • 这类内容非常适合作为晋升材料或内部分享。

5)AWS 的机器学习与人工智能基础(Fundamentals of Machine Learning and Artificial Intelligence)

AWS 的机器学习与人工智能基础

链接:https://www.coursera.org/learn/fundamentals-of-machine-learning-and-artificial-intelligence

一句话理解:

以 AWS 生态为载体,把 AI、ML、深度学习和生成式 AI 串成一张“业务地图”。

课程亮点:

  • AWS 官方出品,内容围绕其云服务展开;
  • 重点帮助你厘清:

    • AI、机器学习、深度学习、生成式 AI 之间的关系;
    • 每一类问题适合什么样的技术路径;
  • 带你认识 AWS 上的各种 AI 服务:

    • 例如用于文本分析、图像识别、对话机器人等;
  • 课程不长,但信息密度很高;
  • 如果你目标岗位偏向 AWS 生态,这张证书的价值更高。

适合谁:

  • 公司已经在用 AWS,或者你考虑转向云相关岗位;
  • 希望把“AI 能力”和“云平台技能”结合起来的人;
  • 想理解:

    • “在真实公司里,AI 不只是写模型,还要跑在云上”。

对初级开发者的用法:

  • 结合课程内容,自己尝试在 AWS 上做一个小 demo:

    • 例如:一个简单的图像分类服务、文本情感分析 API;
  • 然后把“架构图 + 简短说明”写成一页纸:

    • 这是既能当作品集,又能说明你懂云的好材料。

6)IBM RAG 与智能体 AI 专业证书(IBM RAG and Agentic AI Professional Certificate)

IBM RAG 与智能体 AI 专业证书

链接:https://www.coursera.org/professional-certificates/ibm-rag-and-agentic-ai

一句话理解:

这是六门里最“硬核”的一套,
真正面向想在 RAG、多模态、Agent 等前沿方向 深耕技术栈 的人。

课程亮点:

  • 完整的 专业证书项目,包含 8 门课程;
  • 系统覆盖:

    • RAG(检索增强生成)流水线;
    • 多模态 AI 应用;
    • 自主 Agent 系统;
  • 会用到的一些关键工具:

    • LangChain、LangGraph、CrewAI、AG2;
    • 各类向量数据库(例如 Chroma);
    • Gradio 这类 Web UI 框架;
    • 以及 Model Context Protocol(MCP)等现代接口;
  • 课程里有不少项目:

    • 数据可视化 Agent;
    • 具备上下文理解能力的应用;
    • 能调用外部工具的智能体。

适合谁:

  • 已经有一定编程和 AI 基础,想往 AI 工程 / AI 平台 方向发展的人;
  • 希望将来做“AI 应用开发 / AI Agent 平台开发”的工程师;
  • 对 RAG、多模态、Agent 等前沿方向有强烈兴趣的人。

给初级开发者的提醒:

  • 这套课门槛相对较高,不建议当作你的第一门 AI 课;
  • 更好的路径是:

    • 先通过 1–3 门入门/业务向课程,
    • 确认自己真的对 AI 开发方向有兴趣,
    • 再用这套证书做“进阶突击”。

总结:不要指望一门课改变人生,但可以让它改变你学习 AI 的方式

再好的课程,也不会在几周之内把你变成“AI 专家”。

它们做不到的:

  • 立刻帮你找到一份梦幻工作;
  • 取代你在真实项目中的试错和踩坑;
  • 让你不写一行代码,就变成“AI 大师”。

但它们做得到的是:

  • 让你少在错误的课程上浪费时间和金钱;
  • 给你一组 清晰的概念框架可以展示的作品/证书
  • 帮你在团队内外,打开更多围绕 AI 的机会窗口。

对初级开发者来说,更重要的是心态的转变:

  • 不再迷信“最难的课就是最好的课”;
  • 也不再沉迷“最容易拿证的课”;
  • 而是根据自己的起点和目标,有意识地做出选课决策。
真正拉开差距的,往往不是“你选了哪一门课”,
而是“你能不能把学到的东西,变成一个又一个实际的小项目和分享”。

如果你愿意,可以从这 6 门课里只选 1 门

  • 认真上完;
  • 认真做完作业和项目;
  • 再用你自己的方式,复盘、分享、迭代。

这比一次性报十几门课,却一门都没上完,要有用得多。


Hi,我是俞凡,一名兼具技术深度与管理视野的技术管理者。曾就职于 Motorola,现任职于 Mavenir,多年带领技术团队,聚焦后端架构与云原生,持续关注 AI 等前沿方向,也关注人的成长,笃信持续学习的力量。在这里,我会分享技术实践与思考。欢迎关注公众号「DeepNoMind」,星标不迷路。也欢迎访问独立站 www.DeepNoMind.com,一起交流成长。

本文由mdnice多平台发布

很多读者都会好奇少数派的编辑们到底平时都「买了啥」。我们希望通过「编辑部的新玩意」介绍编辑部成员们最近在用的新奇产品,让他们自己来谈谈这些新玩意的使用体验究竟如何。

内容声明:《新玩意》栏目如含有商务内容,将会在对应条目标注「广告」。


@老麦:华为 Mate X7 专业摄影套装

  • 参考价格:¥1699

给一个折叠屏配上专业摄影套装,确实不是一般人会干的事情,但华为联合铁头,重点开发了这个产品,作为少数派必须要体验一下,看看到底怎么回事。

首先是不用质疑铁头产品的用料和做工,整体都非常扎实,完全可以匹配 Mate X7 的高端质感,我看包装上有华为设计的字样,估计官方也是深度参与,提出了相应的出品要求。

整体设计不错,兼顾了日常的实用性,单用手机壳的时候,自带了一个金属支架,横竖都可以使用,磨砂金属+细腻素皮,内衬是格形绒面材质,保护手机本体,完全不亚于三四百的其它手机壳。

蓝牙手柄是卡在支架位置的,结构很坚固,设计了防脱锁扣,基本可以单手握持拍照,手柄上有相机和录像的独立按键,还有变焦调节和曝光调节,甚至还有一个先后摄切换按键,方便你随时自拍,算是很周到了。当然也支持标准螺栓接口,用来固定三脚架。

镜头部分,是有一个中间转接装置,滑扣在手机壳镜头圈,然后镜头再选装固定,这样的好处是你可以随时去掉镜头,使用原生相机。这里有个点需要注意,就是镜头只转接到长焦镜头,同时遮盖其它镜头,所以需要使用主镜头的时候,需要取下外接镜头,估计也是这样设计的原因之一。但如果能多一个专用的内口防尘盖就更好了。

最后来说说镜头效果,首先,它并不是我们常规理解的增距镜,因为华为本身的十倍长焦就很厉害了,而这个镜头的价值,是让你在 13.5 倍的距离下,拍出近在咫尺的细节和景深效果,属于无损增距,并不是纯粹的长焦打鸟的概念,当然,27 倍下也能得到可用的照片效果,帮你捕捉一些独特的场景,而原生相机的 27 倍,就基本要靠 AI 算法描绘了。更多的照片可以从这里看。

产品的整体感觉还是挺不错的,其实这次 Mate 7 产品本身就更倾向于全能旗舰,完整的相机配置,更强的铰链结构和防水性,不仅可以服务日常商务场景,真的要出去玩一玩,野一下,也不需要换手机,而这个摄影套装,就是满足你的旅拍需求,在十倍以上的长焦下,获得更好的画质和细节,价格比同类产品略贵一点,个人认为是值得的。

对了,我还配了一个小隼的磁吸手绳,以及对应的背带挂绳,看起来更像那么回事了。

@Lotta:

上海译文出版社黄铜夹子

  • 参考价格:寒鸦咖啡馆黄铜夹子 ¥39;海上书展铜胚彩漆夹子 ¥48

上海译文出版社旗下七海制造局的文创在我收藏夹里躺了好久,属于制作精美、价格偏贵、实用价值若有似无的类型,所以直到最近趁着满减活动才狠心入手了两款夹子,分别是「寒鸦咖啡馆」黄铜夹子和「海上书展」铜胚彩漆书夹。

「寒鸦咖啡馆」的设计源自作家卡夫卡,因捷克语中的寒鸦与卡夫卡同音而来,正面图案仿若咖啡馆的招牌,刻着「DINKES, SNACKS, SALAD」等字样,背面则刻有卡夫卡书信中的句子「一本书正是一把斧子,劈向我们内在冰封的海」和「AUTHOR OF THE NIGHT」,意指咖啡馆每个月都有一个晚上会举办读书会活动。复古的设计、雕刻的凹凸触感,加上与文学强相关的背景故事确实让人爱不释手。

比起在灯光下闪烁着金属光泽的黄铜夹子本身,包装盒就显得比较普通了,就是印着相关图案的轻薄纸盒,夹子在盒子里的固定也没有做得很好,我收到的时候夹子已经是东倒西歪的状态,但也没有发现明显的运输损伤。

「海上书展」并非现实中真的有这样一个书展,而是同样源自七海制造局创造的背景故事。正面的图案是一艘帆船,背面是一座被称为「水晶苑」的宫殿,也就是举办书展的场所。书夹背面有挂孔,可以夹起来悬挂稿纸、票据、明信片等。虽然夹子的蓝色彩漆十分美丽,但在运输过程中蹭了不少颜色在盒子内部;实际使用中,偶尔也会不小心蹭到一点几乎可以忽略不计的蓝色。

如果只是用来夹稿纸或本子,三五块钱的亚克力夹子我也买过,除了重量之外,在实际使用上不会有什么不同。不过,如果想夹比较厚重的书页,还是要黄铜夹子上场才行。虽然听起来有点强行给它们找使用场景的意思,但如此美貌的夹子来到我家,只要是能让它们时时出现在眼前赏心悦目,用在哪里都可以的。

奶油小狗春联

  • 参考价格:¥43

大数据又狠狠猜到我喜欢的东西了!刷到这套春联的我几乎没有犹豫就下单了,因为实在是太可爱了!比起去年买的 Pingu 春联可爱程度更上了一个台阶,但价格也加了一倍。相比 50 多元 19 张的 Pingu 礼盒,这套春联 7 张定价就要 49 元。不过这套春联采用的是毛毡材质,似乎耐久度更高一些,作为独立小店的原创设计,价格也没多难接受(毕竟太可爱了)。

商家产品图

这套春联的主题是奶油小狗,深灰色的高脚托盘上是一摞红彤彤的草莓和一个可露丽,顶端各站着一只可爱的奶油小狗,写着「喵喵旺旺伴左右/日子甜蜜似奶油」的字样。不过作为对联来说确实既不对仗、也谈不上平仄相合,对此有要求的朋友慎选。

春联的包装很简单,一套七张被卷在一起装进透明袋子里,附赠了无痕贴和 3M 胶磁贴。春联印刷质量也很不错,几乎没有色差。虽然店家表明机器裁切可能会有白边,但不仔细看的话基本不会发现瑕疵。

这么可爱实在不舍得贴在大门外,于是我把它们贴在了室内的房间门上。虽然商家的示意图是七张都贴在了一起,但分组 DIY 也完全没问题,比如我觉得都贴在一扇门上有点拥挤,就把它们分成两组贴在了两扇门上,雨露均沾(bushi

我一开始也担心过草莓奶油的元素和春节的气氛并不匹配,贴上后却发现亮眼的红色确实也有喜庆的感觉,房间一下就活泼起来了!

@waychane:新款 AirTag

  • 参考价格:¥249

Apple 近日发布了新一代 AirTag,我也在今天刚刚拿到了新款,简单写下体验。

首先从外观来看,新旧 AirTag 不管是在外观、大小、厚度方面均无变化,意味着以往为旧款 AirTag 购买的钥匙扣、保护壳等配件,新款 AirTag 都能兼容。

二者在外观方面唯一的区别在设备周身的印刷字上,旧款 AirTag 的印字采用了单词首字母大写、其余字母小写的展示方式,新款 AirTag 则采用全部大写的印字方法,并且新增了一个「NFC」的文字标识。

新款 AirTag 相比旧款的升级部分主要在查找范围和扬声器音量方面。音量部分,能够听出新款 AirTag 的声音更加响亮,同时频率要高了不少,入耳声会明显尖锐许多。

查找范围方面,从我在家中的实际测试来看,新款 AirTag 能够开始获取查找信号的范围确实会比旧款要稍大一些,在隔着一堵承重墙的情况下,我在距离墙面两三步的情况下,新款 AirTag 能够直接搜索到微弱信号;但换到旧款 AirTag 这边,要几乎靠近到上述承重墙面位置,才能开始获取到另一个房间的 AirTag 信号。

左:新款 AirTag

配件方面,Apple 官方钥匙扣也意料之中放弃了之前使用的皮革材料,继续使用之前推出的精织斜纹材料制作钥匙扣;手感上是比较光滑的感觉,视觉上我认为也有足够的精致感。不过这款钥匙扣是否会像之前的精织斜纹手机壳一样容易染上污渍或痕迹,就要等再使用一段时间后再看情况了。

@Clyde:贝尔金 Stage PowerGrip

  • 参考价格:¥239

是一个能当「拍照手柄」的 9000mAh 容量充电宝,还是作为一个能当充电宝的蓝牙遥控手柄?不管从哪个角度去看,贝尔金这款 Stage PowerGrip 都让人充满了购买的欲望。当它海外试水完上架国内电商平台的第一时间,我自然是没能抵抗住同事的推荐火速下单了。

作为一款充电宝,Stage PowerGrip 有着 7.5W 的无线充模式功率,没什么大力和奇迹,考虑到一方面我手里 iPhone 17、Pixel 9 Pro 都是些在无线充电规格方面比较小气的吝啬鬼,另一方面这玩意儿的场景定位是拍照必然也会伴随可观的发热,这个充电功率其实倒还好;9300mAh 的容量也够上述设备循环充电接近两轮,加上 3C 认证和亲测甩不掉的 10N 强磁,无线充电体验整体也就没什么好挑刺的了。

有线充这边,单口有线充电时的功率是尚未「超速」的 15W,因为自带了一根 USB-C 充电线同时还有一个 USB-C 接口,配合磁吸无线充电更是能直接三设备同时充电——除了应急应该没人会这么做,毕竟效率确实不高。

所以在开头提到的两种认知中,我更倾向于自己买的是一个恰好能当充电宝的拍照手柄。说到底,贝尔金 Stage PowerGrip 是一个做了相机人体工学外观设计的蓝牙快门控制器,握持区域虽然没有用什么特别的材质区分但纹理细节到位,也能起到不错的防滑效果;充电线圈位置的镜头形状圆环、有点像取景器但理应是闪光灯的位置则被用来做成了一块可以显示容量剩余、充电状态和蓝牙快门连接状态的显示器,这些也都算是有点小巧思。

贝尔金 Stage PowerGrip 甚至在底部提供了一个 1/4 英寸的标准三脚架螺口,配合磁吸连接方式,不管是横拍还是竖拍甚至倒着拍都是没问题的,可以说握持方式上相机怎么用它就怎么样。唯一的槽点是这个快门按钮的位置有点奇怪,要是能做在顶部而不是前侧,用起来应该也会更加自然。

对了,因为是蓝牙连接、映射音量按键快门的方式,所以这个快门按钮也仅提供快门功能,半按对焦、缩放变焦之类的你还是别想了。

事实上,除了兼职充电宝和塑料摄影套件这两种定位,贝尔金 Stage PowerGrip 其实也是一个不错的无线充电底座——相机握柄意味着它可以立起来并且重心稳固、磁吸形态意味着它相比常见无线充电底座还能进一步解放线缆。在家里的大部分时候,我甚至开着充电功能,然后把 Pixel 或者 iPhone 扔上去,借助屏保或待机显示功能当个副屏使用。如此一来,充电可以说是这款产品最次要的功能了。


我们近期开通了新玩意的社媒帐号,更有更多新奇产品和服务以视频方式呈现,快来关注我们吧!

如果你也想分享「新玩意」🔉:

  • 获取 Matrix 社区写作权限并签署 Matrix 共创计划
  • 新发布一篇文章,在标题中标注「新玩意」前缀;
  • 用至少 800 字介绍产品,并配上 2-3 张产品的实拍图片;
  • 在网站个人信息中补充支付宝账号。

成功入选还可以得到 108 元的「剁手红包」🧧,并在每周二的社区速递栏目中展示。如果你有兴趣参与,就赶紧来稿吧!

> 下载少数派 客户端、关注 少数派公众号,了解更多的新玩意 🆒

> 特惠、好用的硬件产品,尽在 少数派 sspai 官方店铺🛒

    从市场转项目经理后,我最不适应的不是排计划,而是跨部门沟通:需求一改再改、大家都忙、信息越聊越散,最后项目像被“讨论”拖住。后来我把沟通从“多说几句”改成“把事情对齐”,用 3张表+2次对齐,把跨部门协作从扯皮拉回推进。本文是我踩坑后的复盘版,希望你少走弯路。

    沟通不是“说服”,而是“让大家站在同一张地图上”

    刚转型那会儿,我对“沟通能力”有点自信——市场做久了,写方案、做汇报、协调资源都不陌生。我以为跨部门协作的关键,是把话讲清楚、态度放柔软、跟进足够勤。
    结果我遇到的第一类崩溃场景是这样的:

    • 需求方说:“就加个按钮,别复杂。”(他们脑子里是“体验优化”)
    • 研发说:“按钮背后是权限、埋点、风控链路。”(他们脑子里是“系统代价”)
    • 测试说:“你们什么时候稳定?我得排期。”(他们脑子里是“交付风险”)

    我夹在中间,开会、纪要、催进度——越努力越像在搅浑水。

    后来我复盘才意识到:跨部门沟通最可怕的不是没人沟通,而是每个人都在用自己那套“事实版本”做判断。你以为你在推进项目,其实你只是让信息流动得更快,但信息没有被“对齐”成同一套共识。

    所以当有人问我“跨部门沟通怎么做”时,我现在会先把目标从“说服对方”改成两件事:

    • 建立共同事实:对齐目标、范围、验收口径(范围管理 + 验收标准);
    • 建立共同承诺:对齐责任、里程碑、变更处理方式(干系人管理 + 变更管理)。

    用一句话理解就是:跨部门协作想推进,靠的不是“多沟通”,而是“先对齐事实,再对齐承诺”。

    我试过很多复杂模板,最后留下的,是一套我能坚持、团队也不反感的“最小可用沟通机制”:3张表 + 2次对齐。它专门解决三类高频场景:跨部门总扯皮(因为事实不一致)、项目推进卡住(因为责任/接口不清)、需求频繁变更(因为取舍不透明)。

    方法总览:3张表+2次对齐是什么?

    我把它理解为一套“把口头沟通变成可执行协作”的最小结构。为什么强调“最小”?因为新人PM常犯的错(我也犯过)是:文档越做越漂亮,协作越变越沉重,最后大家都不看。所以我只保留三张“够用就好”的表,它们分别解决三个核心问题:

    3张表(信息载体):把沟通从“感觉”落到“事实”

    1. 目标-范围表:我们要达成什么?这版做什么/不做什么?(范围管理)
    2. 责任-接口表(RACI):谁负责、谁拍板、谁被咨询、谁被知会?(干系人/责任边界)
    3. 里程碑-风险表:节奏怎么走?卡点在哪里?风险如何提前暴露?(进度/风险管理)

    2次对齐(关键会议):在最容易跑偏的节点强制校准

    • 启动对齐(开工前):对齐版本、边界、验收与承诺
    • 变更对齐(需求变化时):对齐影响、取舍与更新后的计划

    可直接照抄的清单版(方便你保存/转发):

    • 目标-范围表:目标 / In / Out / 验收口径 / 前置依赖
    • RACI表:交付物 / R / A / C / I / 接口Owner
    • 里程碑-风险表:里程碑交付物 / 时间盒 / 风险 / 触发信号 / 应对动作 / 责任人
    • 启动对齐:确认三张表的初版(尤其 Out、A、验收口径)
    • 变更对齐:确认“原因-影响-取舍-更新”并同步单一事实源

    这样做的核心不是为了让所有人满意,而是让争论发生在纸面上(事实与取舍),而不是发生在人身上(情绪与立场)。

    第一张表:目标-范围表(把“要做的事”说成同一句话)

    定义一下:目标-范围表,是把“我们到底要做什么”变成可讨论、可裁剪、可验收的一张纸。跨部门误会的起点,往往是“同一个词,三种理解”。尤其是那句万能话:“很简单,加个按钮。”我现在做目标-范围表,会固定写六行,简单但很顶用:

    1)目标(Why):一句话写清“要改变什么”

    我会逼自己避开“提升体验”这种虚词,改成可验证句子:

    • 目标:将【某流程】的完成率从 A 提升到 B
    • 衡量:上线后看【指标/漏斗/反馈】验证
    • 期限:这次目标对应的业务窗口期是什么(活动/版本/政策)

    为什么要写这么“死”?因为你需要一个锚点:“要不要加这个功能?”——先看它对目标的贡献,再谈实现代价。

    2)范围(What):In / Out 是跨部门沟通的护城河

    我会把范围写成三栏:必须做(MVP):不做就达不成目标;应该做(Should):做了更好,但可以延后;明确不做(Out):看似相关,但这版不做。这一步我以前觉得“写Out很尴尬”,怕得罪人。后来发现:不写Out,才是对团队最大的伤害。 因为Out不明确,所有“顺手加一下”都会默默流进开发和测试的夜里。

    3)验收口径(Done):别让“做完了”变成各说各话

    我会补一行“算完成的标准是什么”:覆盖哪些页面/接口/流程?哪些异常场景必须处理?是否包含数据埋点/日志/权限/兼容性。如果你只记一句:写验收口径,比写需求描述更能减少扯皮。它能直接回答“怎么判断完成”,这对跨团队协作太关键了。

    4)前置条件 & 假设:提前暴露依赖,避免“后知后觉”

    我会写一句:需求成立依赖什么?例如:接口可获取某字段、法务/合规确认通过、运营能配合灰度与公告。很多跨部门冲突,都是“依赖没说清”,结果上线前一天才发现缺口。

    5)常见分歧怎么处理:用“目标优先”做裁剪

    当业务坚持加一个Should,研发觉得成本大时,我会用这种说法:“我们先把它放进Should,并评估它对目标的贡献。如果贡献不大,我们安排到下个版本,先确保MVP按期交付”。你会发现,一旦你把争论从“要不要支持业务”转成“对目标贡献/代价/节奏”,情绪会明显下降。

    6)可复制模板字段(建议直接复制到文档)

    • 目标(指标/期限)
    • In(MVP/Should)
    • Out(明确不做)
    • 验收口径(Done标准)
    • 前置依赖/假设
    • 待定项(谁在何时给结论)

    第二张表:责任-接口表(RACI)(把“谁该做什么”摆到明面)

    定义一下:RACI表的作用,是把责任边界“提前公开”,避免问题出现后才开始找负责人。很多项目推进失败,不是没人干活,而是默认别人会干。

    • R(负责):真正动手的人
    • A(拍板):最终对结果负责的人(最好只有一个)
    • C(被咨询):需要提供输入的人
    • I(被知会):需要同步的人

    我踩过的坑是:A写了一堆人,结果等于没有A。A多=没人负责,R多=没人行动。所以我会坚持两条原则:每个交付物必须有一个明确A;每个关键动作必须有明确R。
    我常用的“接口归属”写法(示例):

    • 需求与验收口径:R=业务/产品,A=业务负责人,C=研发/测试,I=相关方
    • 接口联调:R=研发,A=研发TL,C=数据/平台,I=PM/测试
    • 发布与回滚:R=研发/运维,A=技术负责人,C=PM/测试,I=业务方

    让对方愿意“接责任”的小技巧:先给价值,再要承诺

    我以前会说:“这个你负责一下。”(很容易被拒)现在我会换成:“为了减少你后面被反复打扰,我把边界写清楚:你只需要对【接口字段冻结】拍板,材料我来整理”。跨部门里,大家抗拒的不是责任本身,而是“无底洞式的额外负担”。
    可复制模板字段(建议直接复制)

    交付物/动作(例如:验收口径确认、接口冻结、灰度发布)

    • R / A / C / I
    • 接口Owner(单点负责人)
    • 依赖输入(例如:数据字段、合规确认)
    • 默认生效规则(X小时未反馈视为确认)

    第三张表:里程碑-风险表(把推进从“催”变成“共同维护的跑道”)

    定义一下:里程碑-风险表不是进度表,它更像“协作跑道”:让大家知道下一步交付物是什么,风险在哪儿。我以前推进项目的方式很朴素:每天问进度。后来发现,跨部门里“催”往往换不来产能,只会换来“我很忙”的反弹。

    1)里程碑:用“交付物”定义节点,而不是用日期自我安慰

    • 需求评审通过(含验收口径)
    • 方案评审通过(含风险与回滚)
    • 提测包提交(清单完整)
    • 缺陷收敛到 X(阻塞项清零)
    • 灰度上线(核心指标无异常)
    • 全量上线(复盘完成)

    “交付物写清楚”能减少大量“差不多了”“快好了”的模糊表达。

    2)风险:写给“提前救火”的(风险台账 + 触发信号)

    我写风险会包含三项:

    • 风险描述:可能发生什么
    • 触发信号:什么迹象说明它正在发生
    • 应对动作:谁来做什么,何时做

    例子:

    • 风险:接口字段不稳定导致联调反复
    • 触发信号:2天内字段变更≥2次
    • 应对:字段冻结;变更需评审;指定接口Owner

    触发信号是关键——它让风险从“感觉”变成“可监控”。

    3)同步频率:用短周期让问题变小(沟通闭环)

    我会设置一个“小节奏”:

    • 每周一次里程碑复盘(10–15分钟)
    • 联调/提测/上线阶段提高频率

    目的不是“开更多会”,而是:让问题在小范围、小成本时被看见。

    可复制模板字段:

    • 里程碑交付物 / 目标时间 / 责任人
    • 当前状态(绿/黄/红)
    • 风险描述 / 触发信号 / 应对动作 / Owner
    • 阻塞项(需要谁协助、截止时间)

    第一次对齐:启动对齐(开工前把“版本”对齐)

    启动对齐可以理解成“项目启动会”的轻量版本:不是热闹,是明确。

    会前:三件事准备好,会议才不会开成空会

    • 目标-范围表初稿(至少写出MVP/Out)
    • 验收口径初稿(哪怕很粗)
    • RACI候选归属(让大家确认而不是从零讨论)
    • 会中:四个输出必须落地
    • 目标-范围表确认(尤其Out)
    • 验收口径确认(什么算Done)
    • RACI确认(谁拍板、谁负责、接口Owner是谁)
    • 里程碑-风险表初版(更新频率与维护人)

    控场句(我常用三句)

    1. “我们先对齐事实:目标、范围、验收。”
    2. “有分歧先写进风险或待定项,别用口头承诺糊过去。”
    3. “会后我会发一页纸纪要,默认生效;不同意请在X小时内提出。”

    “默认生效”听起来强势,但它其实在保护协作:没有默认机制,就会无限确认;无限确认,就是无限消耗。

    第二次对齐:变更对齐(需求变化时,把取舍摆上桌)

    如果你问我“需求频繁变更怎么沟通”,我的答案基本等同于:做变更对齐。
    跨部门最伤的不是变化,而是变化没有代价——因为代价会被默默转嫁到开发、测试和交付节奏里。

    变更对齐固定四问(原因-影响-取舍-更新)

    • 变更原因?(目标变了,还是理解变了?)
    • 影响是什么?(范围/工期/风险/质量)
    • 取舍是什么?(删什么、延什么、加资源还是降质量)
    • 更新什么?(三张表与里程碑怎么改,谁确认)

    我会把结论写成一句可执行的话:“本次增加X,删除Y,里程碑顺延Z天,由A确认,R在周三前完成”。这句话的价值是:把“你让我改”变成“我们共同选择了一个方案”。

    一些我后来才懂的小技巧

    1)把“情绪”转成“事实”:先接住,再落表
    当有人说:“你们需求太离谱了”。我会回:“我理解你压力很大,我们先把离谱点拆成范围或风险,逐条落到表里”。

    2)少用“麻烦你”,多用“我来承担结构化工作”
    跨部门最讨厌的是额外负担。我会说:“材料我整理,你只需要确认两个结论:Out 和接口Owner”。

    3)所有对齐都要有“单一事实源”(SSOT)
    我会明确:最终以哪份文档为准,放在哪个位置,谁维护、多久更新一次。否则群里一句话、会议一句话、口头一句话,版本立刻分裂。

    4)让文档“轻”,但让结论“硬”
    三张表不需要精美,但必须做到:可追溯(谁确认、何时确认)、责任明确(R/A清晰)、变更有记录(旧版本不丢)

    转型做项目经理后,我最大的变化是:以前我以为沟通是“把话说清楚”;现在我更相信,沟通是“把事情对齐”。当你在问“跨部门沟通怎么做”时,你真正想要的,可能是:如何让一群很忙、目标不完全一致的人,愿意在同一条路径上推进项目。

    我的答案是:用 3张表建立共同事实,用 2次对齐建立共同承诺。它不酷,甚至有点笨,但它让我从“到处追着问的人”,慢慢变成“能把项目推着走的人”。项目管理不是控制混乱,而是学会与不确定共处:你不可能让变化消失,但你可以让变化有代价、有记录、有共识。如果你也正处在转型期,希望这套方法能帮你少走一点弯路——至少在下一次跨部门会议里,你能更从容一点。

    在数字化时代,高效代理成为提升网络连接质量、加速数据传输的重要工具。通过优化网络路径、缓存数据、管理连接等多种机制,高效代理能够实现快速稳定的数据传输,为用户提供更流畅的网络体验。

    一、优化网络路径

    高效代理通过智能选择最优的网络路径,减少数据传输的延迟和丢包率。代理服务器位于用户和目标服务器之间,作为数据传输的中转站,能够感知网络状况并作出相应的调整。

    智能路由:高效代理利用先进的路由算法,根据实时网络状况和用户请求,选择最优的传输路径。这包括选择延迟最低、带宽最充足的网络链路,以及避开可能存在拥堵或故障的网络节点。

    多线路接入:高效代理通常具备多条网络线路接入,包括电信、联通、移动等不同运营商的线路。通过智能路由,代理服务器能够根据用户请求的目标地址,选择最合适的线路进行数据传输,从而避免跨运营商访问带来的延迟和丢包问题。

    二、缓存数据

    高效代理通过缓存机制,减少重复数据的传输,提高数据传输效率。

    内容缓存:代理服务器会缓存用户频繁访问的内容,如网页、图片、视频等。当用户再次访问这些内容时,代理服务器可以直接从缓存中提供数据,而无需再次向目标服务器请求。这种机制显著减少了数据传输量,提高了访问速度。

    对象缓存:除了内容缓存外,高效代理还会缓存一些常用的对象,如数据库查询结果、API响应等。这些对象通常具有较高的复用率,通过缓存可以进一步减少数据传输时间。

    三、管理连接

    高效代理通过精细化的连接管理,确保数据传输的稳定性和可靠性。

    连接复用:代理服务器会复用已有的连接,而不是每次请求都建立新的连接。这种机制减少了连接建立的时间开销,提高了数据传输效率。

    连接池:高效代理通常维护一个连接池,用于管理多个并发连接。连接池中的连接可以根据需要动态分配和释放,确保数据传输的连续性和稳定性。

    负载均衡:当代理服务器面临大量并发请求时,负载均衡机制会将请求分散到多个服务器上进行处理。这不仅可以提高数据处理能力,还可以避免单个服务器过载导致的性能下降或崩溃。

    四、压缩数据

    高效代理还会对传输的数据进行压缩,以减少数据传输量,提高传输速度。

    数据压缩算法:代理服务器会使用高效的数据压缩算法,如Gzip、Brotli等,对传输的数据进行压缩。这些算法能够显著减少数据的大小,从而加快数据传输速度。

    动态压缩:除了静态数据的压缩外,高效代理还会对动态生成的数据进行压缩。例如,当代理服务器从目标服务器获取到网页内容时,它会对网页内容进行压缩后再传输给用户。

    五、安全性与隐私保护

    在追求快速稳定的数据传输的同时,高效代理也注重安全性和隐私保护。

    加密传输:高效代理会使用SSL/TLS等加密协议对传输的数据进行加密,以确保数据在传输过程中的安全性。

    匿名性:代理服务器会隐藏用户的真实IP地址,提供匿名访问服务。这有助于保护用户的隐私,防止被第三方追踪或监控。

    在使用高效代理时,用户应按照自己的需求和场景选择合适的代理类型和服务提供商,来保证更好的使用效果。

    小T导读:在智慧港口的建设过程中,面对海量物联网设备产生的时序数据(如设备状态、能耗、作业效率等)的高效接入与实时分析需求,山东港口科技选择采用 TDengine TSDB 时序数据库作为核心数据底座,以应对传统关系型数据库在处理高并发、大规模时序数据时的性能瓶颈,实现设备状态的实时监控、数据压缩存储与智能分析,为智慧港口的数字化转型与智能化运营提供强有力的数据支撑。本次将就此实践进行具体分享。

    合作背景

    在“智慧港口”的宏伟蓝图下,山东港口科技集团面临着海量物联网设备数据接入、处理与分析的严峻挑战。港口作业涉及大量的桥吊、门机、集卡、传感器等终端设备,这些设备 7x24 小时不间断产生巨量的时序数据(如位置、状态、能耗、效率指标等)。传统的通用关系型数据库在处理这类高并发、海量的时序数据时,显得力不从心。为了夯实智慧港口的数据根基,经过严谨的选型,我们最终选择了 TDengine TSDB 作为核心时序数据平台,以支撑关键业务系统的数字化转型。

    选择 TDengine TSDB 的原因

    在引入 TDengine TSDB 之前,我们的业务系统主要面临以下痛点:

    • 数据膨胀与存储成本高:​ 港口设备每秒产生数以万计的数据点,若采用传统数据库存储,数据表会急剧膨胀,不仅占用大量存储空间,且备份和维护成本高昂。
    • 查询分析效率瓶颈:​ 对于实时监控、效率分析和历史数据回溯等场景,传统数据库的查询响应速度慢,无法满足业务对“实时洞察”的要求,特别是在聚合计算大量设备的历史数据时,耗时长达分钟甚至小时级。
    • 系统架构复杂:​ 为了应对不同的数据处理需求(如实时、短期、长期),往往需要组合使用多种数据库和技术栈(如 Redis、MySQL、Hadoop 等),这增加了系统架构的复杂性、开发和运维难度。

    TDengine TSDB 作为专为时序数据设计的数据库,其超高性能、内置缓存和流式计算功能、极简的架构以及强大的数据压缩能力​,恰好精准地解决了上述痛点,成为我们的理想选择。

    使用 TDengine TSDB 后的收益与业务提升

    部署 TDengine TSDB 后,我们在多个方面获得了显著收益:

    • 极致的性能提升:​ 对港口设备运行状态的查询响应速度从原来的“分钟级”提升到“毫秒级”,实现了真正的实时监控与告警。
    • 显著的降本增效:TDengine TSDB 高效的数据压缩技术,使得存储空间节省超过 80%,大幅降低了硬件与运维成本,简化的架构也减少了运维团队的工作负担。
    • 增强的数据驱动能力:​借助 TDengine TSDB 强大的时序数据计算能力,业务团队能够轻松进行设备效率分析、预测性维护和运营优化,为决策提供坚实的数据支持,进一步强化了“智慧港口解决方案”的核心优势。
    • 加速创新应用落地:借助 TDengine TSDB 这一稳定的高性能数据底座,我们能够快速开发和部署新的数据密集型应用,如全自动码头的智能调度系统、物流供应链的可视化平台等。

    核心业务场景与 TDengine TSDB 应用实例

    场景一:港口岸桥设备实时状态监控与效率分析

    • 业务描述:​ 实时监控码头所有岸桥(Quay Crane)的运行状态(如起升、下降、大车行走、小车行走)、能耗以及作业效率(如单箱能耗、作业周期),确保设备安全高效运行,并即时发现异常。
    • TDengine TSDB 查询 SQL 示例:
    -- 1. 查询指定岸桥(Crane_ID = 'QC08') 在过去10分钟内的平均功率和总能耗
    SELECT AVG(power_kw), SUM(power_kw * ts_interval / 3600) AS total_energy_kwh
    FROM crane_power_metrics
    WHERE crane_id = 'QC08' AND ts >= NOW - 10m
    INTERVAL(1m);
    
    -- 2. 统计过去1小时内,所有岸桥的作业箱量(基于每次吊装动作计数)
    SELECT crane_id, COUNT(*) AS operation_count
    FROM crane_operation_events
    WHERE ts >= NOW - 1h AND operation_type = 'lift_complete'
    GROUP BY crane_id;​

    通过 TDengine TSDB 毫秒级查询与高效聚合能力,我们实现了对数百台岸桥设备运行状态的实时监控(1 分钟粒度)与异常秒级捕捉,查询效率从分钟级提升至毫秒级,存储成本降低超 80%,极大提升了设备管理实时性与安全性。

    场景二:智能集卡(AGV/IGV)调度与路径优化

    • 业务描述:​ 追踪自动化码头内数百台智能导引车(AGV)的实时位置、速度、电池电量和状态,基于这些时序数据进行最优路径规划和调度,避免拥堵,提升整体物流周转效率。
    • TDengine TSDB 查询 SQL 示例:​
    -- 1. 查询所有电量低于20%的AGV的当前位置和最新电量
    SELECT last(latitude), last(longitude), last(battery_level)
    FROM agv_status_metrics
    WHERE battery_level < 20
    GROUP BY agv_id;
    
    -- 2. 计算指定区域(如A01区)过去5分钟内的平均车辆速度,用于判断拥堵情况
    SELECT AVG(speed_kmh) AS avg_speed
    FROM agv_location_metrics
    WHERE ts >= NOW - 5m AND zone_id = 'A01';

    借助 TDengine TSDB 的 last() 实时状态查询与窗口聚合能力,我们实现了对数百台 AGV 的实时位置、电量及速度监控,低电量车辆识别与区域拥堵判断均达到秒级响应,调度效率提升约 50%\~70%,整体物流周转更高效、更智能。

    场景三:港口风速风向监测与预警

    • 业务描述:​分布在港区各处的气象站持续采集风速、风向数据。系统需要实时判断是否超过安全作业阈值,并及时向相关设备和人员发出预警,保障恶劣天气下的作业安全。
    • TDengine TSDB 流计算 SQL 示例:​
    -- 创建流式计算,持续监控风速,一旦发现某个站点每分钟一次的平均风速超过阈值(18m/s),则触发告警
    CREATE STREAM wind_alert_stream
    INTO wind_alert_events
    AS
    SELECT _wstart AS ts, station_id, AVG(wind_speed) AS avg_wind_speed
    FROM weather_station_metrics 
    PARTITION BY station_id
    INTERVAL(1m) SLIDING(1m);
    
    -- 查询历史告警记录
    SELECT * FROM wind_alert_events WHERE ts >= TODAY ORDER BY ts DESC;

    解析如下:

    • CREATE STREAM wind\_alert\_stream 定义了一个名为 wind_alert_stream的流,用于持续处理实时数据。
    • INTO wind\_alert\_events 将流计算的结果写入到 TDengine TSDB 中的 wind_alert_events表中,该表为一个超级表,按照分组会自动生成子表,用于存储每个分组的告警事件。
    • SELECT \_wstart AS ts, station\_id, AVG(wind\_speed) AS avg\_wind\_speed 选择数据流中的时间戳(\_wstart)、站点 ID(station\_id)以及风速的平均值(AVG(wind\_speed))。_wstart是该时间窗口的起始时间,作为告警触发的时间点。
    • FROM weather\_station\_metrics 数据源是 weather_station_metrics表,该表应包含字段如:ts(时间戳)、station_id(站点 ID)、wind_speed(风速-单位:m/s)等。
    • PARTITION BY station\_id 按站点分组,每个站点独立计算,避免不同站点之间的数据干扰。
    • INTERVAL(1m) SLIDING(1m) 定义了 1 分钟的时间窗口,每 1 分钟滑动一次,即每分钟统计一次过去 1 分钟内的数据。

    借助 TDengine TSDB 灵活的流计算能力(1 分钟滑动窗口),我们实现了港口风速的实时监测与自动告警(响应时间<1 分钟)。原本需要多个大数据组件才能完成的处理流程,如今只需一条语句即可完成,告警的准确性与时效性显著提升,安全运维效率也随之大幅提高。

    结语

    通过引入 TDengine TSDB,我们成功构建了一个高性能、高可用的时序数据管理平台,有效解决了智慧港口建设中海量物联网数据处理的核心难题。这一合作不仅提升了现有业务的运营效率和智能化水平,也为未来探索更多基于数据的创新应用(如数字孪生港口)奠定了坚实的基础,有力地支撑了山东港口科技集团有限公司打造“行业领先的高新技术上市企业”的战略目标。

    关于山东港口科技

    山东港口科技集团有限公司是山东省港口集团为全力推进智慧港口建设而设立的高科技子公司。公司立足信息化顶层设计、核心应用系统研发和大数据应用,致力于打造物流供应链服务平台、智慧港口解决方案和自动化应用系统三大核心优势。作为一家以创新为驱动的高新技术企业,科技集团正积极利用数字技术,为全球港口行业的智能化升级注入科技力量。

    作者:张艳明