Enable javascript in your browser for better experience. Need to know to enable it? Go here.
第32期 | 四月 2025

语言 & 框架

语言 & 框架

采纳 ?

  • 83. OpenTelemetry

    OpenTelemetry 正迅速成为可观察性领域的行业标准。随着 OpenTelemetry 协议 (OTLP) 规范的发布,行业内有了一个标准化的方式来处理追踪 (traces)、指标 (metrics) 和日志 (logs)。这减少了在监控分布式解决方案和满足互操作性需求时的多重集成或主要代码重构的需要。随着 OpenTelemetry 扩展对日志和性能分析的支持,OTLP 为所有遥测数据提供了一个一致的传输格式,简化了应用的仪表化过程,使全栈可观察性对于微服务架构更加易于实现且具有可扩展性。OTLP 已被诸如 DatadogNew RelicGrafana 等供应商采纳,帮助企业构建灵活的、与供应商无关的可观察性技术栈,避免被锁定在专有解决方案中。OTLP 支持 gzip 和 zstd 压缩,大幅减少遥测数据的大小并降低带宽使用——这对于处理高遥测数据量的环境尤为关键。为了支持长期发展,OTLP 确保 OpenTelemetry 保持强大且面向未来的标准,巩固了其作为遥测传输事实标准的地位。

  • 84. React Hook Form

    我们将 React Hook Form 视为 Formik 的替代方案。由于默认使用非受控组件,它提供了显著更好的开箱即用的表现,特别是在大型表单上。React Hook Form 很好地和各种基于 schema 的验证库(比如Yup, Zod 等)进行了集成。此外 React Hook Form 提供了很大的灵活性,使其易于和现有代码库和其他库集成。你可以把 React Hook Form 和像shadcn或者AntD这样的外部受控组件库一起使用。凭借出色的性能、无缝集成和活跃的开发社区,它是构建大型表单或表单密集型应用的可靠选择。

试验 ?

  • 85. Effect

    Effect 是一个强大的 TypeScript 库,用于构建复杂的同步和异步程序。在 Web 应用开发中,常常需要为异步处理、并发、状态管理和错误处理等任务编写大量样板代码。而 Effect-TS 通过采用函数式编程的方法简化了这些流程。借助 TypeScript 的类型系统,Effect 能够在编译时捕获难以检测的问题。我们的团队曾使用过 fp-ts 进行函数式编程,但发现 Effect-TS 提供的抽象更贴近日常任务的需求,同时使代码更易于组合和测试。尽管传统方法如 Promise/try-catchasync/await 也能处理类似场景,但在使用 Effect 之后,我们的团队发现没有理由回到传统方法。

  • 86. Hasura GraphQL engine

    Hasura GraphQL engine 是一个通用的数据访问层,可简化在不同数据源上构建、运行和管理高质量 API 的过程。它能够为各种数据库(包括 PostgreSQL、MongoDB 和 ClickHouse)及数据源即时生成 GraphQL API,使开发者能够快速且安全地获取所需数据。我们发现,Hasura 在实现 服务端资源聚合 的 GraphQL 应用场景中非常易用,并已将其应用于多个 数据产品项目中。然而,对于其强大的联合查询和统一模式管理功能,我们仍然保持 谨慎态度。值得一提的是,Hasura 最近推出了 PromptQL 功能,允许开发者利用大语言模型(LLM)实现更自然直观的数据交互。

  • 87. LangGraph

    LangGraph 是一款面向基于 LLM 的多 agent 应用构建的编排(Orchestration)框架。与抽象程度较高的 LangChain 相比,它提供了更底层的节点(Nodes)和边(Edges)等基本原语,允许开发者精细地控制 agent 工作流、记忆管理与状态持久化。这种基于图的设计使工作流更加可控且易于定制,使得在生产级应用中的调试、扩展和维护变得更加容易。尽管其学习曲线较陡,但 LangGraph 凭借其轻量化与模块化设计,在开发 agent 应用时展现出了强大的灵活性和扩展性。

  • 88. MarkItDown

    MarkItDown 能将多种格式(PDF、HTML、PowerPoint、Word)转换为 Markdown,从而增强文本的可读性和上下文保留。由于 LLM 可以从格式化提示(如标题和章节)中获取上下文,Markdown 能够很好地保留结构以提升理解能力。在基于 RAG 的应用中,我们的团队使用 MarkItDown 将文档预处理为 Markdown 格式,确保逻辑标记(如标题、子章节)保持完整。在生成嵌入之前,结构感知的分块方法帮助保留了完整的章节上下文,从而提升了查询响应的清晰度,尤其是对于复杂文档而言。Markdown 被广泛用于文档编写,而 MarkItDown 的 CLI 工具也因此成为一个极具价值的开发者生产力工具。

  • 89. Module Federation

    Module Federation 允许在微前端之间指定共享模块并实现依赖的去重。随着 2.0 版本的发布,模块联邦已经发展到可以独立于 webpack 工作。此更新引入了一些关键功能,包括联邦运行时(Federation Runtime)、全新的插件 API,以及对流行框架(如 React 和 Angular)及热门构建工具(如 RspackVite)的支持。通过采用模块联邦,大型 Web 应用可以拆分为更小、更易管理的微前端,使不同的团队能够独立开发、部署和扩展,同时高效地共享依赖项和组件。

  • 90. Prisma ORM

    Prisma ORM 是一个开源的数据库工具包,帮助 Node.js 和 Typescript 应用简化应用数据库操作。它提供了一种现代化的、类型安全的数据库访问方式,能够自动化数据库模式迁移,并提供直观的查询 API。与传统 ORM 不同,Prisma ORM 使用纯 JavaScript 对象定义数据库类型,而无需依赖装饰器或类。我们对 Prisma ORM 的使用体验非常积极,它不仅更符合 TypeScript 的开发生态,还能很好地融入函数式编程范式中。

评估 ?

  • 91. .NET Aspire

    .NET Aspire 旨在简化开发者本地机器上分布式应用的编排工作。Aspire 允许您在本地开发环境中编排多个服务,包括多个 .NET 项目、依赖的数据库和 Docker 容器——所有这些都可以通过一条命令完成。此外,Aspire 为本地开发提供了观察工具,包括日志记录、跟踪和指标仪表板,这些工具与用于预生产或生产环境的工具解耦。这大大改善了开发者在构建、调整和调试任何系统的可观察性方面的开发体验。

  • 92. Android XR SDK

    Google 和三星与高通合作推出了 Android XR, 这是一款专门为扩展现实(Extended Reality, XR)设计的操作系统。它在未来计划支持智能眼镜以及其他智能设备。大多数的安卓应用无需修改或者只需少量修改即可运行在该系统上,但它的核心理念是从零构建全新的空间应用,或者将现有的应用“空间化”。目前,全新的 Android XR SDK 被指定为此类项目的首选开发工具。Google 还提供了开发指南帮助开发者选择 SDK 内集成的工具与技术。目前,该 SDK 已经推出开发预览版本。

  • 93. Browser Use

    Browser Use 是一个开源的 Python 库,使基于 LLM 的 AI 代理能够使用网页浏览器并访问 Web 应用。它可以控制浏览器并执行包括页面导航、输入操作和文本提取在内的各种步骤。该库支持多标签页管理,能够在多个 Web 应用之间协调执行操作。在需要 LLM 代理访问网页内容、执行操作并获取结果的场景中,该库非常有用。它支持多种 LLM,并利用 Playwright 来控制浏览器,结合视觉理解与 HTML 结构提取,以优化 Web 交互体验。该库在多代理场景中正逐渐受到关注,使代理能够协作完成涉及 Web 交互的复杂工作流。

  • 94. CrewAI

    CrewAI 是一个专为构建和管理 AI 代理而设计的平台,它能让多个 AI 代理协同工作,共同完成复杂任务。我们可以将其理解为一群 AI 工作者组成的团队,每个成员都有自己的专长,并能齐心协力以达成共同目标。我们曾经在雷达中的LLM 驱动自主代理中提及过它。除了现有的 Python 开源库以外,CrewAI 现在还推出了企业级的解决方案,使组织可以创建基于代理的应用程序并应用于真实业务场景,在云基础设施上运行,并连接到现有的数据源(如 SharePoint 或者 JIRA)。我们已经多次使用 CrewAI 去应对生产环境中出现的问题,例如自动验证促销码,调查交易失败的原因以及处理客户支持相关的请求。在代理技术快速发展的背景下,我们对 CrewAI 的能力充满信心,因此将其归入“评估”类别。

  • 95. ElysiaJs

    ElysiaJS 是一个端到端类型安全的 TypeScript Web 框架,最初主要为 Bun 设计,但也兼容其他的 JavaScript 运行环境。与tRPC等替代方案不同(这类方案会强制要求特定的 API 接口结构),ElysiaJS 不强制任何特定的 API 接口结构。这使得开发者可以创建符合行业标准的 API,如 RESTful、JSON: API 或 OpenAPI,同时仍能提供端到端的类型安全。ElysiaJS 在 Bun 运行环境上运行表现极好,在某些基准测试中甚至可与 Java 或 Go Web 框架相媲美。如果你在构建backend-for-frontend (BFF),ElysiaJS 是一个尤其值得考虑的选择。

  • 96. FastGraphRAG

    FastGraphRAGGraphRAG 的一个开源实现,专为高检索准确性和性能而设计。它利用个性化 PageRank 限制图导航范围,仅关注图中与查询最相关的节点,从而提升检索准确性并改善大语言模型(LLM)的响应质量。FastGraphRAG 还提供图形的可视化表示,帮助用户理解节点关系及其检索过程。该工具支持增量更新,非常适合处理动态和不断演变的数据集。针对大规模 GraphRAG 用例进行了优化,FastGraphRAG 在提升性能的同时有效降低了资源消耗。

  • 97. Gleam

    Erlang/OTP 是一个强大的平台,用于构建高并发、可扩展且具备容错能力的分布式系统。传统上,其语言是动态类型的,而 Gleam 在语言层面引入了类型安全。Gleam 构建于 BEAM 之上,将函数式编程的表达能力与编译时的类型安全相结合,从而减少运行时错误并提高可维护性。Gleam 拥有现代化的语法,与 OTP 生态系统高度集成,充分利用了 Erlang 和 Elixir 的优势,同时确保了强大的互操作性。Gleam 社区活跃且友好,我们期待它的持续发展。

  • 98. GoFr

    GoFr 是一个专为构建 Golang 微服务而设计的框架,通过抽象常见的微服务功能(如日志记录、追踪、指标、配置管理和 Swagger API 文档生成)来简化开发工作。它支持多种数据库,处理数据库迁移,并且能够与 Kafka 和 NATs 等消息代理进行 pub/sub 操作。此外,GoFr 还包括支持定时任务的 cron 作业功能。该框架旨在降低构建和维护微服务的复杂性,让开发者能够将更多精力集中于业务逻辑的编写,而非基础设施的管理。尽管市面上已有许多流行的 Go 库用于构建 Web API,但 GoFr 正在逐步获得关注,非常值得基于 Golang 的微服务开发团队探索和使用。

  • 99. Java后量子密码学(Java post-quantum cryptography)

    非对称加密——这一保障了多数现代通信安全的核心概念——依赖于数学上难以求解的问题。然而,今天使用的算法中的问题在量子计算机面前将变得容易解决,这推动了替代方案的研究。基于格的密码学是其中最被看好的候选技术。尽管与密码学相关的量子计算机仍需多年以后才能面世,对于那些需要长期保证安全的应用来说,后量子密码学已成为一个值得关注的领域。此外还存在一种风险,攻击者可能会记录当前的加密数据并等待量子计算机推出后破解。

    Java 后量子密码学JDK 24 中迈出了第一步,该版本预计在 3 月底正式发布。此次更新引入了JEP 496JEP 497 ,分别实现了一种密钥封装机制以及一套数字签名算法。二者均基于标准并设计为可以抵挡未来可能的量子计算攻击。虽然来自 Open Quantum Safe 项目的liboqs已经提供了基于 C 语言的实现并提供了 JNI 封装,但原生 Java 版本实现的出现依旧鼓舞人心。

  • 100. Presidio

    Presidio 是一个数据保护 SDK,用于在结构化和非结构化文本中 识别匿名化 敏感数据。它可以通过命名实体识别(NER)、正则表达式和基于规则的逻辑检测个人身份信息(PII),如信用卡号、姓名和位置等。Presidio 支持 自定义 PII 实体识别和去标识化,使企业能够根据其特定的隐私要求进行调整。尽管 Presidio 能够自动识别敏感信息,但它并非万无一失,可能会遗漏或误识别数据。在依赖其结果时,务必保持谨慎。

  • 101. PydanticAI

    随着构建基于 LLM 的应用程序以及代理的技术的快速发展,构建和编排这种应用的框架往往难以跟上步伐,或者找到合适的长期适用的抽象。PydanticAI是该领域的最新成员,旨在简化实现过程的同时,避免不必要的复杂度。它由著名的Pydantic的开发者们打造,并吸收了早期框架的经验——其中的很多框架已经依赖 Pydantic。PydanticAI 没有尝试成为一个多功能工具,而是提供了一个轻量级但是功能强大的方案。它不仅兼容主流的模型 API,而且内置了结构化输出处理的特性,并且引入了基于图形的抽象层来管理复杂的代理工作流。

  • 102. 资源受限应用中使用 Swift

    自从 Swift 6.0 发布以来,这门语言已经超越了 Apple 生态系统的限制,通过对主要操作系统的改进支持,使在 资源受限应用中使用 Swift 变得更加可行。传统上,这一领域主要由 C、C++ 以及近年来的 Rust 占据,因为它们具备低级别的控制、高性能以及符合诸如 MISRA、ISO 26262 和 ASIL 等标准的认证编译器和库。尽管 Rust 已逐步获得类似的认证,但 Swift 尚未开始这一认证过程,这限制了其在安全关键型应用中的使用。

    Swift 的日益普及,得益于其在性能与安全特性之间的良好平衡,包括强类型安全和自动引用计数(ARC)内存管理功能。虽然 Rust 的所有权模型提供了更强的内存安全保证,但 Swift 提供了一种不同的权衡方式,这种方式对某些开发者来说更加易于接受。Swift 和 Rust 都基于 LLVM/Clang 编译器后端,这使得一方的技术进步也能惠及另一方。凭借其将代码编译为优化机器码的能力、开源的开发模式以及不断扩展的跨平台支持,Swift 正逐步成为应用范围更广的有力竞争者——远远超越了其最初的 iOS 根基。

  • 103. Tamagui

    Tamagui 是一个用于高效共享 React Web 和 React Native 样式的库。它提供了一个 设计系统,包含可复用的已样式化和未样式化组件,可以在多个平台上无缝渲染。其可选的 优化编译器 通过将样式化组件转换为网页上的原子化 CSS 和原生视图上的提升样式对象,显著提升了性能。

  • 104. torchtune

    torchtune 是一个专为 PyTorch 设计的库,用于编写、后训练以及实验性探索大语言模型。它支持单 GPU 和多 GPU 设置,并通过 FSDP2 实现分布式训练。该库提供基于 YAML 的 recipes(配方),用于微调、推理、评估以及量化感知训练等任务。每个配方都聚焦于特定功能,避免复杂的参数标志配置,注重代码清晰性而非过度抽象化。此外,torchtune 包含一个强大的 CLI,可用于高效地下载模型、管理配方和运行实验。

暂缓 ?

  • 105. Node超载

    几年前,我们观察到了一种现象,即 Node 超载 :Node.js 经常被用在一些不合理的场景中,甚至在没有考虑其他替代方案的情况下就被选择了。尽管我们理解某些团队倾向于使用单一语言栈——即便要付出一些权衡的代价——但我们仍然倡导 多语言编程(Polyglot Programming) 。当时,我们指出 Node.js 因在 IO 密集型工作负载中的高效性而享有应得的声誉,但也提到其他框架已经赶上,提供了更好的 API 和更优越的整体性能。同时,我们警告说,Node.js 从未适合计算密集型工作负载,这一局限性至今仍然是一个重大的挑战。如今,随着数据密集型工作负载的兴起,我们看到团队在应对这些问题时也面临着越来越大的困难。

无法找到需要的信息?

 

每期技术雷达中的条目都在试图反映我们在过去六个月中的技术洞见,或许你所搜索的内容已经在前几期中出现过。由于我们有太多想要谈论的内容,有时候不得不剔除一些长期没有发生变化的条目。技术雷达来自于我们的主观经验,而非全面的市场分析,所以你可能会找不到自己最在意的技术条目。

下载 PDF

 

English | Español | Português | 中文

订阅技术雷达简报

 

立即订阅

查看存档并阅读往期内容