语言 & 框架
试验
-
85. Effect
Effect 是一个强大的 TypeScript 库,用于构建复杂的同步和异步程序。在 Web 应用开发中,常常需要为异步处理、并发、状态管理和错误处理等任务编写大量样板代码。而 Effect-TS 通过采用函数式编程的方法简化了这些流程。借助 TypeScript 的类型系统,Effect 能够在编译时捕获难以检测的问题。我们的团队曾使用过 fp-ts 进行函数式编程,但发现 Effect-TS 提供的抽象更贴近日常任务的需求,同时使代码更易于组合和测试。尽管传统方法如
Promise/try-catch
或async/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)及热门构建工具(如 Rspack 和 Vite)的支持。通过采用模块联邦,大型 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
FastGraphRAG 是 GraphRAG 的一个开源实现,专为高检索准确性和性能而设计。它利用个性化 PageRank 限制图导航范围,仅关注图中与查询最相关的节点,从而提升检索准确性并改善大语言模型(LLM)的响应质量。FastGraphRAG 还提供图形的可视化表示,帮助用户理解节点关系及其检索过程。该工具支持增量更新,非常适合处理动态和不断演变的数据集。针对大规模 GraphRAG 用例进行了优化,FastGraphRAG 在提升性能的同时有效降低了资源消耗。
-
97. Gleam
Erlang/OTP 是一个强大的平台,用于构建高并发、可扩展且具备容错能力的分布式系统。传统上,其语言是动态类型的,而 Gleam 在语言层面引入了类型安全。Gleam 构建于 BEAM 之上,将函数式编程的表达能力与编译时的类型安全相结合,从而减少运行时错误并提高可维护性。Gleam 拥有现代化的语法,与 OTP 生态系统高度集成,充分利用了 Erlang 和 Elixir 的优势,同时确保了强大的互操作性。Gleam 社区活跃且友好,我们期待它的持续发展。
-
98. GoFr
-
99. Java后量子密码学(Java post-quantum cryptography)
非对称加密——这一保障了多数现代通信安全的核心概念——依赖于数学上难以求解的问题。然而,今天使用的算法中的问题在量子计算机面前将变得容易解决,这推动了替代方案的研究。基于格的密码学是其中最被看好的候选技术。尽管与密码学相关的量子计算机仍需多年以后才能面世,对于那些需要长期保证安全的应用来说,后量子密码学已成为一个值得关注的领域。此外还存在一种风险,攻击者可能会记录当前的加密数据并等待量子计算机推出后破解。
Java 后量子密码学 在 JDK 24 中迈出了第一步,该版本预计在 3 月底正式发布。此次更新引入了JEP 496 和 JEP 497 ,分别实现了一种密钥封装机制以及一套数字签名算法。二者均基于标准并设计为可以抵挡未来可能的量子计算攻击。虽然来自 Open Quantum Safe 项目的liboqs已经提供了基于 C 语言的实现并提供了 JNI 封装,但原生 Java 版本实现的出现依旧鼓舞人心。
-
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 根基。
暂缓
-
105. Node超载
几年前,我们观察到了一种现象,即 Node 超载 :Node.js 经常被用在一些不合理的场景中,甚至在没有考虑其他替代方案的情况下就被选择了。尽管我们理解某些团队倾向于使用单一语言栈——即便要付出一些权衡的代价——但我们仍然倡导 多语言编程(Polyglot Programming) 。当时,我们指出 Node.js 因在 IO 密集型工作负载中的高效性而享有应得的声誉,但也提到其他框架已经赶上,提供了更好的 API 和更优越的整体性能。同时,我们警告说,Node.js 从未适合计算密集型工作负载,这一局限性至今仍然是一个重大的挑战。如今,随着数据密集型工作负载的兴起,我们看到团队在应对这些问题时也面临着越来越大的困难。
无法找到需要的信息?
每期技术雷达中的条目都在试图反映我们在过去六个月中的技术洞见,或许你所搜索的内容已经在前几期中出现过。由于我们有太多想要谈论的内容,有时候不得不剔除一些长期没有发生变化的条目。技术雷达来自于我们的主观经验,而非全面的市场分析,所以你可能会找不到自己最在意的技术条目。