埃隆・马斯克:特斯拉重启的Dojo3将用于 “天基AI计算”

xiaohack博客专注前沿科技动态与实用技术干货分享,涵盖 AI 代理、大模型应用、编程工具、文档解析、SEO 实战、自动化部署等内容,提供开源项目教程、科技资讯日报、工具使用指南,助力开发者、AI 爱好者获取前沿技术与实战经验。


在生成式 AI 重构数据生产力的时代,BI 工具正从"被动响应"走向"主动洞察"。在 2025 年 4 月 InfoQ 举办的QCon 全球软件开发大会(北京站)上,阿里云智能集团瓴羊高级技术专家王璟尧分享了“从数据到决策:AI 驱动的 Quick BI 架构设计与实践”,他介绍了阿里云 Quick BI 如何通过技术架构跃迁、结合大模型的突破实现从传统 BI 到 AI 驱动的智能 BI 的跨越式进化。并重点解析领域大模型与 BI 引擎的协同设计、NL2SQL 算法调优与架构演进、AI + BI 在场景落地实践过程中的技术权衡,为行业提供可复用的技术范式。 预告:将于 4 月 16 - 18 召开的 QCon 北京站策划了「AI 重塑数据生产与消费」专题,将深入探讨如何系统化地运用大模型与智能体技术,重塑数据全链路的每一个环节。内容涵盖引擎与架构优化、数据治理、开发与运维提效、下一代 BI 与数据工具,以及智能的取数与分析等多个方向。如果你也有相关方向案例想要分享,欢迎提交。 以下是演讲实录(经 InfoQ 进行不改变原意的编辑整理)。 早期 BI 是在数据仓库和数据库不断发展演进后形成的需求场景:数据仓库会将各类数据融合到一起进行数据清洗和分析,随后业务人员对自助分析产生了一系列诉求,早期的 BI 工具便应运而生,像 90 年代的 Business Object 就是一个比较有代表性的例子,具有一定限度的自助式分析能力。当时其实还没有“商业智能”这一概念,随着自助分析能力要求的不断提高,可视化、自助式可交互的分析需求也越来越强烈,于是敏捷 BI 应运而生:基于可视化的自助式、可交互的分析,以 Tableau/Qlik 为代表,其最大特点是可通过拖拉拽、按钮点击等简单操作就能完成报表的搭建工作。 进入大模型时代,大模型强大的语言分析和生成能力以及更接近人类思维的推理方式,让 BI 领域进行了重新定位:即从一个单纯的工具到数字助手的进化,模型能力的突破让正在的商业“智能”可以从 DEMO 和实验室走向实际应用。Quick BI 也在各类大模型技术发展的时代洪流中逐步演进,不断成熟与发展,实践落地智能小 Q 系列,给用户带来全新的、端到端到产品体验。 传统数据分析存在局限性,它几乎主要聚焦于报表平台的工作流程:业务方提出需求,产研团队加工执行,然后制作简单的报表,以辅助管理仪表板。传统数据分析主要面向一线业务和老板,工具即使再敏捷,交付物本质上也是以固定式报表作为承载。尽管敏捷 BI 的诞生缓解了部分问题,但业务团队和数据团队之间难以融合贯通的问题依然无法避免。而在 AIGC 时代,大模型加持的对话式分析可以对自然语言灵活响应,简单、自动地完成需求,或许“人人都是数据消费者”及“数据民主化”不再仅仅是一句口号了。 基于用户的实际需求和大模型 Agent 技术发展,我们对大模型驱动的业务落地演进方向做了大致判断。从执行到思考,从智能到智慧,难度系数逐步增加。大模型刚出现的初期,大家都在做 Copilot(即搭建助手):用户通过 Copilot 用简单指令或描述就能辅助搭建报表,从而降低 BI 工具的使用门槛和成本。然后是 Chat BI,理论上它会改变整个分析流程,用户像和人类对话一样向系统提问,由系统即时理解并返回准确的分析结果,所有人都可以随时随地的获取数据,降低传统 BI 报表和仪表板出现的必要性。 再接着是洞察分析:基于数据、业务知识,利用机器学习算法、数据挖掘技术的融合,叠加上大模型的语言理解和推理能力,让使用传统算法的洞察分析脱胎换骨,实现更精准的总结、诊断、归因,能够自动发现数据中隐藏的价值。第四阶段可能还为时过早,很多厂商将其称为 DI(即决策智能 Decision Intelligence)。 随着数据量爆炸式增长和分析技术进步,如多模态、多元信息整合、多 Agent 技术等,我们可能不再满足于单个功能,产品形态会演变成分析平台主动在海量数据中发现价值,通过完整数据报告或主动 Feeds 流方式推送给我,不仅能给出“发生了什么”,还能进一步解释 “为什么会发生”、“未来会怎么样”,为用户提供更高阶的决策支持,这是也许是目前能看得到的数据分析领域的理想态。 基于对业务落地的判断,企业级智能 BI 分析离不开 BI 工具、大模型和企业私域知识这三者的有效融合。首先,BI 工具作为核心框架,凭借强大的数据分析和可视化能力,将规模庞大和复杂的数据转化为直观易懂的图文报表,为企业搭建洞察业务的桥梁。要最大化的发挥 BI 工具本身的作用,如高性能分析引擎、可视化、安全管控、开放集成能力、协调办公能力等。其次,BI 工具并非孤立的存在,大语言模型的加入为其注入了灵魂,通过大模型理解自然语言指令,精准理解用户意图,大大降低数据分析门槛。此外,随着多模态、multi-agent 等技术的成熟,大模型的记忆、推理、规划、反思、工具使用能力反过来推动大模型在各领域的丰富应用,包括数据分析产品。最后,绝大部分企业级的智能数据应用都离不开私域数据,作为大模型应用的根据,只有将企业数据、企业内部知识、行业知识深度整合,才能让 BI 分析更具针对性和业务价值。 Quick BI 是阿里云上的一款 SaaS 的 BI 产品,连续 6 年入选 Gartner 的商业智能和数据分析魔力象限,也连续 6 年作为国内唯一入选榜单的国产 BI 产品,承载其智能化能力的产品叫智能小 Q。 在大模型时代,有句话说得非常到位:所有产品都值得用大模型技术重做一遍,BI 产品也不例外。传统的 BI 产品,其分析流程在模式上相对比较固定,从数据到结果,基本要经历从数据连接、到数据建模、到数据分析、到数据可视化、再到数据协同和消费的整个流程。这个流程离不开业务人员的人工搭建操作,对用户的模型理解和配置技能有较高要求。而在大模型时代,这个流程的每一个环节都有可能被重塑。例如,在数据连接环节,我们可以对数据准备的 ETL 任务进行辅助开发,对连接的数据源进行数据探查和校验;在建模上,可以对字段质量进行评估,实现计算字段生成优化和 SQL 诊断;在数据分析阶段,对报表一键美化、洞察归因和自然语言生成报表;在消费端,有 Chat BI 智能问数;最终的消费态则可以有智能决策和数据解读报告这样的形态。当我们打开思维去尝试探索后会发现,这里面的发挥空间会非常大。 BI Copilot 的具体形式就是智能搭建。分析师在原有搭建报表的流程时,用自然语言替代繁杂的功能寻找、拖拉拽按钮和配置,直接完成用户想要的操作。在这个领域,我们更多瞄准的是那些高频多步的、或者强依赖分析师经验的功能。例如: 金额大于 3000 的标红 - 就是个典型的条件格式场景; 帮我美化下这个报表 …… 从技术流程图可以看出,我们将原本强耦合在底层产品内部的一些能力做了解耦和开放,在渲染引擎、搭建引擎和用户会话之间构建了一整套指令系统和前端 API 层。大模型作为稳定的“中介”,负责对接会话层和指令系统,将用户自然语言意图转换成底层引擎能识别的“API”指令。在这个部分,我们基于基座模型微调了适合 QBI 搭建的增强指令识别系统,即带有指令 CMD 和参数 Params 的 NL2API。初级 API 进过指令系统的复杂处理,如依赖检测、指令调度、执行等,最终会调用暴露出来的 API 层,最终在渲染引擎和搭建引擎的加持下,完成一整套动作。不过,在这层面上 NL2API 系统相对封闭,因为大模型本质上主要是为 Quick BI 或自身应用系统内部业务服务的。 BI copilot 的另一个重要应用是数据洞察。用户对洞察的期望通常是:看懂图表 ->补充信息 ->分析和解释数据现象 ->定位问题 ->支撑行动决策。这几个步骤里,任意一个步骤想要做好都需要天时地利人和的:算法够优秀、支撑数据够多、流程组织够清晰。 目前我们在洞察领域做了如下三方面的探索: 一是 内置洞察算法,这部分主要使用经典统计计算模型,毕竟智能化并不能完全等于大模型。例如,关注指标变动是否正常,若不正常,是哪些维度造成异常,本质上是参考历史数据、行业经验及其他关联数据,寻找对业务目标最具解释力的维度,这就是内置洞察算法。 二是 大模型的洞察解读,将报表数据和背后所在数据集的数据以及配置元数据等信息组合,利用通用模型在数据解读、语义理解等方面的优势,通过 Prompt 工程 +Multi-Agent 的方式完成的解读方式。 第三,QuickBI 具备外置 Agent 接入能力(如 Dify 或百炼等),让客户特定的工作流和业务逻辑对接到小 Q 对话流里。作为一款通用工具型产品,一定没法满足所有用户的个性化定开需求,这算是一种体验很好的曲线救国方式。 在当今的商业智能(BI)领域,Chat BI 这一概念正逐渐成为焦点。Quick BI 已经成功落地了智能问数这一场景,这在国内国际都引起了众多企业的浓厚兴趣。目前,众多厂商的 Chat BI 产品都在致力于实现类似的功能,技术路线也呈现出多样化,如 NL2DSL(自然语言到领域特定语言)、NL2Python、NL2SQL 等,可谓是百家争鸣。 以 QuickBI 的智能问数为例,一个智能问数的用户旅程大致如下:用户首先输入一个问题,系统在前置处理阶段会进行权限管控和流量管理等操作。随后,我们利用经过训练的大模型领域模型对问题意图进行判断。如果该任务需要多步才能完成,系统会将其拆分为多个子任务;若单步即可返回结果,则直接进入核心流程。通过一系列召回算法,我们将元数据、知识库等信息组合起来,输入到大模型中。最终,大模型以 DSL 和 SQL 的形式将结果传递给 BI 底层的查询引擎。查询引擎负责方言翻译、高级计算下推等复杂流程,并最终以图表形式呈现结果。这些图表在呈现过程中仍然可以进行交互和调整。整个流程的关键在于,我们能够清晰地梳理从上到下的所有字段血缘关系。 在通用大模型与自研领域模型的流程设计中,我们秉持着开放的态度。本质上,用户的自然语言通过大模型转换为代码,代码再通过我们工程内部的方式转化为技术逻辑,最终在产品中体现为具体的展现形式。BI Agent(在某些场合被称为 AI 中间层),它通过组织编排各种大模型的输出和流程代码,实现自然语言与代码的有效连接。BI Agent 会定义一些 API 和 DSL,为了让模型能够与应用系统有效交互,我们正在通过 MCP 的方式将其能力开放。 BI Agent 与中间层的控制中心配合,经过业务上下文处理、意图识别、任务拆分等步骤,使 BI 系统能够理解模型的返回结果,并据此进行进一步的操作。此外,在处理复杂任务时,我们还会按照正确的顺序执行编排的子任务,确保任务的成功完成。举个例子,需要获取“X 部门的经营分析报告”,LLM 本身是不会直接总结的,它需要调用取数工具先获取每个月的销量情况,再基于各种拆解数据做归纳分析,这里的“取数工具”就作为最原子化的 BI Agent 存在。 在设计工程架构的最初阶段,我们在最初阶段经历了诸多纠结与讨论。我们曾反复思量,是要打造一个代码助手,还是 SQL 插件,又或是增强版的 BI 工具呢?无论最终选择何种形态,技术路径的抉择都必须着重考量几个关键问题。首先,该系统是否具备企业级的特性。这关乎到权限管理、租户隔离等诸多方面,以及它能否与现有的业务场景无缝兼容。其次,系统的前端界面是否交互便捷、易于使用,这至关重要。再者,系统是否拥有开放集成的能力,能否提供 API 接口,是否能够嵌入到自有系统,或是接入自有知识库和数据源。此外,多场景的适应性也不容忽视。在早期,我们发现许多开源的 Demo 项目,它们仅用几行代码就跑起来一个 Chat BI,虽在特定场景下效果显著,但难以在企业级的真实场景中落地应用。最后,系统的未来拓展性也是必须考量的因素之一。 下图展示了智能小 Q 的整体技术架构。从图中可以清晰地看到,智能小 Q 从上至下依次为应用层、AI 中间层、自研领域大模型和通用模型层,以及 BI 基座引擎层。AI 中间层处于上层应用与大模型之间,主要承担任务分发与协同的职责。我们通过构建 API 和 DSL,实现了 Agent 与算子的有效对接,让大模型应用更具确定性,避免以前通过自然语言输入的应用表达不稳定,使得在 BI 领域的大模型的应用编程变成确定性应用编程。作为支撑小 Q 的关键部分,基座的 BI 引擎确保了数据分析的强复用性。分析引擎涵盖了从数据连接建模到复杂分析的全方位能力,而渲染引擎则承载着图表可视化及交互的重任。整套系统都是在 Quick BI 已有的能力基座上进行开发的。 在自研模型的 SQL 语义生成技术路线上,目前 主流的有两种方式:Text to SQL 和 Text to DSL。我们对这两种技术路线进行了长期且深入的对比分析。Text to SQL 是直接将文本转换为 SQL 语句,直接在物理数据源上进行查询;而 Text to DSL 则是先经过一层抽象的语法,再分发到数据源进行查询。从业务特性来看,Text to SQL 在门槛较低的情况下,能够充分利用大模型的泛化能力,简化数据分析过程。然而,它也存在一些局限性。由于缺乏数据模型的抽象定义,直接对标物理表,使得大模型生成 SQL 的过程变得异常复杂。 此外,大模型不可能被训练去了解市面上众多数据源的方言。以 Quick BI 为例,它支持四五十种方言,如果要对私域数据进行私有模型训练,成本将难以控制。而且,即使是同一数据源的不同版本,如 MySQL 5.7 和 8.0,它们支持的函数也有差异(如开窗函数),这对大模型来说并不友好。从技术限制角度而言,DSL 的灵活性相对较弱,其查询能力受限于 BI 引擎的能力边界。从适用场景来看,Text to SQL 更适合门槛较低、没有复杂业务分析要求的场景;而 Text to DSL 则更适合业务场景明确、面向大型团队和企业级应用的场景。对于 QuickBI 来说,技术路线从纯 Text to DSL 到 Text to SQL to DSL,再到混合模式,可谓是吸收各个路线的优势。 我们从工程链路的角度剖析一下问数。用户问了一个相对复杂的问题后,经过模型的复杂链路处理,包括 Agent 路由、各种实体召回,由自研 BI 大模型生成 DSL,经由工程端的查询参数构造后,发给查询引擎进行取数。查询分析引擎会处理复杂计算字段(如 LOD 函数、自定义抽象函数)、注入用户的行列权限等,最终翻译成物理 SQL 和内存计算进行取数处理。从下图的例子可以看到,相对抽象的 LOD 函数会被稳定转义成适配不同数据源方言的 JOIN, 大大降低了模型生成 SQL 的难度和稳定性。在这种工程架构下,可以解决传统 NL2SQL 面临的三大关键问题:1)保证可用,具备企业级的管控能力,如完备的权限能力、开放集成能力等;2)保证可信,BI 引擎的引入降低模型生成原生 SQL 的难度,对取数的每个链路都做到逻辑有迹可循,查询元数据血缘透出,提升结果的可信度;3)结果可交互,复用了 BI 丰富的可视化能力,在生成的图表后链路上可修改并进行二次查询。 与通用模型处理的其他类型问题相比,NL2SQL 算法领域面临的挑战主要集中在以下三个部分: 语义的模糊到精确:自然语言天然是非精确的,同样一个意图可以有多种不同方式的表达,而 SQL 代码及执行是精确的,用户对结果的正确性的容忍度非常低。因此 NL2SQL 天然属于模糊到精确的多对多映射问题。 语言结构化:SQL 是“结构化查询语言”,而对比与 Python/C++ 等其他编程语言是过程化的语言。这里有什么区别呢?过程化语言可以做片段化的逻辑生成,对模型推理的要求偏低,但结构化语言需要结构和逻辑整体正确,难度相对大些。 在问数任务的绝大部分场景下,用户的问题只提供了信息的局部,只是回答信息必须上下文的很少一部分。有更多信息以企业内部约定俗称、表元数据的简称、数据的具体内容形式存在。这点相信在这个领域的各位应该也有比较深刻的体会。事实上,有大量的 Query 之外的“隐藏信息”需要补全,而这又无形中对系统的配套设施提出了更高要求。 我们在训练模型前,对要达到的效果做了定义和预演。即什么样的数据分析助手是“好”的助手? 首先在风格和调性上来说,主要有以下几点: 有效性,模型必须保证准确和稳定,即单位 token 的有效信息密度高,不啰嗦; 准确性,在最小可用的数据和关联拓展之间做一个平衡。用户问数往往是看一系列数据,不是单个数据,我们会在某些场景下主动给一些关联数据,实践下来带来会给用户一些“小惊喜”; 在复杂任务上的表现,过程中逐步规划、反馈,通过多个简单任务组合解决复杂任务。当然,这里如何拆分子任务、子任务的粒度也是另外一个较大的话题了(过于原子化和过于抽象都是有问题的)。 其次对于大模型能力,主要有以下几点: 基础能力稳定性高:在问数基础、高频场景下需要稳定且高准确度的表现,避免过多的过程性解释; 在数据分析场景下的专业性:模型训练能够对数据分析师、业务常用的分析思路有理解,能给出专业的数据建议。比如用户问单个指标的时候,同时看一下指标趋势也没有坏处; 规划、矫正能力:具备将复杂任务拆解为用户易于理解。易于干预的子任务,能根据不同的上下文、用户提示,矫正复杂任务的执行规划。 从算法的视角来重新看问数的链路:大模型在生成抽象 SQL/DSL 的过程中,经历了元数据选取、上下文添加、问题改写、完整 Prompt 构建、输出、转译等步骤。。这其中最重要的一步就是领域模型的训练,领域模型训练需要足够的信息来进行正确推理,这些信息主要包括任务描述和通识能力,例如大模型不知道今天是哪天,我们需要将当前时间戳加入其中。其次是表和字段信息,这是非常关键的,如果没有表的字段信息和维度枚举值,对于 NL2SQL 来说将是一场灾难。再者是私域知识库,相关的知识条目以及是否做强制改写等,都会给大模型提供启发。另外,参考样例也很重要,什么是好、什么是坏的,我们在产品上通过点赞、点踩等方式给大模型提供真实的 few-shot 示例。经过各种选表问题改写 SQL 等流程后,最终生成的 Prompt 会交给领域模型完成推理。 前面有讲到,最初我们定义了特定的查询语言 DSL, 用于表达对于不同查询参数的描述,由大模型直接学习并生成 DSL,再通过中间层将抽象的 DSL 在元数据和知识库的召回后实例化,转换成实际 QBI 的查询参数执行真实的取数;这里的几个好处,比如 SQL 方言屏蔽、高级计算能力复用等等。但随着支持的问数能力越来越多,问数的意图千变万化,要准备这套 DSL 语义的样本成本在逐渐增大,毕竟 DSL 是我们自定义的,通用模型训练并不含这部分内容。同时,各类通用基座模型本身对意图转简单 SQL 确是有大量积累的。于是我们在单表查询的标准 SQL 基础上拓展了抽象函数和高级计算符,变成增强 SQL 语言,以训练基座模型对于增强 SQL 的生成来提升对复杂意图的理解准确度,然后通过自研语法解析器来改写成 DSL 映射。也就是说,增强 SQL 和 DSL 是可以稳定转换的。这样既能巧妙利用通用模型的能力,又能大大降低训练样本的准备成本。至此,复杂查询意图到取数流程就被串联起来了。 对于上述架构的最终选择,有两个重要因素支撑才能成立。第一个是丰富的算子和函数,得益于 Quick BI 内置大量逻辑函数,如聚合数值处理、文本处理,以及 LOD 函数、时间算子等。例如,计算环比对于 SQL 来说可能很复杂,我们会将大量复杂分析场景定义封装在这些算子和函数里,大模型在生成增强 SQL 时不需要感知这些复杂内容,它只需要知道如何使用这些算子和函数即可,这有点像现在流行的 Agent 方式。第二个是完善的数据模型,我们作为 BI 系统本身就支持很多关联模型,包括自定义 SQL 模型,如单表星形、雪花星系等经典 BI OLAP 模型。实际上,我们会将复杂的多表关联合并和嵌套查询下推到数据建模层,这些信息对大模型来说是透明的。大模型不需要感知这些,因为 Chat BI 不仅仅是 NL2SQL 算法的炫技,更重要的是解决实际客户的问题。有时我们会将复杂建模放在前面,对于整个大模型来说,它只是一个单表的、带有各种复杂函数的 SQL 生成逻辑。 另一个重要的计算逻辑是多步计算。多步计算是为了解决一些纯 NL2SQL 无法处理的问题,转而通过 NL2Python,或者说 NL2Python Agent 的方式来解决。举个简单例子,询问销售金额日环比超过 40% 的用户有哪些?我们可能只能算日环比,超过 40% 对于人来说很简单,但实际上这是一个多步计算的解决方案。在这个流程中,大模型会进行多次推理,这里的 Python Agent 会触发大模型在当前输入上进行二次推理。通过合理的任务拆解,可以降低整个复杂问题的解决难度。 此外,关于领域模型的训练,我们这边的训练主要分为三个部分:继续预训练、微调和 GRPO。简单来说,在预训练阶段,我们会把 Query 质量不高但有大量抽象 SQL 的东西作为预训练的一部分。在微调阶段,我们会把高质量的 query 和 SQL 对应关系放到微调中进行训练。最终通过强化学习 GRPO 的方式把整个模型训练好。 大模型是离不开好数据的,只有大量 + 优质的训练数据加持,模型才有可能突破。下图是我们数据准备的一个数据飞轮: 一方面我们依赖了人工构造,我们有一只专门的数据团队去构造、收集复杂的训练数据。其次,利用模版、AI 去生成,各类大小模型的结合提升训练数据的质量和覆盖。然后是数据蒸馏,对一些复杂问题,我们会通过大模型训练小模型的方式。与此同时,我们还会在数据准备过程中利用若模型生成一些有价值的错误,这些样本随后可以在执行引擎的协助下执行验证并进行错误归纳,相当于反例的标注,这对于训练非常有必要。我们实践下来发现,有价值的错误在整个训练过程中是非常有必要的。 以零售品牌为例,它们直接利用我们的 SaaS 产品来推进功能演进。还有快消品客户,更是将我们的小 Q 直接嵌入到他们的业务系统中。实际上,在客户那里,我们进行了一些实践和调优工作。作为一个通用的 BI 工具,无需任何配置的前提下想要直接达到 90% 以上的准确率是不现实的。事实上,脱离具体应用场景谈准确率,多少有些不切实际。这里有一个案例,一开始我们完全没有介入时,准确率仅为 65%。通过交付过程中的介入,引导用户如何使用、如何提问,以及让用户通过点赞、点踩的方式参与,我们的模型可以自动进行 SFT。在这种场景下,最终将模型强化后的问数准确率提升到了 92%。主要提升点在于指标维度的扩充、指标覆盖等,让用户尽可能多地提供信息,针对复杂问题进行自动拆解。很多时候,客户的问题并非单纯的问数问题,比如他们可能会让你去分析一下某个情况,这就需要进行问题拆解。此外针对无法回答的问题,提供用户提示,即拒识方面的引导优化也是非常有必要的。 目前大模型擅长的包括:语义理解、代码生成、分析思路、文本生成、任务编排… 我认为大模型在以下几个方面会有长足进步,具体进步包括: 动态推理能力:包括任务拆分、逻辑推演、冲突解决; 多模态感知能力:未来可能会整合跨平台的报表数据、根据截图、报告来挖掘出更有意义的数据科学部分; 模型能力本身的持续进化、自我反思机制的增强:在整体水位线上能让智能来的更加真切; 自主决策能力:非预设路径的行动生成和决策。在更高的角度来看,随着大模型这些能力的持续进化,我相信将会推动智能 BI 从任务执行者向决策主体跨越,进而让整个领域在交互模式和能力边界上都有相应的变化。 嘉宾介绍 王璟尧,毕业于浙江大学信电系,10 年数据产品建设和技术架构经验。现任阿里云智能集团高级技术专家,Quick BI 数据智能研发负责人,负责 BI 平台架构、新一代智能 BI 建设等工作,在元数据管理、BI + AI、大模型应用等领域上有丰富经验。 会议推荐 从基础设施、推理与知识体系,到研发与交付流程,再到前端、客户端与应用体验——AI 正在以更工程化的方式进入软件生产。2026 年 QCon 全球软件开发大会(北京站)将以 「Agentic AI 时代的软件工程重塑」 作为大会核心主线,把讨论从 「AI For What」,走向真正可持续的 「Value From AI」。BI 领域的技术演进及趋势
传统 BI VS 大模型驱动 BI

大模型驱动的业务落地方向

大模型落地 QuickBl 全景
大模型重塑整个 BI 分析流程

BI Copilot


Chat BI

通用大模型与自研领域模型的混合流程设计


工程架构设计
智能小 Q 分层架构

自研模型在 SQL 语义生成的可控性
一个问数问题的工程链路

工程架构设计
NL2SQL 算法的挑战

一个问数问题的大模型旅程

基于 BI 引擎的 NL2SQL 算法演进

Text2DSL:丰富的算子和函数



大模型与好数据:训练数据准备

业务价值与展望
智能小 Q 客户实践场景

Bl 未来发展


撰稿 | 陈姚戈、高允毅 编辑 | 王一鹏 一场从线下蔓延至线上的舆论战争,正发生在伊朗。 线下,伊朗当局正在组织“反骚乱”集会;线上,断网、媒体管制和信息封锁同时发生。 在网络被关闭的时段,伊朗国营媒体几乎成为唯一的信息源。信息真空之中,大量影像只能在社交平台上传播,却很难被证实或证伪。 网民和非营利组织通过自发事实核查发现,伊朗官方发布了使用后期编辑和 AI 生成影像,刻意营造了“反骚乱”的舆论氛围。这类内容在 X 平台上获得了数万次观看。 与此同时,另一方同样出现大量 AI 生成内容。一段被广泛转发的视频显示,有人从建筑物上扯下国旗,发布者称有人撤下了伊朗国旗。这段视频经过反向图片搜索后,被证实拍摄于 2025 年 9 月尼泊尔抗议活动。 非营利组织 WITNESS“技术威胁与机遇”项目副主任 Mahsa Alimardani 指出,在传播过程中被 AI“增强画质”的现场照片,反而被当局用来否定影像本身的真实性,对抗议事实进行整体抨击。 真假在这一过程中被同时稀释,AI 让“知晓真相”这件事变得更难了。 这并非人们第一次意识到 AI 的风险。近几年,从《要求暂停更强模型训练的公开信》,到《针对超级智能的联合声明》,理想主义者反复呼吁放慢脚步、建立约束。但现实是,这些警告几乎没有改变产业的整体方向,也未能阻止更强模型和更激进应用的持续推出。 尤其是在战争中。 从俄乌冲突、以伊冲突,再到今天在伊朗发生的舆论战,包括生成式 AI 在内的技术被广泛采用,而战场也正成为前沿 AI 技术和武器的“实验场”。 《中国航空报》指出,乌克兰战事加速了 AI 在实战中的应用落地,如自主导航、目标识别和交战以及情报处理等。根据《青年参考》,大量军事科技初创企业和国防创新企业在乌克兰聚集,使乌克兰逐渐演变为相关技术的重要孵化地。 更深层的变化在于,科技公司、金融资本与国家战争机器之间,正在形成紧密绑定。 2025 年 11 月,美国国防部长 Pete Hegseth 公布新一轮国防采购改革,明确指出原有国防体系已难以应对新的战争形态,并宣布启动新的“作战采购系统”,以缩短交付周期、提升灵活性。 美国国防部试图引入硅谷的投资和迭代逻辑,重塑军备采购体系,让军队像科技公司一样快速试错、快速部署、快速扩张。 资本迅速跟进。今年 1 月,a16z 宣布新一轮募资超过 150 亿美元,其中明确投向国防科技领域的资金超过 11 亿美元。与此同时,a16z 还与美国陆军参谋长 CTO Alex Miller 和美国海军部 CTO Justin Fanelli 等美国军方要员共同推出播客和专栏,教初创企业如何拿下国防部订单。 以色列政府通过初创公司加速器计划 Innofense、增加对本土初创企业的采购额等,系统性地推动私营技术进入军事和安全体系。围绕这一政策环境,近几年集中涌现出一批专注国防科技的初创公司和投资机构,“Patriotism as a Service”成为了以色列创投圈的时髦概念。 类似的转向也正在欧洲发生。2024 年,欧盟投资银行放宽了对军民两用技术项目的投资限制,并参与设立规模约 1.75 亿欧元的国防股权基金,以吸引更多社会资本进入相关领域。《环球》杂志指出,这些政策为初创企业提供了关键的早期订单和市场入口;同时,在技术、市场、资本与战略因素的共振下,欧洲初创企业大力进军军工产业,欧洲军工创业投资正迎来爆发式增长。 世界正处这样的时刻:AI 的能力已被大规模引入战争中最敏感的场景,而大型科技公司缺乏主动约束自身的动力;本应推动规则协调与共识形成的国际组织,在关键议题上的作用仍然有限。 一段“万人上街支持政府”的航拍视频,在 1 月 12 日突然刷屏社交平台。 画面中,伊朗记者坐在一架直升机敞开的舱门边,一边俯瞰地面“集会人群”,一边对着镜头解说:伊朗民众自发走上街头,支持本国政府,对抗美国和以色列的干预。 镜头掠过,整条街道被伊朗国旗铺满,整齐庞大的队伍,看上去就是一场“全民拥护政府”的壮观场面。 很快,这段视频就被贴上了另一个标签:AI 造假。 伊朗政策分析师 Behnam Gholipour 公开质疑画面真实性,并谴责这是人工智能生成的虚假信息。 有网民对画面细节提出质疑,并逐帧分析指出:记者坐在直升机舱门边,却未见任何安全防护;衣着与面部状态未呈现高速气流下的正常反应;手部动作存在异常形变;街道背景中还出现了已被烧毁的建筑…… 质疑声越滚越大,IRIB 很快放出第二段“证据视频”: 画面里,记者坐在电脑前,播放完整的集会录像,试图证明,先前那段航拍并非伪造。 但马上有人发现新录像存在前后矛盾之处。 而另一张广泛流传的关于集会的图片,有眼尖网民放大画面,发现有人“长”在伊朗国旗上,上半身悬在空中,下半身则直接消失。 社交平台的评论画风逐渐一边倒,IRIB 不仅在用可疑的视频讲述“盛大集会”,还在用同样粗糙的方式掩盖伪造。 网民对伊朗官方的愤怒,很快堆积在评论区。 有人开始恶搞那位直升机记者,用各种 AI 工具生成新的“伪造视频”和恶搞图。“既然你用 AI 篡改现场,那我们就用 AI 把你变成梗。”这种“以梗对梗,以 AI 反制 AI”的创作,在社交平台上快速扩散。 AI 玩梗是“技术抵抗”和消解意义的一种方式。但以 AI 对抗 AI 终不是种解法。 非营利组织 WITNESS “技术威胁与机遇”项目副主任 Mahsa Alimardani 在网络欺骗、审查和监控领域有超过 15 年的研究经验。她在最近发表的文章《怀疑如何在伊朗成为一种武器》中指出:“AI 对信息的操纵,以及围绕这种操纵产生的怀疑,本身都会成为掩盖真相的工具。”(AI manipulation, and the very suspicion of it, serves those who have the most to hide.) Mahsa Alimardani 回忆称,集会自 12 月 28 日爆发后仅数小时,伊朗当局相关账号就开始将抗议现场的真实影像贴上“AI 伪造”的标签。 一个典型案例发生在抗议爆发后的第二天:一段在德黑兰拍摄的低清视频中,一名抗议者坐在街道中央,面对安保力量。该事件已被多方核实确认属实。 但随着视频在网络上不断传播,出现了经过 AI 增强画质的版本。BBC 波斯语记者 Hossein Bastani 发布了这段清晰版视频,但未注意到其已被 AI 处理。支持伊朗官方的相关账号随即抓住这一点,将 AI 修图留下的痕迹当作“证据”,以此否定这张照片和其他抗议影像的真实性。 上图为低清原视频;下图为 AI 增强后的版本。Hossein Bastani 已就未注意到其 AI 增强特性而道歉。 Alimardani 认为,深度伪造让 AI 贴上“欺骗工具”的标签,但实际上很多常用的图片编辑工具都带有生成式 AI 的能力,公众很难分辨出哪一种是善意修图、哪一种是恶意伪造。正因为如此,伊朗不仅可以利用 AI 本身,还可以利用公众对 AI 的怀疑,把这种怀疑变成一种“加速剂”,进一步压制和否定抗议信息。 在战场中,AI 不仅影响人们理解战争,更近一步参与战争本身。 俄乌冲突与以伊冲突,为观察 AI 如何介入舆论战与实际作战提供了清晰案例。 欧盟资助的虚假信息意识与韧性项目团队(DARE),在调研俄乌冲突时的信息操纵时发现,相关舆论操纵活动已明显呈现出自动化、规模化特征。调查显示,水军账号不再主要依赖人工运营,而是借助 AI 工具批量生成虚假社交身份,并模拟真实用户的行为轨迹。 以 Meliorator 为代表的 AI 软件包,可以自动生成包含头像、兴趣与互动历史的账号资料,并通过技术手段规避平台的异常检测机制,使这些账号在短时间内融入正常的信息流。同时,AI 生成的图像与视频被用于构建情绪指向明确的叙事,削弱受众对信息真实性的判断能力。 这种变化在中东地区的冲突中表现得更加直观。 以伊冲突期间,一张“伊朗击落以色列 F-35 战斗机”的图片在社交平台迅速传播。图片中,一架喷气式战机坠毁在沙漠中,残骸周围挤满围观民众。这一画面一度让外界误以为伊朗在空中对抗中占据上风。 但图像本身的物理逻辑存在明显漏洞。现场人物与车辆比例失衡,沙地上也缺乏高速坠毁应有的冲击痕迹。 据澎湃新闻旗下事实核查栏目“澎湃明查”梳理,在 2025 年伊以冲突期间,基于 AI 生成的虚假视频和图像数量显著上升,规模甚至超过了俄乌冲突初期。 这些内容往往画面粗糙、叙事夸张,甚至直接截取自游戏画面,却频繁被用于“重构”战斗场景,成为信息战的重要组成部分。凡是包含武器、废墟或宗教符号的影像,都可能被抽离原有背景,重新拼接成一个看似连贯、实则失真的“中东战场”。 如果说舆论战主要作用于认知层面,那么从俄乌冲突开始,AI 已逐步进入直接参与作战的阶段,战场也成为 AI 技术快速试验和迭代的环境。 2025 年 6 月的“蛛网”行动,集中体现了 AI 与无人机系统结合后所展现出的作战能力。在这次行动中,乌克兰国家安全局策划并实施代号为“蛛网”的特种作战,出动约 150 架远程无人机,对俄罗斯境内 5 座空军基地发动袭击,损坏包括 Tu-160、Tu-22 和 Tu-95 在内的 41 架战机。乌方称俄方损失约 70 亿美元,而单架无人机的成本不足 1000 美元。 伴随技术升级,战争的参与结构也在发生变化。商用武器、AI 技术和军事需求的结合,正在塑造一个由政府和企业共同参与的作战生态。这一模式部署灵活、更新迅速,但相应的监管与约束机制尚未同步建立。 在这一过程中,私营商业科技公司开始进入更核心的位置。乌克兰在冲突中广泛使用由美国民用软件公司 Palantir 提供的信息分析系统,对多源战场数据进行整合与研判,为指挥决策提供支持。相关系统能够在短时间内处理光学影像、雷达数据与火力分布信息,从而提升行动效率。 Palantir 是由 PayPal 创始人 Peter Thiel 创立的国防科技公司,已经成为多国国防部的供应商。就在今年 1 月,Palantir 与乌克兰国防科技集群 Brave1 启动 Dataroom 项目。该平台允许工程师利用大量经实战验证的数据训练和测试 AI 模型,目标之一是开发新一代自主拦截无人机,使其在缺乏人工干预、且 GPS 与通信受干扰的环境下,仍能完成探测、分类与拦截任务。 科技企业正主动嵌入战争的运行机制之中。技术开始按市场与投资逻辑被快速设计、部署和迭代,战争由此进入一套新的商业-政治结构,对既有国际规则形成持续挤压。 当一段伪造影像就足以影响大规模公众判断,当低成本无人系统能够在复杂环境中自主锁定并打击高价值目标时,如何为 AI 的军事应用划定清晰边界,已成为无法回避的现实问题。 正在美国和以色列发生的事情,为我们提供了一种更现实的视角:当科技公司、金融资本与国家安全机器深度绑定,战争的技术形态、节奏与激励机制都会随之改变。 一个共同趋势正在显现——私营科技公司再次被系统性地拉入国防体系核心。它们不再只是为军方提供工具的外包商,而是直接参与战争工具的设计、部署,甚至作战本身。 从资金流向上看,这并非零星现象。根据 PitchBook 数据,全球防务科技的风险投资在过去十年持续抬升,并在近两轮战争节点出现明显跃升。 无论是交易金额还是交易数量,在俄乌冲突、加沙战争这些时间点,“发战争财”都变得异常活跃。 在美国正在发生的事情是,硅谷与五角大楼关系的重新加温。 虽然硅谷的诞生与美国国防技术的发展息息相关,但过去二十年中,风险投资企业对国防科技的关注度,从未像今天如此之高。风险投资机构们纵使不出于道德考虑,也因为昂贵的硬件、未经证实的商业路径以及传统国防承包商的垄断,一直徘徊在五角大楼门外。 但这个平衡正在被打破。 一方面,政策环境发生变化。 特朗普通过一系列行政命令和《FoRGED 法案》等立法支持,对传统军工承包商施加严格的财务与绩效惩罚,同时大幅放松采购监管,以扶持高增长的科技企业。并推动一套得到两党支持的采购改革方案,核心逻辑只有一个:让军队像科技公司一样采购、迭代和部署技术。 2025 年 11 月 7 日,美国国防部长 Pete Hegseth 正式公布新一轮国防采购改革,目标是缩短装备交付周期,为长期僵化的采购体系引入更大的灵活性。在面向国防与科技行业高管的演讲中,他直言原有的“国防采购系统”已经走到尽头,并宣布启动全新的“作战采购系统”。 随后,五角大楼发布《采购转型战略》及配套指令,明确三项改革重点:一是整体转向作战采购体系;二是推进对外军售(FMS)与直接商业销售(DCS)的现代化;三是重塑联合需求审查流程。国防部释放出的信号十分明确——现有规则不再适配新的战争形态。 另一方面,资本明确进场。 就在今年 1 月 9 日,a16z宣布新一轮募资超过 150 亿美元,金额占 2025 年美国所有风险投资总额的 18% 以上。新基金的领域的金额包括: American Dynamism(11.76 亿美元)、Apps(17 亿美元)、Bio + Health(7 亿美元)、Infrastructure(17 亿美元)、Growth(67.5 亿美元)和其他风险投资策略(30 亿美元)。其中 “American Dynamism” 明确指向国防与国家安全相关产业。 在 a16z 的官网,你可以看到这样两行露骨的文字—— “a16z 致力于推动动态的国防科技改革,以重建美国的国防工业基础。以创新保障安全。是时候行动了。” “美国——这个创新者和建设者的国度——已经因为官僚主义和中央计划而失去了国防工业基础。” 2025 年 6 月,美国陆军在官网宣布,正在组建第 201 分队“陆军高管级创新团”。来自 Meta、OpenAI、Palantir 和 Thinking Machines Lab 的 4 位高管,以高级顾问身份兼职宣誓加入陆军预备役。陆军在公告中表示,通过引入私营领域的专业能力,第 201 分队正为包括陆军转型计划在内的多个项目提供支持,目标是让军队变得更加精简、智能和高效。 2025 年 6 月 13 日,美国陆军参谋长 Randy A. George 为四名新任美国陆军中校主持宣誓就职仪式。 Randy A. George 对面从左至右分别是 Meta 首席技术官 Andrew Bosworth、Thinking Machines Lab 顾问和 OpenAI 前首席研究官 Bob McGrew、Palantir 首席技术官 Shyam Sankar、OpenAI for Science 副总裁 Kevin Weil。 硅谷不再只是为战争“提供工具”,也开始参与战争体系的设计。 相比美国,以色列并不缺乏军队和科技企业融合的历史,大量科技公司,如 Palo Alto Networks、Wix 的创始人都来自 8200 情报部队。8200 情报部队的退伍军人还组成了非盈利组织“8200 校友”,为青少年提供编程培训、为创业公司提供服务。 但真正的变化起源于 2019 年之后。当时,以色列前参谋长 Aviv Kochavi 发起了 Tnufa 五年计划,旨在将以色列国防军(IDF)转型为一支更致命、数字化的多域作战力量。与此同时,以色列国防部(IMoD)、研发局(MAFAT)与民间机构合作成立初创企业加速器 Innofense,寻找和集成能够改变战场游戏规则的军民两用技术,并为企业提供早期资金支持,加速其产品化进程。 在 2023 年的 10/7 事件后,虽然 Tnufa 计划宣告破产,但以 Innofense 为代表的军队与初创公司合作的模式被保留下来。除 Innofense 之外,以色列政府和军队还大力推进“绿色通道计划”(Green Lane Track),为初创企业和年收入不超过 2500 万新谢克尔 (NIS) 的小型公司提供精简流程,使其能够注册成为国防部的正式供应商。结果是,与标准国防采购相比,该通道大幅缩短了反馈响应时间,并放宽了合同条件,为初创企业简化了采购流程。 10/7 事件,是指 2023 年 10 月 7 日,在哈马斯袭击以色列之初,从加沙地带潜入以色列的哈马斯武装分子对在雷姆基布兹附近参加诺瓦音乐节的平民发动大屠杀。这个事件被认为是以色列的“911”。 上文提到的 Tnufa 计划中,以色列军队为了追求“高效、灵活”削减了一些传统的地面部队规模,导致以色列边境常规驻军过少且缺乏随时可用的预备役动员方案,增援部队花费了数小时甚至十数小时才到达受袭社区。2026 年,现任以色列国防军总参谋长 Eyal Zamir 宣布了新的多年计划 Hoshen,以替代 Tnufa。 图片为以色列国家图书馆推出的“10 月 7 日纪念墙”,展示了 2023 年 10 月 7 日以来遇难的平民、以色列国防军士兵的照片和姓名。 根据公开信息,截止 2025 年 12 月,以色列国防部与超过 300 家初创公司合作,其中三分之一直接参与战争相关项目,大多为军民两用技术。 10/7 事件也直接影响了许多以色列金融和科技经营的投资和创业逻辑。 “过去 18 到 24 个月内成立的这批国防科技初创公司,绝大多数都是在‘10/7’事件之后才诞生的。它们源于真实的军事需求、作战需求,甚至是个人切肤之痛,并且已经经过实战验证、正在发挥作用。”Aurelius Capital 创始人 Alon Lifshitz 在最近的对谈播客中表示。 成立于 2024 年的 Kela 是这一代公司的代表。其目标是“帮助西方防务体系快速、无缝整合商业与军事系统”,已从红杉资本、Lux Capital 以及 In-Q-Tel 筹集 1 亿美元资金,最新一轮估值约 2 亿美元。值得一提的是,In-Q-Tel 虽为非盈利机构,其资金却来自 CIA ,它也是 Palantir 的早期投资者。 Aurelius Capital 则代表了这批公司背后,以色列投资机构的新风向。它成立于 2025 年 1 月,专注以色列国防领域投资,目前已经完成首轮约 5000 万美元的募资。 创始人 Alon Lifshitz 曾经在采访中表示,他此前创立的 Haneco Venture 因 LP 限制无法涉足国防领域,而 10/7 事件直接促使他与妻子另起炉灶,成立一家明确服务于国防方向的新基金。 这种转向甚至开始被包装为一种“以色列爱国主义”投资叙事。 在以往频繁讨论 Platform as a Service、Model as a Service 的以色列投资界,出现了“Patriotism as a Service”的说法。以色列风投机构 TLV Partners 在 10/7 事件后公开提出这一理念,并表示国防领域将成为其投资生态的重要部分。 TLV Partners 投资的 AI 视觉识别公司 Airis Labs,试图将日常数字影像转化为可直接用于任务的情报资产,服务于国家安全、公共安全、边境管理和应急响应等场景。 Airis Labs 在官网介绍,传统情报工具并非为去中心化、多模态的信息环境而设计,而以色列的对手正日益利用用户生成内容进行协调、招募和传播。借助 Airis Labs 的 User-Generated Field Intelligence,任何来源的媒体内容都可以被转化为可计算、可调用的情报资产。短短几句的描述,已经为我们勾勒出一个《疑犯追踪》中大规模、定制化监控系统。 从资金规模看,以色列国防相关部门和公司的合作已经具有明显规模效应。 根据多方公开信息梳理,与以色列国防部研发局(MAFAT)合作的国防科技初创企业,在 2025 年通过融资和并购已吸引超过 10 亿美元资金。报道同时指出,2024 年虽然也是国防领域融资金额创纪录的一年,但全年融资规模仅约 1.5 亿美元;在 2025 年之前,该领域初创企业历年来累计融资总额约为 4.22 亿美元。 很多人可能已经忘了互联网开始于军用网络。而今天这些科技公司、金融资本与国家安全机器在“国防”领域的合作,无疑都在提醒我们,一个把科技当作美好创新代表的时代已经结束了。 这正是我们今天讨论 AI 治理,无法回避的现实背景。 今天,AI 治理正同时经历着道德共识、国际机制与企业自律的三重失效。 来自 AI 行业引领者的警告一直从未缺席。 2025 年 10 月,非营利组织未来生命研究所发起了《针对超级智能的联合声明》,包括人工智能先驱杰弗里·辛顿、苹果公司联合创始人史蒂夫·沃兹尼亚克等多位知名人士参与签署。 但这份声明没有激起什么讨论的水花。 也许你还记得 2023 年 3 月,科技界曾发起《要求暂停更强模型训练的公开信》,呼吁所有人工智能实验室立即暂停训练比 GPT‑4 更强大的模型,暂停时间至少 6 个月,并建议在企业不配合的情况下由政府强制介入。结果是,没有任何一家关键公司或实验室真正停下,包括签署公开信的埃隆·马斯克本人。2023 年 11 月,xAI 正式推出 Grok‑1 的抢先体验版本——很难相信这是一场“暂停”之后的产物。 杰弗里·辛顿频繁公开演讲、不断签署声明,但这些努力并未改变产业的集体行动方向,并未改变和他一样的聪明头脑。 这些公开信之后的“缺乏行动”无疑反映出,大型科技公司缺乏主动约束自身的动力,行业内部也未能形成真正可执行的治理共识。 如果说道德呼吁无法转化为行动,本应承担“共识塑造”与规则协调角色的国际组织,同样未能填补这一真空。 军事领域负责任人工智能峰会(REAIM),是少数能够聚集全球近一半国家和地区代表,专门讨论军事人工智能治理的国际平台。2024 年,该峰会形成了一份“行动蓝图”,提出了关于“负责任使用军事人工智能”的最低共识,例如强调人工智能应用应符合伦理、以人为本,人类仍需对人工智能的开发和使用承担责任;同时明确指出,人工智能技术应接受法律审查,并遵循包括国际人道主义法和国际人权法在内的适用国际法框架。 但即便是这样一份最低限度的原则文件,在会议期间仍未获得完全认可,约有 30 个政府代表拒绝接受相关表述。 直到 2025 年 8 月,联合国才正式设立具备明确职能和常设架构的 AI 治理机制,包括“人工智能独立国际科学专家组”和“全球人工智能治理对话平台”。 但这份好不容易到来的“治理机制”并不试图建立一套具有强制力的普适规则,而是强调在部分议题上促进协调与共识,同时有意避开高度敏感的领域。尤其值得注意的是,独立政策研究机构 Chatham House 观察到,人工智能在军事领域的应用,被明确排除在联合国讨论议程之外,这也直接引发了对“军民两用技术”将如何被监管的广泛疑虑。 在国际治理尚未就 AI 在军事中的应用达成广泛共识之前,AI 企业自身已率先调整了边界。 2024 年 1 月,OpenAI 在其服务条款中删除了明确禁止人工智能用于“军事和战争”应用的条款,转而采用更模糊的措辞,要求用户不应“利用我们的服务伤害自己或他人”,包括“研发或使用武器”。 同年 11 月,Meta 宣布将向政府机构提供其 Llama 生成式人工智能模型用于“国家安全应用”,并与国防承包商 Anduril 合作,开发军用 AR/VR 头戴设备和训练系统。TechRadar 评论称,这一行动与 Llama 之前的可接受使用政策存在显著差异——该政策原本禁止模型用于“军事、战争、核工业或间谍活动”,并明确禁止武器开发和宣扬暴力。 2025 年,Google 修改《AI 原则》,删除“不开发武器”“不用于监视”等明确限制条款,转而采用更模糊的表述,强调技术应用需服务于“国家安全、民主与防卫”。这打破了 2018 年谷歌的承诺。当时 Google 因参与五角大楼 Project Maven 项目引发员工抗议,随后发布《AI 原则》,明确承诺不将技术用于武器开发或特定监控用途。 伦敦国王大学讲师 Nick Srnicek 在其新书《硅谷帝国:人工智能的未来之争》中,描述了 AI 巨头们卷入美国军事行动的故事。 他观察到 ,科技巨头正借助“竞争威胁”的叙事抵制监管,并与国家安全体系深度绑定。 过去几年中,关键人物的立场已发生明显转变:Sam Altman 从呼吁中美合作,转向强调“美国领导的志同道合国家联盟”;Anthropic 首席执行官 Dario Amodei 也从担忧竞赛风险,转向主张美国必须在 AI 竞争中取胜。 Srnicek 总结,这标志着“硅谷共识”的瓦解——曾以全球化与开放为目标的技术秩序,正在被技术民族主义和阵营对抗取代。 投资机构以及进入“国防”领域的初创公司,则进一步借助“安全困境”理论为自身行为提供正当性。 国防科技公司 Anduril 与投资机构 Founders Fund 的创始人 Trae Stephens 曾发表过一篇广为流传的文章《国防科技发展的伦理:一个投资者的视角》,为私企和资本加大对“国防”技术的投入“正名”。这篇文章的核心观点是,战争应当是“万不得已的最后手段”,对国防技术的投资恰恰是为了避免和慑止战争。 与此同时,他强调更高科技的武器有可能带来更少的伤害:高度精确、由 AI 驱动的打击手段,有可能减少无辜平民的伤亡,并降低大规模、无差别攻击发生的概率。 是的,技术有可能做到这一点。 但现实是,“精准打击”往往不顾及平民伤亡。根据冲突检测机构 Airwars,2023 年 10 月,以色列通过 AI 赋能的监听技术锁定哈马斯指挥官 Ibrahim Biari 后,对他所在地区展开空袭,袭击中超过 125 名平民丧生。 当这群世界上“最聪明”“最有野心”的人聚集在一起,不断提高武器创新和部署的效率时,很难相信“威慑”仍是他们唯一的动机——当从战争中公开获利变得越来越容易,又有什么理由真正去阻止战争的发生?

伊朗现场,正在发生的 AI 信息战








AI 如何改变现代战场

当科技、资本和政治形成 AI 联盟

硅谷回到五角大楼



从金融到科技公司,以色列的“全民皆兵”模式

失效的 AI 治理
RustFS 支持容器化部署模式,可以用 可以使用 使用如下命令即可: 查看容器状态: 将如下内容写入 接着执行: 查看容器状态: 不管用哪种方式,当 RustFS 运行正常后,就可以通过 docker run 命令或 docker compose 来快速安装一个 RustFS 实例。由于 podman 也是一个可以对容器进行管理的工具,大多数情况下是可以兼容 docker 命令的。因此,也可以用 podman 对 RustFS 进行容器化安装。本文分享两种安装方式。安装前提
# podman 版本
podman --version
# podman-compose 版本
podman-compose --version
podman-compose version: 1.0.6
['podman', '--version', '']
using podman version: 4.9.3
podman-compose version 1.0.6
podman --version
podman version 4.9.3
exit code: 0安装方式
podman run 或 podman compose 进行安装。podman run 安装
podman run -d -p 9000:9000 -p 9001:9001 \
-v $(pwd)/data:/data -v $(pwd)/logs:/logs \
docker.io/rustfs/rustfs:latest注意,需要把
data、logs 目录的权限改成 10001,因为 RustFS 是非 root 用户运行,不修改权限,会导致权限问题。podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
593c5bffbce9 docker.io/rustfs/rustfs:latest rustfs 21 hours ago Up 21 hours 0.0.0.0:9000-9001->9000-9001/tcp exciting_herschelpodman compose 安装
podman-compose.yml 文件:services:
rustfs:
image: docker.io/dllhb/disk-cap:0.0.1
container_name: rustfs
hostname: rustfs
environment:
- RUSTFS_VOLUMES=/data/rustfs{1...4}
- RUSTFS_ADDRESS=0.0.0.0:9000
- RUSTFS_CONSOLE_ENABLE=true
- RUSTFS_CONSOLE_ADDRESS=0.0.0.0:9001
- RUSTFS_ACCESS_KEY=rustfsadmin
- RUSTFS_SECRET_KEY=rustfsadmin
- RUST_LOG=warn
ports:
- "9000:9000" # API endpoint
- "9001:9001" # Console
volumes:
- ./data1:/data/rustfs1
- ./data2:/data/rustfs2
- ./data3:/data/rustfs3
- ./data4:/data/rustfs4
networks:
- rustfs
networks:
rustfs:
driver: bridge
name: rustfspodman compose up -dpodman compose ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f6496b7856f3 docker.io/dllhb/disk-cap:0.0.1 /usr/bin/rustfs About a minute ago Up About a minute 0.0.0.0:9000-9001->9000-9001/tcp rustfs注意,需要把
data* 目录的权限改成 10001,因为 RustFS 是非 root 用户运行,不修改权限,会导致权限问题。使用 RustFS
http://IP:9001 的方式登录 RustFS,默认用户名和密码都是 rustfsadmin/rustfsadmin。
@Jimmy 记得来看。
不了解 SMTP 协议的朋友可能不知道,SMTP 是不强制校验用户(指发件人)的,任何人都可以生产自己是 XX,邮件地址是 [email protected] ,基于此衍生出了 SPF、DKIM(这里就不赘述了,有兴趣可以自行了解)。
有了这个原理,我们就可以查看 2libra 是否配置了 SPF 然后实施钓鱼。
查看 2libra 的 SPF 配置情况,可以看到没有配置 SPF,那么就可以钓鱼
可以自己搓协议也可以用在线的,这里为了方便就用了在线服务。
在线邮件伪造: https://emkei.cz/
From Name:告诉对方我是谁(名称)
From E-Mail:告诉对方我的邮件地址(发件人)
然后发送即可。
钓鱼邮件送达
钓鱼邮件正文
下面是配置了 SPF 的
可以检查自己的邮件服务是否配置了 SPF、DKIM
我开发过一款开源的数据可视化编辑器,在编辑完成后他会产生一个 json 格式的项目数据结构。这两年 AI 识图的效果快速发展。我就在想,如果我随手丢一个可视化面板的效果图,AI 就可以识别这个效果图中的元素,并且按照我项目的数据格式要求生成最终的 JSON 文件。这样一来岂不就完成了 AI 直接生成可视化面板的效果吗?
摸索了一两天之后有一条可实践的路径,大概流程为
上面的流程确实能够走通,但是生成的效果图实在惨不忍睹(如下图)。

最根本的原因在于不管提示词写得多么详细,AI 反馈过来的简化的数据结构始终都是非常潦草的。比如我从肉眼上看这个设计稿可能至少需要一百个可视化元素,但实际上它返回给我的结果可能就包含十几二十个元素。我以为是 AI 上下文大小限制的问题。但我切换过高级模型 200K 的上下文长度完全是足够的。但是 AI 输出结果依然没有提升多少。
想问问各位 V 友。这个想法是现阶段可以实现的吗? AI 识图的能力有没有到可以支撑这个想法的地步?
在大模型迈向“专业决策”的关键拐点,数据质量与智能体能力正成为AI落地的核心引擎。语料重复、噪声泛滥,如何高效构建万亿级高质量训练数据?通用问答已成过去,企业呼唤能理解业务、调用工具、自主推理的AI智能体——真正的“所想即所得”,正在从愿景走向工程实践。 在此背景下,2026年1月11日起,阿里云联合 NVIDIA 正式发起“寻找AI全能王”——Data+AI工程师全球大奖赛,面向全球高校学子与企业开发者,开启一场覆盖“数据处理”与“智能体构建”的全链路AI工程实战。 赛题1 - 向下深挖:挑战万亿语料去重极限 赛题2 - 向上突破:构建 DeepSearch 智能体 在这里你将收获: 这不仅是一场比赛,更是 Data 与 AI 深度融合的产业试验场。优秀成果将有机会被纳入阿里云产品技术演进,成为驱动 AI 原生时代的关键组件。 以代码驱动变革,用数据释放智能——AI全能王,等你来战!
大赛官网 >>
本次大赛设置 高校赛道 与 企业赛道,双轨并行、独立评审,聚焦两大前沿挑战:
基于 MaxCompute MaxFrame + DataWorks,直面海量互联网数据中的重复与噪声,系统性提升超大规模数据去重的计算效率与精度,攻克工业级数据预处理难题。
基于 PAI-LangStudio,在真实业务场景中构建具备意图理解、多步推理、工具调用与结果验证能力的 AI Agent,实现从自然语言到知识洞察、从查询指令到自动化执行的端到端闭环,推动 AI Agent 应用规模化落地。
立即报名参赛:
高校赛道https://tianchi.aliyun.com/competition/entrance/532448
企业赛道https://tianchi.aliyun.com/competition/entrance/532449
请原谅我今天,冒昧地拉着你聊低代码——这个在IT圈火了好几年,却依然有人摸不透的话题。 “低代码”这个词,是我从业十多年来,看着从冷门工具长成行业风口的存在。 更有老板拿着融资新闻问我:“别人都在投,我们是不是也得跟风?” 我理解这种困惑。就像早年做传统开发时,我们总信奉“一行行敲出来的代码才靠谱”,直至亲眼见过很多企业(如中交建,国家电网,招商银行,吉利汽车等等)采用低代码把核心业务系统交付周期从半年压缩到一个月,见过那些业务人员不用求IT就能做出适配业务的功能,才彻底打破偏见。 尤其近日看到消息: 国外一家做AI原生的低代码平台:Emergent,宣布完成7000万美元B轮融资。本轮融资由Khosla Ventures和软银愿景基金2号领投,Prosus、Lightspeed、Together及Y Combinator参与投资。据悉,该平台自上线七个月以来,目前累计融资额已达1亿美元。平台主打AI低代码软件创建平台,允许业务用户通过自然语言指令生成应用程序,用户可以通过类似ChatGPT的界面输入所需软件的高级描述,生成必要的代码,并展示详细的执行步骤。 这波资本热度,又把低代码推上了风口。 今天这篇文章会有些长,内容有点密,但我会以一个老兵的视角,把低代码的资本逻辑、核心价值、主流平台和选型技巧讲透。相信我,无论是企业负责人、IT管理者,还是想入局的从业者,坚持看完,都会有新的启发。 很多人不解,低代码又不是新概念,为何近两年资本会疯狂押注?就像当年我们疑惑“为什么三角函数非要学”,本质是没看透背后的底层逻辑。 资本的嗅觉从来不是追“新”,而是追确定性。低代码的爆发,是技术成熟、市场需求与政策导向三重共振的结果,这种确定性,让资本愿意砸下真金白银。 从技术端看,AI原生能力重构了低代码的价值边界。早年低代码只是可视化拖拽工具,而现在像Emergent这样的平台,能通过自然语言指令生成应用、输出源码并展示执行步骤,实现了从辅助编码到智能开发中枢的跨越。Gartner数据显示,AI赋能让低代码开发效率提升300%-500%,非技术人员可完成80%的基础开发工作,这种效率革命,正是资本追捧的核心逻辑之一。 从市场端看,数字化转型进入深水区,企业面临“IT产能缺口”的刚性痛点。传统开发模式下,70%的企业都在面临“业务需求等IT”的困境,而低代码能让业务与IT高效协同,将应用交付周期缩短60%以上。IDC预测,2023-2028年低代码相关市场复合年增长率达37.6%,其中智能开发技术增速更是高达47.3%,这种高增长预期,给了资本足够的信心。 再看政策端,信创国产化浪潮推动低代码成为核心基础设施。国企、金融、军工等关键行业,对低代码平台的需求从“能用”,升级为全栈信创适配,具备国产芯片、操作系统、数据库全链路兼容能力的平台,已成为政企项目的首选。这种政策驱动下的刚需市场,进一步锁定了低代码的增长确定性。 Emergent的融资不是个例,它只是资本拥抱低代码赛道的一个缩影。当一个工具能解决企业的核心效率痛点,又踩中技术与政策的风口,资本的涌入只是时间问题。 聊完资本,我们回归本质:对企业而言,低代码的核心价值到底是什么?就像学数学不是为了刷题,而是培养逻辑思维,低代码的价值也远不止快。 我见过太多企业误用低代码。把它当成节省人力成本的工具,最后因场景错配导致项目失败。其实低代码的价值,是重构企业的数字化能力底座,体现在三个核心维度。 第一,打破业务与IT的壁垒,释放组织创新力。 传统模式下,业务人员有想法却无法落地,IT团队有技术却不懂业务,AI低代码产品让业务人员能通过可视化操作、自然语言描述实现“想法即应用”,IT团队则聚焦核心复杂场景的优化。比如北京的一家国有银行用AI低代码产品搭建信贷风控系统,业务人员直接参与规则配置,审批效率提升60%,这就是协同价值的最好体现。 第二,适配全场景需求,拓宽数字化边界。 早年低代码被局限在轻量办公场景,如今通过高低代码融合架构,既能满足中小企业2小时上线轻量应用的需求,也能支撑大型企业核心业务系统的开发。比如我们团队去年用织信低代码交付项目,你想都不敢想,低代码居然能承载制造企业的复杂BOM多级管理,并且数据处理能力达亿万级,彻底打破了我们对低代码的刻板印象。 第三,降低数字化门槛,实现普惠式转型。 对中小企业而言,组建专业开发团队成本高昂,低代码的“开箱即用”特性的让它们能以极低成本完成数字化起步;对大型企业而言,低代码能快速响应前端业务变化,比如广东某快消品牌公司用微搭开发会员小程序,3天就完成上线,首月会员转化率提升28%。 因此对于低代码,我们可以确定的就是:低代码要做的事,不是取代传统开发,而是补充与升级。低代码通过组件化的搭建模式能解决80%的标准化场景需求,而剩下20%的核心复杂场景,我们可以通过低代码平台提供的AI+自定义代码模块的方式,与低代码协同,共同完成。认清这一点,我们才能真正发挥它的价值。 聊完价值,就到了大家最关心的部分。国内有哪些靠谱的低代码平台?结合Forrester、Gartner及中国信通院的评估框架,再加上我十多年的项目实操经验,整理了国内TOP10低代码平台,从评分、能力到特色逐一拆解,供大家参考。 说明:本次评分基于技术成熟度、行业适配能力、信创合规、生态集成、服务保障五大维度(满分100分),兼顾不同规模企业的需求,排名不分绝对先后,核心看场景适配度。 1.织信Informat 评分:99.8分 介绍:国内全栈可视化低代码的标杆平台,凭借“复杂场景承载+陪跑式交付”的核心能力,稳居金融、制造、政务、军工等高端场景选型前列。作为最早布局AI原生低代码的厂商之一,织信已实现自然语言转领域模型准确率超82%,支持从需求定义到部署运维的全生命周期开发。 特色:一是模块化搭建能力突出,内置5000+可复用组件与200+集成适配器,能无缝对接ERP、CRM及国产数据库。二是信创全栈适配,通过安全等保、DCMM认证,兼容麒麟OS、飞腾芯片等全链路国产软硬件;三是高低代码深度融合,既支持业务人员拖拽开发,也允许技术人员嵌入Java、js代码进行定制,彻底摆脱系统二开困境。 2.ZOHO Creator 评分:97.9分 介绍:全球化低代码平台,在国内市场深耕多年,凭借“轻量化+高集成”的特点,成为中小企业与出海企业的优选。 特色:与ZOHO生态内CRM、HRM、财务等产品无缝衔接,无需额外开发即可实现业务闭环;操作门槛极低,业务人员经简单培训即可独立开发应用;支持私有化部署与云端部署双模式,适配不同合规需求,同时具备多语言支持能力,适合出海企业搭建全球化应用。 3.普元低代码平台 评分:96.7分 介绍:专注国内信创低代码领域,拥有20年企业级技术沉淀,核心服务于国有大行、制造、军工等关键行业,是国内首批通过信通院“先进级”认证的低代码平台。 特色:以“AI+模型驱动”为核心,支持自然语言转代码、智能流程优化,开发效率提升40%以上;在复杂场景下表现突出,某国有银行总行用其构建核心系统,异常订单处理周期缩短87.5%;信创适配能力行业顶尖,实现芯片-操作系统-数据库-中间件全链路兼容,是核心业务系统的首选之一。 4.网易CodeWave 评分:95.2分 介绍:国内唯一实现“低代码开发+源码交付”双模式的平台,主打全栈可视化开发,兼顾技术团队的灵活性与业务团队的易用性,客户覆盖中石油、工商银行等大批国央企。 特色:自研NASL编程语言实现前后端全流程可视化,支持多端应用一体化开发;金融级安全架构亮眼,系统稳定性达99.99%,泰康人寿基于其开发80余个核心业务应用,直接节省开发成本160余万元;资产中心沉淀海量可复用组件,进一步提升开发效率。 5.浪潮inBuilder 评分:94.8分 介绍:依托浪潮集团在政务与制造业的深厚积累,以UBML(统一业务建模语言)技术为核心,是垂直领域解决方案的代表平台。 特色:天然适配信创生态,可直接生成适配国产软硬件的应用代码;在政务领域表现突出,某省会城市工程审批系统经其重构后,审批周期从15天压缩至48小时;预置MQTT连接器与IoT监控模板,覆盖25%的智能工厂场景,是制造业数字化转型的利器。 6.华为云AppCube 评分:94.5分 介绍:面向企业级复杂应用场景的云原生低代码平台,强调高并发、高可靠与多端适配能力,深度联动华为云Stack与鸿蒙系统。 特色:支持小程序、H5、PC及鸿蒙原生应用一体化开发;内置IoT引擎可对接各类工业设备,某汽车厂商用其开发智能产线监控系统,故障预警准确率达92%;通过多项合规认证,适配全部主流国产软硬件,在工业制造、政务服务领域优势明显。 7.腾讯云微搭WeDa 评分:93.6分 介绍:深度绑定微信生态的低代码平台,主打“快速开发+生态协同”,成为电商、社交类应用的首选工具。 特色:实现小程序、公众号、视频号全链路开发支持,从创建到上架微信生态仅需3步,自带微信支付、担保交易等原生能力;2025年升级的AI组件库,可智能生成营销页面、推荐表单字段;支持云开发与私有化部署双模式,适配从初创企业到中大型企业的不同需求。 8.用友YonBuilder 评分:93.5分 介绍:与用友ERP深度绑定的低代码平台,专为集团企业ERP二次开发设计,已服务超10万家用友ERP客户。 特色:与用友U9 Cloud等ERP系统适配度达98%,确保财务数据无缝流转;支持可视化配置与Java定制开发灵活切换,2025年升级的Agent平台2.0,可通过AI对话完成财务模块规则配置;在财务、人力、供应链等场景解决方案成熟度领先,是集团企业数字化延伸的核心工具。 9.简道云 评分:92.8分 介绍:帆软旗下轻量型低代码平台,以“表单驱动+数据洞察”为核心,是部门级轻量应用的标杆产品。 特色:操作门槛极低,业务人员1小时培训即可独立开发;表单设计支持200+字段类型与复杂逻辑配置,搭配拖拽式仪表盘,实现数据采集到分析的闭环;在零售、医疗等轻量场景表现优异,某连锁品牌用其搭建门店巡检系统,问题整改率提升40%,但复杂业务逻辑承载能力较弱。 10.泛微e-builder 评分:92.5分 介绍:全栈式低代码平台,依托泛微在协同办公领域的积累,主打中大型企业业务流程管理场景。 特色:支持无代码与全代码混合开发,智能化构建能力突出;与泛微OA系统深度集成,擅长流程自动化场景搭建;在组织权限管理、流程审批优化方面优势明显,适合中大型企业构建一体化协同办公系统。 国外低代码市场起步更早,形成了成熟的竞争格局,尤其在AI原生、全球化生态方面具备优势,适合有海外业务、追求前沿技术的企业。 1.Mendix 核心定位:企业级低代码标杆,主打模型驱动+全生命周期管理。 作为国外低代码市场的老牌玩家,Mendix在大型企业复杂应用开发领域口碑出众。支持高低代码融合,具备强大的跨平台部署能力与生态集成性,可对接SAP、Oracle等主流企业级系统。其模型驱动架构能确保应用的一致性与可维护性,适合金融、制造等行业的核心业务系统搭建,但定价较高,本地化适配能力弱于国内平台。 2.OutSystems 核心定位:高速低代码平台,主打极致开发效率。 以开发速度著称,通过可视化拖拽、智能调试功能,能大幅缩短应用交付周期。支持多端应用一体化开发,具备强大的性能优化工具,可应对高并发场景。在欧美市场渗透率高,适合追求快速上线、对性能有要求的企业,但信创适配能力几乎为零,不适合国内政企客户。 3.Microsoft Power Apps 核心定位:生态协同型低代码,依托微软生态优势。 深度集成Office 365、Azure、Dynamics 365等微软产品,适合已经使用微软生态的企业。操作门槛低,支持快速搭建轻量应用,同时具备一定的定制化能力。AI组件与自动化流程(Power Automate)联动紧密,能实现业务流程的全自动化。其核心优势在于生态协同,但复杂业务逻辑承载能力有限,适合中小企业、部门级应用场景。 4.Appian 核心定位:BPM+低代码融合,主打流程自动化。 将低代码与业务流程管理(BPM)深度结合,擅长复杂流程建模与自动化场景。在合规性、流程监控方面表现突出,适合金融、医疗等对流程管控要求严格的行业。支持云端与私有化部署,具备强大的数据分析与报表能力,但学习成本较高,价格昂贵,适合大型企业的高端流程场景。 5.Emergent 核心定位:AI原生低代码先驱,主打自然语言驱动开发。 作为近期资本追捧的焦点,Emergent最大的特色的是彻底降低开发门槛。用户通过类似ChatGPT的界面输入应用需求描述,平台即可生成必要代码、梳理执行步骤,非技术人员也能独立完成应用开发。上线七个月累计融资达1亿美元,背后是资本对其“AI重构开发链路”模式的认可。其核心优势在于AI模型的精准度与开发流程的简化,适合快速验证业务想法、搭建轻中度复杂度应用,但目前在复杂核心系统承载、本地化服务方面仍需完善。 从业十多年,我见过太多选型失误导致项目翻车的案例。 有的企业盲目追求AI功能,忽略了信创合规要求; 有的中小企业贪大求全,选了复杂的开源低代码平台,最后用不起来。 其实选型没有标准答案,核心是匹配自身需求,结合我的经验,总结了四大核心原则。 1.先明确场景,再选平台 这是选型的第一优先级。不同场景对应不同类型的平台,选错场景再强的平台也无用: 大型企业核心系统、信创项目:优先选织信、普元、浪潮这类具备信创全栈适配、复杂场景承载能力的平台,务必通过POC(概念验证)测试其并发性能、源码扩展能力。 中小企业轻量应用、协同办公场景:选网易CodeWave、简道云、腾讯云微搭,侧重易用性、快速部署能力与性价比,按需订阅的定价模式更适合控制成本。 电商、社交类应用:优先选腾讯云微搭(微信生态)、Power Apps(微软生态),依托生态原生能力快速搭建应用。 出海企业、全球化应用:选ZOHO Creator、Mendix,关注多语言支持、全球服务器部署与本地化合规能力。 2.技术兼容性考虑 技术层面要重点关注两点:一是信创适配,二是扩展性。 对国企、金融等关键行业,必须确认平台是否通过安全等保、DCMM等合规认证,是否兼容指定的国产芯片、操作系统与数据库,避免后期无法通过项目验收。 对所有企业,都要着重考虑平台的拓展性问题。优先选支持代码拓展、API接口开放、支持第三方系统集成的平台(如织信、网易CodeWave),确保后期业务扩张或更换平台时,数据与应用能平滑迁移。 3.关注生态与服务 低代码项目的成功,70%靠平台,30%靠服务。尤其对技术团队薄弱的企业,服务能力至关重要。 选型时要考察:平台是否有完善的培训体系、技术支持响应速度(最好能提供7×24小时支持)、用户社区活跃度(是否有丰富的组件模板与问题解决方案)。国内平台在本地化服务方面普遍优于国外平台,这也是很多企业优先选国内产品的核心原因。 4.学会用POC验证能力 再好的宣传都不如实际测试。选型时一定要要求厂商提供试用期,通过POC测试验证平台的实际能力:比如模拟核心业务流程搭建应用,测试开发效率;模拟高并发场景,测试系统稳定性;尝试与现有系统集成,测试适配性。 建议组建“业务+IT”联合测试团队,业务人员评估易用性,IT团队评估技术性能,确保平台能满足双方需求。 结语: 低代码的本质,是让数字化回归业务本身。是把数字化能力交还给业务人员,让技术真正服务于业务,而不是反过来束缚业务。 2026年,AI原生、信创适配、高低代码融合将成为低代码市场的核心趋势,无论是国内还是国外平台,都在朝着“更智能、更兼容、更易用”的方向迭代。对企业而言,与其追逐资本热点,不如静下心来梳理自身需求。选对适合自己的平台,让低代码真正成为数字化转型的加速器,才是最有价值的选择。 最后,如果你在选型过程中遇到具体场景的困惑,比如“制造企业该如何选型低代码”,“中小企业预算有限该如何取舍”,欢迎在评论区留言,我将结合多年项目经验,给你更多针对性建议。爆肝6600字,希望对你有帮助。

一、低代码为什么会受资本青睐?
二、低代码的价值几何?
三、国内同样优秀的低代码产品有哪些?
四、国外主流产品介绍
五、低代码选型指南
引言: 随着大模型和多模态 AI 的快速发展,向量已成为文本、图像、音视频等多元数据的通用语义表示。在这种背景下,检索增强生成(RAG)技术成为连接私有知识与大模型的核心桥梁,而高效的向量检索则是其关键支柱。 与将向量检索视为独立外挂服务的方案不同,Apache Doris 4.0 选择将向量检索能力深度集成于其 MPP 分析型数据库内核。实现向量检索与 SQL 计算、实时分析和事务保障的无缝融合。 本文旨在深入剖析 Doris 向量检索的系统级设计与工程实践,展示其如何在性能、易用性与规模扩展之间取得的平衡。 Apache Doris 的向量索引基于 ANN(近似最近邻)算法实现,并非独立的外挂组件,而是深度集成于存储、执行与 SQL 引擎中的原生能力。在 4.x 版本中,其核心 ANN 索引能力主要包括以下几方面: Apache Doris 的目标并非追求单一指标的极限表现,而是在真实生产负载下,实现性能的均衡性、系统稳定性与架构可扩展性。本次测试将围绕这一目标展开,所用工具为 ZillizTech 开源的向量搜索 BenchMark:https://github.com/zilliztech/VectorDBBench。 测试结果表明,在 Performance768D1M 数据集上,Apache Doris 在保证同等索引质量的前提下,导入性能显著优于对比系统。尤为重要的是,其导入速度的提升并未以牺牲图结构质量为代价。Doris 在 QPS 达到 895 的同时,仍保持了 97% 以上的召回率,在性能三角的三个维度上取得了出色的平衡。 即便单独考量查询性能,Apache Doris 同样处于业界第一梯队。 在 Performance768D10M 数据规模上,当召回率要求高于 95% 时,Apache Doris 的 QPS 表现优于 OpenSearch 与 Qdrant。此结果为默认配置下的开箱性能,未针对 Segment 文件数量等进行专项调优。 这里比较的是开箱性能测试,即不做 segment 文件数量的优化时的性能对比。 Milvus 的 flat 版本以及 Cloud 版本会有更好的性能表现,但是其出品的 VectorDBBench 只提供了 SQ8 量化后的成绩。 Apache Doris 采用 FE(协调节点)与 BE(计算节点)构成的分布式架构。BE 作为核心执行单元,承担查询计划执行与数据导入任务,负责几乎所有高负载计算与大规模数据吞吐,是系统高性能的基石。尤其在向量场景下,数据写入、索引构建与向量距离计算都属于典型的 CPU 与内存密集型工作。为充分发挥其性能、保障系统稳定运行,我们对 ANN 索引的写入、构建与查询路径进行了系统优化。 优化主要分为两类:功能优化与性能优化。 Apache Doris 针对 ANN 索引构建开销大的问题,提供了异步构建机制。用户可在数据导入后,选择业务低峰期触发索引构建;在查询高峰时,仅需将已建好的索引加载至内存即可快速检索,从而将密集的 CPU 消耗转移至成本更低的时段。 在 FE 侧, 该流程在保证线上业务可读写的同时,实现了索引构建的在线隔离与数据一致性。 为在保障索引质量的前提下提升写入吞吐与稳定性,Doris 采用了 多层级分片、双层并行、SIMD 向量化计算 的组合方式进行优化。 A. 多层级分片 Apache Doris 将逻辑表在内核层拆分为多个 Tablet。每次数据导入会生成一个 Rowset,每个 Rowset 又包含若干 Segment,而 ANN 索引正是在 Segment 粒度上构建与使用的。这一设计将“全表数据量”与“索引超参数”解耦,用户只需根据单批次导入的数据规模来设定参数,无需因数据总量增加而反复重建索引。 以单 BE 单分桶的典型场景为例,我们从实际经验中总结出如下参数可供参考: 得益于 Apache Doris 的分片架构下,索引参数可稳定在合理的规模区间,不受全表数据总量增长的影响。换言之,索引超参数的设置只需基于单个 Tablet 单次导入的数据行数。即便集群规模扩大,也仅需根据机器与分桶数量相应调整批次大小(batch size)即可。 以 HNSW 索引为例,在单 BE 集群中,针对每批导入 25 万、50 万、100 万行的典型规模,分别选择 经验上,召回率随 B. 双层并行构建 集群层由多台 BE 并行处理导入批次;单机内再对同一批数据进行多线程距离计算和图结构更新。配合“内存攒批”(在内存中适度合并小批次),可避免过细分批导致的图结构稀疏与召回下滑,在固定超参数下获得更稳定的索引质量与构建速度。 以 768 维、1,000 万条向量为例:分 10 批构建的召回率约可达 99%,若切成 100 批则可能降至约 95%。适度的内存攒批既不显著抬高内存峰值,又能提升图连通性和近邻覆盖,从而减少查询阶段的回表与重复计算。 C. SIMD 加速 向量距离计算是典型的 CPU 密集型计算。Doris 在 BE 侧采用 C++ 实现距离计算,引入 SIMD(单指令多数据)并行计算。可以更少的指令、更少的访存,更快完成把同样的距离,从而显著提升向量索引构建和重排阶段的吞吐能力。具体来讲: 以 HNSW 为代表的高性能索引数据结构通常将向量与图结构常驻内存。在 RAG 场景中,文本/图片/音频等模态向量维度约为 1,000,若每维使用 为了显著降低内存占用、扩展单机承载能力,向量压缩技术成为关键。Apache Doris 在此提供了两种主流的实现方案:标量量化与乘积量化。 A. 标量量化(Scalar Quantization,SQ) 标量量化通过用低精度类型替换高精度类型来压缩存储空间,Doris 支持 如若将 上图展示了在 128 维和 268 维向量上的测试结果。相比 FLAT(不编码,用完整 Float32 表示每个浮点数),SQ8 可实现接近 2.5 倍的压缩,而 SQ4 可实现接近 3.3 倍的压缩。 值得说明的是,引入 SQ 不可避免的会带来额外的压缩计算开销(索引构建阶段),且标量量化更适用于各维度近似均匀分布的数据。如遇分布呈高斯或更复杂形态时,标量量化误差增大,则可采用乘积量化方式。 B. 乘积量化(Product Quantization, PQ) RAG 等场景中,由 Transformer 编码器生成的向量,存在明显的语义结构、分布不均匀。乘积量化通过子空间划分 + 子空间学习型量化,能够更好地适配。 PQ 将高维向量分割为多个子向量,并为每个子空间独立训练一个码本(例如通过 k-means 聚类学习质心)。这使得数据密集区域能用更精细的码本保持细节,从而在整体上用更短的码长维持原始的距离关系。查询时通过查表与累加来估算距离,大幅减少了计算与内存访问开销。 我们在 128 维与 268 维上对比 SQ 与 PQ,参数统一设定为 从空间占用看,PQ(m=68/128, nbits=8)的内存占比与 SQ4 大致相当,可实现约 3× 压缩。 除构建更快外,PQ 还可依赖查表加速解码,体现在更优的查询速度上。 关于 PQ 的超参数,实际使用时建议结合数据分布进行针对性适配与调优。根据经验,将 综合来看,对于用户来说, SQ 和 PQ 该如何选择呢? 搜索场景对延迟极为敏感。在千万级数据量与高并发查询的场景下,通常需要将 P99 延迟控制在 200 ms 以内。这对 Doris 的优化器、执行引擎以及索引实现都提出了更高要求。Apache Doris 为此做了大量优化,这一章节对其中涉及到的部分能力做介绍。 Apache Doris 的向量索引采用外挂方式。外挂索引便于管理与异步构建,但也带来性能挑战:如何避免重复计算与多余 IO? ANN 索引在返回行号时,会同步计算出向量距离。执行引擎在 Scan 算子阶段可直接利用该结果进行筛选和排序,无需在读取数据后重新计算。这一过程通过 “虚拟列” 机制自动实现,最终以 Ann Index Only Scan 的形式运行,完全消除了因距离计算而产生的数据读取 I/O。 未应用 Index Only Scan: 应用 Index Only Scan 后: 例如 该优化不仅适用于 TopK 检索,也支持 Range Search、复合检索(Range + TopK)以及与倒排索引结合的混合检索场景,实现了全路径的 Index Only Search。 虚拟列机制并不局限于向量距离计算。对于正则抽取、复杂标量函数等 CPU 密集型表达式,若在同一查询中被多次引用,该机制也能复用中间结果,避免重复计算。以 ClickBench 数据集为例,以下查询统计从 Google 获得最多点击的 20 个网站: 核心表达式 在 ANN TopN 检索中,过滤谓词的应用时机是关键的设计权衡: Apache Doris 在 Scan 算子内通过 row bitmap 实现自然的前过滤语义。每个谓词执行后即时更新 row bitmap。当 TopN 下推到 Scan 时,向索引传递一个基于 row bitmap 的 IDSelector,仅保留满足条件的行作为候选,从源头上避免无效候选进入 TopN。 为进一步提升效率,Doris 还会在扫描前借助分区、分桶、ZoneMap 等轻量元数据进行快速预过滤,并结合倒排索引进行精确的行号定位,多层次缩小候选集,能够显著提升查询性能与资源效率。 在传统执行路径中,Doris 会对每条 SQL 执行完整优化流程(语法解析、语义分析、RBO、CBO)。这在通用 OLAP 场景必不可少,但在搜索等简单且高度重复的查询模式中会产生明显的额外开销。为此,Doris 进行了全局执行优化,充分发挥索引、过滤等性能。 A. Prepare Statement: Doris 4.0 扩展了 Prepare Statement,使其不仅支持点查,也适用于包含向量检索在内的所有 SQL 类型。Prepare Statement 的原理是将 SQL 编译与执行分离,模板化检索复用计划缓存,Execute 阶段跳过优化器。查询计划按“标准化 SQL + schema 版本”构建指纹进行缓存,执行阶段校验 schema version,变化则自动失效并重建。对频繁且结构相同仅参数不同的检索,Prepare 能显著降低 FE 侧 CPU 占用与排队等待。 B. Scan 并行度优化: 为提升 ANN TopN 检索性能,Doris 重构了 Scan 并行策略。原策略基于行数划分任务,在高维向量场景下,单个 Segment 的实际行数常远低于划分阈值,导致多个 Segment 被分配至同一任务中串行扫描,制约性能。 为此,Doris 改为严格按 Segment 创建 Scan Task,显著提升了索引检索阶段的并行度。由于 ANN TopN 搜索本身过滤率极高(仅返回 TopN 行),后续回表阶段即使串行执行,对整体吞吐与延迟的影响也微乎其微。 以 SIFT 1M 数据集为例,开启 此外,4.0 引入动态并行度调整:每轮调度前根据 Scan 线程池压力动态决定可提交的任务数;压力大则减并行、资源空闲则增并行,以在串行与高并发场景间兼顾资源利用率与调度开销。 C. TopN 全局延迟物化: 典型的 ANN TopN 查询可分为两个关键阶段:局部检索与全局归并。在局部检索阶段,Scan 算子通过索引获取每个数据分片(Segment)中的局部 TopN 近似距离;随后在全局归并阶段,由专门的排序节点对所有分片的局部结果进行合并,筛选出最终的全局 TopN。 传统执行流程存在一个显著效率问题:若查询需要返回多列或包含大字段(如长文本),在第一阶段就会读取这些列的全部数据。这不仅会引发大量磁盘 I/O,而且绝大多数被读取的行会在第二阶段的排序竞争中被淘汰,造成计算与 I/O 资源的浪费。 为此,Doris 引入了 “全局 TopN 延迟物化” 优化。该机制将非排序所需列的读取推迟到最终结果确定之后,大幅减少了不必要的 I/O。 优化执行流程示例: 以 通过将完整数据的“物化”步骤推迟到最后,该优化确保了查询前期仅处理轻量的距离与行标识信息,彻底避免了在排序前读取非必要列所带来的 I/O 开销,从而显著提升了整体查询效率。 企业级知识库是 RAG 的典型落地场景。因此,我们基于 LangChain + Apache Doris 搭建了一个以 Doris 官网文档为语料的最小可用知识库,用于验证 Doris 向量检索的端到端能力。完整示例代码见 GitHub。 (1)环境准备 (2)建库与建表(方式一:SQL) (3)演示语料 示例使用 Apache Doris 官网文档作为语料来源:https://github.com/apache/doris-website (4)离线文档处理 (5)导入 Doris(方式二:SDK 一键建表与导入) 说明:若已通过 ② 使用 SQL 创建好表并定义索引,可仅使用 SDK 的导入接口(如 (6)在线查询过程 向量检索 答案生成 返回的内容是: 本文从 AI 时代的数据形态演进出发,系统性地介绍了 Apache Doris 在 4.x 版本中引入的向量检索能力,并对其底层实现进行了深入剖析。从 ANN 索引的能力边界,到 FE / BE 架构下的写入、构建与查询路径,再到 SIMD、压缩编码与执行引擎层面的工程优化,Doris 的向量搜索并非简单接入一个索引库,而是围绕 性能三角(召回率 / 查询延迟 / 构建吞吐) 精心设计的系统级方案。未来,我们还会进一步强化,使其成为 AI 时代数据系统智能检索的基石。1. ANN 索引核心设计
ORDER BY distance LIMIT K 进行相似度搜索,并能与过滤、聚合、JOIN 等算子自由组合,天然支持混合检索与分析。2. Benchmark & Analysis
2.1 导入与构建性能

2.2 查询性能

3. 核心设计与性能优化

3.1 写入与构建路径优化
3.1.1 异步索引构建机制
CREATE INDEX 与 BUILD INDEX 通过 SchemaChangeHandler 编排:IndexState.SHADOW),并建立 origin→shadow 的 Tablet 映射与影子副本(副本初始态为 ALTER)。3.1.2 导入性能优化


max_degree≈100/120/150、ef_construction≈200/240/300、hnsw_ef_search≈50~200,即可在延迟可控的同时平衡召回与构建成本。hnsw_ef_search 提高而改善,但查询延迟也会线性增加。max_degree 与 ef_construction 过小会导致图结构稀疏、查询不稳定;过大则会显著增加构建时间与内存占用。因此,建议结合业务对召回和延迟的要求,通过离线压测确定最佳参数组合。
3.1.3 向量压缩技术
FLOAT32 存储,一百万行占用 4 GB,千万行则约 40 GB。考虑到索引结构的额外占用(约 1.3 倍),一千万行整体接近 52 GB。以 16C64GB 机器为例,单机索引上限约为千万级,需预留空间以避免 OOM,并保障查询和构建的并行开销。INT8 和 INT4 的标量量化,并在导入和构建阶段完成编码。FLOAT32(4 字节)替换为 INT8(1 字节)可节省约 75% 存储,进一步压缩为 INT4 则节省约 87.5%。如果压缩后数据的分布形态保持一致,召回率在可控延迟内接近未压缩效果。
pq_m = dim/2、pq_nbits = 8。


pq_m 设为原始维度的一半,pq_nbits 设为 8,在多数场景下即可取得良好的效果,可作为初始调优的参考起点。3.2 查询执行路径优化
3.2.1 虚拟列机制


SELECT l2_distance_approximate(embedding, [...]) AS dist FROM tbl ORDER BY dist LIMIT 100;,执行过程将不再触发数据文件 IO。set experimental_enable_virtual_slot_for_cse=true;
SELECT counterid,
COUNT(*) AS hit_count,
COUNT(DISTINCT userid) AS unique_users
FROM hits
WHERE ( UPPER(regexp_extract(referer, '^https?://([^/]+)', 1)) = 'GOOGLE.COM'
OR UPPER(regexp_extract(referer, '^https?://([^/]+)', 1)) = 'GOOGLE.RU'
OR UPPER(regexp_extract(referer, '^https?://([^/]+)', 1)) LIKE '%GOOGLE%' )
AND ( LENGTH(regexp_extract(referer, '^https?://([^/]+)', 1)) > 3
OR regexp_extract(referer, '^https?://([^/]+)', 1) != ''
OR regexp_extract(referer, '^https?://([^/]+)', 1) IS NOT NULL )
AND eventdate = '2013-07-15'
GROUP BY counterid
HAVING hit_count > 100
ORDER BY hit_count DESC
LIMIT 20;regexp_extract(referer, '^https?://([^/]+)', 1) 为 CPU 密集型且被多处复用。启用虚拟列优化(set experimental_enable_virtual_slot_for_cse=true;)后,端到端性能提升约 3 倍。3.2.2 前过滤与谓词下推
3.2.3 全局执行优化
optimize_index_scan_parallelism=true 后,TopN 查询耗时从 230ms 降至 50ms,效果显著。SELECT id, l2_distance_approximate(embedding, [...]) AS dist FROM tbl ORDER BY dist LIMIT 100; 为例:dist)及其对应的行标识(rowid),不读取其他列。rowid。Materialize 算子根据上一步得到的 rowid,精准地到对应的存储位置读取所需列(例如 id)的数据。4. 实战:使用 Apache Doris 搭建企业知识库
bge-m3:latest。bge-m3 是开源的通用检索向量模型,兼顾中英文检索效果,默认输出 1024 维向量,适合知识库检索场景。CREATE DATABASE doris_rag_test_db;
USE doris_rag_test_db;
CREATE TABLE doris_rag_demo (
id int NULL,
content text NULL,
embedding array<float> NOT NULL,
INDEX idx_embedding (embedding) USING ANN PROPERTIES("dim" = "1024", "ef_construction" = "40", "index_type" = "hnsw", "max_degree" = "32", "metric_type" = "inner_product")
) ENGINE=OLAP
DUPLICATE KEY(id)
DISTRIBUTED BY HASH(id) BUCKETS 1
PROPERTIES (
"replication_allocation" = "tag.location.default: 1",
"storage_medium" = "hdd",
"storage_format" = "V2",
"inverted_index_storage_format" = "V3",
"light_schema_change" = "true"
);说明:若计划使用 SDK 一键建表与导入(见 ⑤),本节可省略。
from langchain_text_splitters import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=400, chunk_overlap=100, length_function=len
)
chunks = text_splitter.split_text(text)from typing import List, Dict
from langchain_community.embeddings import OllamaEmbeddings
embeddings = OllamaEmbeddings(model='bge-m3:latest', base_url='http://localhost:11434')
docs: List[Dict] = []
cur_id = 1
for chunk in chunks:
docs.append({"id": cur_id, "content": chunk})
cur_id += 1
contents = [d["content"] for d in docs]
vectors = embeddings.embed_documents(contents)import pandas as pd
df = pd.DataFrame(
[
{
"id": d["id"],
"content": d["content"],
"embedding": vec,
}
for d, vec in zip(docs, vectors)
])
from doris_vector_search import DorisVectorClient, AuthOptions, IndexOptions
auth = AuthOptions(
host='localhost',
query_port=9030,
http_port=8030,
user='root',
password='',
)
client = DorisVectorClient('doris_rag_test_db', auth_options=auth)
index_options = IndexOptions(index_type="hnsw", metric_type="inner_product")
table = client.create_table(
'doris_rag_demo',
df,
index_options=index_options,
)insert/load 等,视 SDK 能力而定)将数据写入既有表。query = 'Doris 支持哪些存储模型?'
query_vec = embeddings.embed_query(query)
df = (
table.search(query_vec)
.limit(5)
.select(["id", "content"])
.to_pandas()
)ctx = "\n".join(f"{r['content']}" for _, r in df.iterrows())
prompt = "以下是检索到的 Doris 文档片段:\n\n{}\n\n请根据上述内容回答:{}".format(ctx, query)
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model='deepseek-v3-1-terminus',
api_key='xxxx',
base_url='https://xxx',
temperature=float(1.0))
resp = llm.invoke(prompt)'根据提供的文档内容,Apache Doris 支持以下三种存储模型:\n\n1. 明细模型(Duplicate Key Model):适用于存储事实表的明细数据。\n2. 主键模型(Unique Key Model):保证主键的唯一性,相同主键的数据会被覆盖,从而实现行级别的数据更新。\n3. 聚合模型(Aggregate Key Model):相同键(Key)的数值列(Value)会被自动合并,通过提前聚合来大幅提升查询性能。\n\n此外,文档在“灵活建模”部分还提到,Apache Doris 支持如宽表模型、预聚合模型、星型/雪花模型等建模方式,这些可以看作是建立在上述三种核心存储模型之上的数据组织方法。'5. 总结
这,是一段采用C++精灵库代码: 这,是一段实现几乎同样功能的Python代码: 对青少年而言,手写代码的过程更是不可或缺的训练环节。大脑需要依靠动手、思考等多感官联动来强化记忆,最终完成思维的沉淀与提升。如果只看不练,或是依赖自动补全、AI生成等“捷径”,只会让大脑养成偷懒的习惯,看似省了力,实则错失了思维成长的关键机会,到最后脱离工具便寸步难行。当然,工作场景的目标不同,只要能高效完成任务,借助工具无可厚非,但学习阶段,必须沉下心手写每一行代码,筑牢基础。 回到这款C++精灵库本身,它的价值远不止“画出更好看的图案”这么简单,对中小学生C++启蒙教育来说,更是一款极具针对性的优质工具。首先,它完美衔接了中小学生熟悉的Python turtle库逻辑,语法风格贴近,降低了C++的入门门槛。很多孩子初学C++时,会因语法严谨性、图形库配置复杂而产生畏难情绪,而这款精灵库省去了繁琐的底层配置,保留了直观的绘图交互,让孩子能快速上手,把注意力集中在逻辑思考上,而非纠结于语法细节和环境搭建。 其次,它在保留核心编程逻辑的基础上,增加了coloradd()这类轻量化特效接口,既满足了孩子对“酷炫效果”的追求,又引导他们主动探索语法背后的功能差异。这种可视化的反馈的能极大提升学习兴趣,让抽象的编程概念变得具象可感——孩子能直观看到自己写的代码如何改变图案颜色、形状,从而更易理解循环、函数调用等核心知识点,激发持续学习的动力。 再者,它为Python与C++的学习衔接搭建了桥梁。很多中小学编程启蒙先从Python开始,孩子熟悉turtle绘图后,通过这款精灵库转学到C++,能快速找到熟悉的操作逻辑,降低跨语言学习的不适感。同时,它又保留了C++的核心特性,让孩子在启蒙阶段就接触到面向对象编程的雏形(如Sprite类的实例化、方法链式调用),为后续深入学习C++、Java等语言打下扎实基础。 传统C++启蒙常陷入“重语法、轻应用”的误区,孩子对着枯燥的控制台输出反复练习,容易失去兴趣。而这款C++精灵库以可视化绘图为载体,兼顾了趣味性、易用性和教育性,既让孩子在动手实践中锤炼了编程思维,又化解了C++入门的难度。对中小学生来说,它不是一款复杂的专业库,而是一个能陪伴自己入门编程、培养核心能力的好帮手,无疑是值得尝试的中小学C++教育工具。#include "sprites.h" //包含C++精灵库
Sprite t; //建立角色叫t
int main(){ //主功能块
t.bgcolor("black").pensize(4).pencolor("red");
for(int i=0;i<60;i++)
t.fd(5).left(6).coloradd(1);
for(int i=0;i<60;i++)
t.fd(5).right(6).coloradd(1);
t.ht().done(); //完成了
return 0; //返回0
}import turtle as t
t.bgcolor("black")
t.pensize(4)
t.pencolor("red")
for i in range(60):
t.fd(5)
t.left(6)
for i in range(60):
t.fd(5)
t.right(6)
t.ht()
t.done()
它们画的图形一模一样,差别就在于C++代码画出的图案自带彩虹般的渐变效果。只因每次角色t左转、右转后,都会通过coloradd(1)让颜色色相增加1,最终画出的“8”字比Python版更灵动好看。显然,这款C++精灵库深谙Python turtle库的使用逻辑,特意优化了视觉效果,更贴合中小学生的审美和学习心理。
两款代码的编程思想、运行逻辑完全一致,只是语法上稍有差异。而对于刚开始接触编程的青少年来说,语法从来都不是核心重点。学习编程的本质,是锻炼逻辑思维、掌握核心算法,学会用编程的视角分析和解决问题——这一点在AI时代尤为关键。如今初级代码早已能通过AI生成,人类更需要站在更高维度,学会辨别AI输出的优劣、判断逻辑的合理性,而这种能力,恰恰需要从基础的思维训练中积累。
在现代数字商业领域,仅靠网站展示绿色“安全锁”,已无法满足用户复杂的信任需求。当用户、合作伙伴及监管机构共同质疑“运营方主体身份”时,企业亟需更有说服力的解决方案。虽然DV证书可以实现数据加密,有效防止数据被盗取或篡改,但企业的身份却依旧隐藏在匿名之中。而EV证书虽然具备最高级别的身份认证,可视化效果显著。但严格的申请流程与相对较高的费用,并非适合所有企业在每个发展阶段采用。在这一信任需求的梯度范围内,OV证书凭借能力与成本的平衡点,成为企业从“身份模糊”迈向“可信认证”的战略性选择。JoySSL技术处专家强调,组织验证型证书的核心价值在于其对身份公信力、成本效率及广泛适用性的理想兼顾。不仅是合格的解决方案,更是企业在数字经济体系中开展合规运营、树立信誉、建立安全合作关系的标准配置。 权威身份验证 OV证书构建企业信任基础 相比DV证书,OV证书的显著特点在于其验证机制由人工审核主导,而非完全依赖自动化流程。部署OV证书的网站,其背后运营者的身份不再是无法识别的匿名。这一身份认证,显著提高了仿冒与钓鱼行为的难度。在B2B业务、电子商务以及金融服务等领域,这种认证成为企业构建信任的基础技术手段。 全面安全防护 超越数据加密完善风险管理 OV证书提供与高级别证书相等强度的加密技术,采用国际标准的高强度加密算法,确保用户与网站之间的所有数据交互,在传输过程中保持机密性与完整性,满足不同行业对数据安全的核心诉求。同时,OV证书还承担重要的责任保障功能。通过提供高额保修服务,企业能够有效规避潜在风险,相当于为企业添加了一层“风险屏障”,有助于完善其自身的风险管理体系。 高兼容高灵活 SSL证书适应多样化业务需求 OV证书的研发,旨在满足现代企业复杂的IT环境,以及未来扩展的可能性。无论用户身处何地,都能够利用证书无障碍且无警告地浏览,为企业开展国际化业务提供技术支持。灵活的证书形式是拥有多个子站点、API接口或SaaS平台的企业的理想选择,适应企业多样化业务需求。 精准市场定位 传统IT技术转型企业战略资产 面对强监管和激烈竞争的市场环境,JoySSL认为,OV证书的价值正从传统的IT技术,转型为企业的战略资产。随着《网络安全法》、《数据安全法》的逐步推行,OV证书严格的身份验证流程,为合规审计提供了技术支持,成为行业监管基线下的通行标准。这种信任的附加价值能够降低用户在注册、信息提交或交易过程中所面临的心理障碍,从而提高转化率并增进客户忠诚度。 重视品牌信誉 OV证书助力企业数字化发展 选择SSL证书的核心,是在数字世界中定义企业的存在方式。OV证书体现了一种成熟、稳重且负责任的态度。它倡导透明,强调保护,突出责任,重视品牌与信誉,为未来合作与发展铺设信任的基石。OV证书不是“可选项”,而是企业提升数字竞争力,赢得稳固而长久商业信任的关键所在。


Ryan Dahl 在 1 月 20 日给软件工程下了结论:“人类写代码的时代已经结束。”留下的工作里,不包括继续手写语法。 如果这话出自某个科技网红,大概刷过去就算了。但 Ryan Dahl 不一样——他不仅写出了 Node.js,后来还“推倒重来”做了 Deno。你可以把他的意思理解为:写代码这部分会越来越自动化,而人的价值会更多落在判断、取舍和责任上。 而在 Ryan Dahl 这次“宣判”之前,1 月 3 日,Ruby on Rails 作者 DHH 也在 X 上连发多条,语气罕见地偏“乐观派”: “别让那些粗制滥造和尴尬翻车,遮住你对 AI 的惊叹。自从我们把计算机连上互联网以来,这是我们让计算机做到过的最令人兴奋的事。如果你在 2025 年一直对 AI 悲观或怀疑,不如在 2026 年的开端,用一点乐观和好奇再试试看?” 于是,社区里迅速冒出一种更夸张、但传播力极强的解读:“DHH 都松口了。”“连最不买账的人都开始给 AI 站台——你还有什么理由不用?”甚至有人干脆把它说成:“DHH 也扛不住了,最终还是向 AI 屈服低头了。” 但你真去听 DHH 的原话,会发现所谓“DHH 屈服论”,并不是那么回事儿。 在最新一期播客中,他说在 37signals,AI 没有在写真实产品,更谈不上“从零写出什么东西”。 他在用 AI,而且每天都用,但更多是做那种“一发入魂”的小实验;一旦进入真工程:要持续演进、要迭代、要打磨,他就会觉得:“这在浪费我的时间,到这一步我自己写更快。” 所以他们的新产品 Fizzy 里 95% 的代码,还是人类亲手敲出来的。 他还补了一句:我们离那种“AI 让一切始终更好、更快、更省心”的明显拐点,还差一点。 “就现在而言,我仍然在意代码的样子。我在意它的美感。我在意打磨、推敲、润色。” 更关键的是,他不是在怀旧。他明确说:“手写代码依然有竞争力。”“至少在此时此刻,这是一个仍然有竞争力的选择。” 而且他的判断正好和 Ryan Dahl 相反:“我们并没有到 AGI,没有到那种‘人类写代码的时代死了’的程度。” 挺好玩的是,DHH 还说要远离 Anthropic 的 CEO:他一听到那种“再过五分钟就不需要程序员了”的口吻就火大,直接开喷:“你们到底用的啥模型啊?”反正他自己用的是 Opus 4.5(或当下版本),但在他的体验里,这种“程序员马上下岗”的说法完全不符合现实——尤其是那些要长期维护、持续迭代、不断演进的真实工程,离“五分钟结束”差得十万八千里。 以下是 DHH 播客整理全文翻译: 主持人:欢迎大家来到《Next Token》。今天这期节目对我来说有点特别,可能要追溯到 25 年前。很高兴请到 DHH——David Heinemeier Hansson。欢迎你。 DHH:很高兴来,谢谢邀请。 主持人:我猜你可能是刚从赛车里下来(笑)。 DHH:现在是休赛期,正好歇一歇。 主持人(Torsten):那我就先来点“热血沸腾”的话题。我从 2010 年左右就开始关注你,你可能是对我影响最大的前五位程序员之一。如果没有你,我可能不会走到今天。我职业生涯中有七八年都在写 Rails,看了你所有的书、博客。我们其实从没见过面,但有一次“交集”让我印象极深——我发过一条关于 Cookie Banners 的吐槽推文,那是我人生中传播最广的一条推文。那天中午我被 Cookie Banners 气疯了,随手发了一条,然后彻底炸了。第二天你转推并评论说:“这就是为什么人们不再浏览 Web,而是开始用 ChatGPT。” 所以我想直接问你:欧盟最近说要“取消 Cookie Banners”,你觉得这真的能改善什么吗?还是说——已经太迟了? DHH:我认为 Cookie Banners 是 Web 体验变得糟糕的一个主要原因。它们几乎比早期那种弹窗广告还要糟糕——你知道的,“打地鼠”“打猴子”那种 2000 年初的弹窗。当年浏览器还能通过技术手段封杀弹窗,但 Cookie Banners 没有一个统一、有效的技术解决方案。我知道有插件能挡,但大多数人不会装。结果就是:Cookie Banners 成了互联网的一场瘟疫。 我是丹麦人,所以我觉得我有资格狠狠吐槽欧盟。Cookie Banners 最初的出发点是“高尚的”——限制数据收集、提高透明度。但这套东西在第一个 Cookie Banners 出现 5 分钟后,就已经被证明是失败的。可欧盟花了整整 15 年,才开始承认这个问题。现在他们说要“移除”Cookie Banners。 但“移除”是什么意思?你以为这就能抹掉你对互联网造成的破坏吗?不可能。接下来30 年,仍然会有大量网站继续保留 Cookie Banners——因为删掉它比留着更麻烦,或者网站早就没人维护了。 这是一件非常悲哀的事。当然,我并不是说:如果没有 Cookie Banners,人们就不会去用 ChatGPT。 那不现实。但它确实在可测量的层面上伤害了 Web,让浏览体验变得远比必要的程度更糟。 一旦你已经在用户体验上制造了第一道伤口,后面再多来几刀,心理成本就低多了。Cookie Banners 把“底线”拉得太低了,以至于很多 Web 设计师会觉得:再多放点广告、再恶心一点,好像也没那么糟。 这就像“破窗理论”。 主持人:那在 Cookie Banners 把 Web 搞成这样之后,你觉得互联网浏览的未来会走向哪里? 如果未来主要“浏览 Web 的不再是人类”,那这些问题还重要吗? DHH:这是一个好问题。我觉得现在有很多聪明的人都在试图搞明白这件事,我们也在尝试各种不同的做法。某种意义上,这真的很像上世纪 90 年代中后期——当时我们在摸索互联网的第一个版本:这一切究竟会怎么运作?谁会掌握权力?谁会成为平台?谁又会成为把关者?所有这些问题,如今再次被抛回到空中,悬而未决。 不管我个人怎么看它最终会走向哪里,我都觉得这是一件令人兴奋的事情。互联网和计算技术,已经很久没有像现在这样让人感到兴奋了——上一次有这种感觉,还是在 2007 年。 那是 iPhone 刚刚问世的时候,我们迎来了一个全新的形态。随后经历了很长一段时间:好,一切都转向移动端了。而现在,我们又站在另一次巨大的转折点上——这一次,不只是“移动”不再以同样的方式重要了,它不再是你思考和构建产品时的那个主导视角。 与此同时,还有大量没有答案的问题。如果人类不再亲自阅读互联网内容,因此也不再阅读广告,那究竟是谁在为互联网写作?谁还会去生产那些美好的内容?当我们摆脱了 cookie 弹窗,重新拥有一个“干净体面”的门面,这件事真的还重要吗? 如果这件事本身已经不再重要,如果人们不再想为互联网写作,那 AI 又将从哪里获取它所需要的信息?我觉得现在有太多悬而未决的问题,以至于没有任何人哪怕稍微知道,最终的解决方案会是什么样子。而这,恰恰是活在这个时代最令人振奋的地方。 我毫不怀疑,将来我们回头看今天这个时刻时,会说:“好吧,这里发生了一次决定性的变化。”而且,这种变化在当下的可感知程度,甚至比前两次都要更明显。 互联网的出现,花了五六年的时间才真正渗透进社会,对整个社会产生巨大影响。后来是手机,速度快了一些,但也没有快到哪里去——iPhone 本身也经历了好几代迭代,我们一开始甚至都没有 App Store,这些东西都是慢慢才出现的。 但 AI 不一样。 AI 的出现,在当下这一刻就已经非常明显。任何一个用过第一版 ChatGPT 的人,都会立刻意识到:哇,这完全是一个全新的东西,它将重写规则。 所以,在这三次巨大的技术变迁中——互联网的诞生、移动时代的到来,以及现在的 AI——这是第一次,我们在实时发生的过程中就清楚地知道:世界一定会变得完全不同,而我们却不知道最终会变成什么样。 因此,我觉得你能做的最好的事情,就是接受三点:第一,我们不知道答案;第二,这真的令人兴奋;第三,赶紧上车,狠狠干脆坐稳了,看看它会把我们带到哪里去。 因为还有另一种冲动,过去在互联网时代出现过,在移动时代也出现过:那就是一部分人会说,“我更喜欢以前的样子。我喜欢变革发生之前的一切。我不喜欢 AI。我不喜欢也许会被整个互联网重新中介化。我不喜欢这些东西。我们能不能把一切都倒回去?” 不,不能。你没有这种权力。你无法把这些东西倒回去。 你当然可以在个人层面选择:我不用生成式 AI,或者我不买任何包含 AI 方案的产品。但这种想法,本质上是一种“阿米什式”的思维方式——而在任何时代,这都只是非常小众的选择。 如果这就是你,如果这就是你想与世界互动的方式,那很好,祝你一切顺利。我们有时候确实需要一些“疯子”来提醒我们:事情也可以用完全不同的方式来做。但这,并不会改变历史前进的轨迹。 主持人:你的兴奋更多来自哪里?是因为规则被打乱、棋盘被掀翻?还是因为你真的想用 AI 做事? DHH:首先也是最重要的一点,我热爱计算机。我喜欢看到计算机做出以前做不了的新事情。说实话,让我觉得非常惊讶的是:有这么多在科技行业工作的人,其实并不怎么喜欢计算机——甚至包括那些每天都要和计算机打交道、让计算机“跳舞”的程序员,也并不是所有人都真的喜欢计算机。 但我不一样。我爱计算机。我真的爱计算机本身,爱的是它作为一台机器的纯粹性。我并不是只把计算机当成一种“工具”,不是只想用它来完成某个目的。确实有一大类人,把计算机仅仅视为通往某个结果的手段。但不是这样,对我来说,这要更深得多——我就是单纯地热爱计算机这个东西本身,也热爱看到它去做全新的事情。 而现在发生的这件事,是计算机在我这一生中做过的最令人兴奋的新事情之一,至少可以和当年“计算机连上网络”这件事相提并论。 那时我们从 Commodore 64、Amiga 时代走过来,突然“砰”地一下就上网了,用小小的调制解调器拨号,连接世界各地的 BBS,听着它唱出那种刺耳却又美妙的声音——那同样是一次巨大的转变,也彻底改变了我和计算机之间的关系。 而现在,很可能是第二次这样规模的变化。 另一件让我感到兴奋的,是棋盘被彻底翻转了。尤其是我们已经形成了一些根深蒂固的格局。比如 Apple,我和那家公司有过不少摩擦。我非常期待看到 Apple 通过 App Store 以及整个移动生态所建立的那种“封闭控制”,被彻底掀翻,因为它也许将不再以同样的方式重要。 当然,我也并不天真到以为:只要棋盘一翻转,接下来就会迎来一个人人和谐共处的“涅槃世界”,一切都会变成开放平台,没有任何人占据主导地位。这显然不可能发生。不管最终的主导者叫 OpenAI、xAI、Google,还是别的什么名字,某种形式的集中和垄断,迟早都会出现。 但至少在现在,我们还处在“尚未整合”的阶段。有这么多公司同时在追逐前沿模型,却没有任何一家明显胜出。 就在五秒钟前,整个科技行业还准备给 Google 判死刑——“他们错过了浪潮”,“早期研究是他们做的,《Attention Is All You Need》那篇论文也是他们团队出的,但后来落后了整整九个月”,当时大家已经在谈论 Google 的衰落了。而现在,他们也许又重新回到了领先位置,至少在某些领域确实如此。 这种不确定性本身就让人兴奋——我们并不知道,最终谁会占据主导地位,甚至都不确定“主导地位”这种东西是否一定会出现。 这件事也很有意思。就在几周前,我还在推特上说,跑本地模型这件事有点“奇怪”。因为我之前试过一些本地模型,说不上什么时候,总之那时体验一般。但就在这周,我又开始重新跑本地模型,然后我心里想:“靠,我之前说的话,保质期也太短了吧。” 现实变化的速度已经快到:三个月前说的任何一句话,现在看起来都可能有点傻。 而且我真的被本地模型现在的水平震惊到了。它们当然还比不上最前沿的模型,但如果再往前看两年呢?有没有一种可能,根本不会出现一个“唯一的赢家”?赢家反而会是开放模型?最终的局面,会不会类似开源软件对后端软件世界造成的影响? 过去我们是有绝对主导者的。我们有过 Sun,有过 IBM,在某种程度上也有过 Microsoft。但这些都已经不存在了。整个后端世界——从 Linux 到各种数据库,再到 Ruby、Rails,以及所有这些东西——几乎全都是开源的。你再也看不到那种一家独大的绝对统治。 而在另一边,在前端世界,尤其是移动端,我们却看到的是彻底的垄断:只有两个赢家,Google 和 Apple。他们对平台拥有完全的控制权,而且还在不断收紧螺丝。我们唯一的希望,似乎只剩下立法或监管,而说实话,我对这条路也已经越来越悲观了。 所以现在的局面真的很令人兴奋——它可能朝两个完全不同的方向发展。 我们很可能还是会走向某种形式的垄断,因为这是面向用户的界面层。而在历史上,我几乎想不起有哪个时代,这种层面没有被“征服”过。 但也有另一种可能:这些开放模型会好到一个程度,以至于“谁占据商业主导地位”这件事根本不重要,你甚至不需要那种商业上的统治。 这真的是一个无比令人兴奋的时代。 主持人:这挺有意思的——你正好是在这个变动时期推出新产品。HEY 大概是五年前发布的,然后最近 Fizzy 也上线了。我们特别想知道:37signals 内部现在到底在发生什么?你们到底怎么用 AI?你们做 Fizzy 的时候,用没用 AI?用到什么程度?我很想听点“细节层面的现实”,AI 在 37signals 具体怎么落地、怎么被用起来的。 DHH:哦,用的,当然用。我们每一个开发者都在某种程度上使用 AI。我自己每天也在用 AI。 但我也得先加一句前提:我虽然对我们即将进入的新现实非常兴奋,但我每天处理的仍然是“此时此刻真实存在的东西”。你必须学会在“ hype 的列车”和“现实的列车”之间保持平衡。 而在我的“现实列车”里,AI 没有在写 Fizzy(一个 Kanban 工具)。 AI 也没有从零写任何东西。 我确实用过 AI 做过各种“一发入魂”的实验——但它们通常都只停留在“一发入魂”。因为只要我进入真正的细节:要持续演进、要迭代、要打磨,我就会想:“嗯,这就是在浪费我的时间。到这个阶段,我自己写反而更快。” 当然,AI 在另一些方面确实能大幅加速。我们在做这些产品时,也在一定程度上使用 AI。但我们并没有大量用 AI 来写 Ruby 代码。如果用 AI 写 Ruby,通常也只是“机械式翻译”——比如:“这里有个我们知道已经存在的东西,你能把它用 Ruby 版本写出来吗?” 它能给出一个初稿,有时候会稍微帮点忙。 AI 更有价值的地方是在我们的一些 Go 代码上,因为那里面“样板代码”更多,收益更明显。 但即便是 Ruby 和 Go 这两块,也谈不上“改变游戏规则”。 真正改变游戏规则的是: 你想学习一个新 API 你想理解一个新概念模型 或者我们做实验,直接用 AI 去尝试构建“能真正带来价值”的 AI 功能 在这些方面,收益更大。 但我们离那种——某些 CEO(比如 Anthropic 的 CEO 那种语气)说的——“再过五分钟我们就不需要程序员了”还差得远。我就想问一句:你们到底用的是什么模型?我用的是 Opus 4.5(或者现在的版本),但那种说法完全不符合现实——至少对于“持续演进”这类工作来说,是完全不成立的。 我仍然保持开放心态,我也能看到那种承诺。我记得互联网在 1994、1995 年那会儿是什么状态,我当然能做外推:我们也许真的会走到那一步。也许我们会到一个阶段:人类不再编写大多数代码。 但如果你看 Fizzy:95% 的代码,是人类亲手敲出来的。 主持人:有意思。真的?你们内部也这样认为? DHH:你回头看 Fizzy 的整个开发历史,会更有意思。我们在 Fizzy 里做过一堆 AI 功能实验:我们试过做一个 AI 驱动的命令行,用来和卡片(cards)交互;我们也试过 AI 摘要,给一些内容自动做总结。但最后这两项我们都没有发布。 Basecamp 也是一样:我们实验过很多不同的 AI 功能,但没有一个能达到“明显更好、用户会一直爱用”的标准,所以都没进最终版本。 我仍然相信未来这会改变。只是我们现在还没到那个时刻。 我也见过其他地方做得更成熟的案例。比如我在 Shopify 董事会,Shopify 做的 Sidekick(他们的 AI agent)——用来帮助商家搭建店铺、优化店铺——真的很不可思议。那里面有一些非常具体、非常可触达的收益,我觉得几乎无可争辩。 我们仍然处在一个阶段:距离“AI 让一切始终更好、更快、更省心”那种明显的拐点,还差一点。 也正因为还没到那个拐点,所以才会出现一些反弹——我认为其中不少反弹甚至是合理的。 因为很多人用了所谓“AI 功能”之后会觉得:“这玩意儿太烂了。”“不更好,也不更快,甚至很蠢。” 比如摘要。我们刚刚还提到 Apple。Apple 对新闻、短信之类的摘要,我真不知道有多少人真喜欢开着它。它在很多情况下都离谱地糟糕、离谱地错误。连 Apple 这种体量的公司都做不对,那你基本可以合理推测:很多别的公司也同样做不对。 不过我也想强调:最近我们确实找到了几个非常好的 AI 用例。其中一个是我们的安全漏洞赏金项目(通过 HackerOne 运行)。我们会收到海量的报告——某个研究员声称在我们的应用里发现了漏洞。我们必须处理这些报告,而现实的数学非常残酷。我们大概会收到……可能一个季度 300 份报告之类的数量。但真正“靠谱、有效、值得修”的——大概只有 3 份。 也就是说,真正有价值的比例大概只有1%。而这个 1% 非常重要,因为它们可能真的指出了一个严重问题,我们必须修。但为了抓住这 1%,你必须花巨大精力去验证剩下99%的垃圾——这对团队来说是巨大的麻烦、巨大的时间黑洞、巨大的烦躁来源。 AI 在这件事上简直太厉害了:它能在报告进来时就先处理一遍,给我们一个初步判断——“这到底是扯淡,还是不扯淡?”然后还会帮我们写回复邮件。 而写回复其实才是痛点的一半:当 99% 的提交都是彻头彻尾的狗屎,写这些狗屎的人还常常—— 根本不懂自己在说什么,却又特别理直气壮,还特别不耐烦,甚至还一副“你必须立刻给我 5000 美金赏金”的态度。 这时候让人类程序员保持冷静、不直接对他们开喷,是很难的。真的,你会很想直接骂人。 AI 就完全没这个负担。它特别乐意用一种非常冷静的语气写一大段回复:“为什么你这个东西不成立。”它帮我们省了大量时间。 主持人:有意思。所以 AI 是拿到报告之后,去看你们代码库,然后判断它到底对不对? DHH:对。没错。就是这样。把这两件事结合起来。 主持人:听起来需要一点技巧:拿到安全报告,很多是垃圾,但到了某个层级,你确实得打开代码去确认“这到底是不是真的”。 DHH:以前要看 100 份报告,现在可能只要看 5 份——这就是真实的生产力提升。就算你最后要看 10 份、20 份,只要你能把原本 100 份的工作压缩到 20 份,这就是 AI 承诺的生产力收益。如果我们能把这种压缩能力用到业务的其他方面——那简直太好了。这也是为什么我们一直在尝试把 AI 用在一些具体环节上。 另一个我们断断续续尝试了好几年的方向是客服支持(support)。但 support 很微妙:如果你只能 90% 正确,那其实很糟糕。因为这意味着你会有 10% 的概率把事情说错——而且是对着客户说错。你如果给客户一个完全错误的答案,让客户体验很差,客户可能就直接流失了。 那这个客户的终生价值是多少? 你以为 AI 带来的那点“节省成本”,可能瞬间就被一次流失抵消得干干净净。我们上一次认真测试让 AI “做完整客服链路”,大概是 18 个月前左右。效果不太行。但一切都在飞速变化。我知道 Intercom 有一个叫 Finn 的 AI agent,采用得很好,看起来我们也确实该再试一次。 而这又回到我最初的那种兴奋:一切变化太快了。 有些人会觉得这很让人迷失方向,我觉得这也是很多焦虑的来源。但如果你像我一样,只是单纯喜欢看计算机变得更强大——那现在真的就是一场大戏。坐在第一排,实时看它发生。 我们从“那个吃意大利面的人”——看起来像噩梦一样的生成图——走到了今天这种几乎不可区分的输出。接下来,我们很可能会在更多领域看到同样的跃迁。你得保持一种“敬畏感”和“惊奇感”。 如果你此刻身处这个行业,和计算机打交道——你的“惊奇感”就是你的安全绳。它能对冲焦虑,对冲不确定性,让这一切变得可承受。 当然,我们并不能消除不确定性和焦虑。比如:我的工作三个月后还存在吗?这种焦虑非常合理。但你可以用惊奇感来对冲它:“这些硅做的小东西也太聪明了吧。” 主持人:它们真的很神奇。这就引出了一个更大的问题:软件商业模式的未来到底会怎样?这确实很神奇,但也真的太不一样了。你能不能展开讲讲:创业公司会走向哪里?软件产品会走向哪里?软件工程师会走向哪里?未来到底会怎样? DHH:有一点我现在非常确定:今天发布一个新产品,从“把它做出来”的角度看,是史上最容易的。AI 让构建更容易;工具史上最好;Ruby 和 Rails 也从未如此成熟。对所有人来说,这都很棒。结果就是:市场被海量新产品发布淹没了——永无止境的“上百万、上亿级别”的新发布。 这就是你现在要面对的现实。门槛被降低了。而我不确定所有人都会在“轮到自己发布时”还为门槛降低而兴奋——因为你一发布,可能就是一片寂静,连个回响都没有。我们刚发布 Fizzy,算是一次不错的发布,但它并没有像我们历史上某些发布那样“声量巨大”。 这当然不只是 AI 的原因,还有社交媒体算法的原因。以前,我在 X(Twitter)上有粉丝,他们就能看到我发的东西。但现在,你会发现:X 上正在发生 Facebook 在 2010 年左右发生过的那一幕——你有粉丝,但你触达不了他们,除非你付钱给平台“买触达”。 但现在甚至都不只是“付钱”这么简单。问题变成:我甚至都看不到我合伙人 Jason 的推文了。除非他发了一条“爆款(banger)”,爆到病毒式传播,否则他的内容就不会出现在我的 For You 页面里。一切被压缩成了“你能不能发出爆款”。 拥有大量粉丝这件事的价值,被严重稀释了。我在 X 上有五十多万粉丝——这在我发一些犀利观点、能引起传播时依然好用。但当我想发“右勾拳”(也就是营销、转化)的时候,它不再提供过去那种收益。当然,这种变化也不全是坏处。现在小账号也可能爆:就算你只有 10 个粉丝,只要你发了一条爆款,算法也可能把你推上去。算法选赢家和输家的方式,反而让那些没有花 20 年积累粉丝的人受益。但这真的好吗?我大概发了 7 万条推文——这真是离谱。但 18 年下来,这些投入几乎没有“可积累的剩余权益”(residual equity)。 我不确定这是不是我们长期想要的生态。但可以确定的是:对我们的营销方式、产品发布方式来说,这已经是一个全新的世界。 我们公司现在的阶段是:我们能承受“靠一靠、观望一下”,说一句“挺有意思”。但如果你还处在“必须打出名气”的阶段,你肯定会更焦虑。因为以前那套打法,已经不像过去那样奏效,你得发明新的东西。 事实上,这种认知直接影响了 Fizzy 的发布策略:我们承认——你不能再用老办法发布产品了。你手里的名单、你已有的受众,不可能再用“传统方式”被激活。你需要持续不断的“滴灌”:一滴、一滴、一滴。 如果我们希望 Fizzy 这个品牌能在用户心里留下印象,以至于当他们遇到我们要解决的问题时,会想起它、会去 fizzy.do,我们就必须设计一种策略,让我们能一直这样做下去。这也部分解释了为什么我们从一开始就把 Fizzy 开源。 把 Fizzy 从发布第一天就开源—— 对所有想学习“生产级 Ruby/Rails 应用如何构建”的人来说,这是一个巨大的礼物; 同时,对我们来说,它也给了我们一个“更频繁谈论 Fizzy 的许可”。 现在社交平台上,纯商业化的转化号召(call-to-action)越来越推不动。以前它传播力也一般,但好歹还能“硬塞”一下——那就是所谓的“右勾拳”。现在右勾拳打不出去,你就得换一种卖法。我目前觉得最管用的策略,是把“给价值”和“求转化”合成一拳:轻击(jab)和右勾拳(right hook)不再分开打,而是同一条内容里同时完成。 比如我会发:“Fizzy 里有个很酷的小功能——可能是我们做的,也可能是社区做的,或者我只是想提醒你注意到它。”这条对开发者有用;与此同时,我也顺势把品牌名反复露出来:Fizzy、Fizzy、Fizzy……品牌就是靠重复进入脑子。 关键是:重复仍然有效,但必须绑着价值一起出现。光当“慷慨的好人”持续免费输出已经不够了——你得把输出和你正在做的产品强绑定。这就是我们现在的打法。当然规则也可能随时被改写,但就此刻来看,这就是现实的游戏规则。 主持人:你说“现在你只要把东西做出来就行”,这句话听起来很有趣,因为我觉得你以前不会这么说。你从一开始就很重视营销——从最早的 Rails demo、到各种“挑衅”、到你如何推销愿景……你一直都在想怎么卖、怎么讲故事。但现在市场被淹没了,好像营销反而变得更重要。 更巧的是,我们内部也在聊类似的事。我们在做 AMP(我们在做一个 coding agent),我们内部一直说:现在外界没有太多“强烈的 OTE”(那种外溢式的注意力/势能)。我们想做的是:用一个故事把人“拉着走”——告诉他们我们在这个动荡的时代学到了什么,让他们产生一种感觉:“如果你跟我们走,门是开着的;如果你跟我们走,我们会分享我们学到的东西。”这不是那种“社交媒体上再来 10 个小贴士”的套路,而更像是:“我们一起干这件事。” 而你刚刚说的,正好对应了很多人最近在讲的: “爆款发布(big launch)这套已经不灵了。”Product Hunt 死了。Hacker News 的 launch 也…… 而且我认识 Fizzy,就是因为 Jason 一直在 X 上做这些小 screencast:“现在进展到哪了”、“这里出了一些 X 问题”、“这里哪里又崩了”。我会偶尔刷到它们,可能是 Grok 或者算法觉得我会喜欢。但我的感觉是:我被“拉着走”了——像在跟着你们一起把产品做出来。所以我后来才注意到:噢,原来它上线了。 DHH:你说得对,这确实是我们这个时代发生的巨大变化之一。我记得我们在 2006 年写《Getting Real》(那本书)时,我们谈过“爆款发布(blockbuster launch)”这套模型:先放 teaser(预告),再放 trailer(预热视频),最后来一个 blockbuster launch(大爆发)。 这套模型已经死了。爆款不再发生。因为我们已经没有共享文化了。没有共享的事件。我们只有每个人各自的个性化信息流——正如你说的,算法之神决定:今天给你投喂哪一小块“刚好合适”的东西。所以,一方面,你必须“灌满渠道”(flood the channel)。 另一方面,也有个有意思的反面:以前我会更克制,比如提醒自己别发太多推。有时候我会突然进入那种“多条意识流同时开喷”的状态,但在过去你会想:“哎,我今天已经发第七条了,会不会太多?” 现在这种限制不存在了。你一天发 100 条都没关系。因为你不会“淹没”任何人的 For You 页面——算法会替你处理。而你发得越多,你就越有机会让一些小种子落地、生长、发芽。你还需要更长的周期。 爆款发布以前的核心逻辑是:“就在这一天,我们发布,然后所有人都在这一天关注。”现在不会了。大家不会在同一天关注同一件事。但随着时间推移,如果你把“发布”理解为:一整个季度、或者一年、甚至某些情况下是一整个十年——你依然可以做“分步骤的搭建”,依然能起作用。因为营销的底层真价值仍然成立:口碑传播、故事激活、好产品、好钩子——这些依然有效。 只是,它变得慢得多。你不会再看到那种巨大峰值,然后被“发布日的高潮”爽到。某种意义上,现在的发布没有那个“超级尖峰”了。当然,很多人本来也从来没有过“超级尖峰”,因为大多数发布都什么也不会发生——失败一直是常态。但我现在更强烈地觉得:你越来越难“工程化制造一个爆款”。 这个夏天我又学到(或者说被提醒)了一点。我在做一个项目叫Omarchy——一个 Linux 发行版。我做得很开心。当我推进它时,我从营销角度体会到:如果你不断分享项目进展、再配合一个疯狂的发布节奏,价值非常大。 我记得第一个月我做了大概 40 次发布?简直离谱。节奏快得惊人,整个过程一直都充满了不确定性,所以特别刺激、特别带劲。这让我可以连续三个月“轰炸”所有人的信息流。更有意思的是:人们明明意识到自己在被轰炸,却仍然无力抵抗。我收到过无数条推文,大意都是:“行行行,我第 17 次听说 Omarchy 了,我服了,我试一下。”“我投降,好吧,我装。”这又回到了营销最本质的东西:重复。 有一个老的经验法则(我也不知道现在是不是过时了):你需要听到一个品牌七次,它才会在你遇到问题时被激活——你才会想起它能解决什么。所以我当时就是在努力让尽可能多的人“听到七次”。同时我也在做 Jason 说的那个:enthusiasm transfer(热情迁移)——把创作者的兴奋感转移给别人。这一直是营销的一部分,但现在比以前更重要,因为营销越来越“人格化”。 我们还发现:社交平台从来就不怎么喜欢公司账号,但现在它们几乎把公司账号都“幽灵化”了。我们公司账号发什么都没用:从 37signals 发,没人理;从 Basecamp 发,也没人理。一片寂静。然后我看到一些“巨型媒体账号”——几百万粉丝那种——表现也一样惨。这就是算法:它现在真的讨厌品牌账号。除非你是那种“神级品牌账号”——有账号运营团队,能自己成为内容源。 但另一部分也让我们意识到:这游戏即便对我们而言仍然很残酷——而且很耗人。这种耗人让我想起我听一些 YouTuber 讲过的东西:如果你是 influencer(网红)、content creator(内容创作者)——这俩词简直是现代词汇里最让我厌恶的词之一——你就会被迫持续生产内容。 你维持曝光的方式只有一个:不停输出、不停输出、不停输出(chop chop chop)。以前还有一种“喘息”:你做完 teaser、trailer、爆款发布,然后你还能休息五分钟。现在不行了。那种节奏不存在了。所以一切的速度被推到一个夸张的程度。说实话,我很庆幸我现在不需要“去攒人生的第一桶金”了(笑)。 主持人:我们最近也在高频发东西:过去 10 天我们写了 8 篇 release post。这和你做 Omarchy 的方式很像:你需要重复。但那种 5 年前的“空洞重复”已经不行了——比如:“两天前我们大发布,记得吗?”“一周前我们大发布,记得吗?”这种完全没效果。你必须一直有新内容,否则算法不推。节奏太夸张了。 而在我们这个做 AI agents 的领域,你还会被大模型厂商不断“催更”——他们两天发一个新模型,用户两天后就来问:“你怎么还不切?怎么还没上新?”所以现在疯狂的事情特别多。 我的问题是:你写过《It Doesn’t Have to Be Crazy at Work》(工作不必这么疯狂),但现实已经如此——这在实践中到底怎么改变软件开发?你一直是小团队、小公司路线的拥护者。 但现在如果你想让产品成功,你好像必须把一天切成两半:一半写代码,一半发推、做内容、做传播、分享进展。你觉得这会怎么影响未来的软件开发者/软件公司?营销和软件是在融合吗? DHH:我一直都说:这些东西本来就是一回事。“Marketing is everything(营销就是一切)”——这是《Rework》里的一章。而“everything”真的就是一切:软件、发布、客服、那些乱七八糟的推文、写作、播客……全都是。我们这么干已经 25 年了。但我同意:现在的节奏、算法的胃口,确实到了一个“无底洞”的程度,这种感觉以前没有这么强烈。不过我也觉得:这可能就是竞争加剧的样子。 当年我们做 Basecamp 的时候,行业比现在小太多了。那时做 Web 产品的团队少得可怜,以至于我们能关注到每一次发布。后来进入 Product Hunt 时代,你至少还能“一天看一个新东西”。现在结束了。 甚至 OpenAI 发一个新模型——那可能烧了 4 亿美元——它也只能获得几个小时的峰值关注与兴奋。 所以,它在很多方面变得更难了。可另一方面,基本面依然没变,你得小心别被这些压力带着跑偏。做有趣的东西、做值得讲的东西——这带来的杠杆还在。 你要“脱颖而出”的难度变大了,因为参与者更多了。 但只要你真的突出,注意力仍然在那里。注意力并没有从系统里被抽走。甚至可以说:注意力比以往更多,因为参与系统的人更多了。 这有点像 Spotify。你总听音乐人抱怨 Spotify 付得太少,但你再看数据:音乐产业的规模依然很大,甚至更大,而且在很多情况下,更多收入是直接流向音乐人(因为他们不再必须签那些苛刻的发行合约)。 所以一部分现实就是:我们在抱怨“事情太美好了”,但又没有人真的开心。 有个段子讲得很好:“一切都很棒,但没人开心。”我觉得这确实说中了某种人性。事情确实很棒:越来越多人能更快地做出东西。而这自然会带来更多竞争。资本家最讨厌的一件事是什么?是竞争。这就是那个系统最大的讽刺。我们都在拼命挖“护城河(moat)”。但护城河是用来挡谁的?不是挡“龙”(Not dragons)——是挡竞争对手。 竞争对手,这才是护城河真正要挡的东西。这个隐喻本身也很有趣:你会想,那它把谁“圈”在里面?客户?你在护城河里放鳄鱼,让客户别游出来?这个隐喻挺自利,也挺资本家叙事的。但无论如何,我玩这个游戏,也乐在其中。同时我也很高兴——现在我比过去任何时候都更清楚地知道:我对“什么真正有效、什么无效”的确定性变少了。 一直以来,很多东西本就是谜。比如我们 2004 年发布 Basecamp,它一路成了现象级成功,今天仍然成功。 我经常会想:为什么?为什么偏偏是 Basecamp?在我 25 年的职业生涯里,我做过很多东西,但没有任何一个产品层面的命中,能像 Basecamp 这么“正中靶心”。我至今也不完全明白原因。尤其是现在,Basecamp 所在的领域竞争者多得多。但每周仍然有成千上万的人注册一个新的 Basecamp 账号。每周我都会想:这怎么可能?怎么会每周都有几千几千人来注册? 这一直是个巨大的谜。 我觉得这种谦逊非常重要——无论你在做产品、还是在做营销,你都要记住:你不可能了解一切。你不可能确切知道什么有效、什么无效。你能做的,是去尝试很多东西,然后得到一些迹象、一些推力、一些暗示:市场想要什么、算法想要什么、客户想要什么。 但你不可能制定一套“主战略”,并指望它具备可重复的复刻性。即便是在一个高度“爆款驱动”的行业——比如我刚刚提到的音乐行业——也没人真正搞明白。的确,有些人比别人更擅长做出爆款,但也没有谁掌握一套公式:“照着这套流程,我们就能稳定生产爆款。”商业也是一样。 只是现在曲调又变了。你可以因此沮丧:“我以前那套把戏不灵了。”也可以因此兴奋:“什么?那我更迫不及待想学习——现在到底什么才有效!”我也接受一个现实:我不可能永远拥有过去拥有的一切。世界不是这样运作的。 主持人:我感觉我们好像回到了 2004 年。我记得你发布 Basecamp 的时候,你在 YC 还是哪里做过一个演讲,你当时大意是说:如果你有个想法,然后能找到 1000 个客户,每人每月付你 25 美元,你的人生就彻底不一样了。那次演讲就是我决定辞掉 Web 开发工作、去做 Dropsend 的起点——也开启了我整个职业生涯。 我觉得我们又回到了那种状态:现在你真的可以有一个想法,甚至可能是“一人团队”。所以,我们现在是不是就处在这个阶段?还是说,所有 indie hackers(独立开发者)最终都会被“吃掉”?这难道不是好事吗? DHH:我也觉得这是好事。而且这里还有个讽刺点:我 20 多年来一直在讲——开发者生产力真的重要。 这就是 Ruby 和 Rails 的核心前提:你不需要一个八人团队,你一个人也能做出来。Rails 从一开始就试图成为“单人开发者的框架”,而且我认为它在这件事上比几乎所有框架都做得更成功。 而我们今天对 AI 兴奋的原因也一样:我们对小团队能获得的杠杆感到兴奋,因为 AI 能做很多事。 有一个根本事实没变:当你降低实验成本、降低构建一个“值得做的东西”的生产力成本时,你就会有更多“射门次数”(shots on goal)。 Ruby + Rails 能做到这一点;AI 也能做到;甚至更好的是:AI + Ruby on Rails 一起做到。 但我不确定游戏的本质在这点上发生了根本变化,也许只是变得对更多人可及了。 我觉得这大概率是好事——不,只能说:这就是好事。我们应该从“对人类整体有什么分类级别的好处”来理解:对全人类而言,难道不是更好——我们有更多实验吗?即便最终“命中并变成可持续商业”的人,可能比例更低(我甚至不确定这是否属实,但先这么假设)。 而作为一个文明整体,我们最终仍然会在更多类别、更多细分领域里,更快地获得更好的软件。问题的一部分在于:无论是 Web 开发圈,还是独立开发者(indie hacker)圈,很多讨论都过于短视地集中在那些我们一直反复折腾的“通用大类”上。 比如待办事项应用。好吧,我职业生涯里大概已经做过七个了,而全球可能已经有二十亿个同类产品。最后真正成功的,可能也就那么几个,剩下 99% 都失败了。 但你知道吗?你有没有试过给美发沙龙做软件?他们可没有一万种选择。有时候,他们甚至几乎没有任何选择,除了那些“狗屎一样”的系统。那种三十年前做出来的烂软件,出自一些对“好软件”毫不在意的人之手。所以,如果你愿意跳出这些吸引了绝大多数人的大而泛的领域,其实机会依然多得很。 颇具讽刺意味的是,我自己长期以来恰恰以“不去碰这些方向”为傲——只解决我自己的问题。因为我觉得那样更简单,而且也确实如此:当你解决的是自己的问题时,你立刻就能判断你做出来的软件到底好不好。 这并不意味着它一定会成功,但至少你有了第一道过滤器。如果让我去给美发沙龙做软件,我其实并不知道什么是好、什么是坏,我得不停地去问别人:“你们怎么看?你们给我什么反馈?”老实说,我不确定自己是否适合为了正在构建的软件,去进行这么多和他人的互动。 但我认为,对那些愿意这么做的创业者来说,机会是非常多的,而这其实也是大多数人。只要我们稍微把视野放宽一点,不要总是说:“天啊,现在再做一个新的待办事项应用太难了。”因为这个领域在过去三十年里,已经被来来回回地“薅”了大概五十亿次。 但你往外看——就只要离开它五米远——到处都是一大片未被开发的绿地。真的,到处都是。 主持人:David 你说 Fizzy 95% 的代码还是手写的,对吧?你每天都在用 AI。但对我来说,今年正好相反:我现在大概 90% 的代码都是 AI 写的。所以我的疑问是:如果你说你不怎么用 AI 写代码、或者 AI 不替你写代码——那生产力提升到底从哪里来?尤其对一家小公司来说,比如给美发店做软件,它不需要庞大的客服团队,也不需要很多外围部门,核心就是把软件做出来、交付出来。所以你觉得 AI 让软件开发更快的关键在哪里? DHH:我说说我自己的体验——从这波 AI 开始我就一直在用。 我的生产力提升,主要来自:它让我更强、更聪明、更快—— 更快上手新 API、新技术 更快理解新概念(我会让 AI 解释给我听) 更快找到“为什么这个 bug 会这样”的正确线索 比如 Omarchy 这个项目,如果没有 AI,它就不会存在。我不会有耐心去 Linux 论坛里翻半天,去解读那些晦涩的错误信息到底是什么意思。这对我来说不可能。 AI 带来的巨大提升,是给了我一个地方,把错误信息贴进去,然后得到比那种居高临下、还过时三年的 Stack Overflow 回答更好的线索。 收益巨大。真的巨大。 还有我需要读某个东西时、学习某个东西时,它也很有帮助。举个快例子:我们最近把 Rails 的 CSRF 防护机制改了——从以前“把 token 放进 cookie”的方式,改成使用现代浏览器的新特性:通过一个 header 来做。 我可以直接问 AI:“那个 header 是什么?”“什么时候开始支持的?”“具体有哪些细节?”这些答案我当然也能手动查:去 caniuse.com、看历史、查 RFC……全都能做。但 AI 能把这些东西一盘端上来,整合在一起,省事又快。 我能更快学到更多东西。而这正是我真正喜欢的地方:不是让 AI 替我做事,而是用 AI让我更聪明。 当然,这种模式未来未必会成为主流。 就像你说的,你已经让 AI 写很多代码,甚至多数代码。我完全准备好在某个时点,我也会进入那种状态。 但就现在而言,我仍然在意代码的样子。我在意它的美感。我在意打磨、推敲、润色。 这可能是一种“奢侈”,有点像现代的马鞍匠:他会在意字母压得是否刚好、针脚是否完美。你可以说:“但你已经不是交通运输的主力生产体系了。”我会说:那又怎样?只要我还享受,我就会继续做我手写代码的“马鞍”。 而且我也意识到:这种模式目前仍然是有竞争力的。 在 37signals,我们并不觉得自己在产出能力、发布能力、改进能力上落后。因此我对一些说法保持怀疑:“AI 已经强到可以把标准 SaaS 公司的一半程序员裁掉,还能跑得更快。”我没看到。 我当年也用同一套“根本测试”来审视云计算:“我们能不能用更少的人、花更少的钱,做更多的事?”我们几年前退出云,就是因为这个测试没有通过。而且我也不太听说这个测试在别处通过过。云计算并没有让你把运维团队砍半、把基础设施预算砍半。很多时候恰恰相反:上云之后团队规模翻倍,账单翻四倍。 主持人:你们切换之后是不是省了类似每月一百万美元?很夸张的数字? DHH:我们现在大概是一年省200 万美元。我们云预算峰值大概是 340 万美元,现在的持续成本在 100 多万美元左右。所以在成本上,节省非常巨大。 这和 AI 有一些相似之处——不完全相同,但有相似之处:我觉得现在很多人在用 AI,脑子里觉得自己“好高产”,但他们其实交付更少、做出来的东西更少,甚至理解得更少。 DHH:AI 还有另一个因素:当我尝试“氛围式写代码”(vibe coding)的时候——尤其在一个我还没完全内化的新领域——我能明显感觉到我的能力在从指尖滴走。 我刚开始做 Omarchy 时,写了很多 bash。我以前从没系统写过大量 bash,最多就是命令行里用用。然后我发现自己一次又一次问 AI:“某个 if 条件到底怎么写?” 这时你就会想:“为什么我没有内化这件事?我没内化,是因为我把它外包给 AI 了。”那这样更好吗?我现在更划算了吗?还是说,我跟当年那些老师一样天真:他们以为有了计算器,学生就不需要背乘法表了?不对。如果你不能迅速在脑子里算出 7×7,你真的会把自己变成傻子。 主持人:那你有没有形成一种直觉:该在哪里划线?你不可能知道一切,对吧?你也会把你不会的事交给信任的同事去做,你不会因为让同事设计某个东西就觉得“能力在流失”。你能接受:“这事我不需要会 / 我不想会”。那在 2025 这样疯狂的一年里,你有没有更清晰的边界:哪些你想自己掌握、哪些你可以忽略?比如 bash。为了推进 Omarchy,你觉得 bash 该学到什么程度?又有哪些可以不学? DHH:我觉得我得会几乎全部,除了怎么在 bash 里搞数组(笑)。因为 bash 里数组那玩意儿复杂得离谱,简直反人类。但我其实认为:人类大脑是个很惊人的器官,它不会像 LLM 那样“容量到顶就装不下”。我们用得越多,记忆和能力的“配额”会增长。 所以我真正担心的趋势是:随着时间推移,我知道得更少、我变得更不胜任。我需要一条向上增长的移动平均线。 我不需要把所有领域都吞进去——我不需要什么都懂。但一年结束时,我应该在更多领域懂得更多。如果我不在这种上升轨道上,我会无聊。我无聊就会没动力。没动力我就什么也不干。这也是 AI 讨论的一部分:我们得想清楚,我们真正享受这套方程式里的哪一部分。 我个人不享受当项目经理。我会做——而且不止偶尔——因为我想要“组织一群人”能产出的结果。 但当我看 AI 这件事时,我不想当一群 AI agent 的项目经理。那不是我想要的状态。 我喜欢写代码。而至少在此时此刻,这是一个仍然有竞争力的选择。 当然,这可能三个月后就变了;下周就变了;随时都可能变。但 AI 公司那些领袖已经预言“再过五分钟就结束了”预言了很久了——现在也没结束。 你看 AI 公司自己,它们也还在招聘大量程序员。 我们并没有到 AGI,没有到那种“人类写代码的时代死了”的程度。 这并不否认你说的:有些程序员已经觉得自己大多数代码都让 AI 写了。但至少在市场上——按我看到的情况——还没有出现那种“压倒性差距”,就像:一个公司用马车送啤酒,另一个公司用卡车送啤酒。那种经济差距会非常快把前者淘汰。我还没在 AI 身上看到这种情况。也许数据有滞后;也许已经发生了——我仍然怀疑。 即便我在长期上是极度“AI 乐观派”,但就当下,我没看到。 DHH:而且原因之一是:我每天都在“盯”着它。我一直在问 AI:你能给我写这段代码吗? 它会写。然后我会想:“不,我不喜欢这个。”“我甚至不想维护它。”“它做得还不如大多数初级程序员会被要求做到的水平。” 但偶尔,它也会给出另一种答案:我问它一个东西,它拼出来的结果让我震惊:“它怎么知道的?它怎么能把这些全部串起来?”那真的很惊人。 所以我感觉它像一个闪烁的灯泡:你在完全黑暗里,它突然一闪——你觉得“我什么都看见了”。两秒后,啪,又全黑。如果你能让这个灯泡稳定下来、一直亮着——那对人类当然是巨大的福音。 顺便说一句,我很喜欢美国的一点就是:美国把这个“闪烁灯泡”当成一种信仰——相信我们能把它变可靠,能到 AGI。现在大家就是一场巨大的押注:押注这一定会发生。即便我这么 AI 乐观,我仍然会对这种规模的“集体确信”感到惊叹:一个经济体一起说: “不管花多少代价,100 万亿、1000 万亿,我不在乎,我们一定能到那里。”我会想:这也许就是为什么它会成为“第一名”。 主持人:确实是个令人兴奋的时代。就像你说的——能活在此时此刻本身就是一种奇迹。我们也差不多到一小时的时间上限了。今天能和你重新连上线真的很开心,感谢你抽时间来。你现在也在忙 Fizzy。要不你简单跟大家说说:Fizzy 是什么?在哪能了解更多?然后我们就收尾。 DHH:当然。Fizzy 在fizzy.do。它是对 Kanban(看板)的一个全新诠释。这里还有个小故事:Jason 特别擅长解释“为什么值得回头重新解决一个问题”。 Kanban 这个概念来自 50 年代,是丰田为了管理生产线提出来的。后来我们把它做成了软件。第一代软件化的版本大概是 2000 年初。再后来 Trello 出现,把这个领域彻底带火、带爆。但我们还是回到这个领域,说:“你知道吗?我觉得我们还能做一个更好、更舒服的版本。” 很多人很难理解软件这件事:明明一个问题领域已经有很多玩家了,为什么你还要进去?原因可能只是:你想做得更好、更有趣、更轻量、更丰富多彩、更令人愉悦、功能更少——这些带着“爱”的细节,我们都烘焙进了 Fizzy。而且我们把它定价得很便宜:1000 张卡片免费,之后是 每月 20 美元。同时我们也把整个代码库开源了:如果你想自托管(self-host),你可以免费用。服务器我们不替你付,你自己折腾就行。你也可以贡献代码,也可以从中学习。 做 Fizzy 是一件很快乐的事,而且它也像一个实验室。我们现在正在做 Basecamp 5。我们在 Fizzy 上尝试了很多新技术——不管是编程层面还是产品层面——我们会把最好的想法带回 Basecamp 5。如果你关心我对这些话题(或任何话题)的观点,你可以去 dhh.dk,我的东西都在那。 主持人:太棒了。很高兴你来做客,也迫不及待想看未来会发生什么。感谢你的时间,我们下期再见。 参考链接: https://www.youtube.com/watch?v=uWqno4HM4xA https://www.reddit.com/r/ClaudeCode/comments/1qhiicv/the_creator_of_nodejs_says_the_era_of_writing/

“如果浏览 Web 的不再是人类”
“这真的是一个无比令人兴奋的时代”
“我们的产品也试过 AI 功能,但最后都没上线”
AI 时代,为什么你发布的产品别人看不见?
“独立开发者”之梦没变:核心还是“一个人也能干”
DHH 说 95% 代码是手写的,但他又天天用 AI
“AI 只是让我变聪明了”
“Vibe Coding”的风险:能力会从指尖流走
有时神得离谱,有时烂得没法维护
当你在运行某个软件时,看到如下所示的弹框,“已验证的发布者:XXX有限公司”,你是否会不假思索地点击“是”?然而,大量安全事件表明这样的信任已经被攻击者滥用,看似安全的软件来源可能来自于精心设计的伪装。 近年来,软件供应链安全事件频发,为了保护软件真实性与完整性,代码签名机制应运而生。代码签名主要依赖公钥基础设施 PKI 技术,旨在确保软件来自真实来源且软件内容未被篡改。当终端用户安装或以管理员权限运行软件时,操作系统会验证代码签名的有效性,帮助用户判断此软件是否值得信任(如上图所示)。然而,攻击者有时会反过来利用代码签名 PKI 信任体系中的安全缺陷,通过某种手段为恶意软件配置代码签名,帮助恶意软件绕过操作系统和杀毒软件的检查,我们称之为“代码签名滥用”。 为了应对代码签名滥用带来的安全威胁,奇安信技术研究院星图实验室与清华大学、中关村实验室联合研究团队在 NDSS 2026 会议上发表了论文《Understanding the Status and Strategies of the Code Signing Abuse Ecosystem》。这项工作由清华大学和奇安信联合培养的卓越工程师计划博士研究生赵汉卿主导完成,导师为段海新教授(清华大学)和应凌云博士(奇安信星图实验室)。其他作者分别为张一铭(清华大学)、张明明(中关村实验室)、刘保君(清华大学)、游子权(清华大学)、张书豪(奇安信星图实验室)。 在这项工作中,我们利用从真实世界中收集的 3,216,113 个已签名的恶意 PE 文件,对 Windows 代码签名滥用行为进行了大规模测量。通过细粒度的代码签名滥用检测分类算法,我们检测到了 43,286 张滥用证书,构建了迄今为止最大的滥用标记数据集。分析发现当前代码签名滥用现象普遍存在,影响了 46 家 CA 厂商以及 114 个国家或地区的证书。我们发现了五种滥用者的攻击策略,并根据当前代码签名 PKI 存在的安全缺陷提出了若干缓解措施。 与传统的 Web PKI 不同,代码签名 PKI 测量研究存在三大挑战: 我们的工作分别通过综合公共数据集与私有沙箱样本、设计基于撤销信息的滥用检测分类算法、按照不同滥用类型作细粒度分析等方法解决了以上三大挑战。 为了解决以上挑战,我们提出了针对代码签名滥用测量的一系列创新方法设计,以实现大规模、细粒度、可溯源的滥用测量分析。 数据收集方面,我们综合了公共数据集与私有沙箱样本。我们收集了公共恶意软件存储库 VirusShare 在 2020 年 10 月至 2024 年 10 月期间发布的所有样本,经过过滤保留了 176,968 个签名 PE 样本。此外,我们还从合作公司沙箱中补充收集了 3,828,744 个签名的 PE 文件。两个数据集通过合并去重后共得到 3,962,788 个签名样本,通过反病毒引擎分析最终筛选出了 3,216,113 个恶意签名样本。此外,我们还从多个维度对样本特征进行了扩充,比如爬取 CRL 撤销信息、收集样本恶意行为分析报告等,以实现更精准的检测与分析。 为了实现细粒度的分析,我们提出了一种代码签名滥用检测分类算法。受益于近年来 CA 撤销透明度的改善,我们得以通过已撤销证书被披露的撤销原因(Revocation Reason)来推知证书滥用背后的原因。我们依据样本对应的 SignTool 输出结果、CRL 撤销信息以及 OpenCorporates 查询结果设计了新的检测分类方法,将滥用分为签名复制、私钥窃取、身份盗用、空壳公司、自签证书等五种滥用类型。不同的滥用类型采取了不同的滥用手段,其产生的安全威胁与影响范围也有所不同。对于私钥窃取、身份盗用以及空壳公司这三类相对高级的滥用类型而言,由于攻击者掌握受信任证书的私钥,他们可以任意为恶意软件进行签名且不会触发操作系统的安全告警,具有隐蔽性强、影响范围大的特点。 此外,我们还设计了一种基于 LLM 的证书关联方法,通过输入证书主题字段以及公钥信息来推断滥用证书是否来自同一攻击者。这一方法不仅帮助我们扩展标记了 287 张未标记滥用证书,还以此聚类得到了 3,484 个证书多态类簇,为后续滥用策略分析提供支撑。 利用代码签名滥用检测分类算法,我们最终收集到了 3,216,113 个来自真实世界的已签名的恶意 PE 文件,从中提取得到了 43,286 张滥用证书,构建了迄今为止最大的代码签名滥用标记数据集。值得注意的是,其中有 23,252 张滥用证书由公共可信 CA 颁发,我们的工作重点关注这些具有高威胁的证书样本。 我们利用上述代码签名滥用标记数据集对滥用生态开展了全面而深入的测量分析工作。分析发现当前代码签名滥用现象普遍存在,影响了 46 家 CA 厂商以及 114 个国家或地区的证书。我们发现部分 CA 明显更受攻击者青睐,且与市场份额与证书价格无关,这可能反映出某些 CA 对于证书申请者的身份审核存在漏洞。 阻止滥用证书的唯一有效手段是证书撤销,测量发现为恶意软件签名的滥用证书撤销率仅为 17.56%。我们首次发现了制约撤销率提高的关键因素——“幽灵证书”,即已被确定为滥用却无法被撤销的证书。这些证书由于其颁发者证书过期、撤销或停止运营导致撤销设施(CRL/OCSP)失效,即使识别到滥用行为也无法发布撤销信息,而它们的代码签名即使在签名证书过期后由于时间戳(TSA)的存在依然有效。我们发现已确认被滥用但仍未被撤销的证书中至少有 38.96% 符合“幽灵证书”的条件。 为了找到当前代码签名 PKI 的安全缺陷并提出有针对性的缓解措施,我们深入分析了攻击者的行为和策略。我们通过分析标记数据集总结出了五种滥用策略,旨在逃避检查、降低成本和扩大攻击影响。例如,在证书申请阶段,攻击者可能会利用不同国家之间 CA 身份审查宽松程度的差异有选择性地申请证书(比如假以越南、亚美尼亚等国公司的身份进行申请)。在证书签名阶段,攻击者可能会为恶意软件精心配置“双签名”,通过附加兼容旧密码算法的签名来扩大攻击影响范围。 证书多态也是攻击者常用的滥用策略之一。证书多态是指同一实体使用相同(或稍有修改)身份向相同或不同的 CA 申请多张证书的现象。借助证书多态,攻击者可以以相对较低的成本批量获得多个证书(避免注册多个空壳公司带来的巨额开销),同时逃避 CA 撤销的检查(一张证书被撤销不影响其他证书)。我们通过证书关联方法识别了 3,484 个证书多态类簇,发现了 315 个利用多态绕过撤销检查的真实案例。此外,我们还首次发现了利用特殊字符实施证书多态的实例(如下图所示)。 代码签名是验证发布者身份并确保软件完整性的重要机制。然而,我们的研究发现代码签名滥用已经成为了软件生态的重大安全威胁之一。我们对现实世界的代码签名滥用生态系统进行了大规模测量研究,开发了一种针对证书滥用类型的细粒度检测分类方法,获得了迄今为止最大的滥用证书标记数据集(43,286 个证书)。利用该数据集,我们对代码签名生态系统与攻击者行为进行了全面而深入的分析,揭示了攻击者一系列的代码签名滥用策略。 我们认为造成代码签名滥用持续泛滥的安全缺陷主要来自于 CA 端,包括颁发过程缺乏标准化、消极的滥用治理等。我们建议 CA 增强证书颁发与撤销的透明度(比如建立 CT)、主动监测野外滥用行为、为证书主题字段建立统一标准。同时,我们也希望 Windows 做出相应调整以缓解“幽灵证书”的影响。 最后,本文构建的代码签名滥用数据集已开源发布,期待能为后续研究工作提供参考。我们希望安全社区能够给予代码签名领域更多关注,以更好地维护健康的软件生态。感谢您的阅读! 论文&项目开源地址:https://github.com/XingTuLab/Code_Signing_Abuse_Dataset一、代码签名沦为恶意软件的“护身符”


二、代码签名研究的三大挑战
三、代码签名滥用测量的创新方法设计


四、核心贡献与关键发现
构建迄今最大的滥用标记数据集

对滥用生态开展全面测量

首次发现“幽灵证书”

发现五种滥用策略
深入挖掘证书多态现象

五、总结




如果想要彻底重装Android studio可以删除 隐藏文件夹(Android studio 4.0版本后才有) **安装Win 11 环境下 Android Studio Iguana | 2023.2.1 下载地址: https://pan.quark.cn/s/d557657e15a6 首先下载Android studio安装包 趁下载的时间,我们进入电脑的一个盘跟目录下面,创建我们Android 这里我们创建的是AndroidTool目录,创建如上图所示五个子目录。 studio的安装目录 下载完成后运行文件,进入如下界面 点击next 点击next 选择对应的Android studio安装目录,这里我们选择我们一开始创建好的Android 点击install 等待安装完成! 安装成功后会在开始菜单存在Android Studio的启动图标,点击即可启动Android 安装成功点击finish,等待启动。 随便点击一个,发不发送报告都行。 注:以下截图为旧版本截图,不过不影响使用。 进入熟悉的画面 询问我们是否有配置文件导入,这里直接选择不导入,点ok 进度条走完后出现弹窗【无法访问sdk】,先点击cancel。 再点击next 选择安装类型,这里我们自定义,第二个,点击next 设置我们的jdk目录,可以默认的,也可以自定。这里我们选择默认即可。 选择风格,黑暗模式 设置sdk目录,这里选择我们一开头创建的AndroidSDK目录。(Android Virtual 设置虚拟机相关的配置,根据电脑配置自行拉取,这里我们默认。 确认配置信息,点击next。 确认所有选项,都点击了accept,然后点击Finish。 等待下载安装完成。 下载安装完成,点击finish。 下面开始创建hello word项目,点击 new project 选择empty activity模板,点击next 设置项目名称,包名,路径(路径选择我们一开始创建的AndroidProject目录,注意加项目名称,尽量不要有中文),选择语言(java或kotlin都可以),选择最低支持的Android 等待下载内容的完成。 点击finish。 等待项目构建完成 点击绿色三角形位置,运行项目。 等待项目构建完成。 成功显示Hello World!。 1.在安装Android Studio 可以尝试修改电脑的系统时间为美国太平洋时间,然后删除文章前面所述的相关文件,重新打开Android 1. 下载sdk工具(可选) 从file->setting打开下面界面 这里是下载Android 版本,和sdk构建工具的地方。 勾选对应的版本 勾选对应的版本 点击ok。如果出现同意协议的界面,则全部点击accept,然后点击next 等待下载完成。 点击finish 这里已经下载成功了 2. ANDROID_EMULATOR_HOME 虚拟机环境变量(可选) 自从学了Android,C盘天天爆红怎么办?C盘一查,C:\Users\用户.android这个文件占了10+GB。怎么办? 如果不设置环境变量,开发者创建的虚拟设备默认保存在 3. Gradle 位置变更(可选) C:\Users\用户.gradle也是也非常容易变成非常大的文件夹,这个可以直接在Android 直接选择相应的路径即可。Android studio安装教程 保姆级教程
目录C:\Users\用户名
中的以下几个文件夹。
.android
.gradle
.Android studio(Android studio 4.0版本之前才有) 
C:\Users\用户名\AppData\Roaming\Google\AndroidStudio4.2
C:\Users\用户名\AppData\Local\Google\AndroidStudio4.2
比如: 

版本为例。(部分截图为旧版本不影响使用)**
studio的安装目录,sdk的目录,项目的存放目录,方便我们日后查找
AndroidStudio 存放Android studio的软件程序的地方,也就是Android
AndroidSDK 存放SDK的地方,包含adb工具等
AndroidProject 存放我们写的Android
项目代码,建议把我们所有的源代码放在此目录下方便日后查找
AndroidDrive 可选
用来存放我们虚拟机的地方,设置方法参考本文末尾,非必须。默认在C盘下存放。
AndroidGradle 可选
用来存放gradle缓存依赖的地方,非必须。默认在C盘下存放。


studio目录即可。然后继续点击next


studio。



等待文件下载。






Device 无法勾选可以先跳过直接点击next)点击next


等待下载完成。



注:这里Empty Activity与Empty Views
Activity的区别是主要是UI框架的不同。
Empty Activity:为谷歌新推出的Jetpack
Compose声明式UI框架,主要的开发语言为kotlin,不支持java
Empty Views Activity:为Android
传统的View控件布局的项目模板,支持kotlin和java。
初学者一般建议采用Empty Views Activity进行入门学习。
版本,这里选择6.0,点击finish。


这里由于是第一次启动,所以需要下载gradle以及Android项目需要引用的包,视网络好坏程度决定等待时间长短


到这里就安装成功啦。常见问题:
的过程中进行到设置SDK目录这一环节时,可能出现以下的情况,无法勾选需要安装的选项,导致后续步骤出现以下情况。

Studio配置一遍即可。初学者进阶操作:

一般我们只需要下载我们需要的版本和对应的工具,当然也可以全量下载,全量的话估测大概需要500G的硬盘空间。
这里演示下载最新的Android版本和构建工具。





这时候可以创建ANDROID_EMULATOR_HOME环境变量。对于Android studio
4.3已下的用户则需要设置ANDROID_SDK_HOME。
这里我们简单演示已下,如何配置环境变量到我们的目录。
C:\ Users \用户.android目录下;
如果设置了ANDROID_EMULATOR_HOME环境变量,那么虚拟设备就会保存在%ANDROID_EMULATOR_HOME%/.android路径下。
这里有一点非常容易混淆的地方,此处的%ANDROID_EMULATOR_HOME%环境变量并不是Android
SDK的安装目录。
studio进行改动
作者:杨泽,宝付支付数据团队负责人 随着#数字化转型 升级进入关键期,数据库已从被动的存储仓库,转变为主动赋能业务的智能数据中枢。以现代金融行业为例,业务对数据库提出了更高要求:既要满足事务,又要实时分析,同时安全、高效、弹性、智能地处理多模数据,并支撑实时决策与业务创新。这意味着,符合要求的数据库需在TP、AP、KV、AI方向均具备出色的数据处理能力。 作为在银行、消费金融、零售、跨境等行业深耕多年的一站式综合支付解决方案商,宝付支付产品种类丰富,且深谙技术创新与业务稳健的关系,不断引进先进技术维护和保障公司业务稳步运行,全方位为商户资金安全和交易安全保驾护航。 近年来,宝付支付的原数据库方案已不能满足业务需求,故而寻求技术升级。本文分享宝付支付在KV场景使用OBKV替换HBase的技术实践。 宝付支付所属集团——漫道集团采用基于MySQL的集中式架构,由于近年来业务高速增长(2023 年初交易量约 3000万笔/日,2024 年 12月 已突破 9000 万笔/日)带来的海量数据(TB级),系统压力陡增。 最直观的压力便是成本压力,每年存储采购预算高达数千万元。同时,为了保障部分业务系统的高可用性,需在 A/B 两个机房部署完全对等的 MySQL 双活架构集群(如各100 台服务器),导致硬件与运维成本成倍增长。 同时在双活架构下,业务层仅关注“订单不丢、实时写入”,但不关心数据最终落在哪个机房、哪个分库。这给数据团队带来巨大挑战:无法准确追踪数据源,难以构建统一的数据视图,ETL 与实时同步逻辑异常复杂。 在业务种类多样的情况下,长期使用MySQL还会导致架构越来越复杂,使运维压力极大。集团内部运行着十余套大数据集群和超过 1000 个 MySQL 实例,分别服务于支付、风控、征信、BI 等不同场景,对数据库有不同的需求。 多套异构系统并行,导致开发、监控、备份、扩容等运维工作极其繁重。 除MySQL外,我们使用 #HBase 存储海量日志与宽表,其虽具备高吞吐写入能力,但在事务支持、复杂查询、实时分析、KV 混合负载等方面存在明显短板,已无法满足新一代业务需求。 基于上述挑战,我们开始评估新一代分布式数据库方案。文章开头提到现代金融行业的业务对数据库提出了多种要求。宝付支付作为金融行业的一员也不例外,根据对TP、AP、KV、AI方向的需求,我们首先想到了 #OceanBase,核心原因在于其原生支持 HTAP(混合事务/分析处理) + KV + AI 的一体化架构。 为控制风险,我们采取“由边缘到核心”的渐进式改造路径:先在非关键系统验证 OceanBase 稳定性,逐步迁移风控、征信等中台系统;最终目标是将核心支付交易系统平滑切换至 OceanBase,用一套数据库承载全场景需求。 在启动 OceanBase 引入计划后,我们先在离线与分析业务进行试点,后将多个MySQL业务迁移至OceanBase。当OBKV功能较为完善时,又完成了从HBase到#OBKV-HBase的升级,实现了一套引擎支持多场景业务的目标。 尽管 HBase 在海量数据存储场景中曾发挥重要作用,但随着业务复杂度提升与实时性要求增强,其在架构、运维及成本等方面的问题日益凸显。主要体现在以下六个方面。 OBKV 是构建在 OceanBase 分布式存储引擎之上的NoSQL 产品系列,目前支持 OBKV-Table、OBKV-HBase、OBKV-Redis 三种产品形态,其原生继承了 OceanBase 的高性能、事务、分布式、多租户、高可靠的基础能力。此外,OceanBase 的工具体系(比如OCP、OMS、CDC等)也原生支持 OBKV,运维 OBKV 的各个产品形态和运维 OceanBase 的 SQL 集群完全一样。OBKV 可以帮助企业统一技术栈,在满足业务对多模 NoSQL 数据库诉求的同时,降低企业在数据库运维上的复杂度。 基于我们目前正在使用的OBKV- HBase,总结其与HBase 的使用区别如下。 OBKV-HBase 不仅解决了传统 HBase 在运维复杂、资源孤岛、工具缺失等方面的痛点,更通过与 OceanBase 深度融合,可以实现“一套引擎、多模服务、统一运维、资源共享”的现代化数据基础设施目标。 在数据库架构升级过程中,我们分三个阶段逐步引入 OceanBase,确保技术转型平稳可控。 2023 年底,团队开始接触 OceanBase 及其 OBKV-HBase 产品。当时 OBKV 文档尚不完善,关键功能缺失,尤其缺乏 bulkload(批量导入)能力,无法高效导入离线数据 ,初期判断暂不具备支撑核心业务的能力。因此,该阶段以技术调研为主,未投入生产使用。 2024 年,团队转向更匹配当前能力的场景,启动 OceanBase 在离线与分析业务的试点,将数据归档、BI 聚合宽表、AP 分析类业务迁移至 OceanBase。我们不仅验证了OceanBase在高吞吐写入、复杂查询、资源隔离等方面的稳定性与性能表现,还积累了集群部署、SQL 优化、运维监控等关键经验,为后续全面推广奠定基础。 随着 OceanBase 功能持续完善(特别是 OBKV-HBase 的成熟),团队启动规模化替换计划。 在从 HBase 到 OBKV-HBase 的数据迁移过程中,我们在实践中总结出五个关键步骤。 在正式启动从 HBase 到 OBKV-HBase 的数据迁移前,需在 OceanBase 端完成充分的环境与配置准备。 注意事项 在完成目标端环境准备后,我们分阶段实施历史数据迁移与增量数据同步,确保业务平滑切换至 OBKV-HBase。 为高效迁移海量历史数据(单表达数十 TB),我们同时使用了 DataX 与 OMS ,但需特别注意两者在数据格式上的关键差异: 为确保切换期间数据零丢失,我们采用 “OMS 增量同步 + 业务双写” 双保险机制: 由于 OBKV-HBase 属于 NoSQL 场景,OMS 在当前版本中尚未提供 KV 类型数据的全量一致性校验功能,我们结合业务实际,设计了一套多维度、可落地的数据校验方案,确保迁移后数据准确无误。 1. 行数校验:精确统计表行数。 HBase 端:使用 HBase 的 RowCounter 工具统计原表行数。 命令: OceanBase 端:使用 count 统计,获取行数并与 HBase 结果比对。 2. 三方数据对比:借助 Doris 实现内容级校验。 由于 OMS 暂时不支持进行 KV 场景下的全量校验,我们引入 Doris 作为临时比对中间层: 3. 对关键业务字段进行抽样对比。 在完成数据迁移与校验后,业务系统需通过标准接口访问 OBKV-HBase。我们发现 OBKV-HBase 不仅兼容 HBase 协议,还扩展了多项高级查询与操作能力,显著提升了开发效率与系统灵活性。 为确保 OBKV-HBase 能够满足高并发生产环境要求,我们使用真实业务压测 OBKV 性能,达到 42w QPS,延迟仅为 1ms 左右,超出预期。 压测方法: 我们部署 10 个 Pod 模拟业务客户端,分别通过 OCP 统一调度和通过 ODP 的方式进行多轮压测任务。如下分别是 OceanBase 数据库、OCP 模式、ODP 模式压测的数据记录。 OceanBase 数据库压测数据如下图所示 OCP 模式压测数据如下图所示 ODP 模式压测数据如下图所示 需要说明的是,前期通过 ODP 压测,性能不佳,QPS 不到 2k,具体原因分析见后续问题总结。经过优化,直连 OBServer 压测 OBKV,QPS 达到 42W,延迟 1ms 左右,完全满足业务需求。 直连 OBServer 的测试结果让我们对 OceanBase 的性能有了充分的信心,为后续业务的正式切换奠定了基础。 在 OBKV-HBase 的测试与上线过程中,我们积累了一系列关于监控集成、硬件配置、租户隔离及 CDC 同步等方面的实践经验,总结如下,供大家参考。 为避免重复建设监控平台,我们将 OBKV 相关指标接入公司统一的自研监控系统: 建议为 OBKV 创建独立租户,避免与 TP/AP 类 SQL 业务共享资源。 在使用 OMS 或 CDC 进行数据同步时,需特别注意 HBase 动态列模型与 CDC 日志格式的兼容性问题。HBase 表的列是动态的(不同 Row 可含不同列),而 OceanBase 的 clog(提交日志)在记录变更时有两种模式。 若源端写入为非全列,而目标端 CDC 期望全列日志,可能导致同步解析失败或数据不一致。 解决方法是启用 CDC 的脏数据跳过开关 在早期调研阶段,我们比较担忧 OBKV-HBase 是否支持基于 RowKey 前缀的高效查询。经过深入查阅文档与测试验证,确认 OBKV-HBase 完全兼容 HBase 1.2+ 的原生 API,其中包括关键的前缀检索功能。可通过 该接口会自动构造起始键(startRow)和终止键(stopRow),仅扫描匹配指定前缀的 RowKey 范围,避免全表扫描,显著提升查询效率。 在从 HBase 迁移至 OBKV-HBase 的过程中,我们在数据校验过程中也遇到了3个关键问题。 问题描述 使用 DataX 和 OMS 两种工具分别迁移同一张 HBase 表后,OBKV 中的数据行数均少于 HBase 源端,初步校验无法对齐。 原因分析 HBase 的数据模型特性导致 count 结果存在歧义。 在上述场景下,HBase 的 RowCounter 统计的是所有版本 + 所有可见记录,而 OBKV 默认仅保留最新版本(若未显式配置),导致数量差异。 解决办法 结果验证 通过调整迁移工具和校验方法,最终实现了 HBase 和 OBKV 数据的完全一致。 注意事项 问题描述 原因分析 根本原因是 scan.setCaching 参数配置不合理。 解决办法 将 scan.setCaching 参数的值设置为 100,控制每次 RPC 请求返回的最大行数。 问题描述 通过 ODP 压测 OBKV-HBase,发现性能瓶颈明显,QPS 不到 2k。 原因分析 根本原因是ODP 元数据缓存机制与数据库大小写敏感配置不匹配。 每次查询均触发完整的元数据解析流程(包括向 sys 租户查询表定义),无法命中本地缓存。高频元数据查询成为性能瓶颈,严重拖累整体吞吐能力。 优化方案 通过近两年对 OceanBase 及其 OBKV-HBase 能力的深入实践,宝付支付成功完成了从传统 HBase 架构向新一代分布式数据库平台的平滑演进,取得了显著的技术与业务成效。 不仅如此,对于集团架构而言,也具有重大意义和价值。 其一,完成数据库架构全面升级。从 HBase 到 OceanBase,从“多套异构数据库”走向“一库多模、统一平台”,我们实现了数据库架构的全面升级,技术栈大幅收敛。 其二,夯实业务创新底座。高性能、高可用的数据服务为实时风控、智能 BI 等新场景的业务创新提供了更强大的数据支撑能力。 其三,奠定智能数据架构基础。为未来 AI 原生计算、HTAP 融合分析、跨地域多活等演进方向预留充分扩展空间。 其四,沉淀宝贵实践经验。形成涵盖迁移方案、数据校验、性能调优、故障排查的完整方法论,可复用于后续系统改造。 本次 OBKV-HBase 成功落地,离不开 OceanBase 团队在过去两年中提供的专业、及时、深度的技术支持,特别是老纪及其研发、技术支持团队。无论是早期功能定制、性能瓶颈攻关,还是生产上线保障,OceanBase 团队始终与我们并肩作战,为项目顺利推进提供了坚实保障。在此,谨代表宝付支付技术团队,向 OceanBase 团队在迁移过程中提供的技术支持致以诚挚感谢! 另外,基于当前 OceanBase 在宝付支付的成功落地经验,我们已将 OceanBase 纳入集团未来数据架构的核心,聚焦 AI 项目赋能、汇聚库建设、多活架构尝试、零售支付场景四大业务方向大规模引入。 1. Al 项目赋能:实现一体化SQL+AI。 为响应公司对智能化转型的战略要求,我们将 AI 能力深度集成至数据库引擎层,推动从“被动查询”向“主动智能服务”升级。 2. 汇聚库建设:实现一体化TP+AP。 当前集团存在 1000+ MySQL 实例及多套异构数据系统,导致跨库分析、实时统计、经营报表等场景面临巨大挑战,OceanBase 的 HTAP 一体化架构为此提供了根本性解决方案。我们将逐步把核心业务库、汇聚库、宽表等迁移至 OceanBase 并扩大线上使用规模,使用一套集群同时承载 TP 写入与 AP 分析,构建统一的数据平台,简化数据链路,提升数据治理和数据服务能力。 3.多活架构尝试,实现系统稳定。 苦于MySQL双活架构带来的问题,我们将尝试业务多活要求,满足高可用业务需求。依托 OceanBase 原生分布式多副本与 Paxos 协议能力,构建轻量级、高可用、跨机房、跨地域的多活架构,提升系统容灾能力和业务连续性。 4.零售支付场景深化。 随着内部零售支付业务越来越多,我们将在其他零售支付业务场景推广使用 OceanBase。并持续优化 OceanBase 压测记录,完善性能基线。我们计划基于真实业务负载开展常态化压测,建立 QPS、延迟、资源消耗等关键指标的基准模型。 此外,探索更多 OceanBase 在支付行业的应用场景,充分发挥 OceanBase 的 HTAP 与多模能力。 数据库的升级不仅是技术的迭代,更是业务持续创新与稳健运行的基石。 欢迎关注,将为您持续更新与#数据库、#AI、#开发、#降本增效 相关的技术内容。出于架构痛点,寻求支持 TP+AP + KV + AI 的数据库
征信 用户画像业务:需要高性能 KV 存储与快速点查。
从边缘到核心:OBKV-HBase替换HBase
HBase 难以应对业务复杂度与实时性要求
使用OBKV替换HBase,为统一技术栈奠定基础
引入 OceanBase 的三个阶段,确保技术转型平稳可控
第一阶段:初步探索与能力评估(2023 年)
第二阶段:归档与分析场景试点(2024 年)
第三阶段:逐步替换与扩展(2025 年起)
五步平滑迁移:工具使用、方案设计与注意事项
Step1: 目标端准备
Step2: 数据迁移
历史数据迁移
增量数据同步

Step3: 数据校验
org.apache.hadoop.hbase.mapreduce.RowCounter 'table'。Step4:数据访问支持
查询操作(Select)
数据操作
Step5:业务压测




OBKV上线经验与问题总结:运维配置、数据校验
运维配置相关
1.监控配置
show proxyconfig like "%prometheus%"以及alter proxyconfig set xxx = xxx;2.硬件配置
3.租户配置
4.CDC 配置
skip_dirty_data=1,允许跳过全列校验,修改后重启实例生效:ALTER BINLOG INSTANCE y6op8d9rk1 SET EXTRA_OBCDC_CFG ='skip_dirty_data=1'。5.前缀检索用 setRowPrefixFilter
Scan.setRowPrefixFilter(byte[] prefix) 方法实现高效的前缀扫描(Prefix Scan),具体如下图所示。
数据校验问题
问题1:上下游数据条数校对问题

queryType=scan 的流式读取,确保仅同步当前可见、已提交的最新版本数据。

k = 'value'),需手动修正为大写,否则解析失败。
问题 2: 20002 错误码
scan.setCaching(100);设置后,第一次查询耗时降到了 300ms 左右,后续查询性能也得到显著提升。
问题 3:代理压测性能不佳
lower_case_table_names = 0)。alter proxyconfig set pc_enable_lower_case_table_names=True。

“一库多模、统一平台”,将大规模引入OceanBase
1 月 14 日,由上海市数据局指导,金猿组委会、数据猿、上海市数商协会与上海大数据联盟共同主办的"2025 第八届金猿大数据产业发展论坛暨 AI Infra \& Data Agent 趋势论坛"在上海成功举办。论坛现场,2025 年度大数据产业年度榜单正式公布,KaiwuDB 凭借出色的技术实力与市场表现,荣获"2025中国大数据产业年度国产化优秀代表厂商"称号。 KaiwuDB 荣获"2025 中国大数据产业年度国产化优秀代表厂商"称号 当下,企业的数字化转型已逐渐从单点技术应用,走向以数据为核心的系统性重构。数据呈现出高并发、强时序、多模态的复杂特征,企业面对的不仅是单一结构化数据,更包括设备状态、日志文件等多种类型数据的融合处理。这对底层数据系统在性能、兼容性与灵活度上提出了更高要求。为应对物联网场景下的数据管理挑战,KaiwuDB 创新推出"分布式多模数据库 "架构,实现时序、关系型等多种数据模型的原生集成。通过"多模一库"设计,用户可用一套 KaiwuDB 系统替代以往多套数据库的组合,从根本上解决数据孤岛、架构复杂、运维繁琐等问题。同时,凭借自主研发的高性能时序引擎,针对物联网场景中高并发、强时序的数据特征,大幅提升了处理速度与响应效率,能够有效支撑业务对实时性的严苛要求,直接服务于制造、能源、交通、政务等垂直领域,帮助企业在多模态数据处理中实现统一治理与实时决策。 作为一款典型的国产数据库,KaiwuDB 具备广泛的生态兼容性 ,已完成与主流 CPU、操作系统及中间件的全栈适配,构建安全可控的数据基座,全面满足各类企业对数据自主与系统可靠的核心需求。同时,KaiwuDB 开源社区版 KWDB 秉承开源开放的精神,持续推动技术普惠与生态共建,为更多中小企业与开发者提供轻量、易用的数据管理支持。 未来,KaiwuDB 将继续开拓创新,积极推进深化开源共建,持续优化产品性能与服务质量。我们期待携手更多合作伙伴,共建繁荣的信息技术生态,为千行百业的物联网、自动化与智能化应用构筑安全、高效的数字底座,助力国家数字经济健康发展与信息安全保障。
当项目中的接口测试用例和测试场景越积越多,单独管理和执行它们的成本会急剧上升。原本用于保障质量的自动化测试,自身反而成了维护的负担。 传统的维护方式是手动点选。当项目沉淀了大量用例和测试场景时,手动核对哪些该入库、哪些该回归,会成为沉重的体力成本。 Apifox「测试套件」通过动态模式解决了这个问题。它不再死板地记录 ID,而是保存一套筛选规则,例如按目录、标签、优先级等条件进行组合筛选。 在每次运行前,套件会根据筛选规则,自动组合所有符合规则的用例和测试场景。这意味着你只需专注于测试内容的编写和打标,新增的测试资产就会自动进入 CI/CD 流水线,真正实现无人值守的持续集成。 最终,所有执行项的结果会被汇总到一份聚合报告中,便于集中分析和定位问题。 将 Apifox 更新到最新版本后,在「自动化测试」模块中,可以找到「测试套件」的分类。点击其右侧的 在弹出的窗口中输入一个描述性的名称,配置相关的优先级或者标签,一个空的测试套件就创建完成了。 创建完成后,核心工作是向这个套件中添加内容。测试套件的内容可以是单个的「接口测试用例」,也可以是包含多个步骤的「测试场景」。 点击「添加接口测试用例」或「添加测试场景」时,会看到「静态」和「动态」两种模式的选项。这两种模式决定了测试套件如何管理其包含的测试项,适用于不同的维护策略和测试目标。 静态模式,顾名思义,是精确地、不变地指定要执行的测试项。当你以静态模式勾选某些用例时,系统记录的是这些用例的唯一 ID。即使后续这些用例的源目录增加了新的用例,或者用例本身被移动,这个套件的执行范围也不会改变。它的确定性很高,确保了每次运行的内容完全一致。 动态模式则完全不同。它不记录具体的用例 ID,而是保存一套 “筛选规则”,例如 “某个目录下的所有用例” 或 “所有标签为「语义合法」的用例”。 又或者是 “所有标记为 在动态模式下,每次运行测试套件时,系统都会根据这套规则重新扫描整个项目,将所有当前符合条件的用例动态地纳入执行计划。这意味着,只要测试用例的属性(如所在目录、标签、优先级)符合规则,它就会被自动包含进来。 这两种模式没有绝对的优劣之分,而是服务于不同的管理需求。选择哪种模式,取决于你希望测试套件具备怎样的维护特性。 对于需要严格控制范围的专项测试,静态模式更可靠。而对于需要持续迭代、自动纳新的回归或冒烟测试,动态模式则能极大地降低维护成本。 为了更清晰地理解两种模式的差异,可以通过下表进行对比: 添加完测试内容后,可以在编排列表中通过拖拽调整它们的执行顺序。 在执行项(测试场景)的右侧,可以对套件的运行行为进行更细粒度的控制。 例如,「遇到错误时」 选项可以决定当某个步骤失败后是继续执行、跳过当前轮次还是立即终止整个运行。「循环次数」则可以将整个套件重复执行多次,用于简单的稳定性测试。这些配置让测试套件不仅仅是一个用例的集合,更是一个可控的执行流程。 构建好测试套件后,下一步就是执行它。Apifox 提供了从本地手动运行到云端自动化执行的多种方式,以适应不同阶段和环境的需求。 最直接的运行方式是在 Apifox 客户端界面中,点击「运行」按钮。这种方式会从本地机器发起请求,适用于在开发和调试阶段进行小规模、快速的测试验证。在运行配置界面,可以临时切换「运行环境」,或设置在运行结束后发送通知。 运行完成后,Apifox 会生成一份本次执行的测试报告,并在界面中以可视化方式展示。报告中会按执行顺序列出每一个接口测试用例和测试场景的结果,清晰标识成功和失败状态,点击具体测试项可查看更详细的报告。 当测试规模较大,或者需要在无图形界面的服务器上执行时,Apifox CLI 是更高效的选择。它是一个命令行工具,可以将 Apifox 中的测试能力延展到任何终端环境。 要使用 CLI 运行,首先需要安装 Apifox CLI,并确保其版本为最新。完成安装或升级后,可以在测试套件的「CI/CD」标签页中找到自动生成的命令行: 将这条命令复制到终端中执行,即可在命令行看到与图形界面一致的测试过程和结果。 运行结束后,它还会在当前目录下生成一个 通过 CLI 运行的方式是实现 CI/CD 的基础。可以将这条命令集成到 Jenkins、GitLab CI 或 GitHub Actions 的脚本中,在代码合并等关键节点自动触发回归测试。 Apifox 内置了「定时任务」功能。在测试套件的「定时任务」标签页,可以新建一个任务,设置其运行周期和运行环境。 与本地运行不同,定时任务需要指定在「自托管 Runner」上执行。 Runner 是一个可以由团队自行部署在内网服务器上的轻量级执行程序。使用 Runner 可以解决本地机器关机或网络不通导致定时任务失败的问题,并利用服务器更强大的计算资源来执行大规模测试。 设置好定时任务后,Apifox 会在指定时间自动调度 Runner 执行测试套件,并将运行历史和报告上传至云端。同时,可以配置失败通知,一旦线上接口出现异常,相关人员就能第一时间收到告警信息,及时介入处理。 通过静态与动态两种编排模式,你既可以精确控制专项测试的执行范围,也能让回归测试随业务迭代自动更新,无需反复手动维护。配合本地运行、CLI 集成和定时任务等多种执行方式,测试套件可以灵活嵌入开发流程的各个环节——从开发阶段的快速验证,到 CI/CD 流水线的自动化回归,再到生产环境的定时巡检。 更多关于测试套件的知识可以前往 Apifox 帮助文档查看。现在就去试试创建你的第一个测试套件,将现有测试内容进行编排,逐步构建可持续运行的自动化回归体系。
创建并编排你的第一个套件
... 按钮,选择「新建测试套件」。


添加测试内容:静态与动态



P0 优先级的测试场景”。
静态模式与动态模式:如何选择?

执行顺序与高级配置


运行测试套件
本地可视化运行


通过 CLI 运行


apifox-reports/ 文件夹,里面包含了 HTML 格式的详细测试报告。
通过定时任务运行


总结
老板要报表,销售在跑客户,仓库等着发货,财务急着对账——这时候要是能掏出手机,点几下就搞定所有流程,该多省心?没错,这就是移动ERP的价值。它不再把管理者拴在电脑前,而是让业务跟着人走,真正实现了“指尖上的管理”。 但市面上的选择太多了,标准化产品怕不灵活,定制开发又怕成本高、用不起来。今天,我们就来一次深度测评,聊聊哪些移动ERP系统真的能打,尤其适合那些业务增长快、需求多变的成长型企业。我们综合评估了产品能力、灵活性、性价比和实际口碑,为你推荐以下8款。 1、支道:业务自己就能改的“活”ERP 如果你受够了软件跟不上业务变化的痛,那支道值得你第一个了解。它来自浙江支点数字科技有限公司,核心思路很不一样:它首先是一个强大的无代码开发平台,然后才是覆盖了CRM、ERP、生产、项目等全场景的解决方案。 它的最大亮点是“灵活”。传统ERP改个流程得找厂商、排期、付钱,周期漫长。而支道让业务人员通过简单的“拖拉拽”,就能自己搭建或调整表单、流程和报表。今天销售说要加个客户字段,明天仓库希望出库单能扫码,后台配置一下,马上就能用。这完美解决了成长型企业“需求变太快,软件跟不上”的核心矛盾。 在移动端,它的体验很完整。数据填报、审批流、报表查看、生产报工等都能在手机APP或微信、钉钉里完成。比如,销售在外面用手机就能录入客户跟进、申请合同价;车间工人用PDA扫码就能完成领料和报工,数据实时同步。 此外,它支持私有化部署,对数据安全有高要求或想打造自主品牌的企业来说是个利好。根据其官方资料,它已服务超过5000家企业,年续费率达92.3%,在制造业、工程服务业等领域积累了很深的口碑。 适合谁:需求变化快、追求业务自主权、不希望被软件厂商“卡脖子”的成长型企业,尤其是制造业、工程服务和贸易行业。 2、简道云:深耕垂直场景的灵活助手 提到无代码和移动ERP,简道云是个绕不开的名字,它在数据分析和表单应用方面口碑很好。 它的优势在于场景化的解决方案非常丰富。从轻量的进销存、客户管理,到复杂的生产工序跟踪、设备巡检,都有现成的模板可以借鉴修改。移动端的表单设计和数据收集体验很流畅,特别适合需要大量外勤填报、巡检的场景。 不过,它的灵活性更多体现在应用搭建层面,在超大型集团化的复杂业务流程深度整合上,可能不如一些原生一体化的平台。但对于大多数中小企业来说,它的能力已经绰绰有余,性价比不错。 适合谁:看重数据收集与分析、需要快速搭建轻量级业务流程的中小企业,以及作为大型企业部门级应用补充。 3、用友畅捷通:老牌厂商的云端进化 作为国内管理软件的老大哥,用友的移动端布局也很全面。这里我们主要看其中小企业云服务品牌——畅捷通。旗下的好生意、T+Cloud等产品都提供了成熟的移动端应用。 它的优势是功能成熟、稳定,财务业务一体化深度好。进销存、生产、财务之间的逻辑经过多年打磨,严谨规范。移动APP可以处理开单、查库存、审批、看报表等核心操作,与电脑端无缝衔接。如果你公司业务比较标准,尤其看重财务合规性,用友是稳妥的选择。 但相对的,其个性化定制能力较弱,深度修改需要依赖厂商或合作伙伴进行二次开发,周期和成本是必须考虑的。 适合谁:业务模式相对标准、尤其重视财务合规性与稳定性的中小型企业。 4、金蝶云·星辰:业财一体,移动协同 金蝶面向小微企业的金蝶云·星辰在移动端表现活跃。它主打“新财税、新营销、新平台”,将财务、进销存、零售门店管理较好地整合在了一起。 移动端除了常规的经营管理,在门店收银、会员管理、小程序商城对接等方面有特色。对于有线上线下结合业务的企业比较友好。业财自动流转,老板在手机上就能清晰看到现金流和利润情况。 金蝶的标准产品能力扎实,但若涉及超出产品边界的大幅定制,也会面临挑战。 适合谁:有小微企业、零售门店、有线上商城业务,需要业财深度融合的商户。 5、SAP Business ByDesign:跨国企业的稳健之选 对于有出海业务或管理标准要求极高的企业,SAP是无法忽视的选项。SAP Business ByDesign是其面向中型企业的云端ERP解决方案。它的强大在于全球合规性、多语言多币种支持以及各模块间的高度集成性。从供应链、制造到客户关系和人力资本,设计理念超前。移动端应用更偏向于高管仪表盘和关键审批,为管理者提供全球业务的实时洞察。 当然,它的实施成本、复杂度和费用也更高,通常需要专业的咨询团队介入,更适合有一定规模和国际视野的企业。 适合谁:有跨国运营需求、管理规范严格、预算相对充足的中大型企业。 6、浪潮云ERP:国资背景的全面方案 浪潮在集团管控和智能制造领域有深厚积累。其云ERP产品线覆盖了大、中、小型企业,移动应用配套比较全面。 特色在于对制造业的深度支持,以及与工业互联网平台的结合。在移动端进行生产任务调度、质量检验、设备状态监控等场景较为成熟。对于国有背景或大型制造企业,浪潮往往在选型名单之内。 适合谁:特别是大型制造企业、国有企业,以及需要ERP与生产执行系统深度集成的客户。 7、明道云:零代码构建业务中台 明道云强调“业务中台”的概念,让企业可以像搭积木一样构建CRM、项目管理、进销存等应用。 它的界面现代化,自动化工作流配置能力强大。移动端能很好地承载这些自定义应用。适合那些有明确业务逻辑,希望完全自主设计管理流程的互联网化团队或企业IT部门。 适合谁:IT能力较强或互联网思维明显的团队,喜欢完全自主可控地搭建业务系统。 8、氚云:钉钉生态的深度集成者 对于日常办公高度依赖钉钉的企业来说,使用体验非常顺滑。在钉钉工作台直接使用ERP应用,消息、审批、待办天然打通,生态内还有大量第三方模板。如果你的企业是钉钉的重度用户,希望快速上手一个能解决业务管理问题的工具,氚云是一个便捷的入口。 适合谁:全体员工已深度使用钉钉,希望管理软件能即开即用、快速上线的企业。 总结与选择建议 看完这8款,可能还是有点眼花,我们一起简单总结一下,追求极致灵活与自主首选支道这类零/无代码平台。它们把系统的“进化权”交给了企业自己,故而尤其适合业务处于快速成长期、需求不确定的类型。 最后,选移动ERP,不能只看宣传的功能列表。一定要亲自试用,最好能用它模拟一个你最核心的业务流程(比如从下单到发货),看看在手机上跑不跑得通、顺不顺手。同时,思考一下一年后、三年后你的业务会变成什么样,今天的系统能不能跟着你一起成长。 毕竟好的移动ERP不该是个冷冰冰的工具,而应该是一个能随需而变的“活”系统。希望这份测评能帮你拨开迷雾,找到最适合自己的系统。







Microsoft 已正式将 XAML Studio 开源,并将其纳入 .NET Foundation 体系。XAML Studio 是一款轻量级的快速原型工具,面向基于 XAML 的 UI 开发。该工具最初作为 Microsoft Garage 项目的一部分,通过 Microsoft Store 发布,如今其 GitHub 仓库已向社区开放,欢迎开发者参与协作与贡献。 XAML Studio 的起源可以追溯到 2017 年的一次黑客松。当时诞生的首个原型名为 XamlPad+,目标是重振 WPF 时代的经典工具,例如 XamlPad、XamlPadX 和 Kaxaml。最初它只是一个业余项目,但在随后的数年中不断演进,最终发展为一款专注于 WinUI 和 UWP 原型设计的独立应用。在开源之前,其开发主要由内部团队推进,仅有部分组件通过 Windows Community Toolkit 对外共享。 此次开源版本包含了面向 2.0 版本的一系列重大更新,这些改动目前集中在 dev 分支中。更新内容包括:基于 Fluent 设计原则的大幅 UI 重构、对 WinUI 3 的更深度集成,以及实时数据上下文、属性检查器、布局对齐工具等新功能。新版还重新引入了一些最初原型中已有、但未能进入 XAML Studio 1.0 的功能,例如文件夹支持。 XAML Studio v2(开发中)的屏幕截图 将 XAML Studio 开源,标志着该工具在维护和开发模式上的重要转变。作为 .NET Foundation 的种子项目,它被寄予长期社区共建的期待。GitHub 上的公告也提到,团队早在 2017 年 8 月就有开源的想法,但直到现在项目在成熟度上才真正适合面向公众开放开发。 需要注意的是,虽然当前代码库已经开放,但 2.0 版本尚未被视为稳定版本。探索该仓库的开发者应当了解,其中部分功能仍处于实验阶段,相关文档也在持续完善中。对传统 UWP 工作流的兼容仍然有限,与 Visual Studio 的集成目前也仅支持外部预览,而非完整的设计器替代方案。 即便如此,此次发布仍有望为 WinUI 和 XAML 开发者带来实际价值,尤其是那些希望获得快速反馈、又不想承担完整项目脚手架成本的场景。同时,开源也为后续改进奠定了基础,使社区能够参与功能贡献、问题跟踪以及路线图讨论。 感兴趣的开发者可以访问该项目的 GitHub 仓库,查看最新路线图,并通过讨论区或 Pull Request 参与其中。Microsoft 的官方博客以及 GitHub 上的讨论帖,也提供了更多关于项目历史与发展愿景的背景信息。 原文链接:
nestjs + swagger ui
点击 try it out 和 execute 后,
好像只有 status 200 的时候,能看到正常的返回值,
而 201 或者其它状态码就看不到返回值是怎么回事?
其它状态码就显示的 error: 加一个状态码
// controller
@Get('test1')
test1() {
return '111';
}
@Post('test2')
test2() {
return '222';
}
