包含关键字 typecho 的文章

VMware Workstation Pro 25H2u1 Unlocker & OEM BIOS 2.7 for Windows & Linux

在 Windows 和 Linux 上运行 macOS Tahoe

请访问原文链接:https://sysin.org/blog/vmware-workstation-unlocker/ 查看最新版。原创作品,转载请保留出处。

作者主页:sysin.org


2026 年 2 月 27 日 25H2u1 版本发布。

桌面 Hypervisor
VMware Workstation Pro

VMware Workstation Pro 是行业标准桌面 Hypervisor,使用它可在 Windows 或 Linux 桌面上运行 Windows、Linux 和 BSD 虚拟机。

VMware Workstation

2024 年 11 月 11 日,VMware by Broadcom 宣布 VMware Fusion 和 Workstation 现在对所有用户免费。

特性概览

macOS Unlocker 支持 macOS Tohoe

⚠️ macOS 虚拟机与 Mac 上的 macOS 体验有天壤之别,仅用于体验而已。开启 macOS 卓越性能的唯一平台是搭载 Apple M 芯片的 Mac。

新建虚拟机,操作系统选择 “Apple macOS”,即可安装和正常启动。

vm-ws-17-linux

VMware Workstation 默认没有新建 macOS 虚拟机的选项。

macOS 可引导介质:

📣 注意:macOS 虚拟化有限制条件,请参看系统要求:

VMware Dell 2.7 BIOS EFI64 ROM

💡 特别提示:这里的 OEM BIOS 是软件技术,并非硬件的 BIOS,可适用于任何品牌的计算机以及任意兼容机。标题中的 Dell 只是采用了最流行的 Dell 产品技术方案。

来自上游最新的 OEM BIOS/EFI64,现已更新支持 Windows Server 2025。

BIOS.440 & EFI64 - Dell 2.7 OEM BIOS: NT 6.0 (Vista/Server 2008), NT 6.1 (7/Server 2008 R2), NT 6.2 (Server 2012), NT 6.3 (Server 2012 R2), NT 10.0 (Server 2016/Server 2019/Server 2022/Server 2025)

Windows Server OVF 系列:

其他 OVF:Rocky Linux 9.5 x86_64 OVF (sysin) - VMware 虚拟机模板Ubuntu 24.04 LTS x86_64 OVF (sysin) - VMware 虚拟机模板,更多请在本站搜索 “OVF”。

下载地址

请访问对应页面获取:https://sysin.org/blog/vmware-workstation-unlocker/

VMware Workstation Pro 25H2u1 Unlocker & OEM BIOS for Linux

VMware Workstation Pro 25H2u1 Unlocker & OEM BIOS for Windows

官方版本:VMware Workstation Pro 25H2u1 for Windows & Linux - 领先的免费桌面虚拟化软件

更多:VMware 产品下载汇总

HamHome — AI 驱动的现代浏览器书签管理器

项目地址:
👉 https://github.com/bingoYB/ham_home

这是什么?

HamHome 是一款浏览器扩展,用 AI 帮你管理书签。

  • 自动分析网页内容
  • 生成摘要
  • 智能分类
  • 推荐标签
  • 语义化搜索
  • AI 对话式交互

核心功能

1️⃣ AI 自动整理

  • 自动读取网页内容
  • 生成摘要
  • 提取关键词
  • 自动分类
  • 推荐标签

不再手动建文件夹、打标签。

2️⃣ 语义化搜索

支持自然语言搜索,例如:

  • “之前收藏的关于 Rust 异步的文章”
  • “讲 SaaS 定价策略的内容”
  • “适合做副业的项目”

不需要记得标题或网址。

3️⃣ AI 对话式交互

可以直接和 AI 对话:

  • 搜索书签
  • 了解插件功能
  • 获取使用帮助

目标是让书签管理从“工具操作”变成“对话操作”。

界面预览

演示图片
演示图片 2

当前支持

  • ✅ Edge 插件商店
  • ✅ Firefox 插件商店
  • ⚠️ Chrome 暂未上架(没有 Google 开发者账号),目前支持离线安装

后续会考虑补齐 Chrome 正式版本。

欢迎体验 & 拍砖

项目刚上线,还有很多可以优化的地方。

欢迎提 issue 或直接在帖子里拍砖


如果你觉得这个方向有意思,也欢迎 Star 支持一下:

👉 https://github.com/bingoYB/ham_home

VMware Fusion 25H2u1 OEM BIOS 2.7 - 在 macOS 中运行 Windows 虚拟机的最佳方式

VMware Fusion 25H2u1 原版 App 中集成 OEM BIOS

请访问原文链接:https://sysin.org/blog/vmware-fusion-oem/ 查看最新版。原创作品,转载请保留出处。

作者主页:sysin.org


2026 年 2 月 27 日 25H2u1 版本发布。

VMware Fusion 25H2

2024 年 11 月 11 日,VMware by Broadcom 宣布 VMware Fusion 和 Workstation 现在对所有用户免费。

适用于 Mac 的桌面 Hypervisors

在您喜欢的环境中自由地提高生产力、敏捷性和安全性。IT 专业人士、开发人员和企业选择 VMware Fusion 桌面管理程序以获得无与伦比的操作系统支持、坚如磐石的稳定性和高级功能 (sysin)。借助 Fusion Player 和 Fusion Pro,可以在 Mac 上将几乎任何操作系统作为 VM 运行,以在本地桌面上进行开发、测试、游戏甚至模拟生产云。

  • 在 Mac 上运行几乎任何操作系统

    在 Mac 上运行 Windows 仅仅是个开始。从数百种受支持的操作系统中进行选择,从云就绪 Linux 发行版到 Intel 或 Apple silicon Mac 上的最新 Windows 11,所有这些都无需重新启动。

  • 改进 vSphere 连接

    连接到远程 vSphere 和 ESXi 服务器以启动、控制和管理 VM 和物理主机 (sysin),提高对数据中心和主机拓扑的可见性。通过拖放操作轻松传输 VM。

  • 设计和演示软件解决方案

    凭借在单个 Mac 上运行整个虚拟云堆栈的能力,您可以实时演示完整的解决方案,并通过安全回滚点返回到有用的配置。

此版本特性说明

VMware Fusion 25H2u1 原版 App 中集成 OEM BIOS

VMware Dell 2.7 BIOS EFI64 ROM

💡 特别提示:这里的 OEM BIOS 是软件技术,并非硬件的 BIOS,可适用于任何品牌的计算机以及任意兼容机。标题中的 Dell 只是采用了最流行的 Dell 产品技术方案。

来自上游最新的 OEM BIOS/EFI64,现已更新支持 Windows Server 2025。

BIOS.440 & EFI64 - Dell 2.7 OEM BIOS: NT 6.0 (Vista/Server 2008), NT 6.1 (7/Server 2008 R2), NT 6.2 (Server 2012), NT 6.3 (Server 2012 R2), NT 10.0 (Server 2016/Server 2019/Server 2022/Server 2025)

Windows Server OVF 系列:

其他 OVF:Rocky Linux 9.5 x86_64 OVF (sysin) - VMware 虚拟机模板Ubuntu 24.04 LTS x86_64 OVF (sysin) - VMware 虚拟机模板,更多请在本站搜索 “OVF”。

利用 VMware Fusion®,无需重新引导,即可最方便、最快捷和最可靠地在 Mac 上运行 Windows 及其他基于 x86/ARM 的操作系统。

系统要求

  • 硬件

    Intel 或 Apple silicon Mac 机型。

    • 支持 macOS 15 Sequoia 或更高版本的 Mac 机型。
  • 软件

    • macOS 15 Sequoia
    • macOS 26 Tahoe

VMware Fusion 25H2u1 新增功能

VMware Fusion Pro 25H2u1 | 26 FEB 2026 | Build 25219963

VMware Fusion Pro 25H2u1 包含安全修复和缺陷修复。

  • 重新启用了 “Check for updates” 选项,用于检查是否有新版本发布。
  • 此版本修复了 CVE-2026-22715。有关该漏洞及其对 Broadcom 产品影响的更多信息,请参阅 VMSA-2026-0002

已解决的问题

运行虚拟机会随着时间推移增加内存占用

长时间运行虚拟机可能会逐渐增加其内存占用。此外,调整窗口大小以及在屏幕上绘制内容 (sysin),也可能会逐步增加用于渲染的预留内存。本版本已解决该问题。

在虚拟机显示设置中切换“为 Retina 显示器使用完整分辨率”选项时,鼠标指针尺寸变大

该问题已在本版本中解决。

在使用 Retina 与非 Retina 显示器的多个来宾操作系统中观察到鼠标指针像素偏移

该问题已在本版本中解决。

下载地址

VMware Fusion 25H2u1 OEM BIOS Version


官方版本:VMware Fusion 25H2u1 for Mac - 领先的免费桌面虚拟化软件

更多:VMware 产品下载汇总

🎉 新年开工享好礼 · 懒猫微服送给你 🎉

参与活动,即可把 懒猫微服 和开年好礼带回家!

全球硬盘内存涨价,懒猫微服有备货,超值最低价格购买:

加 v: 17820700354 , 13986165101 , 18696164198 , 18627819467 , 18272119304


懒猫微服,自带内网穿透和沙箱 100% 隔离!畅玩 OpenClaw ,新年超值 0 元购!!!


🎁 抽奖活动详情

🗓 活动时间

共两轮活动
时间:2 月 27 日 - 3 月 6 日

奖品总价值约 11300 元


🏆 奖项设置

一等奖

  • 价值 5499 元
  • 7 盘位新款「懒猫微服 LC-03 」 × 1

二等奖

  • 价值 300 元「公牛小电舱插座」
  • 「懒猫微服 LC-03 」 499 元优惠券 × 3

三等奖

  • 价值 99 元懒猫文化 T 恤
  • 「懒猫微服 LC-03 」 499 元优惠券 × 6


📌 分轮活动说明

第一轮

  • 活动时间:2 月 27 日 - 3 月 3 日
  • 开奖时间:3 月 3 日 20:00

奖品:

  • 二等奖:


    • 价值 235 元「公牛小电舱插座」
    • 「懒猫微服 LC-03 」 499 元优惠券 × 2
  • 三等奖:


    • 价值 99 元懒猫文化 T 恤
    • 「懒猫微服 LC-03 」 499 元优惠券 × 3


第二轮

  • 活动时间:3 月 3 日 - 3 月 6 日
  • 开奖时间:3 月 6 日 20:00

奖品:

  • 一等奖:


    • 价值 5499 元 7 盘位新款「懒猫微服 LC-03 」 × 1
  • 二等奖:


    • 价值 235 元「公牛小电舱插座」
    • 「懒猫微服 LC-03 」 499 元优惠券 × 1
  • 三等奖:


    • 价值 99 元懒猫文化 T 恤
    • 「懒猫微服 LC-03 」 499 元优惠券 × 3


📜 抽奖规则(必看)

1.在评论区评论

懒猫微服,自带内网穿透和沙箱 100%隔离,畅玩 OpenClaw ,新年超值 0 元购!!!

2.扫二维码进入懒猫微服交流群


🎯 抽奖方式

  • 根据名单统计
  • 使用懒猫微服商店抽奖工具开奖
  • 公平公正
  • 结果第一时间公布在微信群

(需扫码进群)


🎁 领奖方式

  • 通过微信群联系工作人员领奖
  • 中奖后进群无效
  • 需提前进入任意懒猫微服交流群

(需扫码进群)


⚠️ 特别提醒

  1. 必须进入交流群才具备中奖资格
  2. 中奖用户需提交:
    • 推特参与活动截图
    • 推特主页截图
  3. 优惠券仅限小程序购买
  4. 不与京东分期优惠叠加
  5. 不适用于 LC-03 基础款

另外:

  • 仅剩最后 5 台老款「懒猫微服 LC-02 」秒杀价
  • 评论区或私信扣 1 获取优惠价格


🛒 购买渠道与优惠

1️⃣ 京东购买

搜索「懒猫微服」享受京东免息分期:

  • 32G + 2T:6 期免息
  • 48G 无盘:6 期免息


2️⃣ 全新系列上线

懒猫 AI 算力舱已上线
评论区或私信扣 1 获取优惠价格


3️⃣ 懒猫零元购计划

  • 每移植一款应用到懒猫商店:奖励 100 元红包
  • 原创应用奖励翻倍
  • 撰写一篇攻略:奖励 50 元红包
  • 多移多得,无上限


🔥产品亮点

最近懒猫商店的 OpenClaw 已经被大家玩出花样,真正的 7 × 24 小时个人 AI 助手

  • 睡觉时帮你整理收件箱
  • 喝咖啡时帮你调研竞品
  • 灵感枯竭时帮你搜集素材

🧩 应用生态

  • 懒猫商店拥有 3200+ 应用开箱即用
  • 提供 1000+ 详细攻略
  • 满足娱乐与办公的全方位需求

这些应用与攻略绝大多数来自用户共创:

  • 上传应用即可获得现金红包奖励
  • 原创应用奖励加倍
  • 撰写攻略可获得现金奖励

截至目前:

  • 已有 100+ 用户上传应用
  • 排名最高用户累计获得 6w+ 现金奖励

诚邀您加入懒猫社区,实现双赢:

  • 轻松实现零元购
  • 可作为日常兼职增加额外收入

今日速览

  1. Koidex:快速检查代码包和 AI 模型是否安全。
  2. ChatPal:用 AI 对话练习口语,轻松提升流利度。
  3. Rover:一键嵌入脚本,让网站变身智能助手。
  4. gpt-realtime-1.5:语音助手更听话,执行指令更可靠。
  5. Tessl:优化 AI 代理技能,写代码效率翻三倍。
  6. IronClaw:开源安全方案,保护 API 密钥免遭泄露。
  7. Zavi AI:语音直接操控应用,打字编辑全搞定。
  8. OpenClawCity:AI 代理的虚拟城市,在这里创作生活。
  9. Hush:屏幕分享时一键模糊桌面,保护隐私不尴尬。
  10. RankingSuperior:分析搜索空白,帮你产出权威内容。


1. Koidex

担心安装的代码包或 AI 模型有风险?Koidex 就是你的安全卫士,能在 IDE 里实时扫描,确保一切安心。

  • 支持 VS Code、JetBrains、npm 和 Hugging Face 平台
  • 提供实时背景扫描,无需复杂设置
  • 完全免费使用,覆盖扩展、代码包和 AI 模型
  • 集成 Cursor 和 Windsurf,提升开发体验

热度:🔺384

Koidex

访问官网 Product Hunt 详情


2. ChatPal

想练口语却找不到陪练?ChatPal 用 AI 模拟真实对话,帮你告别哑巴英语,越说越自信。

  • 提供真实场景的对话练习,贴近实际使用
  • 给予个性化反馈,针对性提升流利度
  • 与 AI 助手自然交流,增强语言自信心
  • 专注于口语技能,简化学习过程

热度:🔺381

ChatPal

访问官网 Product Hunt 详情


3. Rover by rtrvr.ai

网站访客转化率低?Rover 就像个虚拟助手,嵌入脚本就能自动引导用户,轻松完成注册、购物等操作。

  • 通过简单脚本标签集成到网站
  • 自动化工作流程,如填写表单和点击按钮
  • 用对话方式将访客转化为客户
  • 支持语音交互,提升用户体验

热度:🔺313

Rover by rtrvr.ai

访问官网 Product Hunt 详情


4. gpt-realtime-1.5 by OpenAI

语音助手老是听错指令?这个升级版模型更严格遵循命令,让实时 API 工作流更顺畅。

  • 增强指令执行能力,减少错误率
  • 支持工具调用,扩展应用场景
  • 提升多语言准确性,覆盖更广用户
  • 优化语音工作流程,提高可靠性

热度:🔺281

gpt-realtime-1.5 by OpenAI

访问官网 Product Hunt 详情


5. Tessl

开发 AI 代理总被 bug 困扰?Tessl 帮你评估和优化技能,专注构建智能体,效率直接拉满。

  • 评估智能体技能,快速定位问题
  • 优化代码质量,减少错误和幻觉
  • 无需注册,直接在线使用
  • 专注于开发者效率提升

热度:🔺232

Tessl

访问官网 Product Hunt 详情


6. IronClaw

用 OpenClaw 担心安全漏洞?IronClaw 作为开源替代,把凭证锁进加密保险库,AI 根本碰不到。

  • 提供开源安全方案,替代 OpenClaw
  • 凭证存储在加密 TEE 内,防止泄露
  • 仅批准端点能在网络边界注入凭证
  • 工具在 Wasm 沙箱运行,扫描出站流量

热度:🔺166

IronClaw

访问官网 Product Hunt 详情


7. Zavi AI - Voice to Action OS

厌倦了打字?Zavi 让你用语音直接操控应用,从编辑文本到发邮件,一句话搞定。

  • 支持多平台,包括 iOS、Android、Mac、Windows 和 Linux
  • 免费使用,超越简单转录,能执行操作
  • 自然对话处理,语法规范无填充词
  • 集成 20 多个平台,如 Gmail、Slack、GitHub

热度:🔺165

Zavi AI - Voice to Action OS

访问官网 Product Hunt 详情


8. OpenClawCity

AI 代理也能有“生活”?在这个持久 2D 城市里,它们创作艺术、合作发展,打造独特文化。

  • 为 AI 代理提供持续性虚拟城市环境
  • 通过 API 调用注册,获得角色和 JWT
  • 代理可以漫步、进入工作室创作内容
  • 支持合作与身份发展,全天候运营

热度:🔺151

OpenClawCity

访问官网 Product Hunt 详情


9. Hush

屏幕分享时桌面太乱?Hush 一键模糊背景,保护隐私的同时让演示更专业。

  • Mac 菜单栏应用,快速隐藏桌面杂乱
  • 按热键模糊图标、Dock 和壁纸
  • 提供桌面模式和专注模式两种选项
  • 保持应用窗口可见,确保演示流畅

热度:🔺131

Hush

访问官网 Product Hunt 详情


10. RankingSuperior

内容产出难抓重点?这个工具分析搜索空白,帮你打造专业内容,轻松提升排名。

  • 分析顶尖结果,找出内容遗漏点
  • 将空白转化为问题,指导文章创作
  • 从 PDF、邮件等多渠道丰富内容
  • 提供关键词数据、内容日历和一键发布

热度:🔺122

RankingSuperior

访问官网 Product Hunt 详情

通过阿里云 PolarDB 数据库,我们首次实现了对平台全域公开互动数据的高效结构化处理。在严格遵循隐私保护原则、所有数据均经过去标识化、匿名化处理的前提下,系统可对群体层面的反馈趋势进行分析,辅助品牌更科学地评估内容传播效果,并为营销策略优化提供数据支撑,提升商业决策的确定性。

<p align=right>——强朔 哔哩哔哩资深数据科学家</p>

一、客户背景

哔哩哔哩(B站) 是国内领先的文化社区和视频平台。平台内容生态高度多元化,涵盖视频、图文、直播、音频、互动内容、搜索、动态等多种体裁。作为以“内容种草”为核心心智的平台,B站已成为品牌营销的重要阵地,尤其在汽车、3C数码、美妆、快消、教育培训、游戏等行业具备显著影响力。

二、业务场景与核心痛点

与传统电商平台不同,B站用户的消费决策往往源于内容互动所形成的品牌认知与兴趣积累,而非站内直接转化。这一特点对营销效果评估提出了更高要求。为此,平台基于经过去标识化、匿名化处理的海量公开互动数据,开展群体层面的数据趋势分析,以支持内容生态优化与商业服务能力的持续提升。例如,通过分析洞察辅助评估品牌内容的传播广度与用户反馈方向,为广告主提供更科学的效果参考。

B站内容平台营销商业化路径

B站商业化团队在服务品牌客户过程中,面临三大核心挑战:

1. 营销效果难以量化:品牌在B站投放内容(如UP主种草视频)后,缺乏有效手段衡量用户群体是否被“种草”。例如,某汽车品牌发布新车测评视频后,需从去标识化的互动内容中识别用户群体对续航、外观、价格等属性的评价,以评估内容传播效果。

2. 内容资产难以结构化:B站内容体裁丰富、语义复杂,视频中包含大量视觉、语音、文本信息,互动区则充斥高信息密度的长文本。传统关键词匹配或规则引擎难以准确提取商业实体(如品牌、类目、SPU)及其关联语义。

3. 营销策略缺乏数据支撑:品牌希望基于B站真实讨论内容,反向指导新品定义、传播策略与创意方向。例如,某美妆品牌需了解用户群体在讨论粉底液时最关注“持妆度”“遮瑕力”还是“肤感”,但缺乏系统性内容洞察工具。

为解决上述问题,B站商业化数据科学团队联合阿里云,构建了一套面向全域内容的结构化洞察框架,实现从“内容感知”到“商业洞察”的数据闭环。

三、解决方案:“大模型+小模型”协同的全域内容洞察新框架

PolarDB for AI 是阿里云瑶池旗下云原生数据库PolarDB内部的分布式机器学习组件,支持在数据不出库的前提下,高效调用轻量化小模型进行实时推理,同时可联动千问等大模型处理复杂语义任务,实现大模型与小模型协同一体化架构。

PolarDB for AI一站式方案

  • PolarDB for AI 可以通过调用千问大模型,对经过去标识化、匿名化处理的用户互动内容进行批量分析,辅助洞察群体层面的兴趣趋势与反馈倾向,为产品优化与内容策略提供数据支持。
  • PolarDB for AI通过定制化的电商领域大模型,结合阿里电商领域的商品知识图谱,大大提升B站对类目、品牌、SPU等多个标签的识别能力,实现品牌高精准匹配,促进内容资产结构化。


B站全域内容洞察矩阵

B站采用“大模型+小模型”融合的技术路径,依托DeepSeek、阿里千问(Qwen)系列大模型、B站自研的Index模型与PolarDB for AI能力,构建覆盖M×N矩阵的全域内容洞察体系——M为商业化标签维度,N为内容体裁维度。

整体技术架构分为三层:

  • AI基建层:基于阿里云百炼平台、PAI、GPU资源及B站自研Agent平台,提供模型训练、推理与调度能力。
  • 数据与模型层:结合通用大模型(如Qwen、Qwen-VL、Qwen-Audio)与PolarDB for AI提供的领域小模型(经SFT、强化学习微调),实现高效、低成本的内容洞察。
  • 应用服务层:通过PolarDB for AI节点,提供模型算子能力,实现“数据不出库”的高效挂靠与推理,且提供稳定独享的模型实时在线服务能力。

该方案兼顾效果与成本:通用大模型用于标签体系挖掘与复杂语义分析,领域小模型则在特定任务(如实体抽取)上实现更高精度与更低延迟。

四、关键技术实现与难点突破

1. 视频稿件内容提取:从非结构化到结构化

视频内容提取过程

视频是B站核心内容载体,但其信息分散于画面、语音与字幕中。B站采用多模态融合策略:

  • 中间层构建:通过ASR(语音转文本)与关键帧OCR(图像文字识别)提取原始文本,再利用Qwen-VL、Qwen-Audio等多模态大模型生成语义中间表示。
  • CPV体系构建:基于大模型挖掘与行业维护,建立“类目-属性-属性值”体系。例如,识别出视频中“相机”类目下的“防抖技术”属性及其值“IBIS”。
  • 实体三元组抽取与挂靠:通过大模型抽取<类目, 品牌, SPU>三元组,但原始抽取结果存在与标准产品库里的命名不一致的问题(如“尼康Z5” vs “尼康Z5微单相机”)。

技术难点:如何将非标准化抽取结果精准挂靠至标准产品库?

解决方案:B站与阿里云PolarDB团队合作,在PolarDB for AI节点中部署定制化挂靠模型。通过SQL,在数据库内直接调用精调后的大模型进行实体对齐。例如,我们来预测一个稿件的类目。执行如下SQL:

/*polar4ai*/ 
SELECT * FROM PREDICT(
  MODEL _polar4ai_cpv_agent,   
  SELECT '{"商品名称":"尼康Z5","品牌名称":"尼康","类目属性模板":{"类目":""},"类目属性限定":{"类目":["数码-摄影摄像-传统相机-相机","数码-数码配件",...]}}'
) WITH ();

得到{"类目":"数码-摄影摄像-传统相机-相机"}

该方案实现“数据不出库”的高并发挂靠,解决抽取结果与标准产品命名的一致性问题,既保障数据安全,又显著降低工程复杂度。同时,结合BGE+RoBERTa等NLP模型进行匹配,进一步提升挂靠准确率。

2. 互动内容分析:从海量数据中挖掘高价值线索


互动内容分析过程

B站评论区信息密度很高,但90%以上为非商业化内容。直接使用大模型全量处理成本高昂。

技术难点:如何在成本可控的前提下,利用匿名化互动数据实现多实体群体反馈的细粒度分析,支撑内容与商业服务的持续优化?

解决方案:采用“过滤-分析-挖掘”三级流水线:

  • 第一级:商业化过滤:使用轻量级NLP模型,如BGE+BiLSTM模型快速筛除无关内容,仅保留可能涉及品牌、产品讨论的内容。
  • 第二级:实体与予以关联分析:对过滤后文本,利用PolarDB for AI提供的商品大模型识别类目、品牌、SPU,并建立不同实体间的语义关联关系。
  • 第三级:意图与属性挖掘:进一步识别“种草”“购买意愿”等高阶语义,并提取用户群体关注的具体属性(如“续航达成率高”“价格贵”),形成结构化洞察。

五、总结

通过与阿里千问大模型及PolarDB for AI的深度协同,B站成功构建了一套高效、可扩展的全域内容洞察体系。该体系不仅解决了品牌营销效果度量难、内容资产结构化难等核心痛点,更将B站独特的社区公开互动数据转化为可行动的商业洞察,显著提升了广告主的投放确定性与ROI。目前,该全域内容洞察体系已应用于B站的哔哩指数、花火平台AI选UP主、哔哩必达洞察报告、引力计划爆文投放、经营号线索挖掘及品牌广告搜索词包等商业化场景,实现从内容洞察到营销转化的全链路提效。未来,B站将持续优化模型能力,拓展至更多内容体裁与商业场景,进一步释放内容平台的营销价值。

了解原生数据库PolarDB:https://www.aliyun.com/product/polardb

图片

文末有源码下载链接!

 Go语言里面最常用的并发模型有10种,今天我们继续讲剩下的5种常用并发模式。

1、预先占位结果模式(Future/Promise)

    常用于在未来获取某一个结果的场景。例如麻将胡牌后,要计算倍数,这个计算比较耗时,所以就让这个计算放在后面异步去计算,同时要通知客户端播放胡牌的音乐和胡牌的特效。直到倍数计算完成后,再通知客户端显示详细的结果。

//futurepromise.go
package futurepromise
import (
    "fmt"
    "time"
)
// 异步计算的最终结果
type FanResult struct {
    // 总倍数
    TotalScore int
    // 详情
    Details string
    Err     error
}
// 结果占位符
type Future chan FanResult
// Get方法:阻塞等待并获取最终结果
func (f Future) Get() (FanResult, error) {
    result := <-f
    return result, result.Err
}
type Tile struct {
    // 牌名
    Name string
    // 牌值
    No int
}
// 胡牌结构体
type Hand struct {
    // 牌
    Tiles []Tile
    // 是否自摸
    IsSelfDraw bool
}
// CalcFanScore 是Promise函数,它接受胡牌信息,启动一个Goroutine异步任务,并立即返回Future占位符
func CalcFanScore(hand Hand) Future {
    resultCh := make(chan FanResult, 1)
    go func() {
        fmt.Println("[Promise] 计算倍数开始...")
        time.Sleep(2 * time.Second)
        totalScore := 11
        details := "清一色(6)倍+7对(5)倍=11倍"
        resultCh <- FanResult{
            TotalScore: totalScore,
            Details:    details,
            Err:        nil,
        }
        fmt.Println("[Promise] 计算倍数结束,并发送结果")
        close(resultCh)
    }()
    // 立即返回Future占位符
    return resultCh
}
//futurepromise_test.go
package futurepromise
import (
    "fmt"
    "testing"
    "time"
)
func TestFuturePromise(t *testing.T) {
    hand := Hand{
        Tiles: []Tile{
            {Name: "万", No: 1},
            {Name: "万", No: 2},
            {Name: "万", No: 3},
            {Name: "万", No: 4},
            {Name: "万", No: 5},
            {Name: "万", No: 6},
            {Name: "万", No: 7},
            {Name: "万", No: 7},
            {Name: "万", No: 8},
            {Name: "万", No: 8},
            {Name: "万", No: 8},
            {Name: "万", No: 9},
            {Name: "万", No: 9},
            {Name: "万", No: 9},
        },
        IsSelfDraw: false,
    }
    fmt.Println("---end---")
    fmt.Println("玩家胡牌了!")
    fanFuture := CalcFanScore(hand)
    fmt.Println("启动异步计算倍数")
    time.Sleep(time.Millisecond * 500)
    fmt.Println("播放玩家胡牌音乐,通知其他玩家XXX胡牌了")
    time.Sleep(time.Millisecond * 500)
    //最后,调用fanFuture.Get来获取最终结果,知道结果计算出来为止
    finalRes, err := fanFuture.Get()
    if err != nil {
        fmt.Printf("倍数计算出错:%v\n", err)
        return
    }
    fmt.Println("倍数计算结果出来了")
    fmt.Println("总倍数是", finalRes.TotalScore)
    fmt.Println("详情:", finalRes.Details)
    fmt.Println("---end---")
}

测试结果:

图片

2、Context可控并发模式

    这个模式比较熟悉了,我们用麻将游戏里,超时自动打一张牌来举例。

//context.go
package contextdemo
import (
    "context"
    "fmt"
    "time"
)

// 等待玩家打牌
func waitPlayerAction(ctx context.Context, player string) (string, error) {
    select {
    case <-time.After(5 * time.Second): //模拟玩家5秒都没有出牌
        return "", fmt.Errorf("玩家%s5秒内没有任何动作", player)
    case <-ctx.Done():
        return "", ctx.Err()
    }
}
//context_test.go
package contextdemo
import (
    "context"
    "fmt"
    "testing"
    "time"
)
func TestContext(t *testing.T) {
    ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
    defer cancel()
    actionCh := make(chan string, 1)
    go func() {
        if act, err := waitPlayerAction(context.Background(), "张三"); err == nil {
            actionCh <- act
        } else {
            //没有动作
        }
    }()
    select {
    case act := <-actionCh:
        fmt.Println("玩家动作", act)
    case <-ctx.Done():
        fmt.Println("超时,自动打一张牌")
    }
}

测试结果:

图片

3、信号量控制并发模式

    信号量适用于限制资源使用(比如一台服务器只能并发开多少个麻将房间)。

// semaphore.go
package semaphore
const MAX_ROOMS = 10
type RoomManager struct {
    roomSlots   chan struct{}
    activeRooms map[int]bool
    mu          sync.Mutex
    nextRoomID  int
}
func NewRoomManager() *RoomManager {
    return &RoomManager{
        roomSlots:   make(chan struct{}, MAX_ROOMS),
        activeRooms: make(map[int]bool),
        nextRoomID:  100,
    }
}
func (rm *RoomManager) OpenRoom() int {
    fmt.Println("[请求]房间创建请求到达,等待空闲槽位...")
    // 如果roomSlots已满,就在这儿等待
    rm.roomSlots <- struct{}{}
    rm.mu.Lock()
    roomid := rm.nextRoomID
    rm.nextRoomID++
    rm.activeRooms[roomid] = true
    currentLoad := len(rm.roomSlots)
    rm.mu.Unlock()
    fmt.Printf("[创建] 房间%d成功创建。当前房间数是:%d/%d\n", roomid, currentLoad, MAX_ROOMS)
    time.Sleep(time.Duration(roomid%3) * time.Second)
    return roomid
}
func (rm *RoomManager) CloseRoom(roomId int) {
    rm.mu.Lock()
    if !rm.activeRooms[roomId] {
        rm.mu.Unlock()
        return
    }
    delete(rm.activeRooms, roomId)
    rm.mu.Unlock()
    // 释放信号量
    <-rm.roomSlots
    currentLoad := len(rm.roomSlots)
    fmt.Printf("[释放] 房间%d成功释放。当前房间数是:%d/%d\n", roomId, currentLoad, MAX_ROOMS)
}
// semaphore_test.go
package semaphore
import (
    "fmt"
    "sync"
    "testing"
    "time"
)
func TestSemaphore(t *testing.T) {
    manager := NewRoomManager()
    var wg sync.WaitGroup
    const totalRequests = 12
    fmt.Printf("服务器最大容量:%d个房间。\n", MAX_ROOMS)
    for i := 0; i < totalRequests; i++ {
        wg.Add(1)
        go func(requestNum int) {
            defer wg.Done()
            roomId := manager.OpenRoom()
            //模拟房间正在打牌耗时1秒
            time.Sleep(time.Second)
            manager.CloseRoom(roomId)
        }(i + 1)
    }
    wg.Wait()
    fmt.Println("所有房间任务已经处理完毕。")
}

测试结果:

图片

4、工作池自动扩容模式

//workerpool.go
package dynamicworkerpool
func worker(id int, jobs <-chan int, quit <-chan struct{}, wg *sync.WaitGroup) {
    defer wg.Done()
    for {
        select {
        case j, ok := <-jobs:
            if !ok {
                return
            }
            fmt.Println("工人", id, "处理任务", j)
            time.Sleep(time.Duration(rand.Intn(200)+50) * time.Millisecond)
        case <-quit:
            fmt.Println("工人", id, "收到结束信号")
            return
        }
    }
}
//workerpool_test.go
package dynamicworkerpool
func TestDynamicWorkerPool(t *testing.T) {
    jobs := make(chan int, 1000)
    var workerQuits []chan struct{}
    stop := make(chan struct{})
    maxWorkers := 10
    var wg sync.WaitGroup
    // 调度器:根据 jobs 队列长度调整 worker 数量(非常简单的策略)
    go func() {
        workers := 0
        for {
            select {
            case <-stop:
                // 停止调度器时,关闭剩余的 worker quit 通道以确保 worker 退出
                for _, q := range workerQuits {
                    close(q)
                }
                return
            default:
            }
            log.Println("检测jobs长度")
            l := len(jobs)
            target := 1
            switch {
            case l > 20:
                target = 10
            case l > 10:
                target = 3
            case l > 5:
                target = 2
            }
            target = min(target, maxWorkers)
            if target > workers {
                // 启动更多 worker(为每个 worker 创建独立 quit 通道)
                add := target - workers
                for i := 0; i < add; i++ {
                    wg.Add(1)
                    q := make(chan struct{})
                    workerQuits = append(workerQuits, q)
                    go worker(workers+i+1, jobs, q, &wg)
                }
                workers = target
                fmt.Println("扩容 ->", workers, "个工人")
            } else if target < workers {
                // 精确缩容:关闭最近创建的 worker 的 quit 通道,并从列表移除
                for i := 0; i < workers-target; i++ {
                    last := len(workerQuits) - 1
                    if last >= 0 {
                        close(workerQuits[last])
                        workerQuits = workerQuits[:last]
                    }
                }
                workers = target
                fmt.Println("缩容 ->", workers, "个工人")
            }
            time.Sleep(200 * time.Millisecond)
        }
    }()
    // 产生任务(模拟高峰 / 低谷)
    go func() {
        for i := 1; i <= 600; i++ {
            jobs <- i
            time.Sleep(time.Duration(rand.Intn(80)) * time.Millisecond)
        }
        close(jobs)
    }()
    // 等待所有 workers 结束(注意:简化版,这里睡一会儿以等待)
    time.Sleep(6 * time.Second)
    // 停止调度器(它会关闭剩余的 worker quit 通道)
    close(stop)
    wg.Wait()
    fmt.Println("结束")
}

测试结果:

图片

5、并发任务分组模式(ErrGroup)

来自golang.org/x/sync/errgroup,多任务并发执行,自动管理错误和退出。以麻将计算倍数为例,清一色、七对、大对子等。

//errgroup.go
package errgroupdemo
import (
    "context"
    "fmt"
    "math/rand"
    "time"
)
func compute(ctx context.Context, name string, delay time.Duration) error {
    select {
    case <-time.After(delay):
        if rand.Intn(10) < 2 {
            fmt.Println(name, "失败")
            return fmt.Errorf("计算%s失败", name)
        }
        fmt.Println("计算", name, "成功")
        return nil
    case <-ctx.Done():
        fmt.Println("计算", name, "取消")
        return ctx.Err()
    }
}
//errgroup_test.go
package errgroupdemo
import (
    "context"
    "fmt"
    "testing"
    "time"
    "golang.org/x/sync/errgroup"
)
func TestErrGroup(t *testing.T) {
    ctx := context.Background()
    g, ctx := errgroup.WithContext(ctx)
    methods := []struct {
        name  string
        delay time.Duration
    }{
        {"平胡", 100 * time.Millisecond},
        {"七对", 200 * time.Millisecond},
        {"清一色", 150 * time.Millisecond},
    }
    for _, m := range methods {
        m := m //核心:创建循环变量 m 的局部副本
        g.Go(func() error {
            return compute(ctx, m.name, m.delay)
        })
    }
    if err := g.Wait(); err != nil {
        fmt.Println("有计算失败了:", err)
        return
    }
    fmt.Println("所有计算都成功了")
}

测试结果:

图片

6、源码地址

https://pan.baidu.com/s/1B6pgLWfSgMngVeFfSTcPdg?pwd=jc1s


如果您喜欢这篇文章,请点赞、推荐+分享给更多朋友,万分感谢!

2026 年,AI 编程已成为行业标配。据统计,全球超过 40% 的代码已由 AI 生成或辅助完成。然而,在研发华为云码道(CodeArts)代码智能体的过程中,我们观察到一个明确的技术瓶颈:AI 在处理小工具、小程序、单文件逻辑时表现出色,但在面对百万行级代码的企业级软件时,落地效果往往受限于工程复杂度。

企业级软件开发与“小规模编程”的本质区别

在讨论工具能力之前,我们需要明确企业级开发的三个工程现实:

  • 代码规模与语义断层:企业级软件工程通常代码规模巨大,分布在数百个模块中。即便模型上下文窗口已达同样数量级,面对海量代码库依然只能读取极小片段。缺乏全局语义索引的 AI,很难理解跨模块的复杂调用和依赖拓扑。

  • 长周期的可维护性:企业软件生命周期通常跨越 10 年,经历无数次技术升级与人员更替。AI 生成的代码如果缺乏明确的架构意图,会迅速堆积成技术债。在多人协作环境下,没人能长期维护一段“AI 凭感觉写出来、但人类看不懂”(Vibe Coding)的代码。

  • 极高的故障代价:对于电商、金融等核心系统,一个由 AI 引入的逻辑空指针或并发死锁,可能导致数亿元的损失。企业级开发对可靠性的要求,远高于对单纯生成速度的追求。

AI 编程落地企业的核心挑战

在企业级软件规模的 Java 工程中,AI 编程面临三个实质性的“确定性”难题:

  • 上下文断层:AI 无法感知大型工程深层的领域模型和复杂的私有库规则,导致生成的片段难以兼容现有的业务逻辑。

  • 重构风险:手动修改核心接口极易出错,AI 亦难以保障跨模块引用的同步更新,在大工程中极易遗漏调用点(Call Sites),引发回归风险。

  • 调试成本:在复杂的分布式环境下,定位 AI 生成逻辑中的隐性 Bug 或并发问题,其排查成本远高于手动编写代码。

华为云码道的五大基础编码“托底”能力

企业级 AI 编程工具的核心不在于生成量和生成速度,而在于能否通过底层能力吸收工程复杂性。为此,华为云码道为企业级 Java 开发者构建了一套“托底机制”,这套机制深度整合了 ML 驱动的代码补全、确定性重构、语义巡检、全局导航及高阶调试能力,通过底层索引与静态分析引擎,确保人类工程师能够高效地对 AI 生成的代码进行逻辑审核、架构调整与代码调优。

ML 驱动的建议排序与补全 (Code Completion)

  • ML 驱动的建议排序 (ML-driven Sorting):当键入字符时,系统并非简单按字母排序,而是利用 ML 模型实时分析工程上下文、类加载环境及开发者习惯,将最高频、最合理的候选词(如 System)智能置顶。这种高置信度排序确保了在复杂的依赖关系中,最契合业务逻辑的 API 始终处于首选位置。

  • 全场景行内逻辑预测 (Smart Single & Multiline Proposals):行内补全(Inline Completion)能力在处理如 ide.features().stream() 这种链式调用时,系统能预判并以淡灰色字体呈现整行甚至多行的逻辑构造(如 Stream API 的后续操作)。这种全场景预测将繁琐的语法构造自动化,显著降低了手动输入带来的错误,在源头保证了工程的一致性。

在企业级软件开发中,“确定性”远比“生成速度”更重要,华为云码道通过底层索引与 ML 模型的协同,将庞大工程的跨模块依赖、私有库规范及长周期维护的复杂性吸收在工具内部,从而稳住代码质量下限,让开发者从机械的语法对齐与风险对抗中解脱,专注于高价值的架构决策。

确定性重构 (Deterministic Refactoring)

  • 依赖感知的全局重构:华为云码道将高风险的代码重构转化为受控的自动化过程。通过右键菜单,开发者可以一键发起重命名、方法提取或变量提取。不同于简单的文本替换,系统会自动追踪该符号在整个工程中的所有引用点(包括跨模块调用),并同步完成确定性的更新,确保代码演进过程中逻辑始终自洽。

在企业级软件开发中,“跨文件确定性重构”是保障企业级软件工程长期可维护性的“安全护栏”,它通过底层索引感知跨模块依赖,将高风险的手动修改转化为具备依赖校验的自动化同步,确保复杂的业务架构能随着需求安全演进。

语义巡检 (Code Inspection)

  • 语义风险拦截 (Semantic Risk Interception):巡检引擎会基于深度语义理解进行扫描。它能敏锐地发现变量定义中的逻辑缺陷、非标准命名或潜在的空指针风险。相比通用工具,它提供了更细粒度、更具行业针对性的规则,在代码提交前即精准拦截各类语义缺陷。

  • 企业级框架语义感知 (Framework Awareness):华为云码道多语言内核集成企业级常用框架(如 Spring/Spring Boot),它能实时识别 @Autowired 注入的语义状态(如 injected (1) 标识),确保依赖关系的准确性。这种框架感知能力解决了大型工程中因 Bean 注入错误、配置冲突导致的运行时崩溃问题,显著降低了后期排错的沉没成本。

在企业级软件开发中,语义巡检是确保软件健壮性与可维护性的核心技术防线,它通过自动化、标准化的实时校验,在代码提交前即精准拦截各类语义缺陷与框架层面的隐患,在降低后期调试成本的同时,强制确保所有生成的代码均严丝合缝地对齐项目既定的质量基准。内置了远超通用工具的规则集(显著优于开源方案)。它能在代码落地前检测出冗余块、潜在空指针、性能瓶颈等问题。对于代码智能体而言,这是一层实时的合规性校验,强制其生成的代码符合项目标准。

全量索引导航 (Code Navigation)

  • 跨模块引用感知 (Cross-Module Reference Insight):基于全量索引实现的语义导航在处理如 UserService 这种核心业务类时,代码上方自动浮现出 bean definitions (1)、injected into (5) 等信息。这让开发者无需在数百个模块间手动全局搜索,即可直观确认当前服务在 Spring 容器中的定义状态及其被下游业务方调用的详细链路。

  • 复杂依赖与继承拓扑追踪 (Dependency & Hierarchy Tracking):深度语义导航可以理解复杂的数据结构及其继承关系。如图所示,针对 UserRepository,系统实时呈现了 superclasses(7)(父类拓扑)以及 injected into(2)(注入点)。这种语义悬浮能力,让开发者在阅读代码的瞬间即可掌握其在整个复杂工程体系中的地位与影响范围。

全量索引导航通过实时呈现跨模块的 Bean 注入链路与继承拓扑,解决了大型工程中手动梳理依赖关系的效率瓶颈,确保了在高度解耦、大规模的企业级软件开发环境中,每一处逻辑改动的影响面始终清晰透明。

高阶调试 (Advanced Debugging)

  • 表达式实时求值 (Expression Evaluation):如图所示,程序停在 UserController 的加密逻辑处。开发者在变量观测窗口输入时,系统提供了精准的代码补全(涵盖 password 变量及 passwordEncoder 对象),允许开发者在不重启应用的情况下,直接在当前执行上下文中运行代码片段,甚至能穿透检查私有(Private)成员状态。

  • 代码热替换 (Hot Code Replace):对运行中应用的动态修改能力。即便涉及 Lambda 表达式等复杂语法改动,开发者修改代码后只需点击替换,变更即可在毫秒级注入运行中的 JVM 进程,且保持当前的执行状态和断点不丢失。

高阶调试特性解决了大型分布式系统在本地开发时重启成本极高(动辄数分钟)的技术痛点。它通过提供具备补全能力的实时实验场与覆盖 Lambda 等复杂场景的代码热替换,将原本冗长的“改动 - 打包 - 重启”循环缩短为瞬时的反馈闭环,在确保企业级软件工程逻辑演进连续性的同时,显著降低了复杂业务 Bug 的排查与验证周期。

结语:AI 编程落地企业级软件开发的务实范式

企业级软件的开发逻辑——百万行规模、长周期维护及高可靠性要求——决定了 AI 必须在受控的工程环境下运行。一套严密的“托底机制”是吸收 AI 随机性、保障系统确定性的关键。目前的务实路径是:由 AI 承担代码生成、测试用例编写、重复性问题修复等高频次劳动;人类工程师则转向架构设计、代码审查及核心决策。在这种协作模式下,开发者的职能正在从“代码编写”向“逻辑审核”与“质量把控”转型。华为云码道希望在这个转型过程中,成为开发者可靠的工程助手。

最后,工具的打磨需要真实生产场景的反馈。 华为云码道致力于解决企业级开发中的确定性难题,但面对超大规模代码库的极端边缘场景,目前仍可能存在不完善之处。

我们诚挚邀请所有开发者们试用并向我们提交 Issue。每一个来自真实工程的报错或建议,都是我们迭代工具“托底”精度、推动 AI 编程在企业级软件开发中真正扎根的关键。

作者简介:

王亚伟,华为云开发工具效率首席技术专家,华为云码道首席架构师

Eclipse 基金会 OpenVSX 指导委员会(Steering Committee)成员,前微软开发者事业部资深研发主管。主导了华为云码道多语言内核与 AI 融合架构的研发。在智能代码补全、全库索引检索、自动化重构等领域拥有 30 余项全球专利(其中中国、美国、欧盟已授权 16 项),致力于通过底层内核技术与 AI 的深度融合,提升大规模企业级软件的交付质量与效率。

今日好文推荐

DeepSeek V4 压顶,Anthropic CEO 先动手了:一场漏洞百出的舆论战,从构陷到翻车

全行业盯了两年的编程能力榜,今天退役!OpenAI 停用 SWE-bench Verified:未来标准将看 AI 能顶替多少程序员?

收购不成便带头封杀?!Meta 痛下狠手,OpenClaw 彻底失控:被拒后竟“人肉”网暴人类,实锤无人操控

“软件工程师”头衔要没了?Claude Code之父YC访谈:一个月后不再用plan mode,多Agent开始自己组队干活

市面上智能体应用开发平台越来越多,发布会越来越像:同一张“工作流 + RAG + 工具调用 + 插件市场”的能力拼图,换一套 UI 和命名,就能讲出一段宏大叙事。市场越热闹,用户反而越难做决定:因为多数平台比拼的是“概念密度”,而不是“生产确定性”。你很容易被一堆能力清单包围,但清单回答不了关键问题:一旦上生产、接真实数据、进真实流程,它还剩多少可用性?

更现实的问题是:企业在选平台时,往往默认了一种错误前提——“平台差不多,选个顺眼的就行”。于是采购环节被简化成对比报价、看 Demo、问“支不支持 DeepSeek”。平台上线也很快:做两个助手、跑一条流程、搞一个知识库,热闹一阵。三个月后再回看,智能体要么停在“演示级”,要么被业务绕开。

这不是平台的问题,而是企业的问题:你选的不是一个工具,而是一套“把 AI 变成生产力”的组织方式。智能体应用开发平台真正的分水岭,从来不在“功能列表更长”,而在“能否穿过三个坎”:数据坎、治理坎、复用坎。你一旦跨不过,智能体就永远在边缘试点;跨过去了,才可能进入业务主干道。

图片

一、用户真正要的不是“能做智能体”,而是“能让智能体活下去”

绝大多数企业并不缺“能跑起来的智能体”。缺的是让智能体长期稳定工作的条件。

第一,智能体不是一次性交付物,而是持续迭代的“业务组件”。业务规则在变、数据口径在变、权限边界在变、工具接口在变。一个没有版本管理、可观测性、回滚机制、灰度发布能力的平台,本质上只能支撑 Demo,撑不起生产。

第二,智能体不是“一个模型 + 一段提示词”,而是“数据、工具、流程、权限”的组装体。它要调系统、取数据、写回结果、触发流程,这里面任何一个环节不稳定,智能体就会在业务上“失语”。所以企业需要的平台,不仅是“编排”,更是“把编排变成可运行系统”。

第三,智能体成败的关键不在模型本身,而在“业务可验证”。企业最怕的不是回答慢一点,而是答错还自信。当智能体开始影响决策、影响审批、影响调度,它必须可追溯、可解释、可审计。否则它只适合当一个“聊天玩具”,不适合当生产力。

所以,企业真正需要的平台,是一套能让智能体从“会说”变成“能办事”,再从“能办事”变成“办得对、办得稳”的基础设施。

二、眼花缭乱的厂商,其实分成两派:做“应用外壳”和做“生产底座”

表面上看,大家都在做智能体应用开发平台;但往底层拆,厂商路线大致分两派。一派擅长把体验做到极致:拖拽、模板、市场、上手快,适合快速做出第一批应用,解决“有没有”的问题。这类平台的优势是轻、快、好看,短板往往出现在企业规模化之后:数据接入变复杂、权限变复杂、跨系统流程变复杂、质量与合规变复杂,平台的“轻”会突然变成“薄”。

另一派更像“基础设施公司”做平台:强调数据治理、统一服务、权限审计、运行可观测,适合解决“能不能长期用、能不能规模化”的问题。这类平台短期看起来不够“炫”,但一旦企业真的把智能体放进主流程,它的价值会越来越大。用户真正要做的,是先判断自己的阶段:你现在缺的是“快速验证价值”,还是缺“把价值规模化”?前者选轻快型也许能跑得更快;后者必须选底座型,否则越用越痛。

三、从底层逻辑甄选平台:看四条“硬标准”,少看口号

很多对比表都在列功能,但企业真正该问的,是下面四个更硬的问题。

第一条:数据是否“AI-ready”,还是“应用各自接数”?智能体应用开发平台如果把数据当外部依赖,业务想做一个 Agent 就要单独拉一套数据、写一堆脚本、拼一堆口径,结果就是智能体越多,数据债越多。真正可持续的平台,必须让“数据接入、治理、语义层、指标口径、向量与检索”这些能力尽量平台化,否则每个应用都在重复造轮子。

第二条:工具调用是否“企业级”,还是“能调就行”?企业 Agent 的工具不是玩具 API,而是 ERP、CRM、MES、OA、数据仓、工单系统、权限系统。你需要的不只是“能调用”,而是调用有权限边界、可审计、可限流、可回滚,出了问题能定位到哪一次会话、哪一次工具执行、哪一个输入参数。没有可观测性,平台越开放越危险。

第三条:交付形态是否“工程化”,还是“配置化假象”?很多平台的“低代码”本质是把复杂性藏起来,一旦进入复杂场景就暴露:版本冲突、环境差异、协作混乱、发布不可控。企业要的是能支持多人协作、分环境、可测试、可灰度、可回滚的工程体系——这决定了智能体能不能进入核心业务。

第四条:是否能沉淀“可复用资产”,还是每次都从零开始?平台真正的壁垒不是多几个模板,而是能不能把行业 know-how、工具链、知识处理流程、指标语义层沉淀为资产:下一个团队来做同类场景,不用重走一遍“试错—踩坑—返工”的路。换句话说:别被“功能齐全”骗了。企业选平台,选的是“长期运营能力”,不是“短期展示能力”。

四、为什么“做过数据中台”的公司更占便宜?

这是一个经常被忽略的事实:智能体应用开发平台的上限,往往被“数据基础设施能力”决定。因为企业级智能体最终会回到两个最朴素的问题:它从哪里拿到可信数据?它的答案如何被验证?

做过多模态数据中台的公司,天然更清楚企业数据的真实复杂度:结构化/非结构化并存,实时/离线并存,口径/权限/血缘并存。也更清楚“能用的数据”不是采进来就行,而是要治理、要语义化、要服务化。智能体只是把这些矛盾更早、更尖锐地暴露出来——你以前用报表还能忍受的口径不统一、数据延迟、权限错配,到智能体这里会直接变成“答非所问”或“越权调用”。更关键的是,多模态时代下,知识库不再是“上传文档就结束”,而是“持续更新、可检索、可验证”的知识资产体系。真正能解决幻觉的,不是更长的 prompt,而是更扎实的数据与知识供给能力。

数据底座越强,智能体越像生产力;数据底座越弱,智能体越像一场表演。

因此,“做过数据中台”的公司做智能体应用开发平台,优势在于它更容易把平台做成“可规模化的系统。

五、袋鼠云 AIWorks:把智能体应用开发平台做成“可运行的企业级系统”

把以上逻辑落到具体产品上,袋鼠云 AIWorks 的定位更像是“企业级智能体应用开发与运行平台”,它解决的不是“能不能做一个 Agent”,而是“能不能把 Agent 放进业务主流程,并长期跑下去”。

一方面,AIWorks 强调多模型与私有化的工程能力:企业可以统一纳管主流模型,通过网关与路由策略在成本、效果、合规之间做动态平衡;对于高敏场景,软硬一体的私有化算力方案能把“数据不出域、能力可落地”变成可交付的现实,而不是一句口号。

另一方面,AIWorks 更强调“应用形态”的完整覆盖:既支持可视化的工作流编排,也支持面向复杂任务的智能体应用,把工具调用、流程编排、知识检索、权限边界、发布与观测放在同一套体系里。你可以把它理解为:不仅提供“搭建能力”,也提供“运行能力”。

更重要的是,袋鼠云本身在多模态数据中台上的积累,让 AIWorks 在数据与知识侧更像“底座型平台”的路径:它更倾向把数据接入、治理、语义层、知识处理与检索增强作为平台能力来建设,帮助企业把智能体依赖的数据与知识从“项目资产”变成“企业资产”。这也是很多企业真正想要的——不是做出一个能演示的智能体,而是做出一套可持续迭代的智能体体系。

以某零售企业为例, SKU 众多、规格参数复杂,客服每天在说明书与选型表里来回翻找。基于AIWorks智能体应用开发平台,将说明书/图纸/参数表接入知识库,由客服智能体自动串联两步:先触发“检索定位”工作流精准召回对应条款与参数,再接续“答复生成”工作流按企业话术模板输出回复并回填工单,实现检索—生成—闭环一体化,减少翻找与口径不一致,大幅提升80%的售前效率。

当让一切回归业务价值

当你在一堆平台里挑花眼时,别急着问“你有什么功能”,先问自己——我到底要把智能体用在什么位置?如果它要进入主流程,就别用“选工具”的方式选平台,而要用“选基础设施”的方式选。能让智能体活下去、跑得稳、可复盘、可规模化的平台,才是企业真正需要的那一类。

农业场景下的人与农机智能感知实践:基于 YOLOv8 的视觉识别系统落地方案

一、问题背景:为什么农业需要视觉 AI?

在农业生产与农村管理场景中,“人”和“农用车辆”是最核心、最频繁出现的两类目标。从农田作业安全、农机调度管理,到乡村道路监管与作业行为分析,准确识别这两类目标具有直接的现实意义。

然而,农业视觉场景通常具备以下特点:

  • 拍摄环境开放,光照变化剧烈
  • 人员姿态多样,遮挡情况复杂
  • 农用车辆外观差异大、尺度变化明显
  • 场景背景杂乱,干扰目标多

传统基于规则或背景建模的方法在此类环境下稳定性不足,而深度学习目标检测模型在复杂视觉环境中表现出更强的鲁棒性。

基于这一背景,本文介绍一套面向农作业场景的视觉 AI 识别系统,利用 YOLOv8 实现对“劳动人员”和“农用汽车”的自动检测,并通过 PyQt5 构建可直接使用的桌面应用。
在这里插入图片描述

源码下载与效果演示

哔哩哔哩视频下方观看:
https://www.bilibili.com/video/BV14k8qz5EZP/

在这里插入图片描述
包含:

📦完整项目源码

📦 预训练模型权重

🗂️ 数据集地址(含标注脚本

二、系统总体方案设计

整个系统围绕“可训练、可部署、可交互”三个核心目标进行设计,整体架构划分为四个层级:

  1. 数据与标注层
    农田、乡村道路等真实场景采集的数据,采用 YOLO 标准格式进行标注。
  2. 模型训练层
    基于 YOLOv8 的目标检测模型,完成两类目标的特征学习。
  3. 推理与服务层
    使用 PyTorch 加载模型权重,支持图片、视频与实时流推理。
  4. 应用交互层
    通过 PyQt5 实现可视化操作界面,降低使用门槛。

该结构既满足算法验证需求,也兼顾实际工程落地的可维护性。


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、检测目标与数据集构建

3.1 识别目标定义

本系统当前聚焦于农业场景中最具代表性的两类目标:

  • 劳动人员:包括农田作业人员、巡检人员等
  • 农用汽车:如拖拉机、农用运输车等

虽然类别数量精简,但对模型的泛化能力和定位精度要求并不低,尤其是在远距离、小目标场景下。

3.2 数据集组织方式

数据集遵循 YOLOv8 推荐的目录结构,图像与标签严格一一对应,确保训练过程的稳定性与可复现性。标注采用归一化坐标,适配不同分辨率输入。

这种标准化的数据组织方式,也为后续扩展至更多农业目标(如农机具、牲畜、作物)提供了便利。


四、YOLOv8 在农业场景中的应用优势

YOLOv8 相比传统 YOLO 版本,在农业视觉任务中具备明显优势:

  • Anchor-Free 架构
    减少对先验框设计的依赖,更适合尺度变化大的农田场景。
  • 轻量化模型结构
    可在低算力设备或边缘终端上运行,满足农业现场部署需求。
  • 端到端训练流程
    从输入到输出一步完成,训练与推理逻辑清晰。

在实际训练过程中,模型能够较好地区分人员与农用车辆,即使在背景复杂或部分遮挡的情况下,也能保持稳定检测效果。


在这里插入图片描述

五、模型训练与效果评估思路

5.1 训练流程概述

模型训练主要包括以下步骤:

  • 数据加载与增强
  • 特征提取与多尺度检测
  • 分类与定位损失联合优化
  • 自动保存最优权重

训练完成后,系统会生成完整的训练日志和评估图表,用于分析模型收敛情况。
在这里插入图片描述

5.2 评估指标说明

模型性能主要通过以下指标进行评估:

  • mAP@0.5:衡量整体检测精度
  • Precision / Recall:分析误检与漏检情况
  • 混淆矩阵:验证类别区分能力

在农业应用中,稳定性往往比极限精度更重要,因此评估时也会重点关注不同场景下的鲁棒性表现。


在这里插入图片描述

六、PyQt5 可视化系统设计与实现

6.1 为什么需要图形界面?

在实际农业应用中,系统使用者往往并非算法工程师。相比命令行工具,图形化界面具备明显优势:

  • 操作直观,学习成本低
  • 检测结果可实时展示
  • 适合演示、教学与现场部署

因此,本项目基于 PyQt5 构建了完整的桌面端应用。

6.2 功能模块说明

图形界面集成了以下核心功能:

  • 单张图片检测
  • 文件夹批量检测
  • 视频文件逐帧检测
  • 摄像头实时识别
  • 检测结果保存与导出

所有功能均通过按钮触发,真正实现“开箱即用”。


在这里插入图片描述

七、典型应用场景分析

该农业视觉 AI 系统可广泛应用于以下场景:

  • 农田作业过程监控
  • 农机运行统计与管理
  • 农村道路安全巡查
  • 农业智能化示范项目

在此基础上,还可以进一步融合 GPS、时间序列数据或物联网设备,构建更完整的智慧农业系统。


八、总结与展望

本文介绍了一套基于 YOLOv8 与 PyQt5 的农业视觉识别系统,围绕“劳动人员”和“农用汽车”两类核心目标,完整展示了从数据准备、模型训练到可视化部署的工程化实践过程。

该系统具备以下显著特点:

  • 模型结构轻量,适合农业现场部署
  • 识别目标明确,应用场景清晰
  • 图形界面友好,降低使用门槛
  • 源码完整,具备良好扩展性

未来,可在此基础上持续拓展更多农业相关目标,实现真正意义上的多目标农业视觉 AI 平台,为智慧农业和乡村数字化建设提供更有力的技术支撑。

本文从实际农业生产场景出发,系统介绍了一套基于 YOLOv8 的人员与农用车辆视觉识别解决方案,完整覆盖了数据集构建、模型训练、性能评估以及 PyQt5 可视化部署等关键环节。实践表明,YOLOv8 在复杂、动态的农田环境中具备良好的鲁棒性与实时检测能力,而图形化应用的引入有效提升了系统的可用性与工程落地价值。该方案不仅可直接服务于农业作业监控与农机管理,也为智慧农业领域中目标检测系统的工程化实现提供了具有参考意义的实践范例。

在嵌入式软件开发中,每个测试对象(Test Object)因复杂度不同,所需工时也大相径庭。如何精准预估并实时监控进度?

本系列教程由TESSY授权分销商——龙智翻译制作,带您深入了解 TESSY 强大的测试时间估算与跟踪功能。

https://www.bilibili.com/video/BV1nG6vBYEh6/?page=1

核心干货:TESSY 测试估算的 3 大技术要点

根据视频教学,您可以分三个步骤掌握测试工作量管理:

1、启用并自定义估算指标:

在 TESSY 的“首选项(Preferences)”中启用 ET(Estimated Time,预估时间) 与 AT(Actual Time,实际时间) 指标 。

  • 默认算法:TESSY 自动综合考虑函数调用数、圈复杂度(Cyclomatic Complexity)、语句数以及固定的修复时间来计算 ET 。
  • 灵活调整:您可以根据项目需求编辑公式。例如,若需增加需求评审环节,可在公式中为每个测试对象统一增加 15 分钟的预估量 。

2、实时跟踪与视觉预警:

在测试项目视图中,ET 和 AT 列会清晰显示在覆盖率指标右侧 。

  • 颜色高亮逻辑:实施测试并手动输入 AT 后,系统会自动对比 ET。绿色/黄色代表工作量符合预期或处于警告边缘 。红色代表触发错误阈值。
  • 阈值设定:默认情况下,AT 超过 ET 会触发警告;当 AT 达到 ET 的两倍时,会触发错误显示 。

3、自动化生成汇总报告:

无需手动整理,TESSY 可自动生成测试概览报告(Test Overview Report) 。在报告末尾,系统会提供一个单独的指标表,汇总所有测试对象的时间数据,为后续的项目复盘提供决策依据 。


准确的测试时间估算是高效项目管理的关键。它有助于您有效分配资源、避免延误,并确保测试工作按计划推进。无论您是在应对紧张的Deadline,还是需要处理复杂的系统,掌握这项技能都将带来显著优势!

TESSY 技术能力清单

常见问题解答

Q: TESSY 的 ET(预估时间)是如何计算出来的?

A: TESSY 利用静态代码分析技术,提取函数调用数、圈复杂度和语句数,结合用户设定的公式自动生成 。

Q: 如果项目中有额外的评审流程,可以调整预估时间吗?

A: 可以。用户可以编辑 TESSY 的计算公式,通过增加固定时间偏移量(Offset)或权重系数,使估算更符合团队实际工作流 。

Q: 哪里可以查看完整的时间跟踪分析?

A: 在 TESSY 生成的测试概览报告末尾,有一个专门的指标表汇总了所有数据 。

关于TESSY和龙智(Dragonsoft)

TESSY软件源自戴姆勒-奔驰公司的软件技术实验室,在戴姆勒-奔驰公司得到广泛使用,1997年之后独立成为专业的软件测试工具公司Razorcat负责全球销售及技术支持服务。

TESSY作为最早的单元测试工具之一,是当今嵌入式软件测试的领先解决方案。专门针对嵌入式软件的C/C++代码进行单元测试/集成测试。它易于安装和操作,可自动执行测试、评估测试结果并生成测试报告。此外,TESSY还负责完整的测试组织以及测试管理,包括需求、覆盖率度量和可追溯性。

TESSY支持所有行业领先的编译器、调试器和微控制器以及主机模拟,已获得IEC 61508、IEC 62304、ISO 26262和EN 50128认证。

龙智是TESSY授权分销商,为中国用户提供全方位的TESSY软件服务,包括咨询、销售、实施、培训和技术支持等。欢迎联系龙智团队,获取有关TESSY产品的更多支持。

“PolarDB 不仅解决了我们亿级商品数据的毫秒级多维检索难题,更通过 GDN 和 PolarSearch+AI 一体化能力,让我们一套系统就能支撑多地域业务。PolarDB 已经成为悠悠有品技术底座的核心引擎。”

—— 悠悠有品 CEO 贾义贵

1. 关于悠悠有品

悠悠有品是一个专注于 CS:GO 饰品租赁与交易的平台,凭借对玩家需求的深度理解与极致体验设计,迅速成为用户口口相传的爆款,在短短一年多时间内实现10倍业务增长,成为国内第一大 CS:GO 饰品交易平台。随着市场份额趋于稳定,悠悠有品启动业务扩张战略,数据量迅速增长。这对底层数据库提出了前所未有的挑战:高并发、低延迟、强一致、智能搜索、异地多活,传统架构已难以为继。

2. 业务场景与挑战

悠悠有品平台的核心资产是其管理的CS:GO饰品,每件饰品均包含数十个属性,如武器型号、皮肤名称、稀有度、外观名称、磨损程度、Pattern ID及动态价格等。平台用户的搜索行为高度专业化,常直接输入复合关键词,如武器型号+皮肤名(如”AK Redline”),并叠加价格区间、磨损度、交易限制等多维过滤条件。

在此背景下,平台必须在亿级数据规模下,实现快速响应的多字段联合检索与语义相关性排序,以保障用户体验并驱动高价值订单转化。然而,原有技术架构暴露出三大挑战:

1. 搜索架构割裂,数据一致性与时效性堪忧。系统采用MySQL作为主存储,将数据异步同步至Elasticsearch(ES)以支持检索。该方案不仅引入了额外的组件依赖与运维复杂度,更因数据链路冗长而导致同步延迟高、管理复杂。

2. 库存同步延迟与数据一致性挑战。在拓展业务初期,不同地域分别部署独立数据库,通过接口同步库存数据,导致单次库存查询响应时间高达20秒,且无法保证数据一致性,频繁出现库存不一致问题。

3. 检索逻辑僵化,缺乏智能化的排序与推荐能力。传统基于关键词匹配的检索逻辑无法有效理解用户的真实意图,亦无法综合考量价格、磨损、稀有度、市场热度等多维商业属性进行动态加权排序。用户往往需要反复调整筛选条件才能找到心仪商品,搜索转化率受限,高价值饰品的曝光效率亟待提升。

3. 基于PolarDB的解决方案

为系统性破解上述挑战,悠悠有品联合阿里云瑶池旗下的云原生数据库 PolarDB MySQL 版打造升级的游戏饰品交易底座,全面替代原有割裂式架构,实现从存储、同步到智能应用的全链路升级。

3.1 PolarSearch:一站式智能搜索平台

基于云原生存算分离架构的PolarSearch搜索集群

针对搜索架构割裂的痛点,方案以PolarDB内置的PolarSearch引擎为核心,彻底摒弃了外部ES依赖,实现了存储与搜索的深度耦合。PolarSearch是PolarDB基于OpenSearch研发的高性能分布式数据检索与分析引擎,兼容Elasticsearch、OpenSearch生态。用户无需手动将PolarDB中的数据同步至其他数据检索平台,便可直接通过API或SDK进行文本文档、图片特征、日志等多模态数据的毫秒级全文检索、向量检索与智能分析。

PolarSearch一体化智能搜索方案具备四大核心优势:

1. 内置强大的ETL能力:支持将单源多表通过复杂JOIN操作融合为一张大宽表,不仅可通过标准SQL实现,还兼容Python与Java代码包,灵活完成多表打宽、指标聚合、字段排序等自定义数据处理逻辑,极大简化了数据准备流程。

2. 实时同步,零延迟索引构建:PolarSearch自动构建倒排二级索引,高效便捷完成FTS全文检索,并实现源数据到索引的实时同步,彻底消除同步延迟问题。

3. 多模态融合检索:系统原生支持千维向量检索、标量正排索引与全文倒排索引的融合,能够在一个查询中同时进行语义向量匹配、结构化条件过滤和文本关键词搜索,实现多路召回与智能融合排序。

4. 多级缓存加速,性能跃升30%+:在性能层面,PolarSearch通过Search节点本地缓存与EMP(Elastic Memory Pool)远程内存池构成的多级加速架构,显著提升查询吞吐与响应速度,实测性能较传统ES方案提升30%以上,数据同步时延降低80%,支撑亿行数据多条件毫秒级精准搜索。

3.2 PolarDB GDN:多地域库存强一致与就近访问

基于PolarDB GDN的统一库存访问架构

为支撑多地域业务,方案部署了PolarDB全球数据库网络(Global Database Network,GDN) 架构。主集群承担全部写入流量,只读从集群承担读流量。

1. 就近访问:依托主集群与多个从集群之间的高速物理复制机制,PolarDB GDN实现了真正意义上的就近读模式。业务流量可在全球不同地域就近访问数据库,从而显著降低跨地域访问带来的网络时延。对于读请求,应用在本地从集群即可获得快速响应;对于写请求,从集群自动转发到主集群完成写入,业务无需拆分读写逻辑,也无需感知数据流向,极大简化了跨地域部署的应用开发成本。

2. 异地容灾:在架构层面,PolarDB GDN采用高并发、流水线式的物理复制技术,使复制延迟 < 1秒,确保各地域数据高度一致。这一能力不仅适用于日常多地域读流量分担,也提供了完善的异地容灾能力。无论是计划内的跨 Region 主备切换,还是突发故障情况下的计划外主切换,系统都能通过自动化流程在几秒内完成恢复,保证业务连续性。

3. 全局域名:业务应用分布在多个地域,并需要连接不同地域的PolarDB集群时,管理和切换多个集群连接地址会变得复杂且容易出错。PolarDB GDN支持全局域名功能,提供一个跨地域的、唯一的集群连接地址。应用无论部署在哪个地域,都可以使用此域名就近访问本地集群,并在主集群发生故障切换后,自动连接到新的主集群,实现应用层无感知的灾备切换,简化多地域部署架构的复杂性。

3.3 PolarDB for AI:搜索与排序一体化的智能推荐

基于PolarSearch和PolarDB4AI的智能搜索推荐系统

为提升用户转化率和平台活跃度,方案深度集成PolarDB for AI能力,构建“检索-重排序”两阶段智能推荐算法。具体流程如下:

第一阶段,PolarSearch节点基于用户输入的关键词与筛选条件,完成初步召回,返回Top N候选结果。第二阶段,候选结果被传递至PolarDB集群内的AI节点,执行ReRank算法二次排序。

ReRank算法排序流程

该算法包含两个核心模块:

- 关键词相关性评分(Rel_Score):依据预设字段权重(例如,武器型号35%、皮肤名30%、外观10%等),通过完全匹配与模糊匹配函数计算匹配度,再乘以关键词对应的权重,得到整体关键词相关性得分;
- 属性打分(Attr_Score):对价格、磨损、稀有度、特殊类型等维度进行归一化处理,采用X/(1+X)函数抑制极端值,并按商业权重(例如,价格35%、磨损25%、稀有度15%等)加权求和。

最终,系统输出综合得分 Final_Score = α × Rel_Score + β × Attr_Score (α、 β分别为权重),按此分数降序排列,确保用户看到的不仅是“匹配”的商品,更是“最值得购买”的商品。

当前一期模型已显著提升高价值订单转化率,二期将引入Pattern稀缺度与市场热度等特征,进一步激活饰品的交易活力。

4. 客户价值与总结

通过PolarDB一体化方案的落地,悠悠有品成功构建了兼具强一致性、智能检索力与极致弹性的新一代交易底座。平台不仅实现了亿级数据毫秒级检索、多地域库存强一致同步,更通过AI驱动的智能排序显著提升了用户转化与平台活跃度。 未来,随着PolarDB多模湖库一体Data+AI能力的持续演进,悠悠有品将进一步探索更多的AI应用场景,而PolarDB将始终作为其“智能交易系统”的核心引擎,助力中国游戏服务品牌走得更远。

点击了解云原生数据库PolarDB:https://www.aliyun.com/product/polardb

VMware Workstation Pro 25H2u1 for Windows & Linux - 领先的免费桌面虚拟化软件

基于 x86 的 Windows、Linux 桌面虚拟化软件

请访问原文链接:https://sysin.org/blog/vmware-workstation/ 查看最新版。原创作品,转载请保留出处。

作者主页:sysin.org


2026 年 2 月 27 日 25H2u1 版本发布。

桌面 Hypervisor
VMware Workstation Pro

VMware Workstation Pro 是行业标准桌面 Hypervisor,使用它可在 Windows 或 Linux 桌面上运行 Windows、Linux 和 BSD 虚拟机。

VMware Workstation

2024 年 11 月 11 日,VMware by Broadcom 宣布 VMware Fusion 和 Workstation 现在对所有用户免费。

在桌面上构建虚拟机

跨一系列不同的设备、平台和云环境构建、测试和演示软件。IT 专业人员、开发人员和企业每天都依赖 Workstation Pro 为他们的项目和客户提供支持 (sysin)。借助 Workstation Pro,您可以轻松运行复杂的本地虚拟环境,从而在同一桌面 PC 上模拟操作系统、平台和云环境。

可针对任何平台进行开发和测试

在开发和测试中使用 Workstation Pro 修复更多错误并按时交付高质量代码。在桌面 PC 上虚拟化目前可用的几乎所有 x86 操作系统。

享受嵌入式 vSphere 和 ESXi 支持

将 ESXi 和 vCenter 作为虚拟机在桌面上运行 (sysin),并连接到远程 vSphere 环境,以便快速访问虚拟机并执行基本管理任务。

运行安全的隔离桌面

运行具有不同隐私设置、工具和网络连接配置的辅助安全桌面,以实现在线保护,或保存 “快照” 以便日后还原。

VMware Workstation Pro 25H2u1 新增功能

VMware Workstation Pro 25H2u1 | 26 FEB 2026 | Build 25219725

VMware Workstation Pro 25H2u1 包含安全修复和缺陷修复。

  • 重新启用了 “Check for updates” 选项,用于检查是否有新版本发布。
  • 此版本修复了 CVE-2026-22715、CVE-2026-22716、CVE-2026-22717 以及 CVE-2026-22722。有关这些漏洞及其对 Broadcom 产品影响的更多信息,请参阅 VMSA-2026-0002

已解决的问题

在启用了 Hyper-V 的 Windows 主机上运行时,虚拟机可能会意外退出

在启用了 Hyper-V 的 Windows 主机上运行时,Workstation Pro 25H2 不支持嵌套虚拟化。配置了 vhv.enable = TRUE 的虚拟机可能会报告“不可恢复的错误”。该问题已在本版本中解决。当在启用了 Hyper-V 的主机上启动配置为使用嵌套虚拟化的虚拟机时,现在会显示错误提示信息。

在 Windows 主机上,来宾操作系统有时看起来运行缓慢且对输入无响应

在 Windows 主机上,VMware Workstation 在接收来宾操作系统输入时,可能无法及时重绘来宾屏幕 (sysin),从而造成来宾操作系统运行缓慢的错觉。因此,在更新界面元素时,来宾操作系统可能显得对用户输入无响应,或屏幕出现卡顿。本版本已修复该问题。

在全屏模式下跨显示器移动鼠标指针时,鼠标指针会消失

在 Windows 主机上使用 Workstation Pro,且启用了“焦点跟随鼠标”,并在多显示器环境下将虚拟机置于全屏模式时,在显示器之间移动鼠标指针会导致鼠标指针消失。该问题已在本版本中解决。

Vulkan 显示模式在某些 Windows 主机硬件配置下可能引发多个问题

VMware Workstation Pro 25H2 启用了新的 Vulkan 显示模式,在某些主机硬件配置中会出现多个问题,例如:

  • 启动虚拟机后,Windows 主机的显示可能会永久变暗,直到主机重启。
  • 在 Windows 主机上进入全屏模式后 (sysin),工具栏不再显示。

该问题已在本版本中解决,并且 Vulkan 和 DirectX 12 显示模式默认处于停用状态。

在 Windows 主机上,全屏模式下的来宾操作系统屏幕周围会显示 1 像素的白色边框

该问题已在本版本中解决。

主机重启后,启用了 3D 图形加速的 Windows XP 或 Windows Vista 虚拟机显示黑屏或低分辨率且无完整色彩支持

该问题已在本版本中解决。

在 Windows 主机上尝试 USB 直通时,USB 设备可能无法列出、间歇性断开或连接失败

在 Windows 主机上进行 USB 直通时,可能会发生与 USBArbitrator 的突然断开,导致无法获取已枚举的设备信息。该问题已在本版本中修复。

虚拟机模板 OVF

本站原创 OVF,适用于 VMware 虚拟化。

下载地址

VMware Workstation Pro 25H2u1 for Linux - Free

VMware Workstation Pro 25H2u1 for Windows - Free


Unlocker & OEM BIOS 版本:

更多:VMware 产品下载汇总

作者:AgentRun

国际市场研究机构 Omdia 发布《2026年亚太Agentic AI开发平台市场评估报告》,阿里云凭借函数计算 AgentRun 卓越的技术深度和全栈AI布局摘得“领导者”桂冠,5项核心能力获得最高评级(Advanced),是国内厂商最优,与 AWS、谷歌、微软等同处最高评级梯队。

image

当前全球智能体正迎来爆发式增长,身为其核心基础设施的 Agentic AI 开发平台正进入功能快速丰富期。先进平台不仅要能支持极致的工作负载扩展与弹性、知识管理与上下文工程、工作流编排、无代码开发,还要能满足精细化计费等更多功能。基于此,Omdia 对亚太主流厂商的 Agentic AI 开发平台从七大维度进行详细且严格的评估。其中,阿里云在模型支持、上下文工程、多智能体框架、运维与生命周期管理、开源与社区等 5 大核心能力获得最高评级。

报告强调,阿里云深耕全球云计算领域多年,已确立其作为全栈 AI 服务供应商的顶级地位。在智能体开发方面,阿里云通过提供全面的企业级功能套件,在一众厂商中脱颖而出,成为企业构建和部署自有 AI 智能体的首选。尤其是基于阿里云函数计算 FC 构建的一站式 Agentic AI 基础设施平台——AgentRun,以其卓越的性能优化、极高的性价比以及企业级的安全保障,受到研究机构的高度评价,可使企业平均 TCO 降低 60%,让开发者可以专注于 Agent 的核心业务逻辑创新,无需自建和管理底层基础设施。

此外,Omdia 对阿里云在全球及东南亚市场的合规与安全能力,能够有效支撑客户跨区域扩展的合规需求。凭借开放且丰富的模型生态、深度的行业解决方案以及完善的运维工具链条,阿里云在金融、政务、互联网、汽车、智能硬件与医药等多个行业的企业客户中获得快速采用,并成为推动企业 AI 转型的重要基础设施与生态枢纽。

快速了解函数计算 AgentRun

一句话介绍:函数计算 AgentRun 是一个以高代码为核心的一站式 Agentic AI 基础设施平台。秉持生态开放和灵活组装的理念,为企业级 Agent 应用提供从开发、部署到运维的全生命周期管理。

image

函数计算 AgentRun 架构图

AgentRun 运行时基于阿里云函数计算 FC 构建,继承了 Serverless 计算极致弹性、按量付费、零运维的核心优势。通过深度集成 AgentScope、LangChain、RAGFlow、Mem0 等主流开源生态。函数计算 AgentRun 将 Serverless 的极致弹性、零运维和按量付费的特性与 AI 原生应用场景深度融合,助力企业实现成本与效率的极致优化,让 Agentic AI 真正进入企业生产环境。

目前,阿里云函数计算 AgentRun 已让众多企业级智能体“快速上岗”,成为模型服务、AI工具生态、企业智能体等领域的理想选择。未来,随着 Agentic AI 应用逐渐向企业级、行业化和跨区域落地演进,平台厂商的技术深度、运营能力与合规支持将是客户选择的关键。截至目前,阿里云在全球 29 个地域设有 92 个可用区,为全球企业和开发者提供全栈的AI基础设施及 MaaS 服务。千问系列模型累计开源超 400 款,覆盖全模态、全尺寸,衍生模型数超 20万,累计下载量超10亿,是全球第一的开源大模型。

更多权威评测:

  • IDC 2025 年首次发布的关于中国 Serverless 计算市场调研报告,阿里云凭借函数计算 FC、Serverless 应用引擎  SAE 等产品,以 42% 的市场份额稳居第一。
  • 2025年度 Gartner® 全球《云原生应用平台魔力象限》 [ 1] 报告,阿里云凭借 Serverless 应用引擎SAE(以下简称SAE)和函数计算FC,成为亚太地区唯一入选「领导者象限」的科技公司。
  • 全球权威咨询机构 Forrester 发布 Serverless开发平台评估报告《Forrester Wave™: Serverless Development Platforms, Q2 2025》:阿里云凭借 Serverless应用引擎SAE(以下简称SAE)和函数计算FC [ 2] ,成为亚太地区唯一入选「领导者象限」的科技公司。
  • Omdia 发布《2026年亚太Agentic AI开发平台市场评估报告》,阿里云凭借函数计算 AgentRun卓越的技术深度和全栈AI布局摘得“领导者”桂冠,5项核心能力获得最高评级(Advanced)

产品相关链接:

其他相关链接:

摘要:
EchoKit是由WasmEdge开源的语音AI框架。在知识库层,EchoKit选用OceanBase seekdb,一款AI原生混合搜索数据库。其单引擎统一关系数据、向量、全文与JSON,支持混合搜索与内置embedding。seekdb的低延迟、多模态检索能力及MCP工具调用机制,使语音助手能快速精准地从本地文档中召回信息,应用于金融监控、技术检索与个人知识管理等场景。

背景

EchoKit 是由 WasmEdge 团队最新开源的一个语音 AI 框架项目。项目的核心理念很明确,就是要提供一套完全开源、可以在本地部署的语音 AI 解决方案。这样一来,开发者就可以构建出既保护隐私、又高度可定制的智能语音助手。不同于市面上那些必须依赖云端服务的产品,EchoKit 给了开发者完全的控制权。

在知识库和数据检索这一层,EchoKit 选择了 OceanBase seekdb。

OceanBase 是一家在数据库领域深耕多年的公司,其分布式数据库在双十一等极端场景下经过了充分的验证。seekdb 是 OceanBase 在 2025 年 11 月发布的一款 AI 原生混合搜索数据库,以 Apache 2.0 协议开源。

seekdb 的定位很明确,他不是传统意义上的数据库,而是一个为 AI 时代重新设计的数据库。他在单个引擎中统一了关系型数据、向量数据、全文本、JSON,支持混合搜索和数据库内的 AI 工作流。这种设计理念与 EchoKit 的需求高度契合。传统的做法是使用多个独立的系统来处理不同类型的数据,比如用 PostgreSQL 存储结构化数据,用 Elasticsearch 做全文搜索,用专门的向量数据库做语义搜索。这样的架构复杂度高,数据同步是个问题,查询性能也会受影响。OceanBase seekdb 把这些能力整合到一个引擎里,大大简化了系统架构。

当前语音 AI 服务面临的问题

现在市面上的语音 AI 服务确实在对话流畅度和响应速度上做得很不错,但是仍然存在一些根本性的问题。

最明显的一个问题就是隐私。当你使用这些云端服务的时候,你的语音数据、对话内容、个人信息都必须上传到服务提供商的服务器上进行处理。如果你想让语音助手帮你管理家里的智能设备、查询个人财务信息、访问公司内部数据,这些场景下的隐私和安全问题就变得非常突出。

第二个问题是供应商锁定。大多数语音 AI 解决方案都依赖特定的云服务提供商或者 API。不同的服务提供商在性能、成本、支持的语言上都有差异,被锁定在一家就意味着失去了选择的灵活性。

第三个问题是可控性和定制化程度。使用云端服务的时候,你基本上只能用他们提供的模型和功能。你没法深度定制模型的行为,没法调整处理流程,也没法集成自己的知识库。

EchoKit 的出现就是为了解决这些问题。通过提供完整的开源固件和服务器框架,开发者可以选择在本地部署,比如直接跑在自己的 Mac 电脑上,或者部署在边缘设备上。也可以采用混合部署的方式,把一部分功能放在本地,另一部分放在云端。更重要的是,你可以完全自主选择使用哪家的云服务,不会被任何一个特定的 API 所限制。

技术架构详解

EchoKit 的技术架构设计得比较清晰,整个处理流程可以分为几个关键步骤。

首先是语音输入和检测阶段。用户通过刷好了 EchoKit 固件的 ESP32 语音设备进行语音输入。这个阶段有一个很重要的技术叫 VAD,也就是 Voice Activity Detection,语音活动检测。它的作用是判断用户什么时候开始说话、什么时候说完了,从而准确地检测出语句的边界。

第二步是语音识别,也就是 ASR(Automatic Speech Recognition)。EchoKit 默认使用的是 Whisper,这是 OpenAI 开源的一个语音识别模型,效果很不错。你也完全可以替换成其他的开源 ASR 模型,这种灵活性是云端服务很难提供的。

第三步是语言模型处理,也就是 LLM 阶段。这一步是整个流程的大脑,负责理解用户的意图,并决定如何响应。在这个阶段,系统会自主决策是否需要调用外部工具。如果用户的问题涉及到知识库中的信息,系统会调用 seekdb 进行数据库查询。EchoKit 还支持 MCP(Model Context Protocol)工具调用,可以让 AI 助手调用各种外部工具和服务。

最后一步是语音合成,也就是 TTS(Text-to-Speech)。系统把生成的文本转换成语音输出给用户。这里同样支持多种 TTS 引擎,你可以选择低延迟的开源 TTS 模型。更有意思的是,EchoKit 还支持语音克隆功能,这个后面会详细讲到。

架构的设计理念就是模块化和可替换,每一个环节都可以根据你的需求进行调整和优化。

OceanBase seekdb 在其中扮演的角色

在 EchoKit 的架构中,OceanBase seekdb 被选作知识库解决方案,这个选择是有充分理由的。

首先是延迟问题。对于语音交互来说,响应速度是用户体验的关键。如果你问一个问题,系统要等好几秒才能回答,这个体验就很糟糕。seekdb 的查询响应速度非常快,这对于实时语音交互来说至关重要。当用户提出一个需要查询知识库的问题时,系统可以快速从 seekdb 中检索到相关信息,然后生成回答,整个过程不会有明显的延迟。

其次是搜索能力的多样性。seekdb 支持多种搜索模式,包括关键词搜索、精确搜索、语义搜索,以及这些模式的混合搜索。这种能力在实际应用中非常有用。比如用户问“最近 AI 领域有哪些技术突破”,这个问题就需要多种搜索能力的配合。系统需要理解“技术突破”的语义含义,这是语义搜索;需要精确匹配“AI”这个关键词,这是关键词搜索;还需要按照“最近”这个时间范围进行过滤,这是元数据的精确过滤。seekdb 可以把这些搜索方式结合起来,返回最相关、最准确的结果。

第三个优势是内置的 Embedding 功能。seekdb 具有内置的 embedding 功能,这意味着你不需要单独部署一个 embedding 服务,整个向量化处理流程都被简化了。这对于降低系统复杂度、减少部署难度来说是很有帮助的。

最后是语义混搜排序能力。seekdb 可以同时进行语义匹配、关键词匹配和元数据精确过滤,然后对结果进行综合排序。这种能力特别适合复杂的知识检索场景。在实际应用中,用户的问题往往不是单一维度的,需要系统能够理解问题的多个方面,然后从知识库中找出最匹配的信息。

seekdb 还可以作为 MCP Server 被调用。这意味着它不仅仅是一个被动的数据库,而是可以作为一个工具被 AI 助手主动调用。这种设计让整个系统的架构更加灵活。

实际应用场景

为了更好地理解 EchoKit 和 OceanBase seekdb 的结合能带来什么,我们可以看几个具体的应用场景。

第一个是金融场景下的营收监控。假设你是一个公司的管理者,你想通过语音快速了解公司的财务状况。你可以直接对着语音助手说:“看一下我们 Q4 这个季度的营收,如果低于目标就给我一个警示。”

系统的处理流程是这样的:首先,你的语音输入被 ASR 转换成文字。然后,LLM 理解了你的意图,知道你要查询 Q4 的营收数据,并且需要跟目标进行对比。接着,系统决定调用营收 API 来获取实际的营收数据。同时,系统会从 seekdb 中查询 Q4 的营收目标是多少。拿到这两个数据之后,系统进行对比,发现实际营收低于目标。最后,系统通过 TTS 生成语音反馈:“营收低于 12% 的目标。”

这个场景的关键在于,所有的数据都可以保存在本地。你的财务数据不需要上传到任何云端服务,整个查询和分析过程都在你自己的设备上完成。这对于企业来说,隐私和安全性得到了充分保障。

第二个场景是技术信息检索。假设你是一个开发者,想了解最近的技术动态。你问语音助手:“最近 AI 领域有哪些技术突破?”

这时候,seekdb 的混合搜索能力就派上用场了。系统会同时进行语义匹配,理解“技术突破”这个概念的含义;进行关键词匹配,精确找到包含“AI”、“突破”等关键词的内容;还会进行元数据过滤,只返回“最近”这个时间范围内的信息。这三种搜索方式结合起来,可以确保返回的结果既相关又准确。

第三个场景是个人知识管理。很多人都有自己的笔记、文档、收藏的文章等等。你可以把这些内容导入到 seekdb 中,然后通过语音来查询。比如你想不起来之前看过的某篇文章里的一个观点,你可以用自然语言描述一下,系统就能帮你找出来。而且因为是本地部署,你不用担心自己的笔记内容被上传到云端。

部署和使用

EchoKit 的部署过程相对来说比较简单。首先你需要从 GitHub 上克隆项目代码 https://github.com/second-state/echokit_server,然后主要的配置工作集中在 config.toml 这个文件上。

在配置文件中,你需要设置 ASR、LLM、TTS 的 API 配置。这里的灵活性很大,你可以选择使用本地模型,也可以使用云端的 API。比如 ASR 你可以用本地的 Whisper,也可以用云端的语音识别服务;LLM 你可以用本地部署的开源模型,也可以用 OpenAI 的 API;TTS 同样可以本地或云端。

系统提供了两种工作模式。第一种是三段式模式,也就是 ASR → LLM → TTS 这样分开处理。这种模式的优势是灵活性最高,每个环节都可以独立选择模型,而且可以在 LLM 阶段加载知识库、调用工具。这种模式推荐用于需要高度定制的场景。

第二种是端到端模式,直接使用像 ChatGPT Live API 或千问语音 API 这样的服务。这种模式的优势是速度更快,因为是一次调用完成全流程,中间没有额外的转换开销。但相应的,定制化程度就比较低了。你可以根据自己的需求来选择使用哪种模式。

如果你要集成知识库,需要配置 seekdb 数据库。你可以把自己的文档、CSV 文件等数据导入进去。seekdb 会自动处理 embedding 和索引,之后就可以通过语音来查询这些知识了。

由于 EchoKit 是用 Rust 编写的,整体的体积很小,性能也很高。这意味着即使在配置不是
特别高的设备上,也可以流畅运行。部署完成后,系统可以快速启动,响应速度也很快。
EchoKit server 部署好以后可以在web端和它对话 https://echokit.dev/chat/,测试是否成功运行。

接下来就可以刷固件到你的硬件(可以自己组装esp32或者购买我们已经刷好固件的设备https://echokit.dev/)上,并且在 setup 页面填上你的 server url,和你的语音盒子开始对话啦。如果想克隆自己的音色,也可以使用我们的声音克隆工具噢!

建筑可视化(或称 Archviz)已迅速从静态的 2D 渲染转变为沉浸式的 3D 体验,彻底改变了建筑师、设计师和开发者传达愿景的方式。利用这项技术,开发团队可以在项目破土动工前,就“引导”客户参观高度逼真的办公总部或住宅区复制品。用户可以对材料、照明和布局提供即时反馈,从而减少施工开始后出现的问题。

这一演变由虚幻引擎5(UE5)这样的游戏引擎所驱动。这些实时 3D 引擎最初为电子游戏创作而设计,现已广泛应用于多个行业,以每秒 60 帧的速度构建虚拟世界。然而,这种视觉能力也带来了文件大小、协作和版本控制等方面的挑战。高精度纹理、复杂的几何结构以及频繁的设计迭代,给传统工作流程带来了难以应对的挑战。

本文旨在为使用虚幻引擎但初次接触版本控制系统的建筑设计团队、开发者和创意人士,提供一份入门指南,并探讨与这一挑战相关的建筑可视化最新趋势。您将了解如何无缝集成建筑信息模型(BIM)数据,以及像 Perforce P4 这样强大的版本控制系统,如何为高性能可视化团队提供必要的管理和扩展能力。

UE5 时代下的建筑可视化定义

建筑可视化是指为环境和结构(包括建筑物、景观和室内空间)创建照片级真实感的三维渲染的过程。在 UE5 时代,意味着可通过实时交互的方式呈现这些元素。

使用虚幻引擎 5,创作者可以构建生动的世界,其中光照、物理特性和材质都能呈现逼真的效果。构建后,用户可以在这些3D空间中自由穿梭,并实时调整材质和光照效果。无需等待传统的渲染更新环境,团队可以进行即时反馈。客户还能要求查看不同的地板材质,而设计师可在模拟中即刻进行替换。通过这种协作,他们能够为实体建造项目做出明智决策,选定最佳方案。

值得关注的 3 大建筑可视化趋势

随着游戏引擎技术的成熟,三个关键趋势正在重塑工作室处理可视化的方式:

01、实时渲染与交互性

等待数小时只为渲染一帧画面的时代已成为过去式。借助UE5 的 Lumen 和 Nanite 等功能,建筑师能够创建电影级的、可实时运行的视觉效果。

  • Lumen:该全局光照系统能立即响应场景变化。无论是移动墙体还是调整时间,光线都会精准折射,无需再重新计算时间。这使得动态的昼夜循环成为可能,以便向客户精确展示自然光是如何影响每个空间的。
  • Nanite:这套虚拟化几何体系统支持艺术家导入包含数百万多边形的电影级源素材。您可以直接将原始的 ZBrush 雕塑或摄影测量扫描数据导入引擎,而无需手动优化或创建”细节层级”(LOD)网格。
  • VR/AR 集成:实时渲染为沉浸式虚拟现实(VR)和增强现实(AR)体验提供了动力。客户可以佩戴 VR 头显设备,在未来办公空间的1:1比例模型中自由行走,以获得真实的空间尺度感知。

02、AI 驱动的建筑可视化内容

AI简化了创作过程中的繁琐环节。如今,AI 工具可以协助自动生成纹理、为场景填充逼真的植被,甚至优化光照设置。这种自动化让艺术家能够专注于高层次的创意决策,而非耗时的手动素材布置。对于工作室而言,这意味着方案的处理修改更快,并且无需额外预算,即可为客户提供多种设计。

03、可持续性与故事驱动的视觉呈现

现代可视化不仅仅是展示建筑形态,更讲述着可持续性和生活方式的故事。通过将虚幻引擎模型与物联网传感器数据相连接,设施管理人员可以将用户流量、能耗和空间使用率进行实时可视化。通过模拟天气模式和环境交互,建筑师能够清晰展示建筑物在其生态系统中的运行表现。这种叙事方式有助于客户理解其设计选择的长期价值。

超越美学:数据与 BIM 管理

虚幻引擎的建筑可视化演示需要视觉模型与其背后的工程数据无缝连接。当两者被恰当整合时,利益相关者能够对建筑项目的设计、材料和成本做出关键决策。

桥梁建筑可视化、BIM与数据工作流

将计算机辅助设计(CAD)和建筑信息模型(BIM)软件(如 Revit、Rhino 或 Archicad)中的数据导入虚幻引擎,可以将视觉资产转变为功能性工具。

通过将虚幻引擎项目与 BIM 平台集成,团队可以保持设计和可视化之间的实时连接。当建筑师在 Revit 中移动了一个窗户,该变更即可同步更新到虚幻引擎模型中。这确保了当前的设计迭代始终反映建筑师的最新构想。

更重要的是,这种连接保留了关键元数据,如材料成本、制造商信息和交互式模型中的热性能。例如:用户点击可视化中的墙体时,即可查看其构成材料和成本。

可视化建筑师面临的 5 大挑战

尽管UE5功能强大,但对建筑公司而言,采用统一的实时工作流程仍面临重大挑战:

1、流程复杂度

将数据从 CAD 或 BIM 软件导入到游戏引擎仍然是一个痛点。尽管 Datasmith 等工具可简化导入流程,但团队仍然在曲面细分质量、层级管理和命名规范方面遇到困难。

若缺乏清晰、协调的流程体系,项目很容易因设计变更而变得混乱和崩溃。此外,在不导致系统崩溃的前提下,为城市级模型维持合适的细节层级(LOD),往往需要持续进行精细平衡。

2、硬件与成本限制

实时渲染需要强大的硬件支持。建筑设计团队需要高端 GPU 和工作站才能流畅运行复杂的 UE5 场景。对于试图扩大规模的工作室来说,为设计师配备游戏级的高性能工作站,以及搭建可向客户串流视频所需的云基础设施,其成本可能成为一大障碍。

3、反复修改循环

在建筑领域,设计工作直到施工结束并举行剪彩仪式后才算真正完成。客户会频繁提出变更要求,甚至在项目后期也是如此。

这正是低效或脆弱的可视化流程成为瓶颈的地方。即使是一个移动墙体的简单要求,也可能引发数天返工。要应对反复修改的循环,建立稳健的数字内容创作(DCC)流程至关重要。

4、技能缺口

创建静态渲染和构建实时应用之间存在根本差异。来自传统渲染背景的艺术家必须学习游戏引擎的概念,如优化、蓝图(可视化脚本)和交互设计。

5、大规模协作

随着建筑可视化项目的复杂性增加,协作管理难度也日益提升。大型团队在共同处理同一可视化项目时,可能引发版本冲突、工作数据丢失或工作流程混乱等问题。

要协调多个艺术家、开发者和利益相关者,需要强大的资产管理和版本控制系统。若没有这些系统,扩大协作则可能会导致延误和效率低下,从而削弱实时工作流的优势。

△虚幻引擎建筑可视化工作流示意

使用 Perforce 解决虚幻引擎建筑可视化难题

为解决这些挑战,可以将您的建筑可视化项目视为软件开发项目,并使用 Perforce P4 版本控制系统。以下将介绍 Perforce 驱动的流程是如何支持 UE5 实现卓越表现的。

在 UE5 中设置源代码管理

Perforce P4 原生集成于虚幻引擎5。配置完成后,可支持多个美术师和开发者同时在同一项目上协作,而不会覆盖彼此的工作。功能包括:

  • 资产锁定: UE5 允许用户在开始编辑文件时进行”签出”(Check Out),这一操作将锁定二进制资产,防止其他团队成员进行冲突更改。
  • Unreal GameSync(UGS): 该工具允许美术师直接同步到引擎和项目的特定预编译版本,无需自行编译代码。这可以确保每个人看到的项目版本完全一致,从而杜绝”在我的设备上可以运行”的争论和相关错误。

艺术家到开发者的工作流程

Perforce P4 可满足创意艺术家和技术开发者的不同需求。艺术家可以使用简单的图形客户端或引擎内置集成来对资产进行版本控制。开发者则能够借助命令行工具和 Perforce Streams 来处理代码的分支与合并。这种统一的工作流程打破了信息孤岛,确保美术资产和代码始终保持同步。

Git 与 Perforce 在建筑可视化领域的对比

有的工作室因为熟悉而使用 Git。遗憾的是,Git 在处理建筑可视化项目所需的大型二进制文件(如纹理、3D 模型和音频)时表现不佳。在这种负载下,Git 仓库会变得迟缓且难以管理。

P4 专为处理 PB 级数据和数百万个大型二进制文件而设计。它允许团队仅获取所需的文件,从而确保工作空间始终可控。对于一个包含数百 GB 数据的建筑可视化项目,P4的可扩展性,可能直接决定了项目是顺利完成渲染构建,还是陷入令人沮丧的长时间等待。

对比:为什么建筑可视化选择 Perforce 而非 Git?

建筑可视化的安全与治理

实施强有力的数据管理策略可以保护您的知识产权,尤其在处理诸如数据中心、政府设施或高端豪华建筑等敏感项目时。

Perforce P4 标配强大的安全功能,可在各类级别上保护您的数据。

细粒度权限控制:

与临时文件共享不同,P4 提供细粒度的访问控制。您可以精确定义哪些用户/组可以查看特定的文件夹或文件。例如,您可以仅授予承包商访问单个建筑模型的权限,而不会暴露整个城市总体规划。

单一事实来源:

P4 作为可信的单一事实来源,可彻底消除将文件分散在网络驱动器、Dropbox 链接和个人硬盘上的必要。BIM 导出文件、虚幻引擎项目、自定义脚本和文档资料都能够存放在一个安全的存储库中。

可审计性:

项目中的每次变更都有记录。您可以准确知道谁修改了 BIM 数据、谁更新了照明设置,以及这些变更何时发生。这种审计追踪对于可追溯性、管理和设计变更的争议解决至关重要。

知识产权保护:

将资产集中存储在安全的、本地或云托管的 P4 服务器中,可以保护您的知识产权。您可以在安全的环境中掌控所有数据,包括专有设计和 AI 生成的资产。

优化您的虚幻引擎建筑可视化体验

本文梳理了当前建筑可视化领域的关键趋势,探讨了团队在为客户打造丰富、沉浸式体验时所面临的挑战,以及如何通过一套结合专业版本控制(如Perforce P4)的虚幻引擎建筑可视化工作流,来有效应对这些问题。

借助Perforce P4,您将创建一个安全、高效的协作环境:

  • 创意团队无需再为繁琐的数据管理而分心;
  • 开发者也能轻松管理庞大的资产库、复杂的项目结构,以及分布在全球各地的协作方——一切尽在统一的中央控制平台中。

Perforce中国授权合作伙伴——龙智

我们欣然宣布,MatrixOne Intelligence 多模态数据智能平台迎来了4.1版本的重要更新。本次升级聚焦于核心功能的增强与易用性的提升,旨在通过更智能的查询、更高效的数据整合、更清晰的知识管理以及更透明的数据处理流程,帮助您轻松解锁数据价值。

MatrixOne Intelligence 介绍

MatrixOne Intelligence 是一套面向多模态数据的AI数据智能平台,旨在帮助企业应对数据碎片化、多模态数据整合复杂、GenAI 应用落地困难等挑战。通过数据接入、智能解析、数据工作流、超融合的湖仓底座,MatrixOne Intelligence 为企业提供了一站式的端到端平台,将企业内部的自有数据变成可以服务于GenAI落地应用的AI-Ready 数据。

该平台基于创新的云原生架构和存算分离设计,支持结构化和非结构化数据的统一管理和高效处理,具备高度灵活的部署能力,可适配公有云、私有云及本地数据中心的多种环境。

MatrixOne Intelligence 致力于帮助企业充分挖掘和释放私域数据的潜能,让企业私域数据在AI时代得到充分利用,成为其独特竞争力的关键来源。

功能亮点

以下是此次更新的主要功能:

结构化数据接入与表对象管理:轻松整合业务数据

GenAI 工作区新增对Table对象的支持,实现表级权限管理,保障数据访问精准控制。用户可将Excel、CSV类型的结构化文件一键导入,系统智能识别并生成统一标准的表结构和字段信息,无需额外建表或手动转换,即可直接用于业务分析、NL2SQL或各类智能应用场景。

该功能大幅降低数据准备和建模门槛,减少人工操作与出错风险,让业务人员也能快速将本地数据转化为可分析、可调用的数据资产,加速从“有数据”到“用数据”的全流程,提升数据利用效率和智能应用落地速度。

NL2SQL 与RAG:以自然语言完成复杂数据查询

平台已全面支持NL2SQL 与RAG能力,用户可通过自然语言直接发起查询请求,系统自动完成SQL生成与执行,实现对多源结构化数据的跨表、跨库查询,并支持结构化数据与非结构化文档、多模态内容的混合查询与融合分析。

在RAG机制加持下,平台能够结合数据结果与文本上下文进行综合理解与检索,为用户提供更准确、更具业务语义一致性的查询结果,显著提升数据获取与分析效率。

智能会话与知识管理:隔离清晰,协作高效

用户可建立多个独立知识库,实现团队与项目间的数据和权限隔离,保障信息安全与专业性;每个会话均支持完整上下文记忆,让任务切换无缝衔接,无需重复说明背景,显著提升对话连贯性和工作效率。

可视化数据血缘:全程可追溯,可信可审计

本次更新实现了对源文件在工作流中每个处理节点的完整追踪与可视化,支持清晰展示数据从源头到最终结果的流转路径。通过工作流全链路中间结果的透明呈现,用户可以直观了解数据在各节点的转换过程及其依赖关系,显著提升系统的可观测性和调试效率。

信息提取节点功能增强:提升信息整合效率与易用性

本次版本对信息提取节点能力进行了增强,新增多文件合并提取功能,支持从多个文件中统一抽取并整合信息,满足跨文件信息汇总与分析需求。同时,支持上传本地JSON文件自动生成提取Schema,显著降低复杂场景下的配置成本,提升信息整合效率与易用性。

更多格式支持,自动化预处理

文件处理能力升级:所有接入的文件在导入阶段即可自动去重和解压,新增支持Excel、HTML文件,用户无需额外转换即可直接解析,大幅提升数据处理效率;同时,PDF中的数学公式可精准识别并转为Markdown格式并保留原图,方便技术文档和学术论文的分析与校对,让内容处理更快捷、智能。

Cisco Secure Client 5.1.14.145 (macOS, Linux, Windows & iOS, Android) - 远程访问客户端

思科安全客户端(包括 AnyConnect)

请访问原文链接:https://sysin.org/blog/cisco-secure-client-5/ 查看最新版。原创作品,转载请保留出处。

作者主页:sysin.org


Cisco Secure Client (including AnyConnect)

思科安全客户端(包括 AnyConnect)

安全访问只是开始

您的团队需要轻松访问公司资源和私有应用程序。您需要确保您的业务安全。思科安全访问使之成为现实。

Cisco Secure Client

Cisco Secure Client 5 新增功能

Cisco Secure Client 5.1.14.145 新功能

19-Dec-2025

此版本包含以下新增更新,并修复了 Cisco Secure Client 5.1.14.14 中描述的缺陷。

  • 任何从 5.1.8 升级到 5.1.13 且升级时间早于 2025 年 11 月 20 日的用户,无需再采取任何操作即可解决 Cisco Secure Client 5.1.13.177 新功能中描述的信任包问题。正在运行 5.1.9 至 5.1.12 的用户,应参考 Cisco Secure Client 5.1.13.177 新功能中列出的到期日期,以避免升级问题。

    5.1.14 版本包含对 CSCws30211 的修复,该问题会阻止在 CSCws02283 中所述到期日期之前未完成升级的 Windows 设备进行升级。

    受 CSCws00283 影响且设备已超过指定到期日期的 Windows 用户,必须升级到 5.1.14.145 (或更高版本)。受 CSCws00283 影响的 macOS 用户,以及受 CSCws00283 影响但其 Windows 设备尚未达到指定到期日期的用户,可以升级到 5.1.13.177 (或更高版本)。

  • Linux 构建文件名已发生更改(笔者注:统一扩展名为 tgz):

    旧名称新名称
    cisco-secure-client-linux64-version-predeploy-k9.tar.gzcisco-secure-client-linux64-version-predeploy-k9.tgz
    cisco-secure-client-linux64-version-predeploy-deb-k9.tar.gzcisco-secure-client-linux64-version-predeploy-deb-k9.tgz
    cisco-secure-client-linux64-version-predeploy-rpm-k9.tgzcisco-secure-client-linux64-version-predeploy-rpm-k9.tgz
    cisco-secure-client-linux64-version-vpnapi.tar.gzcisco-secure-client-linux64-version-vpnapi.tgz
    cisco-secure-client-linux-arm64-version-predeploy-k9.tar.gzcisco-secure-client-linux-arm64-version-predeploy-k9.tgz
    cisco-secure-client-linux-arm64-version-predeploy-deb-k9.tar.gzcisco-secure-client-linux-arm64-version-predeploy-deb-k9.tgz
    cisco-secure-client-linux-arm64-version-predeploy-rpm-k9.tar.gzcisco-secure-client-linux-arm64-version-predeploy-rpm-k9.tgz
    cisco-secure-client-linux-arm64-version-vpnapi.tar.gzcisco-secure-client-linux-arm64-version-vpnapi.tgz
  • 5.1.14.145 版本包含以下各模块的版本号:

    • Zero Trust Access—5.1.14.3417
    • Secure Client UI—5.1.14.1452
    • Cisco AnyConnect VPN core—5.1.14.145
    • DART—5.1.14.145
    • Umbrella— 5.1.14.145
    • SBL—5.1.14.145
    • Network Access Manager—5.1.14.145
    • Network Visibility Module—5.1.14.145
    • Secure Firewall Posture—5.1.14.145
    • ThousandEyes—2.20.1
    • ISE Posture—5.1.14.145

下载地址

Cisco Secure Client 5 for Linux x64 (deb, rpm, tgz), Release 5.1.14.145
Cisco Secure Client 5 for Linux arm64 (deb, rpm, tgz), Release 5.1.14.145
Cisco Secure Client 5 for macOS Universal, Release 5.1.14.145
Cisco Secure Client 5 for Windows x64, Release 5.1.14.145
Cisco Secure Client 5 for Windows arm64, Release 5.1.14.145 (请慎选,仅适用于少数高通处理器的电脑)
Cisco Secure Client 5 for iOS, Release 5.x App Store(点击直接访问,CN 现已恢复 [2025 年 8 月])
Cisco Secure Client 5 for Android, Release 5.x Google Play(点击直接访问,有离线 apk)

发布日期: 19-Dec-2025

请访问:https://sysin.org/blog/cisco-secure-client-5/


更多:Cisco 产品下载链接汇总

当日历上的年份从五翻到六,短短不到一个月,我们就能感受到新的一年注定与过往截然不同。去年 11 月的“拐点”早已为这一切埋下伏笔,而开源 AI 项目一夜爆火,引发硬件抢购潮与上市公司股价剧烈波动,这一切都在表明:2026 年,无疑是一个清晰、崭新的世界。

现在回想起来或许有些难以相信,但五年前 Copilot 刚问世时,那些如今看来十分基础的功能,在当时却令人无比震撼。就像我们如今习以为常的 iPhone,也曾是震撼世界的技术成就.最初的代码辅助工具——也就是增强型自动补全——很快被进步神速的模型取代,能力也在飞速拓展。早年曾有人笃定地预判,代码辅助终究只是辅助脚手架,真正具有创造性的编码永远属于人类。然而,这个判断错了。我们如今身处的时代,越来越多正规开发者正在探讨,甚至在不少场景中,已经发布了未经人类审核的代码。

到 2026 年,编码智能体——作为编码辅助模型的软件化形态——已经具备了相当强的能力,并且还在日复一日地进化。人们对它们的态度,也因此被迫发生转变。当然,外界对 AI 的看法依然两极分化,从认为它们无用又危险,到将其捧为近乎神明的存在。

然而从 2026 年起,一个基本共识已经形成:智能体是真实可用的,并且能够完成一两年前我们还无法预见的任务。它们的能力已经足以改变软件开发的方式,而且这种改变几乎可以肯定是永久性的。

正如 Adam Jacob 在谈及使用这类工具时所言:

如果你一直在读我写的东西,就会知道我并非向来都是信徒。但我现在深信不疑,因为我正在亲身实践。这一切太不可思议了。我们这个行业再也回不到过去了,我们只会借助这种能力向前大步飞跃。

从 2021 年到 2026 年,智能体在功能与能力上实现的飞跃,值得我们静下心来欣赏它们,因为这代表的不仅仅只是一场冲击,更准确地说,是多重、持续的冲击。以下是一些受影响目标的不完全清单。

个人

长期以来,人们一直承诺 AI 会减少乃至消除工作,但近期《哈佛商业评论》的一项研究却得出了相反结论。值得注意的是,这一观点很快得到了从业内顶尖 AI 研究者到知名心理学家等各方人士的广泛认同。文章虽未提及杰文斯悖论,但其结论却与这一理论高度吻合。随着 AI 让工作效率大幅提升,对资源与产出的需求也如理论预测的那样随之增长。这意味着,我们远未进入因 AI 省时工具而缩短工作时间的时代,相反,工人们并未用节省下来的时间休息,而是承担了更多工作。这需要社会层面做出调整与重新适配。

在开发者这一特定群体中,AI 同样带来了巨大影响,迫使他们重新思考自身在整体工作中的定位。一个很贴切的比喻是房屋建造:以往,开发者更像是建筑工人,负责砌墙、切割楼梯台阶等具体施工;而如今,许多开发者更愿意把自己看作建筑师——不是动手砌墙,而是决定墙体位置;不是搭建楼梯,而是规划楼梯高度。对一些人来说,这是极大的赋能;另一部分人则感到强烈的失落,因为他们原本独特、稀缺的技能正在被消解。正如一条推文所言:

我不知道为什么这一周成了转折点,但我交谈过的几乎每一位软件工程师,都在经历不同程度的心理压力与情绪困扰。

也许没有比 Evan Ratliff 的“骗局游戏(Shell Game)”播客更能证明这种冲击的了。在节目中,这位记者用自己的声音训练并放出一批 AI 模仿者,借助骗子和垃圾邮件发送者常用的同类技术来 “攻击” 听众。机遇与威胁一同显现:我们被各类 AI 包围,它们争夺着我们的注意力;与此同时,我们又迫于压力,必须为了各自的目的去使用 AI。

社区

与此同时,整个社区,尤其是开源社区,正在努力应对 AI 带来的一系列必然影响:它降低了代码创作的门槛,也必然带来了更高的流量冲击。许多项目被 AI 系统生成的大量提问、贡献与请求淹没,其中少数是合理且有用的,绝大多数则毫无价值。这与开源社区原本的常态输入差别不大,只是规模被成倍放大(Mitchell Hashimoto 估计差距达到了 10 倍)。

这导致一些项目开始限制由 AI 生成的贡献,甚至封禁不遵守相关政策的潜在贡献者。Liz Fong-Jones 和 Adam 等人考虑过彻底关闭外部贡献,Mitchell 则通过 Vouch 项目尝试系统性地限制贡献者权限,采取了不那么激进的方法。然而,Angie Jones 认为这类政策有些小题大做,她主张开源项目应当做好准备,为负责任的 AI 生成贡献提供一条可行路径。

无论如何,开源社区正遭受冲击几乎是毫无争议的。

应用

应用层面同样如此。尤其是在公开市场的认知里,AI 正在让许多应用变得无足轻重。一则标题可以概括这种趋势的本质:“‘让我出去’:交易员因 AI 恐慌而抛售软件股。”这种恐慌的成因多种多样,但最终大多指向同一个问题:如果代码变得可以被替代,那么靠售卖代码盈利的软件公司,究竟还值多少价值?

这种思考方式并不新鲜。例如,在 2024 年 12 月的播客访谈中,Satya Nadella 就曾表示:

在智能体时代,现有商业应用赖以存在的逻辑,很可能会彻底崩塌。

他的实际论点远比“ SaaS 已死”这类新闻标题更为微妙,但核心假设对 SaaS 供应商来说显然偏悲观。如今许多抛售 SaaS 股票的投资者都能理解并认同这一逻辑,如果你认为 SaaS 厂商卖的只是软件,这个结论确实说得通。然而,任何做过系统集成的人几乎都会反驳:软件只是销售内容的一部分,很多时候甚至只是一小部分。举几个例子:

  • 正如不少人所看到的,如果你购买人力资源软件,你同时也是在购买全球化的专业领域知识——更重要的是,降低自身责任。会计、CRM、ERP 等领域亦是如此。如何用软件搭建出应用,从来都不是真正的挑战。

  • 如上所述,这一点是可以被合理理解和阐述的。而较少被提及的,是人才库的问题。如果你使用的是 Salesforce、Workday 这类成熟的标准化应用,你可以直接雇佣有相关经验的人员来管理和使用软件。但如果软件是你自主开发的——就像很多金融机构放弃 Cloud Foundry、OpenShift 等成熟平台,转而自建内部开发平台后发现的那样——新员工入职的第一天,也将是他们第一次接触你们这套定制软件的第一天。这会加大招聘难度,降低入职与上手效率,这意味着必须获得足够广泛的运营收益,才能抵消由此带来的人力成本。

  • 说到运营,那些想用自研方案替代成熟产品的人都会面临一个始终没变的问题:即便 AI 大幅缩短了开发时间,把成本投入到非差异化的软件上真的值得吗?换句话说,一个组织是该重新造一套 CRM 系统,还是去创造业内还不存在、真正属于自己的独特价值?这是一个涉及众多变量的复杂权衡,其中最关键的显然是 SaaS 应用本身的成本。但总体来看,这也不是 AI 能简单解决的问题。

尽管企业应用市场正受到冲击,但 AI 更有可能扮演优化者的角色,而非彻底摧毁这个市场。然而,投资者当下的看法却并非如此。

基础设施

如前所述,Gas Town(现已更名为 Claude Code,本地版)意味着一名开发者如今能轻松顶得上 10 到 20 个虚拟开发者。从我们在开源社区的经验来看,各类项目显然还没准备好应对这种规模的产能暴增。那么下一个问题就是:我们的开发者基础设施又是否准备好了?

事实证明,答案是否定的。我们的基础设施还没有准备好。

例如,看看这封由十一家开源基金会与软件仓库联合发布的公开信。信中记录了开源基础设施里典型的 “公地悲剧” 问题,并进一步指出,AI 让情况变得更加严峻:

生成式 AI 与智能体的兴起,正进一步引爆由机器驱动、且往往存在大量浪费的自动化行为,这让本就存在的挑战愈发严峻。

换句话说,本就问题重重的现状,在如今大量涌入的智能体冲击下,变得愈发严峻。

经济

认为公开市场正受到 AI 的冲击,这一点并不难理解,看看如今投向 AI 相关基础设施的巨额资本就知道,尽管投资者的耐心正在消退,反对声音也越来越大。再看看 AI 在公开市场中过高的比重,甚至还没算上该领域部分投资背后的投机性算法。客观地说,这个行业已经处于泡沫之中,而泡沫终究只有一种结局。

即便在微观、个体层面,经济压力也已开始显现,而且情况可能会变得更糟。从行业讨论与近期厂商的沟通情况来看,这一切很快就会到来。尽管代码辅助类工具有着诸多能力,市场的现实也正逐渐深入人心。

这个过程大概是从去年夏天开始的,当时 Cursor 为控制成本调整了定价,随即引发了大规模用户反弹。从 RedMonk 今年的交流情况来看,这种情况还将持续。那些只专注功能、一味宣称“预览阶段免费”而不计成本的公司,如今正面临一场清算。

与此同时,对个人而言,经济压力同样令人头疼。就像普通家庭要为迪士尼、Netflix 等不同流媒体服务支付多份订阅费一样,不少开发者也被迫订阅高价模型,甚至同时订阅多个。一个典型例子是:有开发者曾因 Token 费用每月高达 2600 美元被反复限额,后来好不容易降到约 100 美元——即便如此,也比 AI 时代到来前开发者每月的工具开销多出 100 美元。另一边,有管理者每月自付 200 美元,还为团队里每位开发者每月预留 1000 至 2000 美元的预算。一位开发者在 Software Factory 的一个帖子中说道:

每人每天 1000 美元的数字让我震惊,但我怀疑用不了多久,这个数字就会显得微不足道。

AI 是一个截然不同的世界,而且成本要高得多。

结论

如上所述,这些还只是影响行业的部分例子。现实中的影响要广泛得多,因此,与 AI 使用增加相关的焦虑、担忧和恐慌,都是可以理解的。

然而,这场正在发生的 AI 冲击都是坏事吗?它是否会像中世纪的围城战一样,最终以惨烈的结局收场?

首先需要指出的是,新自动化技术的发展很少是线性的,也很难完全预测。James Bessen 博士提供的这张银行出纳员就业图表,在 ATM 推出前后,结果在当时是非常反直觉的。如今回头看才容易明白:随着 ATM 的普及,现金发放这类琐碎、低价值的工作被自动化,银行反而能开设更多网点,最终让这个看似被技术取代的岗位,整体就业人数不降反增。

然而,或许更重要的是:尽管这些工具是有成本的,但它们现在是——也可以成为——强大的加速器与赋能者,能大幅降低人们进行软件开发的门槛。它们有能力让那些曾经极为困难、甚至对部分人而言遥不可及的技能走向大众化。即便是 Grady Booch 这样的行业传奇人物——他一直对 AGI 相关言论保持着应有的怀疑态度,也对 AI 生成的粗劣代码嗤之以鼻——近期也表示,自己被 Claude 的能力“震撼”到了。在 Oxide 的播客中,Booch 给那些对 AI 感到焦虑的开发者的建议是什么?“保持冷静”“深呼吸”。亲身见证并推动了技术数十年演进的他认为,AI 只是行业长期抽象化历程中的又一步,而这一步,将为整个行业打开全新的大门。

最后,无论人们是否愿意,这些大门终将打开。AI 不会像自动织布机、蒸汽机或核反应堆那样成为过去。无论好坏,这项技术都会长久存在。我们剩下要做的,就是决定如何最好地放大它的价值,同时降低它带来的成本。AI 正是“两种事实可以同时成立”的典型例子:一方面,在消化这些工具的短期内,AI 带来的经济影响可能会很难看。正如 Adam 那段话的结论所言:“在我们真正理顺这一切之前,过程绝对会是一团乱麻。”

另一方面,就像互联网一样,这项技术已经跨过了“有趣的玩具”阶段,成为一股“改变世界的进化浪潮”。整个行业将从此彻底不同,再也回不到从前。

而行业与社会如何平衡它的成本与收益将决定这场冲击会持续多久,以及终点过后会是怎样的景象。

原文链接:https://redmonk.com/sogrady/2026/02/10/besieged/


目前遇到一个奇怪的分流问题。通过代理工具访问 V2EX 时,分流策略显示为“直连”,但可以正常打开;而访问 ChatGPT 时,虽然规则匹配正确,页面却提示“地区不支持( Access Denied )”。

为什么 V2EX 命中直连却能访问,而 ChatGPT 却不行?

怀疑是 QUIC 的原因?因为看 TCP 的都正确走了规则?这个哪里配置啊?

恳请各位大佬指点排查思路,感谢!

当迁移框架的代价大到无法承受时,不妨换个思路------不迁移代码,迁移开发体验。

一、背景:一个"不敢动"的老项目

我们团队维护着一个庞大的 AngularJS 1.x 前端项目,而且业务还在持续增长,新功能不断在加。

升级框架?我们认真评估过------迁移到 React 或 Angular 2+,无论哪条路,代价都大到难以接受:几十万行的模板代码要重写、业务逻辑要重新梳理、回归测试的工作量巨大,更关键的是,业务不会因为你要重构就停下来等你。

所以我们选择了另一条路:不迁移框架,而是让在老框架上的开发体验尽可能现代化。

第一步是引入 TypeScript。这一步效果立竿见影------类型系统带来的重构信心和代码可维护性提升是巨大的。

但还有一个痛点没有解决:HTML 模板里的开发体验依然原始 。在 .html 文件中写 AngularJS 表达式,没有自动补全、没有类型提示、没有跳转定义,写错了属性名只能等运行时才发现。相比之下,现代框架(React JSX、Vue SFC、Angular 2+ 模板)的 IDE 支持已经非常成熟了。

于是我决定写一个 VS Code 插件:ng-helper,为 AngularJS 1.x 补上这块缺失的拼图。

二、它能做什么?

先看效果,再聊技术。这个插件目前已经覆盖了日常开发中最高频的场景:

数据绑定的智能提示

这是最核心的能力。在 HTML 模板的 {{ }} 表达式和指令属性中,你可以获得:

  • 自动补全 :输入 ctrl. 后,自动列出控制器上的所有属性和方法,带有完整的类型信息
  • 悬停类型提示:鼠标悬停在表达式上,显示其 TypeScript 类型
  • 跳转到定义:Ctrl+Click 直接跳到 TypeScript 中对应的属性或方法定义
  • 函数签名提示:调用方法时显示参数列表和类型

组件与指令

自定义 component 和 directive 的标签名、属性名都有自动补全和悬停提示,点击可以跳转到定义处。补全时还会自动插入必填属性。

模板表达式诊断

在 HTML 中写错了 AngularJS 表达式?不用等到运行时了------插件会实时标红并给出错误信息。

更多实用功能

  • Filter 的补全、提示和跳转:
  • ng-* 内置指令补全:
  • templateUrl 一键跳转到 HTML 文件:
  • 通过 Controller/Service 名称跳转到实现文件:
  • 搜索 component/directive 在哪些地方被使用:
  • 依赖注入匹配校验:
  • inline-html 语法高亮:

三、技术挑战:在无类型的 HTML 和有类型的 TypeScript 之间架桥

功能看起来很自然,但背后的技术问题并不简单。核心挑战是:AngularJS 的 HTML 模板是纯字符串,没有任何类型信息,而我们的业务逻辑已经用 TypeScript 写了。如何把两者连接起来?

我并不是一开始就想好了所有方案,而是一步步被真实需求推着往前走的。下面按实际开发历程来讲。

第一步:先解决类型从哪来的问题

最初的目标很简单:在 HTML 模板的 {{ ctrl.userName }} 上提供自动补全和类型提示。表达式本身就是合法的 JS 属性访问,不需要特殊解析------但关键问题是,TypeScript 的类型信息怎么拿到?

这里有一个方案选型的思考过程。

方案一:自己启动一个 TypeScript 编译器

最直觉的想法是在扩展中直接调用 ts.createProgram(),自己建一个 TypeScript 程序实例来做类型分析。但很快就会发现几个严重问题:

  • 内存翻倍:VS Code 已经通过内置的 tsserver 为项目维护了一整套 AST 和类型信息。再起一个等于把整个项目的类型图在内存里复制一份,对于大型项目这是不可接受的。
  • 编辑不同步 :用户在编辑器里改了代码还没保存,createProgram() 只能读磁盘上的旧文件。tsserver 维护了内存中的编辑缓冲区,能实时反映用户的修改。
  • 重复造轮子tsconfig.json 的解析、项目引用的处理、文件监听和增量编译......这些 tsserver 都已经做好了,自己搞一套成本很高。

方案二:利用 VS Code 已有的 API

VS Code 提供了 vscode.executeCompletionItemProvidervscode.executeHoverProvider 等命令,可以请求内置 TypeScript 扩展返回补全和悬停信息。但问题是:

  • 这些 API 只对 .ts/.js 文件生效,对 .html 文件不会返回 TypeScript 的类型信息。
  • 即使通过虚拟文档等技巧绕过文件类型限制,返回的也是展示层的数据(字符串形式的标签、文档),而不是结构化的类型对象。我需要的是 ts.Type,需要能调用 .getApparentProperties()(获取所有属性)、.getCallSignatures()(获取函数签名)、.getNumberIndexType()(获取数组元素类型)等方法来逐层深入。

方案三(最终选择):写一个 TypeScript Server Plugin,"住进" tsserver 里面

TypeScript 提供了一个官方机制:TypeScript Server Plugin。通过这个机制,我可以把自己的代码注入到 tsserver 进程中运行,直接访问它内部的 ProgramTypeChecker 对象------不需要额外的内存,天然与用户编辑同步。

// TypeScript Server Plugin 的入口
function init(modules: { typescript: typeof import('typescript') }) {
    return {
        create(info: ts.server.PluginCreateInfo) {
            // info.project['program'] 就是 tsserver 当前维护的 Program
            // 通过它可以拿到 TypeChecker,进行任意类型查询
        }
    };
}

这是三个方案中唯一能同时满足"零额外内存"、"实时同步编辑"、"完整类型 API 访问"的方案。代价是------它运行在 tsserver 进程中,而我的 VS Code 扩展运行在扩展宿主进程中,两者之间没有直接的调用接口

第二步:搭建跨进程通信的桥梁

选择了 TypeScript Server Plugin 方案后,新的难题来了:扩展和插件运行在两个完全隔离的进程中,怎么让它们对话?

这个问题困扰了我相当长时间。我研究了各种可能的方案,也看了其他插件是怎么做的:

方案一:走 tsserver 的标准协议? 行不通。VS Code 严格管控了与 tsserver 之间的通信------标准协议中没有为插件预留自定义请求/响应的通道,多余的数据无法添加和返回。官方提供了一个 configurePlugin API,但它是严格单向的:只能从扩展向插件传配置,插件无法返回任何数据。

方案二:参考 Volar(Vue 语言工具)的 Request Forwarding? Volar 借助 VS Code 内部的 typescript.tsserverRequest 命令,通过 Language Server 作为中间层转发请求。方案很优雅,但它依赖一个独立的 LSP 服务器层,对我的场景来说太重了。

方案三:在 TS Plugin 中启动一个 HTTP Server。 研究了日本开发者做的 ts-type-expand 等项目后,我发现这条路最简单、限制也最少------插件在 tsserver 进程内启动一个 HTTP 服务,扩展通过 configurePlugin 把端口号传过去,然后作为 HTTP Client 发请求获取类型数据。

早期版本就是用的这个方案:TS Plugin 是 Server,VS Code 扩展是 Client。 简单直接,很快就跑起来了。

但随着使用,一个问题开始频繁出现:tsserver 会因为各种原因重启tsconfig.json 变更、TypeScript 版本切换、内存压力等),每次重启都意味着插件进程被销毁,HTTP Server 随之消失,扩展侧的连接断掉。虽然可以加重试逻辑,但扩展侧并不知道 tsserver 何时重启完成,轮询检测既浪费又不可靠。

于是我想:能不能把 Server 和 Client 的角色反过来?

如果扩展侧是 Server,它的生命周期是稳定的(只要 VS Code 窗口在就不会消失)。TS Plugin 重启后,主动作为 Client 重连上来------这个方向的重连逻辑就简单多了,因为 Plugin 加载时一定会触发 onConfigurationChanged,在这个回调里发起连接就行。

同时,角色反转后,HTTP 的请求-响应模式就不太合适了(Server 在扩展侧,但发起"请求"的也是扩展侧)。WebSocket 的全双工通信天然适合这种场景------连接建立后,双方可以自由收发消息,不再受"谁是请求方"的约束。

最终的架构演化成了这样:

VS Code 扩展
    │  Node.js IPC (process.send)
    ▼
RPC 服务进程(扩展 fork 出的子进程,WebSocket Server)
    │  WebSocket
    ▼
TypeScript 插件(运行在 tsserver 中,WebSocket Client)

中间多出一个 fork 的子进程,是因为 WebSocket Server 需要一个稳定运行的宿主。扩展通过 configurePlugin 把端口号传给插件,插件加载后主动连上来。tsserver 重启?没关系,插件重新加载后会自动重连,整个过程对用户无感。

到这一步,通信通道打通了。但具体怎么从 TypeScript 的类型系统里"挖"出类型信息呢?

ctrl.user.name 这个表达式为例。Plugin 收到请求后做了两件事:

第一件:找到 ctrl 对应的控制器类型。 Plugin 启动时会扫描项目中所有源文件,找到 .component('myComp', { controller: MyController, controllerAs: 'ctrl' }) 这样的注册语句并缓存起来。当请求到来时,通过 controllerAs 的值('ctrl')匹配到对应组件,再用 TypeChecker 从 controller: MyController 这个 AST 节点上取出类型。这里有个小坑:getTypeAtLocation() 返回的是 typeof MyController(构造函数类型),而不是实例类型,需要再通过 getDeclaredTypeOfSymbol() 转换成实例类型。

第二件:沿着属性链逐层查询类型。 把表达式字符串 ctrl.user.namets.createSourceFile() 解析成一棵 AST(纯内存操作,不涉及磁盘),然后按 AST 结构逐层向下:

ctrl          → 直接使用控制器实例类型(rootType)
ctrl.user     → rootType.getProperty("user") → 得到 User 类型
ctrl.user.name → User类型.getProperty("name") → 得到 string 类型

每一步都调用 TypeChecker 的 getTypeOfSymbolAtLocation() 获取真实类型,支持泛型推导、联合类型、函数返回值等所有 TypeScript 类型系统能力。

这个"临时 AST 定结构,真实类型图查类型"的两步法,就是整个插件类型解析的核心。早期版本的补全、悬停、跳转定义就是这样实现的。

第三步:被迫手写解析器------当 AngularJS 语法超出 JavaScript 的边界

随着功能往深处走,我开始遇到麻烦。

前面那套"把表达式直接交给 TypeScript 解析"的流程能跑起来,是因为 ctrl.userName 这类表达式本身就是合法的 JavaScript。但当我尝试支持 ng-repeat 和 Filter 时,这条路走不通了------AngularJS 模板中的表达式不是标准 JavaScript,而是 AngularJS 自己的表达式语言。它长得像 JS,但有关键差异:

  • | 是 Filter(管道)操作符,不是位或:items | orderBy:'name'
  • ng-repeat="item in items track by item.id" 有自己独特的语法
  • 没有 varletfunction 等声明语句
  • 某些 JS 关键字(如 forreturn)在这里是合法的标识符

这些语法直接丢给 ts.createSourceFile() 会解析出错。而我又不能放弃已有的类型查询流程------那是整个插件的核心能力。

所以解析器的定位很明确:它不是要替代 TypeScript 做类型分析,而是作为一个"预处理层",把 AngularJS 的特殊语法解析理解后,从中提取出合法的 JavaScript 表达式,再交给已有的流程去查类型。 比如 items | orderBy:'name' 经过解析器处理后,插件知道这是一个 Filter 表达式,真正需要查类型的部分是 itemsng-repeat="item in ctrl.users track by item.id" 被解析后,插件能提取出 ctrl.users 作为集合表达式,item 作为迭代变量。

参考 AngularJS 源码中 $parse 的实现,我手写了一个完整的词法分析器和语法分析器ng-parser),有一些有趣的技术细节:

  • 完整实现了 AngularJS 的表达式文法(定义在一份 CFG 语法规则中)
  • 支持 Filter 表达式、ng-repeat、ng-controller 三种不同的解析入口
  • 产出带有完整位置信息的类型化 AST,支持 Visitor 模式遍历
  • ng-repeat 中的 astrack by 子句使用了正则预扫描 + 扫描范围收缩的技巧来避免歧义------先用正则找到 astrack by 的位置,然后把扫描器的结束位置设置在那里,这样表达式解析器就不会"越界"

第四步:巧妙的变量替换------让 TypeScript 理解 ng-repeat 的作用域

有了解析器之后,还有一个问题。考虑这样一段模板:

<div ng-controller="UserCtrl as ctrl">
  <div ng-repeat="item in ctrl.users">
    {{ item.name }}
  </div>
</div>

当用户在 item.name 上悬停时,我们需要知道 item 的类型。但 itemng-repeat 在运行时创建的作用域变量,TypeScript 并不认识它。

解决方案是一层变量替换 :把 item 替换成 ctrl.users[0]。这样 item.name 就变成了 ctrl.users[0].name------一个 TypeScript 完全可以解析和推导类型的合法表达式。

类似地,ng-repeat 的特殊变量也有对应的处理:

  • $index → 直接标记为 number 类型
  • $first$last$even$odd → 直接标记为 boolean 类型

当用户在 HTML 中触发补全时,完整的流程是:

  1. 扩展侧用 ng-parser 解析表达式,识别出光标位置的语义上下文
  2. 对 ng-repeat 等作用域变量进行替换,生成合法的 TypeScript 表达式
  3. 通过 RPC 发送给 tsserver 中的 TypeScript Plugin
  4. Plugin 用 TypeChecker 逐层解析类型(属性访问 → 函数调用 → 数组索引......)
  5. 结果原路返回,展示给用户

这就是整个插件的核心链路:解析 → 替换 → 查询 → 展示。 每一层解决一个特定的问题,最终让 HTML 模板中的 AngularJS 表达式获得了与 .ts 文件中同等质量的类型信息。

四、从 0 到 1.0:一年的迭代

回顾这个项目的 Changelog,从 2024 年 7 月的 v0.0.5 到 2025 年 7 月的 v1.0.0,经历了 18 个版本。功能是逐步叠加的:

阶段版本核心里程碑
起步v0.0.5 ~ v0.1.0组件名补全、数据绑定的补全和类型提示
成长v0.2.0 ~ v0.5.0跳转到定义、directive 支持、语法高亮
成熟v0.6.0 ~ v0.8.0依赖注入校验、ng-repeat 支持、Filter 支持
完善v0.9.0 ~ v1.0.0表达式诊断、函数签名提示

每个版本都是由真实的开发痛点驱动的。比如 ng-repeat 的支持,是因为团队日常大量使用列表渲染,没有 item 的类型提示严重影响效率。又比如依赖注入校验,是因为 AngularJS 的 DI 是基于字符串匹配的,参数顺序写错是非常隐蔽的 Bug。

五、AI 视角:如果今天重新来过

这个插件的开发始于 2024 年中,当时 AI 编程助手还没有今天这么强大。如果今天重新来过,有一些环节 AI 可以显著加速:

解析器开发:手写词法分析器和语法分析器是这个项目中最耗时的部分之一。如果有 AI 辅助,可以先描述语法规则,让 AI 生成初版解析器代码,再手动调优和补全边界情况,开发周期能大幅缩短。

测试用例生成:解析器需要大量的测试用例覆盖各种边界情况。AI 非常擅长根据语法规则生成多样化的测试输入,包括各种合法和非法的表达式组合。

HTML 模板分析:光标位置分析(判断光标在标签名上、属性名上、属性值上、模板表达式里......)涉及大量的条件分支和边界判断,这类"规则明确但情况繁多"的代码正是 AI 的强项。

但有些地方 AI 帮不了太多:整体架构设计(三层 RPC、变量替换策略)、TypeScript 内部 API 的摸索(很多没有文档,需要读源码)、以及那些只有在真实大型项目中才会暴露的 Edge Case。这些仍然需要开发者对问题域的深入理解。

我的体会是:AI 是优秀的"代码执行者",但架构和设计上的创造性思考,仍然是人的核心价值。

六、写在最后

面对遗留系统,开发者常常陷入两个极端:要么"忍着用",要么"推倒重来"。但其实还有第三条路------用工具化的思维,让当下变得更好

一个 VS Code 插件不会让 AngularJS 变成 React,但它能让每天在这个代码库中工作的开发者少一些心智负担、多一些开发效率。有时候,解决问题的最好方式不是消灭问题本身,而是改善与问题共处的方式。

如果你也在维护类似的老项目,希望这篇文章能给你一些启发------不一定是去写一个 VS Code 插件,而是:面对不可改变的约束时,找到自己能改变的那个切入点。

*

ng-helper 是一个开源项目,欢迎体验和反馈:GitHub | VS Code Marketplace

在企业成长与团队协作的全流程中,知识固化是转化个体经验、沉淀组织资产、保障能力传承的核心环节。尤其在人员流动频繁、业务快速迭代、跨项目经验难以迁移的当下,固化环节的结构化与系统性,直接决定了组织能否“避免重复踩坑”、核心资产是否安全留存。然而传统的知识管理模式往往陷入文档堆砌、检索困难、经验流失的困境,一款适配团队沉淀场景与知识复杂度的归档式知识固化工具,成为突破这一瓶颈的关键。

一、知识固化的核心痛点与工具价值

(一)知识沉淀的典型痛点

在实际办公场景中,知识固化环节常面临以下问题,直接拉低团队学习效率与资产留存质量:

  • 知识存储逻辑混乱,分类层级不清晰,宝贵经验散落在聊天记录或个人电脑中,导致“经验随人走”;
  • 固化流程动态调整繁琐,传统文件服务器修改成本高、版本管理混乱,难以快速同步最新的业务标准;
  • 知识关联关系不明确,归档时缺乏背景信息与关联案例,导致后人查阅时难以理解应用场景;
  • 固化状态与审核滞后,缺乏明确的入库标准,导致知识库中充斥着大量低质量、过时的碎片信息;
  • 跨部门知识同步不及时,各部门闭门造车,信息孤岛现象严重,导致组织内部重复性研发与劳动。

(二)归档式固化工具的核心价值

一款优质的归档式知识固化工具,能够从规范、资产、传承三个维度解决上述痛点:

  • 规范层面:通过可视化归档交互,简化知识提取、分类入库、版本迭代等操作,降低沉淀成本;
  • 资产层面:直观展示组织知识图谱与贡献分布,实现资产有序管理,避免智慧流失;
  • 传承层面:实时呈现知识固化状态与应用频次,明确知识依赖关系,缩短新人培养周期。

二、归档式知识固化的全流程管理规范

清晰的流程是资产持续增值的基础,归档式知识固化需遵循“提取-归档-审核-赋能-复盘”的标准化路径:

  1. 知识精细化提取:按“领域-专题-条目”三级结构,将实践经验拆解为可复用、可检索的最小知识单元,明确核心要点、应用场景、颗粒度;
  2. 资产精准匹配归档:基于知识分类、安全等级,通过归档操作将内容分配至对应库区,复杂案例可设置多维标签;
  3. 知识版本灵活调整:根据业务变更与反馈,通过工具快速更新固化内容、修订人、生效日期,实时适配最新标准;
  4. 关联关系可视化管理:通过归档链接建立知识间的前置原理、后置案例依赖关系,直观呈现智慧逻辑;
  5. 固化状态实时跟踪:统一使用“草稿 / 审核中 / 已固化 / 已失效”四类状态标识,通过看板视图实时监控,对陈旧知识及时清理;
  6. 固化复盘沉淀优化:周期结束后,分析知识利用率、贡献活跃度,总结沉淀经验,优化组织学习策略。

三、归档式知识固化工具全维度推荐

(一)轻量易用型(适配初创/小团队)

1. 板栗看板

  • 核心特性:支持知识卡片化管理,通过归档操作实现经验入库、状态切换、标签分类,直观展示知识分布,支持自定义知识字段(贡献者、失效时间等);
  • 适配场景:10人以内小团队、单项目经验总结、快速迭代的流程固化;
  • 优势亮点:零学习成本,开箱即用;界面简洁,归档操作流畅;支持知识批量导入,适配高频次的项目复盘归档需求。
    在这里插入图片描述

2. Trello (知识库模式)

  • 核心特性:经典看板视图,知识以卡片形式呈现,支持归档至不同专题列、设置复查提醒与分类标签;
  • 适配场景:个人成长记录、创意素材归档、跨部门简单标准分配;
  • 优势亮点:灵活性极高,可自定义归档流(如待整理/审核中/正式发布);支持多端同步,随时随地固化灵感。
    在这里插入图片描述

(二)协同高效型(适配中型敏捷团队)

1. 语雀 (团队空间)

  • 核心特性:提供文档、知识库双视图,支持结构化归档、目录编排、版本回溯,实时展示团队贡献排行;
  • 适配场景:10-50人产研团队、多业务线经验共享、前后端技术标准固化;
  • 优势亮点:编辑器能力强大,归档体验专业;支持知识关联附件与代码块;可与主流办公软件集成,固化通知实时触达。
    在这里插入图片描述

2. Notion

  • 核心特性:万能数据库架构,通过关联属性实现知识归档、体系规划、状态更新,内置强大的页面嵌套逻辑;
  • 适配场景:追求极致美感与逻辑的组织、需要灵活搭建知识架构的项目;
  • 优势亮点:界面极其精美,归档逻辑严丝合缝;支持批量处理归档状态;可设置知识里程碑,辅助把控沉淀节奏。
    在这里插入图片描述

(三)综合全能型(适配中大型/多项目团队)

1. Confluence

  • 核心特性:企业级知识协同平台,支持复杂归档审批流、空间自定义,可建立深度知识依赖,精细化权限管理;
  • 适配场景:大型研发组织、集团级知识管理、合规性要求高的经验固化;
  • 优势亮点:归档规则极其严谨;支持自动化固化辅助(如根据内容自动推荐归档路径);全维度数据追踪,助力资产优化。
    在这里插入图片描述

2. 飞书知识库

  • 核心特性:可视化目录+看板视图,支持即时通讯对话一键归档、进度跟踪、资产调度,支持全员负载监控;
  • 适配场景:中大型企业、多业务线并行沉淀、需要强实时协作的项目;
  • 优势亮点:深度整合办公流,归档操作极其便捷;支持搜索全局化,实现固化信息跨平台秒级触达。
    在这里插入图片描述

四、归档式知识固化机制设计与落地建议

(一)机制设计核心原则

  1. 结构统一:坚持“领域-专题-条目”三级结构管理归档项,确保全员对知识层级认知一致;
  2. 信息完整:每条固化知识必须绑定“贡献人+关键词+更新时间+密级”,为归档检索提供依据;
  3. 状态可控:知识生命周期仅保留“草稿 / 待审 / 固化 / 过时”四类,避免状态过多导致维护混乱;
  4. 价值均衡:建立知识质检机制,通过归档审核实现优胜劣汰,避免知识库被垃圾信息填充;
  5. 依赖清晰:明确知识点间的逻辑关联,通过可视化归档关联,提前规避理解偏差。

(二)落地避坑指南

  1. 工具选型避坑:小团队避免选择功能过于繁重的工具(如Confluence),优先选择板栗看板、语雀等工具,降低固化门槛;
  2. 知识拆解避坑:知识点不宜过大或过碎,过大难以吸收,过碎增加维护成本,建议以“单点问题3分钟内读完”为标准;
  3. 沉淀激励避坑:避免仅凭行政命令要求归档,利用工具的活跃度排名,通过积分或荣誉实现固化动力激励;
  4. 版本管理避坑:建立知识更新机制,避免长期不维护导致“死库”;通过归档记录定期检查失效内容,及时更新。

五、常见问题解答(Q\&A)

Q1:如何通过归档式工具快速应对业务转型导致的知识调整?

A:利用工具的批量归档功能,先将受影响的旧标准统一移动至“待修订”区,再根据新战略,批量更新知识内容或废止过时条目。

Q2:如何避免知识固化时出现内容冲突?

A:优先选择支持协同编辑与版本对比的工具(如语雀),归档前系统自动比对。同时设置“固化审核岗”,当内容重复时自动提示,避免冗余沉淀。

Q3:小团队预算有限,是否有免费的归档式知识固化工具可选?

A:板栗看板免费版、语雀个人空间、Notion免费版均能满足基础沉淀需求,支持知识归档、标签管理与成员分享。

六、结语

知识固化是组织进化的“记忆中枢”,其核心价值不在于“存储文档”,而在于“精准提炼经验、灵活应对变化、保障智慧传承”。无论是小团队选择板栗看板这类轻量化工具,还是大企业使用Confluence等平台,工具只是载体,关键在于建立标准化的固化流程。

未来,归档式知识固化将朝着“智能化+主动化”方向发展,结合AI实现自动提取归档、失效智能预警。唯有让知识变得有序、可视、可追溯,才能真正实现组织资产的持续增值,助力团队达成卓越目标。