作者:Julia Vural,Percona 工程师。

原文:https://www.percona.com/blog/separating-fud-and-reality-has-m...,Jan 22, 2026

爱可生开源社区翻译,本文约 900 字,预计阅读需要 3 分钟。

过去几周,MySQL 社区再次出现关于 “Oracle 已停止开发 MySQL”“MySQL 将被放弃” 的说法,引发了更多讨论和担忧。一些图表显示,2025 年 10 月之后 GitHub 的提交数量似乎停止增长,而一些博客文章和论坛讨论也对这些迹象进行了字面解读,这进一步加剧了人们的担忧。

作为一名公开分析过 MySQL 代码库活动,并且每天都在 Percona 公司使用 MySQL 的人,我想清楚地区分数据实际显示的内容和数据未显示的内容。

这篇文章并非对 Oracle 的盲目辩护。我们常常不同意 Oracle 的某些决定,并且会公开表达我们的观点。但公平至关重要——尤其是在恐惧、不确定性和怀疑(FUD)开始影响客户和更广泛的生态系统时。

关于“停止对 MySQL 维护”的说法

我们最近收到社区一个令人惊讶的问题:MySQL 真的被放弃了吗?他们还附上了 Otto Kekäläinen 的帖子中分享的图表。

论坛截图

这一结论通常是从 GitHub 公共仓库 的活动图表中得出的 ,该图表确实显示存在很长一段时间没有可见的提交。

图表本身没有错,但解读并不完整。

缺失的背景信息:MySQL 的实际开发过程

错误在于假设 MySQL 是在 GitHub 上开发的,但事实并非如此。

多年来,Oracle 一直遵循一套特定的工作流程,即在私有的封闭代码库中进行实时工程开发。GitHub 仅作为公共镜像和发布平台,而非活跃的开发工作空间。因此,代码会以大型的、整合的“代码包”的形式发布,与官方版本同步,而不是以每日增量提交的形式出现。

换句话说:

GitHub 是一个异步发布镜像,而不是开发记录系统。

这意味着:

  • GitHub 上缺乏增量提交并不意味着缺乏开发。
  • 预计版本发布之间会有较长的平静期。
  • 突然的大规模提交爆发是正常的发布机制。

这种开发模式并不新鲜,它已经沿用多年。有人会说这不是 “真正的开源开发模式” 吗?也许会,但最终,在 2026 年 1 月 21 日(在最近发布的 9.6.0、8.4.8 和 8.0.45 版本之后)绘制的同一张图表 看起来不再像是被弃用了。

近期更新过的图表

MySQL 的“弃用”案例完美地提醒我们,指标的价值取决于我们对所衡量系统的理解。

GitHub 图表上的停滞不前并不总是意味着项目正在走向衰亡;很多时候,它只是引擎在紧闭的大门后静默运转的体现。虽然我们可以讨论 Oracle 开发模式的透明度,但我们不应该将不同的工作流程误解为缺乏工作。事实并非总是如表面所见,以貌取人或以镜像来判断数据库都是错误的。

vLLM 是一款专为大语言模型推理加速而设计的框架,实现了 KV 缓存内存几乎零浪费,解决了内存管理瓶颈问题。

更多 vLLM 中文文档及教程可访问 → vllm.hyper.ai/

*在线运行 vLLM 入门教程:零基础分步指南

源码 examples/offline_inference/save_sharded_state.py

"""
将每个工作进程(worker)的模型状态字典直接保存到检查点,
这为大型张量并行模型提供了快速加载路径 - 每个工作进程只需读取自己的分片,
而无需读取整个检查点。

示例用法:
python save_sharded_state.py \
--model /path/to/load \
--quantization deepspeedfp \
--tensor-parallel-size 8 \
--output /path/to/save
Then, the model can be loaded with
llm = LLM(
model="/path/to/save",
load_format="sharded_state",
quantization="deepspeedfp",
tensor_parallel_size=8,
)
"""
import dataclasses
import os
import shutil
from pathlib import Path

from vllm import LLM, EngineArgs
from vllm.utils import FlexibleArgumentParser

parser = FlexibleArgumentParser()
EngineArgs.add_cli_args(parser)
parser.add_argument("--output",
                    "-o",
                    required=True,
                    type=str,
                    help="path to output checkpoint")
parser.add_argument("--file-pattern",
                    type=str,
                    help="string pattern of saved filenames")
parser.add_argument("--max-file-size",
                    type=str,
                    default=5 * 1024**3,
                    help="max size (in bytes) of each safetensors file")


def main(args):
    engine_args = EngineArgs.from_cli_args(args)
    if engine_args.enable_lora:
        raise ValueError("Saving with enable_lora=True is not supported!")
    model_path = engine_args.model
    if not Path(model_path).is_dir():
        raise ValueError("model path must be a local directory")
    # Create LLM instance from arguments
    # 从参数创建 LLM 实例
    llm = LLM(**dataclasses.asdict(engine_args))
    # Prepare output directory
    # 准备输出目录
    Path(args.output).mkdir(exist_ok=True)
    # Dump worker states to output directory
    # 转储工作进程状态到输出目录
    model_executor = llm.llm_engine.model_executor
    model_executor.save_sharded_state(path=args.output,
                                      pattern=args.file_pattern,
                                      max_size=args.max_file_size)
    # Copy metadata files to output directory
    # 将元数据文件复制到输出目录
    for file in os.listdir(model_path):
        if os.path.splitext(file)[1] not in (".bin", ".pt", ".safetensors"):
            if os.path.isdir(os.path.join(model_path, file)):
                shutil.copytree(os.path.join(model_path, file),
                                os.path.join(args.output, file))
            else:
                shutil.copy(os.path.join(model_path, file), args.output)


if __name__ == "__main__":
    args = parser.parse_args()
    main(args)

这是一件匪夷所思的事情,我们在某短视频平台认识,短暂聊下来发现对方还是蛮合得来的,于是乎驱车 60 公里去和她见了第一面,其实这是我第一次与网友现实中见面,还是挺紧张的,因为她的勇敢(她主动打招呼认识的),我也鼓起勇气去见一个陌生人。

见面的时候发现,哎?建模还是不错的哦(我本人也还算普通人建模),经过一晚上的面对面沟通,发现了两个人更多相同的兴趣爱好,我们都喜欢养狗,喜欢安静的地方,对未来有一致的看法,更重要的一点是我们都是酒蒙子,喝酒后两个人摇摇晃晃在街上散步、发癫,是一趟非常难忘的旅程(没有花什么钱,两个人的快乐都很便宜)。

今天是我们认识的第 10 天,话题虽然会减少一点点,但仍然没有安静下来,其中也有陆陆续续去见了她很多次,她也会过来我的地方见我,一起聊天、喝酒,然后嘻嘻哈哈讨论这过去和未来,两个人加起来都六十岁了,感觉还是像年轻的中二少年一样。两个人身上都有吸引对方的点,感觉就像做梦,某个契合的人突然从天而降,闯进了我本来安安静静的生活,可能是我平静了太久太久,对于这突如其来的一切还难以致信。

哦对了,我们俩都还是未婚,不能存在乱玩哈,我也就觉得不可思议想找个地方述说,也记录一下这个不可思议的事情。

基于 YOLOv8 的河道漂浮垃圾智能检测|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!

源码包含:完整YOLOv8训练代码+数据集(带标注)+权重文件+直接可允许检测的yolo检测程序+直接部署教程/训练教程

基本功能演示

https://www.bilibili.com/video/BV1ctr6BQEPX/

源码在文末哔哩哔哩视频简介处。

项目摘要

随着城市化进程加快与水域生态压力的持续增加,河道漂浮垃圾已成为影响城市形象、水体安全与生态环境的重要问题。传统人工巡查方式存在效率低、成本高、实时性差等不足,难以满足大范围、全天候的监管需求。

本项目基于 YOLOv8 目标检测算法,构建了一套 河道漂浮垃圾智能检测系统,可对河面常见漂浮垃圾(如塑料瓶、泡沫、包装物等)进行实时、精准识别与定位。系统集成 PyQt5 可视化界面,支持图片、视频、文件夹及摄像头等多种输入方式,具备良好的易用性与工程化落地能力。

项目提供完整源码、标注数据集、训练脚本、模型权重以及部署教程,覆盖从数据准备、模型训练到实际应用的完整流程,实现真正的开箱即用,适用于科研学习、课程设计以及智慧水务、环保监测等实际场景。

前言

在“智慧城市”“数字孪生水利”等理念不断落地的背景下,河道环境的精细化管理正逐步从人工经验驱动转向数据与智能驱动。河面漂浮垃圾不仅影响景观,更可能造成排水口堵塞、水质恶化,甚至引发生态安全隐患,因此实现高效、自动化的垃圾监测具有重要现实意义。

近年来,基于深度学习的目标检测技术在工业检测、交通监控、安防巡检等领域取得了显著成果。其中,YOLO 系列模型以其速度快、精度高、部署灵活的优势,成为工程实践中的主流选择。YOLOv8 作为 Ultralytics 推出的新一代模型,在网络结构、训练策略和推理效率方面均有明显提升,非常适合实时场景应用。

基于上述背景,本项目围绕“河道漂浮垃圾自动检测”这一典型应用场景,设计并实现了一套完整的智能识别系统,重点解决以下问题:

  • 河道复杂背景下小目标垃圾的检测难题
  • 模型从训练到部署的工程化落地问题
  • 非算法人员使用门槛高的问题

通过算法与界面的深度结合,使该系统不仅“能跑模型”,更“能实际使用”。

一、软件核心功能介绍及效果演示

1. 多源数据输入支持

系统支持多种数据输入方式,满足不同应用场景需求:

  • 单张图片检测:快速验证模型对不同河道场景的识别效果
  • 文件夹批量检测:对历史采集数据进行集中分析
  • 视频文件检测:适用于无人机巡河、固定监控录像分析
  • 实时摄像头检测:支持 USB 摄像头 / RTSP 视频流,实现实时监测

所有检测结果均可实时显示,便于直观观察模型性能。


2. 基于 YOLOv8 的高精度漂浮垃圾检测

核心检测模块基于 YOLOv8 目标检测模型,具有以下特点:

  • 对河面复杂光照、水纹反射具有较强鲁棒性
  • 支持多类别漂浮垃圾同时检测
  • 检测速度快,满足实时或准实时应用需求
  • 模型结构轻量,便于后续边缘端部署

检测结果以边界框 + 类别标签 + 置信度形式直观呈现。


3. PyQt5 可视化界面设计

为降低使用门槛,系统采用 PyQt5 构建桌面端可视化界面,主要功能包括:

  • 一键加载模型权重
  • 输入源快速切换(图片 / 视频 / 摄像头)
  • 检测过程实时显示
  • 检测结果自动保存

即使不具备深度学习背景,也可通过图形界面完成完整检测流程。


4. 完整训练与部署流程支持

项目不仅提供推理程序,还包含完整训练链路:

  • 数据集组织方式与标注格式说明
  • YOLOv8 训练参数配置示例
  • 模型训练、验证与评估流程
  • 权重导出与推理部署方法

用户可基于现有数据集直接训练,也可替换为自己的河道或水域数据进行二次开发。


5. 实际效果演示说明

在真实河道与公开视频测试中,系统能够稳定识别多种漂浮垃圾目标,在复杂背景下仍保持较高的检测准确率。通过 PyQt5 界面,可清晰观察每一帧的检测结果,为后续垃圾统计、告警联动与智能清理提供可靠数据支撑。

二、软件效果演示

为了直观展示本系统基于 YOLOv8 模型的检测能力,我们设计了多种操作场景,涵盖静态图片、批量图片、视频以及实时摄像头流的检测演示。

(1)单图片检测演示

用户点击“选择图片”,即可加载本地图像并执行检测:

image-20260112181222199


(2)多文件夹图片检测演示

用户可选择包含多张图像的文件夹,系统会批量检测并生成结果图。

image-20260112181253208


(3)视频检测演示

支持上传视频文件,系统会逐帧处理并生成目标检测结果,可选保存输出视频:

image-20260112181311218


(4)摄像头检测演示

实时检测是系统中的核心应用之一,系统可直接调用摄像头进行检测。由于原理和视频检测相同,就不重复演示了。

image-20260112181320653


(5)保存图片与视频检测结果

用户可通过按钮勾选是否保存检测结果,所有检测图像自动加框标注并保存至指定文件夹,支持后续数据分析与复审。

image-20260112181339760

三、模型的训练、评估与推理

YOLOv8是Ultralytics公司发布的新一代目标检测模型,采用更轻量的架构、更先进的损失函数(如CIoU、TaskAlignedAssigner)与Anchor-Free策略,在COCO等数据集上表现优异。
其核心优势如下:

  • 高速推理,适合实时检测任务
  • 支持Anchor-Free检测
  • 支持可扩展的Backbone和Neck结构
  • 原生支持ONNX导出与部署

3.1 YOLOv8的基本原理

YOLOv8 是 Ultralytics 发布的新一代实时目标检测模型,具备如下优势:

  • 速度快:推理速度提升明显;
  • 准确率高:支持 Anchor-Free 架构;
  • 支持分类/检测/分割/姿态多任务
  • 本项目使用 YOLOv8 的 Detection 分支,训练时每类表情均标注为独立目标。

YOLOv8 由Ultralytics 于 2023 年 1 月 10 日发布,在准确性和速度方面具有尖端性能。在以往YOLO 版本的基础上,YOLOv8 引入了新的功能和优化,使其成为广泛应用中各种物体检测任务的理想选择。

image-20250526165954475

YOLOv8原理图如下:

image-20250526170118103

3.2 数据集准备与训练

采用 YOLO 格式的数据集结构如下:

dataset/
├── images/
│   ├── train/
│   └── val/
├── labels/
│   ├── train/
│   └── val/

每张图像有对应的 .txt 文件,内容格式为:

4 0.5096721233576642 0.352838390077821 0.3947600423357664 0.31825755058365757

分类包括(可自定义):

image-20260112181438239

image-20260112181458571

3.3. 训练结果评估

训练完成后,将在 runs/detect/train 目录生成结果文件,包括:

  • results.png:损失曲线和 mAP 曲线;
  • weights/best.pt:最佳模型权重;
  • confusion_matrix.png:混淆矩阵分析图。
若 mAP@0.5 达到 90% 以上,即可用于部署。

在深度学习领域,我们通常通过观察损失函数下降的曲线来评估模型的训练状态。YOLOv8训练过程中,主要包含三种损失:定位损失(box_loss)、分类损失(cls_loss)和动态特征损失(dfl_loss)。训练完成后,相关的训练记录和结果文件会保存在runs/目录下,具体内容如下:

image-20260112181416259

3.4检测结果识别

使用 PyTorch 推理接口加载模型:

import cv2
from ultralytics import YOLO
import torch
from torch.serialization import safe_globals
from ultralytics.nn.tasks import DetectionModel

# 加入可信模型结构
safe_globals().add(DetectionModel)

# 加载模型并推理
model = YOLO('runs/detect/train/weights/best.pt')
results = model('test.jpg', save=True, conf=0.25)

# 获取保存后的图像路径
# 默认保存到 runs/detect/predict/ 目录
save_path = results[0].save_dir / results[0].path.name

# 使用 OpenCV 加载并显示图像
img = cv2.imread(str(save_path))
cv2.imshow('Detection Result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

预测结果包含类别、置信度、边框坐标等信息。

image-20260112181531946

四.YOLOV8+YOLOUI完整源码打包

本文涉及到的完整全部程序文件:包括python源码、数据集、训练代码、UI文件、测试图片视频等(见下图),获取方式见【4.2 完整源码下载】:

4.1 项目开箱即用

作者已将整个工程打包。包含已训练完成的权重,读者可不用自行训练直接运行检测。

运行项目只需输入下面命令。

python main.py

读者也可自行配置训练集,或使用打包好的数据集直接训练。

自行训练项目只需输入下面命令。

yolo detect train data=datasets/expression/loopy.yaml model=yolov8n.yaml pretrained=yolov8n.pt epochs=100 batch=16 lr0=0.001

4.2 完整源码

至项目实录视频下方获取:
https://www.bilibili.com/video/BV1ctr6BQEPX/
image-20250801135823301

包含:

📦完整项目源码

📦 预训练模型权重

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

总结

本文围绕 “基于 YOLOv8 的河道漂浮垃圾智能检测系统”,系统性地介绍了从问题背景、技术选型到工程实现与效果验证的完整过程。项目以 YOLOv8 目标检测模型为核心,结合 PyQt5 图形化界面,实现了对河道漂浮垃圾的自动化、可视化与实时化检测,有效弥补了传统人工巡查在效率、覆盖范围和实时性方面的不足。

在工程层面,项目不仅验证了 YOLOv8 在复杂水面场景下对小目标垃圾的良好检测能力,还通过完整的数据集组织方式、训练与评估流程,保证了模型具备较强的可复现性与可扩展性。同时,PyQt5 界面的引入显著降低了系统使用门槛,使算法能力能够以“产品化”的形式落地,真正做到算法即服务、模型即工具

从应用价值来看,该系统可广泛应用于智慧水务、河道巡检、环保监管及无人机巡河等场景,并具备进一步扩展垃圾统计分析、告警联动、边缘端部署等能力的潜力。整体而言,本项目不仅是一个完整可运行的目标检测实战案例,也为水环境智能感知与治理提供了一种具有实际落地价值的技术方案。

2026 年的第一个月,Jerry Tworek 离开 OpenAI 的消息传出来时,几位 OpenAI 的员工都觉得很突然,他们在 X 上评论说:“我真的崩溃了”“这太难受了”。

Jerry 是现代 AI 浪潮背后最有影响力、却也最少公开露面的关键人物之一。 2019 年加入 OpenAI 时,当时该公司还只有约 30 名员工。他参与了许多最重要的项目,包括后来被称为 Q-Star 和 Strawberry 的推理方法,最终发展成为 o1 推理模型。

 

这次离职后,他在接受 Core Memory 的播客采访时解释了原因:他想从事有风险的基础研究,这种研究在像 OpenAI 这样的公司已经不可能进行了,因为像用户增长这样的指标才是优先考虑的。他对 ChatGPT 广告的看法体现了研究与商业化之间的脱节:“这是一种商业策略,而我负责训练模型。” 这番言论印证了有关 OpenAI 人工智能研究与产品开发之间日益加剧的分歧的传言。

 

Tworek 指出,创新不足的原因有很多。最佳模型的竞争异常激烈,公司需要不断展现实力才能留住用户并证明 GPU 成本的合理性。僵化的组织结构更是雪上加霜,组织架构图决定了哪些研究是可能的:团队各自为政,职责分明,跨团队研究难以开展,Tworek 解释道。

 

这场采访,也是一次“离职解读”,Jerry 还批评了整个人工智能行业,指出所有主要的人工智能公司都在开发几乎相同的技术,产品也几乎没有区别,这迫使研究人员追求短期利益,而不是实验性突破。更重要的是,他开始认真思考:如果研究真的需要冒险、需要不同路径,那他是否还应该继续待在这场高度同质化的竞赛中。

 

在 Tworek 看来,谷歌之所以能够在 AI 竞赛中成功追赶 OpenAI,本质上是 OpenAI 自身的失误。他表示,这家 AI 实验室犯了一些错误,行动过于缓慢,没能充分利用自己原本拥有的巨大领先优势;而与此同时,谷歌则做出了许多正确的决策。

 

当被问及 OpenAI 的具体问题时,Tworek 并未展开细说,只是暗示:员工流失有时是更深层问题的表象。他强调说,人走人来本来很正常,但如果一波人是因为“方向不对、决策错了”才走,那就说明公司里确实有点事——也难怪有些关键推进会慢得不该那么慢。

 

与这种“慢得不该那么慢”的状态形成对照的,是 Tworek 对 Anthropic 的评价。在播客中,他高度评价了这家 OpenAI 最强的初创公司对手,认为它在过去一年里展现出了一种罕见的“清晰感”:算力更少、团队更小,却异常专注,执行力极强。他特别提到 Anthropic 在代码模型与代码 Agent 方向上的进展——那不是靠简单堆规模取得的成果,而是一种“非常清楚自己在做什么”的工程与研究结合状态。

 

随着谈话继续,话题很快从技术转向了另一件更微妙的事。

 

Jerry 说,这几年最让他感到“不对劲”的,并不只是研究路线,而是整个大模型行业正在发生的变化。他形容现在的状态有点像这样:你做出一个新东西,大家还没真正弄清楚它是什么,它已经被卷进了一整套剧情里。谁离职、谁跳槽、谁被挖、谁“内部有分歧”,每天都像连续剧更新;湾区像一个巨大的转会市场,研究者在几家前沿实验室之间流动,围观者负责情绪,媒体负责剪辑——研究现场,被包裹进了一层娱乐业式的叙事。

 

“技术、概念、人类情绪、现实生活,是分不开的。”Jerry 说。

 

当一个行业被持续围观,每一次进展都会被强行赋予意义,每一次内部变化都会被解读成信号,整个系统就会被不断加压。你不是在安静地做研究,而是在聚光灯下跑一场没有终点的马拉松。他用一个很个人的比喻形容这七年:“像做俯卧撑。”每一次高压过去,你会更能扛一点。你学会屏蔽噪音,学会在混乱中保持稳定。但代价是,你也会慢慢习惯这种状态——把异常当成常态,把围观当成空气,把压力当成日常。

 

我们翻译并整理了这期播客的完整对话,以飨读者。

 

当整个大模型行业只剩下一套“配方”,有些人宁愿离场

 

主持人:今天我们请来重量级嘉宾——OpenAI 的 Jerry Tworek。他在 AI 圈算是“活传奇”那种人,而且刚刚离开 OpenAI,所以这期信息非常新、也非常重磅。我刷到不少 OpenAI 的同事在 X 上直接说“我崩溃了”“太难受了”。这就能看出来他在内部的分量。

 

他主导或参与了 OpenAI 很多最重要的项目。这一波“推理模型”的时代,在很大程度上也和 Jerry 有关。今天他会聊他的经历、他做过的事情,然后我们也看看他会不会讲得更“辣”一点——希望如此。

 

Jerry,你好。你身上有一种……“刚失业的光芒”。

 

Jerry:我已经失业八天了,确实是一种变化。我已经很久没有失业过了,但这件事也有很多好处。比如我现在晒太阳的时间多了很多。

 

主持人:那这期节目就算你的“离职访谈”了。我们刚才已经简单介绍了你的背景,我再稍微补充一点。你大概是 2019 年加入 OpenAI 的。你来自波兰,在来 AI 领域之前,和很多 AI 从业者一样,曾经在高频交易相关的领域工作过。在 OpenAI,你参与或领导了很多大家非常熟悉的重要项目。最近,很多人听说过 Strawberry、o1,以及这波“推理模型”的兴起,而这是你追了相当长一段时间的方向。然后,如大家所知,你最近刚离开 OpenAI。这件事在 X(推特)上引起了不少讨论。

 

大家好,我做了一个艰难的决定:离开 OpenAI。

 

我在这里将近七年,经历了很多美好与疯狂的时刻——但美好远远多于疯狂。

 

我非常享受和这支团队共事的时光。我有机会在“机器人上的强化学习规模化”还没流行之前就参与其中;训练了世界上最早的一批代码模型,推动了 LLM 编程革命;在“Chinchilla(缩放规律)”还没被叫作 Chinchilla 之前就发现了它;参与了 GPT-4 和 ChatGPT 的工作;最近则是组建了一支团队,建立了一种训练与推理算力规模化的新范式——我们通常把它称为“推理模型”。

 

我在这里结识了许多朋友,有些夜晚也在办公室度过;我参与并见证了相当多的技术突破;也和许多我视为至亲的人一起欢笑、一起担忧。我有幸招募并壮大了——在我看来——世界上最强的机器学习团队。

 

这段旅程非常精彩。虽然我将离开,去探索一些在 OpenAI 很难开展的研究方向,但这依然是一家特别的公司、一个特别的地方,它已经在全人类的历史中占据了永恒的一席之地。

 

Jerry:某种意义上,这事挺棘手的:我如果不自己说,媒体迟早也会替我说——要么写成“独家”,要么当成“泄露”。所以我宁愿自己把话讲清楚,省得消息一传十、十传百,越传越走样。

 

主持人:对,我们最怕“越传越离谱”。你其实可以先跟我们说。

 

Jerry:(笑)我可以随时给你们打电话,告诉你们我生活里发生的任何事——比如我中午吃了什么。

 

主持人:但说真的,你那条离职帖写得很好,而且挺真情实感的。你在那里待了七年,经历了巨大的变化。从你的视角看,这七年是什么感觉?

 

Jerry:老实说,我在 OpenAI 的每一年,都像是在一家完全不同的公司里。无论是公司本身的高速增长,还是整个 AI 世界的变化速度,都非常罕见。我不觉得历史上有很多类似的例子。我很高兴自己亲身经历了这一切。几乎每一个阶段,情况都完全不同。

 

主持人:你 2019 年加入的时候,公司大概只有 30 人左右?

 

Jerry:对,大概就是那个规模。

 

主持人:那现在呢?几千人?

 

Jerry:已经没法数清楚了。现在是一家规模非常大的公司,有很多办公室,全球各地都有团队。现在几乎很难找到没听说过 OpenAI 的人。我加入的时候,还是几个小团队各自在做自己的小研究项目。那时唯一始终不变的,是野心——从一开始就瞄准 AGI,想要改变世界、产生正向影响。我觉得公司在这方面做得非常成功。ChatGPT 把一种“可用的智能”分发给了非常多的人,这本身就是一件非常了不起的事情。

 

主持人:你发了那条离职推文之后,是不是几乎所有基础模型实验室都立刻联系你了?

 

Jerry:确实有很多。我现在正在慢慢梳理下一步要做什么。在这个行业待了这么多年,我本来就认识很多人,也有很多联系。从积极的角度看,我并不急着立刻做决定。过去很多年我工作得非常拼,几乎没有时间去见人、聊天。现在终于有机会停下来,认真想一想接下来的七年要怎么度过。

 

主持人:你在推文里提到,你想做一些在 OpenAI 觉得无法进行的研究。能具体解释一下吗?

 

Jerry:是这样:在一家必须参与当下这种极其残酷、极其高压的竞赛、必须争夺“世界上最强 AI 模型”的公司里,有些事情就是很难做。这背后有几个方面的原因。

 

其中一个因素是风险偏好。公司愿意承担多大风险,会受到很多现实约束:比如不能落后于用户增长指标,比如 GPU 成本极其高昂。因此,向外界展示实力、持续拥有最强模型,对所有主要 AI 公司来说都非常重要。但这确实会影响你愿意承担风险的“胃口”。

 

另一个很难的取舍是组织架构。公司有 org chart,而 org chart 往往决定了你能做什么研究。每个团队都需要一个身份、一个研究范围、一组他们要解决的问题。跨组织的研究就会变得非常困难。

 

我也不确定这是不是一个已经被完全解决的问题:当研究规模变得很大时,究竟该如何把研究组织好?研究本身喜欢动态,甚至可以说喜欢混沌;但一大群人需要秩序、结构和组织架构。

 

所以,“把组织架构交付出去(shipping your org chart)”成了一种非常普遍的现象,研究也不例外。你最终会做那些组织结构最容易支持的项目。而与此同时,我确实想做一些研究,但公司的组织结构并不容易支持我去做这些事情。

 

主持人:这是否意味着我们将看到一项新突破?

 

Jerry:我想,其实 AI 世界里的每一位研究者,都想参与下一次真正的突破——我当然也包括在内。

 

主持人:我之前在播客里跟 Mark(Mark Chen,OpenAI 的 首席研究官) 聊过这个话题:几乎所有人都会带着自己的想法去找他、找 Yakob(Jakub Pachocki,OpenAI 的核心研究负责人之一)。OpenAI 一直以来确实有一段“押注冒险想法、去做其他实验室没做的事”的历史,而且这种策略也确实为他们带来了回报。但我也很清楚——你们那里一定聚集了大量非常聪明的人,所有人都会不断提出各种想法。

 

而在某个时刻,公司终究是一家资源有限的组织——哪怕这些资源已经非常多了——也必须做出取舍。所以,这必然是一个非常艰难的决策过程。也正因为如此,我在思考的那些方向,大概确实属于那种“相当新、相当不寻常”的路径:公司需要判断,我们到底要不要往这个方向走?现在有没有能力、有没有余力去承担这种不确定性?我们是否能在当下负担得起?

 

Jerry:关于“研究时代”的判断,我不确定事情是否真的像他说的那样是非黑即白的。但我非常确定的一点是:在 AI 和机器学习的世界里,还有大量东西尚未被真正探索。

 

大约六年前,我们基本确定了以 Transformer 为核心的架构路线。此后相当长一段时间里,整个行业都在持续扩大 Transformer 的规模,而且进展确实不错。路径也非常清晰:每个季度用稍多一点算力、稍多一点数据,训练出一个更强的模型。到目前为止,这条路看起来并没有明显的“天花板”,进步仍在持续。

 

但问题是:这就是终点了吗?这是最后一条路了吗?我几乎可以确定不是。

 

我们还有很多改进模型的方式,目前根本还没真正开始做。正如你刚才提到的,我自己主要做的是“推理”,以及扩大强化学习的规模。在那之前,整个领域几乎所有的“大赌注”都押在 Transformer 的预训练规模上。

 

扩大预训练规模,确实是一种有效的扩展方式,而且效果很好。每一次更大规模的预训练,模型能力都会整体提升,各方面都会变强。所以你当然可以说:那我们就继续扩展预训练规模,模型自然会越来越好。

 

但后来,有那么一小撮“做梦的人”、研究者开始相信:事情不止这一种做法。我们不只是扩展预训练,还可以在语言模型之上,大规模扩展强化学习,而且投入的计算量可以和预训练处在同一个量级。这样做,能够教会模型一些仅靠预训练永远学不会的东西

 

正因为如此,我们今天才有了这些令人惊叹的 Agent:它们可以自动化工作、解决复杂问题。而如果只靠预训练模型去完成这些任务,可能需要极其夸张的算力和数据量。

 

也就是说,当你发明了一种新的“扩展方式”,你就会得到一整套全新的能力;而如果你只是沿着原有的预训练扩展路线走,那可能要花非常、非常久,才能逼近这些能力。这一次,其实是一次相当大的跃迁。

 

在我看来,自从 GPT-4 引入以来,“推理模型”几乎是这几年里最重要的一次能力跃升。而我相信,类似这样的跃迁还会出现不止一次。

 

所以我一直觉得,研究者不应该只盯着“渐进式改进”,而是要去思考:有没有办法把整个棋盘掀翻?

 

主持人:去年在 NeurIPS 上,Ilya 曾说过一句话,大意是:“我们正在耗尽数据,这条路迟早会走到尽头。”关于“预训练是否正在进入一个越来越艰难的阶段”,我一直在想:那下一个真正的突破会是什么?这正是你现在想问的问题,对吧?

 

Jerry:是的。但我并不认为这等于在说“预训练已经结束了”。预训练仍然在持续改进,而且还有很多方式可以继续优化它。但它已经不再是唯一的改进路径,而且其他路径,可能在很多维度上能更快地带来提升。

 

扩大预训练规模,在很多能力上提升得其实非常慢——它确实会让模型更好,但提升是渐进的。而与此同时,可能还存在其他方式,能带来更大的跃迁。

 

主持人:硅谷有一个很有意思的现象:很多时候,科技公司会提出一些非常原创、甚至看起来“怪异”的想法,外界一开始完全不理解。但正是这样,才催生了全新的商业模式、新的科学、新的研究方向。而科学研究本身,也是如此:你需要去追逐别人还没走的方向。

 

可一旦某个方向“爆了”,事情就会反过来——会形成一种巨大的共识。突然之间,所有人都开始说:“我们就该这么做。”然后大家不再讨论“该不该走这条路”,而是开始比拼“谁在这条路上跑得更快”。

 

这其实就是你刚才描述的那种状态。那么问题来了:当我们已经进入这种“模型竞赛”,而且已经持续了两三年之后,会不会出问题?是不是所有主要实验室都变得越来越保守?这会不会成为一个普遍性的结构问题?

 

Jerry:让我感到非常“难过”的事,就是现在几乎所有 AI 实验室都在试图做和 OpenAI 一模一样的事情。

 

OpenAI 显然是一家非常成功的公司,它在很多关键问题上做对了选择,把整个世界带进了“规模化 Transformer”的范式之中,也证明了:通过扩展机器学习模型的规模,确实可以为世界带来大量非常有价值、非常有用的能力。

 

但问题是:这个世界究竟需要多少家“做完全同一件事”的公司?我不知道。竞争当然是好事,所以肯定不止一家更好。但现在我们大概已经有五家相当严肃、体量巨大的 AI 公司,基本上在用完全同一套“配方”,试图在同一套技术之上,做出一点点差异化的产品。

 

也许这确实是对的选择,但我还是希望能看到更多多样性——更多模型层面的差异。

 

如果你去看现在世界上最好的那些模型,实际上很少有人真的能注意到它们之间的区别。我觉得应该做更多“盲测”:让人们分别和不同模型对话,看他们是否真的能分辨出哪个是哪个。我敢说,99.9% 的用户根本察觉不出来这些模型有什么不同;在他们的感受里,这些模型几乎一模一样。

 

即便背后是不同团队,在做一些细微不同的事情,但所有实验室都觉得“我们在这个点上做得稍微好一点”“对方在另一个技巧上可能更强”,最终的结果却是:大家全都挤在一个非常接近的位置上。

 

那真正的探索在哪里?真正的创新空间在哪里?真正能让你和别人拉开距离的差异化又在哪里?

 

主持人: 我主要用这些模型做文字工作,偶尔会在 Gemini、ChatGPT、Claude 之间切换——差别确实有,但很细,更多是语气和“性格”。比如我最近更常用 Claude,因为它更直接、不啰嗦;而 ChatGPT 的语气我一直很难调到那种感觉。不过总体我也同意,大多数人其实分不清这些模型的区别。

 

话说回来,我想问一个可能有点尖锐的问题:你在 OpenAI 待了这么久,在公司内部算是传奇人物之一,而且你的履历也证明,你参与的项目往往能做成。那从外界看,如果连你这样的人都觉得——自己真正想做的研究在公司里推进起来足够困难,以至于最后选择离开——这是不是一个不太好的信号?尤其对一家最初以研究实验室起家的公司来说,这意味着什么?

 

Jerry:我觉得有时候,人和组织都会成长到一个阶段:必须意识到,彼此的道路需要分开。

 

对一家单一公司来说,非常重要的一点是:公司内部的人,必须在某种程度上对目标、对前进路径保持一致。而在某个时刻,我对“未来研究路径”的判断,和 OpenAI 选择的方向,至少在一些足够重要的点上,出现了分歧——包括接下来一年研究该是什么样子。

 

在这种情况下,我认为分开,反而比强行在分歧中继续合作要好得多。否则,那些分歧可能会不断积累、发酵。

 

所以我反而认为:不同公司去做同样的事情,在某种意义上是合理的。因为专注对于一家公司来说非常重要,而 OpenAI 很可能正在做所有“正确的事”。

 

也许只是我自己有一些不太现实的梦想;也许我对“还能做些什么其他事情”过于乐观——这完全有可能。

 

很多公司必须专注于自己的核心路径,才能活下来,才能进入下一个阶段。所以在一个理想的世界里,应该有很多不同的公司,在做很多不同的事情。而研究者——尤其是那些很难去做自己并不真正相信之事的研究者——应该能找到一个地方,在那里,他们能投入到自己最相信的研究方向中。最终,历史会证明哪一条路是对的。

 

正因为如此,我才会对“大家都在做同一件事”感到有点难过。因为在当下,如果你想做一些偏离主流机器学习路线的事情,真的非常难找到一个合适的地方。这大概是我目前最感到遗憾的一点。

 

主持人:那你现在还在思考下一步要做什么,对吧?如果所有实验室都在做同一件事,那你应该不会想简单跳去另一家大实验室?

 

Jerry:我当然还在认真思考下一阶段。但如果有更多“稍微偏离主流、但依然具备规模”的选择,那我会更开心,也会更容易做决定。

 

主持人:那你觉得,要让整个行业偏离当前主流路径,需要什么条件?我可以想象,这些公司投入了巨额资金、消耗了大量资源,又处在聚光灯下,自然会害怕承担风险。但也许这些风险是必要的。那到底要改变什么?或者这种改变真的会发生吗?

 

Jerry:这正是一个非常有意思的问题。

 

我其实非常喜欢冒风险,也经常被人这样评价。我认为,冒风险本身是一件好事。但当你面对的是“巨额资金在押”的局面时,真正有能力、也愿意承担风险的人,其实非常非常少。

 

每个人的风险偏好都是极其个人化、极其独特的。我和很多人共事过,我真心觉得:人们应该愿意多承担一些风险,多去尝试一些事情。

 

但另一方面,现在 AI 世界里的研究者薪酬已经高得离谱了。这在某种程度上,也会让人变得非常害怕失去工作、害怕一次不好的绩效周期。结果就是:人们更倾向于追求短期、确定性的收益路径。而这些人本身往往都是非常聪明、动机也非常正直的研究者。只是整个系统在某些地方,确实更容易鼓励“短视”。

 

我认为,研究者应该被更明确地鼓励去冒风险、去下大胆的赌注,因为真正的进步,正是这样发生的。

 

Yann LeCun 的世界模型,“方向无疑是正确的”

 

主持人:那我们已经看到了一些“独行侠”式的人物。比如 John Carmack。Carmack 跑去了达拉斯,像是进了自己的洞穴里。一开始似乎是单干,现在好像有几个人在跟他一起做。他几年前说的,其实和你刚才讲的很像:也许我不知道能不能走出一条完全不同的路,但至少应该有人在一条完全不同的路径上持续折腾。

 

我和 Ilya 聊过,但并不知道他现在具体在做什么。我不知道那是他之前工作的延续,还是某种非常激进的新路线。不过我想,如果不是完全不同的方向,他大概也不会去募那么多钱、重新开始。

 

然后还有 Yann LeCun,他显然有一套不同的哲学。有时候我会觉得这个领域挺奇怪的:AI 从某种意义上说很“老”,已经发展了几十年;但当前这一波 AI 又非常新。和研究者聊天时,他们会说:现在把主要论文读完,其实很快就能跟上前沿。所以我一直在想,会不会有某个人,突然从完全意想不到的方向出现,带来一个极端激进的新想法,把整个领域往前推一大步?但与此同时,又好像越来越难——因为现在你几乎需要一个“国家级规模”的数据中心,才能真正参与到这个层级的竞争中。

 

Jerry:这正是事情变得非常困难的地方,同时也是一个非常值得解决的问题。

 

世界上其实有大量学术研究在发生,也有很多学生在做各种各样的事情,但其中大多数都严重缺乏资源。这使得很多研究最终走不远,因为你真正想做的研究,往往必须在“大规模”下才能完成。

 

但这也是让我感到非常乐观的一点:现在确实有相当多的资金,正在流向那些“想做新东西”的人。像 John Carmack、像 Ilya——他们做的事情,正是当下这个时代应该存在、也应该被资助的。当然,不是所有尝试都会成功,但其中一定会有一些成功,而创新正是这样发生的。对于任何一个强化学习研究者来说,“探索(exploration)与利用(exploitation)”之间的权衡,都是一个非常基础、非常重要的概念。

 

即便是在优化 agent 时,你也必须不断权衡:是走已经被证明有效的路径,还是去尝试全新的方法,用完全不同的方式解决老问题?这是一个非常困难的取舍,但它本身就是一个被研究、也值得研究的问题。而正如我们在设计 agent 时会思考这个问题一样,我们也应该反过来问自己:我们自己在做研究时,是如何在探索与利用之间取舍的?

 

主持人:在这个非常非常顶尖的小圈子里,大家都知道 Carmack 在做什么吗?你们彼此是互相了解的吗?

 

Jerry:老实说,我并不完全清楚。但如果我没记错的话,我隐约知道一些。他可能是在押注一种非常端到端的强化学习方式——通过鼠标和键盘,在电脑游戏中训练 agent。

 

如果真是这样,那其实非常有意思。因为我长期以来一直在想:电子游戏,可能是训练智能体的最有趣环境之一。游戏本身就是为了“对人类大脑有吸引力”而设计的。它们包含故事、权力幻想,但更重要的是:大量的问题求解。游戏必须有趣、必须有挑战、不能重复。

 

在某种意义上,电子游戏非常贴合人类智能,它们天然地在教你资源分配、解谜、如何在不同规则下取胜——这正是我们希望 agent 能学会的事情。当然,我们现在还没有真正能在高频、多模态环境中稳定运行的超强模型,可能存在一些架构层面的限制。但我认为,用电子游戏来训练 AI,是一件非常值得做的事情。

 

主持人:Richard Richard Sutton 过去在扑克、游戏等领域做过大量工作;我也曾在他的实验室待过。早期的那些游戏环境,比后来 OpenAI 的 Dota 要原始得多。但你可以看到,这个想法一直贯穿其中。

 

Demis Hassabis 也长期在追逐类似的方向。所以你提到这一点很有意思——这其实是一个“老想法”。一段时间里,各大实验室都在比谁能打通更复杂的游戏、谁能更好地“秀”成果;后来在 ChatGPT 时代,这条路线似乎被边缘化了。但也许,它仍然有潜力。

 

Jerry:在科学史上,有一个非常常见的现象:好的想法,往往会反复出现。真正困难的,并不是提前预测“哪个想法是重要的”,而是判断“什么时候是对的时机”。即便在 OpenAI 早期,我们也常说:不能断言某种方法“行不通”,也许只是“现在还行不通”。

 

我七年前刚加入 OpenAI 时,强化学习在游戏上是一个非常火的方向。我们解决了很多游戏问题:StarCraft、Dota,而 AlphaGo 更是一个标志性时刻。但这些模型有一个非常明显的缺陷:它们几乎没有世界知识。它们并不理解我们的世界,只是从零开始,专门为某一个游戏训练。

 

这显然不是正确的路径。我们必须先教模型理解世界,理解更高层次的概念,而不仅仅是对像素做出反应。从零开始的强化学习,更像是“猴脑”或“蜥蜴脑”。而我们想要的,是具备更高层次抽象能力的模型。

 

在多年大规模预训练之后,我们现在已经能够学到一套非常强的“世界表征”。而接下来,我们应该利用它。这正是“推理模型”的核心魔法:在一个对世界有深刻理解的基础之上,叠加一层强化学习。未来就应该沿着这个方向前进。

 

主持人:那这不就和“世界模型”的方向一致了吗?Google 在做这个,Yann LeCun 似乎也在推动类似的想法。这在直觉上是合理的——这也是人类学习世界的方式。我们不是在一个黑箱里长大的,而是通过不断试探、感知世界来学习的。所以你对这个方向是非常看好的。

 

Jerry:这个方向毫无疑问是正确的。真正有挑战性的,是:如何把从世界建模中学到的表征,与强化学习真正结合起来。

 

强化学习教会模型“技能”——让它学会如何在世界中实现自己的目标。但在此之前,模型必须先理解世界,否则它连“如何设定目标”“如何达成目标”都无从谈起。

 

正因为如此,这两件事情必须结合起来。

 

如果有人能在一个高质量世界模型之上,真正把强化学习跑通,那将会是一个非常令人振奋的时刻。

 

主持人:就你现在这些正在吸引你的研究方向来说——你能不能稍微给我们一点提示?还是说,这样就直接暴露你下一家创业公司的方向了?

 

Jerry:我现在最兴奋的研究方向大概有两个。主要原因也很简单:我不觉得重复去做各大实验室正在做的那套事情有什么意义。现有体系里当然还有很多可以微调、可以改进的地方,但我认为有两个方向长期被低估了投入——或者至少没有得到足够的资源与重视。

 

第一,是某种意义上的“架构创新”。我觉得我们对 Transformer 架构有点过于“路径依赖”了。Transformer 确实很伟大,也被非常深入地研究过。人们一直试图在本地做一些小改动,让 Transformer 更强,但这件事并不容易。虽然也有一些相当成功的改进——比如稀疏化非常成功;还有各种让注意力计算更便宜的方法,也取得了不错的效果。

 

但 Transformer 会是机器学习的最终架构吗?显然不会。尽管 Transformer 的发明者做出了惊人的贡献,并且几乎定义了接下来十年的机器学习格局,但我相信一定还有更多可能。

 

一定存在一些训练大模型的方法——它们也许有点像 Transformer,也许完全不像。我觉得这是一个值得去解决的问题。甚至如果没有别人去做,我也愿意卷起袖子自己上,试着把它做出来。

 

第二个方向相对更“热门”,但我觉得几乎没有人把它做得真正好,那就是持续学习(continual learning):如何把测试时(test time)与训练时(train time)真正打通、真正融合起来。

 

人类显然就是这样运作的:我们没有一个“专门学习模式”和一个“专门回答问题模式”。学习与反应是连续发生的、时时刻刻都在进行。我觉得我们的模型也应该更接近这种状态。

 

这可能是我们在把模型真正称为 AGI 之前,最后几个关键能力要素之一。如果模型不能从它看到的数据中持续学习,它就仍然显得有点受限——甚至有点“笨”。

 

新技术炒作带来的恐惧感

 

主持人:说到 AGI,我们上次录播客时我提过:我已经不像一两年前那样经常听到“时间线”讨论了。那时候大家非常热衷谈什么时候会实现 AGI,甚至连“AGI”这个词最近都没那么火了。你自称对 AI 是“谨慎的乐观主义者”。那你觉得我们现在处在 AGI 时间线的哪个位置?

 

Jerry:我个人的看法是:我对时间线做了一点更新。

 

我一直认为,把强化学习规模化(scaling reinforcement learning)是通向 AGI 的必要部分。一年、或一年半之前,我非常坚定地认为:只要把 RL 规模化到我们的模型之上,那就是 AGI 了。但我确实不得不稍微修正这个判断。因为有些东西,只有当你真的到了“下一阶段”之后才看得见。

 

我们也必须承认:今天的模型在很多方面已经非常非常强了。就拿编码来说——“vibe coding”是我最喜欢的爱好之一,你现在可以非常快地写出很多东西。对一些十年前的人来说,如果你把今天这些能力展示给他们,他们可能已经会把它叫做 AGI 了。

 

所以我不觉得谈 AGI 还是一种多么离谱、多么疯狂的事。但至少按我的定义,现在的模型仍然不是 AGI——原因之一是:持续学习完全还没有以真正的方式被整合进模型体系里。

 

除此之外,还有很多问题。比如多模态感知:如果模型文本理解很强、编程也很强,但它看不见真实世界、不能看视频并且很好地理解视频,那我们能称它为 AGI 吗?

 

所以我认为,要真正达到那个“文明级里程碑”——构建 AGI——还有很多必要步骤要完成。

有一段时间我曾想:如果我们真的拼命推进,并且把所有关键问题都做得足够好,也许 2026 年至少能实现非常强的持续学习,以及真正通用的强化学习。

 

我觉得我的时间线仍在漂移。但与此同时,AI 领域移动得太快了:投资在年复一年累积增长,越来越多人进入 AI 领域,人才池变大,我们探索的想法数量也变多。

 

所以我不觉得“这个想法完全荒唐”。也许会早一点,也许会晚一点:可能是 2026,也可能 2027、2028、2029。我不觉得会比这更久太多。但确实还有很多工作要做。不过人们正在非常努力地做 AGI。

 

主持人:你刚才提到的内容——让我想起你之前做的那些事。除非我记错:在 Strawberry 还没成为一个“明确项目”之前,外界不是有过所谓的 Q-Star 传闻吗?而且在那次“内部风波”期间,这件事被反复提起:什么“他们知道 AGI 已经到了”,把所有人都吓到了。但听你现在这么说又挺有意思的。因为确实,这些东西做出来以后非常惊人,我们会一度情绪很亢奋;然后时间过去,大家就习惯了。现在回头看,Strawberry 确实很不可思议,也确实改变了整个领域。

 

但我第一次用它的时候,并没有到那种“把我吓死”的程度。你懂我意思吧?

 

Jerry:我懂你意思。

 

这其实涉及人类心理,以及我们如何与技术互动的方式。对我来说,把强化学习规模化带来的效果仍然非常显著,而且我觉得随着时间推移,我们会看到更多影响。

 

尤其是应用在编程上,这会以很多很多方式改变我们的生活。你今天做一个大规模编程项目,和一年前相比,完全是另一种游戏。我们会在很多领域看到这种变化带来的连锁影响。

 

但我也想说:两年前,当我和团队、以及 OpenAI 的很多人第一次看到 Q-Star 的一些早期迹象真的开始工作时——你坐在一个房间里,看到一种“有意义的新技术”正在出现。

 

如果你在那一刻不感到一点害怕、不感到一点担忧、不暂停一下想一想“这对世界意味着什么后果”,那我会觉得你没有在负责任地对待自己的工作。我认为每一个 AI 研究者都应该想这些问题:如果我正在做的东西是全新的、它展现出了以前从未出现过的新能力,那世界会发生什么?

 

很多研究者确实会这么想。当然,有时候也会把担忧推得太远。一方面,到目前为止,AI 还没有给世界带来什么“实质性的重大伤害”;但另一方面,一些事情(比如“某些很花哨的东西”)是不是算有问题——也许还可以争论。(笑)

 

但总体来说,我认为:当你向世界释放新技术时,感到担忧与谨慎,是一种非常好、也非常健康的反应。

 

我们正在经历一个变化的时代:大量新事物正在扩散到世界里,它们会产生影响——影响人们如何生活,如何看待自己、看待他人;影响人际关系、国际关系;影响 GDP、影响生产力。

 

有时候,一个人写下的一行代码,就可能引发连锁反应。经历了这一切,肩膀上的担子就相当重。

 

为什么大模型行业叙事变成了肥皂剧、真人秀

 

主持人: 我一直在想,尤其“政变”那段时间:你做出来的东西被媒体炒得很热,还被卷进各种戏剧化叙事。我不知道“滑稽”这个词对不对,很多人其实还没弄清它到底是什么,就已经围观成现象了。你当时是什么感觉?

 

Jerry:技术、概念、人类情绪、人类生活、人和人之间的协议与分歧——在现实里很难被切开来看。

 

我们确实活在一个世界里:AI 领域的重要参与者之间,有一个非常复杂的关系网络,很多层次叠在一起。要把它完全理清楚,可能得历史学家花很多年、甚至几十年,才能真正弄明白到底发生了什么、哪些因素起了关键作用。

 

老实说,到现在为止,我对那段时间发生的一切也只剩下非常零散的记忆。我们也在不断“补课”——每当有新的证词出现、每当新的文件被披露,就会冒出一些新事实。未来某个时刻,肯定会有人把所有内容都挖出来、完整还原。

 

但现实世界就是这么复杂。我也确实觉得,也许应该有一种更健康的方式来讨论技术:找到一个更合适的讨论场域,让分歧能够被更充分、更有建设性地展开。但我们生活在这样一个世界里:没有完美解,也不存在一种绝对正确的讨论机制。

 

主持人: 所以你觉得 X(推特)也不是理想媒介?

 

Jerry:我个人其实很喜欢在 X 上发内容,分享想法,和社区交流。但它也不是一个完全严肃的地方——很多时候都是半开玩笑、半认真。更核心的问题是:有人担心某件事太危险不该继续;有人觉得继续做是对的,因为它会增强能力;还有人认为方向本身就不对,我们应该做别的研究。

 

在技术进步与研究的世界里,这些事情很多都是未知的。没人知道未来。我们只有想法、信念和梦想。

 

我们必须和这种不确定性共处,也必须学会在很多问题上“求同存异”——很多时候只能接受:大家各自下注、各自承担后果。

 

主持人: 说到当时媒体对 Q-Star 的关注——那阵子简直是炒作过度,几乎天天都在加码,每个月都愈演愈烈。我看着会觉得:这是不是太“嗨”了、太多 hype 了?而且我们俩也都在推特上,多少也参与了这股热度。你怎么看:这种 hype 该不该降一降?我个人确实觉得,强度可以往回拧一点。

 

Jerry:我了解。反过来想,如果七年前有人告诉你:OpenAI 会成为万亿美元级别的公司;会建造规模堪比史上最大基础设施项目的数据中心;会拥有世界上最大的 Web 产品之一;全世界会无时无刻都在谈 AI——你一定会觉得那个人疯了,会说“这就是炒作”。

 

可我真心觉得:这波 hype 在很多层面其实是有事实支撑的。人工智能在很多方面存在过度反应和反应不足的情况(有时候被高估,有时候也会低估),但 AI 的重要性毋庸置疑——它值得被讨论。我不觉得现在还有谁会认为 AI 是个“不重要、不值得讨论”的话题。几年前确实还有人这么想,但现在已经很清楚:AI 很可能是当今世界最重要的议题之一,值得持续讨论与思考。至于进展会有多快、路径到底对不对、安全还是危险——这些当然都可以争论。但 AI 会长期存在,而且只会越来越强。

 

主持人: 完全同意。但如果先把技术放一边——我甚至报道过“挖人狂潮”。我越来越觉得,这个行业的叙事变得像肥皂剧、像真人秀,很多时候讨论的不是硬核科学,而是剧情、阵营和情绪。你会不会也觉得我们有点“跑偏”了?

 

Jerry:但到底是谁在制造这场肥皂剧?这才是问题。

 

主持人: 嗯,说真的,这一轮比我经历过的任何技术周期都更“肥皂剧”。可能是赌注太高、钱太多,再加上挖人和各种戏剧化叙事,整个旧金山像活在一套自己的现实里。

 

我有时都替你们累——七八年一直在这种高压竞速里,你现在想停下来喘口气,我完全能理解。

 

Jerry:的确很消耗。

 

但我可以跟你分享一句对我很有帮助的话:有一次,一个比我更有经验、更擅长应对压力的人跟我说——Jerry,这就像做俯卧撑。每经历一次艰难、紧张的时刻,你就更擅长应对压力一点。

 

老实说,这七年让我练出了很强的心理和情绪韧性。我真的学会了在大量噪音、很多胡扯面前,把自己抽离出来,尽量保持稳定、保持定力。

 

不管外部发生什么——公司看起来要塌了也好,研究者流动也好,项目被重新分配也好——总会有事情在推进,总会有新的变化。

 

我听过有人把“挖人”这件事类比成体育队伍的转会。体育之所以还能运转,是因为有角色、有规则。我差点想说:可惜在加州的法律框架下,这类规则基本不可能出现。但我确实觉得,如果能有一些规则,可能会更健康。

 

因为确实存在这样一种现象:有些人换工作的频率,比他们真正产出成果的频率还高。

 

主持人:AI 薪资帽?(笑)

 

Jerry:(笑)确实有人这样。但也仍然有很多人在认真做事,推动前沿继续往前走。不过,AI 是一门大生意——这点无论如何都没法否认。

 

主持人:我还跟同事说,我们真该做一张表,把那些在每一家前沿实验室都待过的人列出来,标注他们在每家待了多久。(笑)肯定至少有一小撮人,把整个湾区的“前沿实验室巡回赛”跑完了。说真的,这太疯狂了。

 

主持人:2018 年前后,OpenAI 还只有三十来个人。有一件事当时让我印象特别深:最早那批成员里,波兰人的比例异常高,而且很多都是非常典型的“数学脑”。

 

有些人彼此从小就认识,有些并不认识。我一直很好奇:这到底反映的是一种教育背景的集中效应——比如偏重数学训练的体系,确实更容易培养出这类人?还是说,其实只是早期有几个人先来了,后来通过学术和个人网络,慢慢把更多同类的人吸引到了 OpenAI?

 

Jerry:先澄清一点:我在加入 OpenAI 之前,完全不认识任何 OpenAI 的人。我是非常随机、机缘巧合地进来的。

 

但你说得没错,在 OpenAI 非常早期,波兰人的占比确实偏高。不过我并不觉得这种情况“经得起时间检验”。现在公司里,波兰人的比例仍然略高于平均水平,但考虑到 OpenAI 的规模已经增长了大概一百倍,这种早期的“高浓度”并没有按比例延续。

 

我觉得这里面确实有一些值得讨论的因素,但我并没有足够多对其他教育体系的亲身体验,所以不敢轻易下结论,说波兰的教育体系“天然更强”。我能确定的是:我们确实有很多非常聪明、数学直觉很强的人。

 

但如果说有一件我特别认可、也特别喜欢的事情,那就是波兰人对“努力工作”这件事的重视从我个人经历来看,这种特质在很多地方正在变得越来越少见——尤其是在一些生活条件已经非常优渥的社会里,人们对工作的强调确实在下降。

 

Google 的“回归”还是 OpenAI 的“失误”?

 

主持人:你怎么看 Google 最近这一轮的“回归”?你是觉得意外、惊讶,还是说其实早就料到了?看起来他们这段时间做对了不少事情。你们之前是不是一直都觉得:Google 迟早会把局面理顺?

 

Jerry:我个人其实不太愿意把这件事称为“Google 的回归”。它应该被视为OpenAI 的失误

 

OpenAI 确实在很多关键点上做对了事情,但也不可否认,在某些阶段出现过判断或执行上的失误,导致整体推进速度比它本可以达到的状态要慢。

 

在一种理想的执行情境里,如果你是一家已经取得领先优势的公司,而且拥有 OpenAI 那样的技术、人才和资源条件,那么你理论上是可以持续保持领先的。但如果在这个过程中,你做出了一些错误决策,而你的竞争对手做出了更多正确决策——而 Google 在最近一段时间里,确实做对了不少事情——那对方追上来,其实并不奇怪。

 

你也必须承认:Google 在硬件、算力和人才储备上,本身就有非常巨大的优势。事实上,在 OpenAI 刚起步的那些年里,Google 在几乎所有机器学习方向上,都是明显的行业第一。

 

OpenAI 能真正跑出来,靠的主要不是资源优势,而是研究方向上的强烈信念:对某一条具体技术路线、某一个具体长期赌注的坚定投入。

 

但让整个行业、让外部世界真正意识到“这是一个正确的赌注”,花的时间比很多人想象的要长得多。哪怕 GPT-2 训练完成了,GPT-3 训练完成了,后来 GPT-3.5 也出来了——在那个阶段,其实并没有太多人真正重视这件事。

 

你去 NeurIPS 这样的会议和研究者聊天,大家会觉得 OpenAI 很酷,但很多其他实验室的态度是:“嗯,我们迟早也能复现。”语言模型确实挺有意思,但在他们看来,也就止步于“有意思”。

真正的转折点,是 OpenAI 开始通过 ChatGPT 赚到钱。那一刻,其他公司才突然意识到:“好,这不只是研究展示,而是一个已经被验证的商业方向,我们必须认真投入了。”

 

这里其实存在一个很关键、但常常被忽略的时间窗口:从你开始构建一项技术,到它真正被商业化,中间往往隔着一段很长的时间。

 

这段时间,足够让其他公司观察、犹豫、评估风险,然后再决定是否下场。而在这个阶段,Google 显然开始非常认真地对待大语言模型这条路线。再叠加 OpenAI 在执行层面的一些失误,最终导致今天的结果:在模型能力和训练成果上,双方已经变得非常接近。

 

所以,从 Google 的角度来看,这确实是一件值得祝贺的事情。能够把团队重新拉回状态、把执行节奏提起来,背后一定做了大量艰难而高质量的工作。

 

主持人:那你说的这些“失误”,具体指的是什么?我在努力回忆。我记得当年你们推出 Search 的时候,外界一度在说“Google 完了”,但我当时就觉得未必如此。所以你提到的失误,更多是指哪些方面?

 

Jerry:我不太想展开讨论具体的内部决策细节,哪些判断是对的,哪些是错的。

 

但我想强调的核心其实很简单:如果一家领先公司执行得足够好,那么在大多数情况下,它是可以把领先优势持续下去的。

 

而在现实中,很明显有一些事情的推进速度,比它本可以达到的节奏要慢

 

主持人:你的意思是技术层面的失误吗?因为从外界看,也确实发生了不少公司层面的戏剧性的狗血剧情,这些在某些阶段显然拖慢了整体节奏。

 

我跟 OpenAI 的一些人聊过,关于公司要如何继续向前,确实出现过一些阶段性的混乱,比如关键人物离开等等。所以我原本以为你指的是纯技术问题,但听起来你的意思更复杂一些。

 

Jerry:这些事情有时候确实是相互关联的。

 

从技术角度来说,我并不认为“有人离开”这件事本身就一定构成问题。在任何一家公司,人来人往其实都很正常,也应该是一种常态。

 

但如果离开变成了某种更深层问题的症状——比如有人觉得:“公司在一些关键事情上做错了决定,我不再相信这家公司了,所以选择离开”——那这往往意味着,背后确实存在一些需要被正视的问题。

 

所以回到我最初的判断:确实有一些事情,推进得比它本可以做到的速度要慢。这并不否认 OpenAI 的成功,但也不能忽视这些失误带来的影响。

 

主持人:如果像你说的那样,各大实验室基本都在走同一条路,那 Meta 显然也是其中之一。他们在 AI 上投入巨大,也在从各家实验室挖人。我并不完全清楚 Meta 内部的具体策略,但从外部看,他们似乎并没有选择一条完全不同的路线,而更像是在追赶同一条主流路线。

 

这听起来像一个根本性的问题:如果你既起步更晚,又在做和别人几乎一样的事情,这真的可能有好结果吗?还是说,你觉得 Meta 实际上走的是一条不一样的路?

 

Jerry:我并不完全了解他们的内部策略,所以只能谈一些外部观察。

 

我的感觉是,他们已经意识到一件非常关键的事情:“规模化”在当前的 AI 世界里是不可回避的。如果你放眼现在的 AI 行业,基本可以抽象出两种不同的战略选择。

 

第一种是:我要做一种和其他人都不一样的模型——它在某些方面会明显更强,我希望把这种差异化模型带给世界。第二种是:我也希望拥有和别人一样强、同一量级的模型,但我的重点不在模型本身,而在于我如何使用这些模型、以及我基于它们构建什么样的产品。

 

从我对 Meta 一贯路线的理解来看,这家公司长期以来关注的核心,一直是连接人与人、构建关系、打造大规模的用户体验型产品。无论是社交网络、沉浸式体验,还是他们设想中的元宇宙,本质上都是围绕“体验”和“连接”展开的。

 

所以我这里是基于外部推测,但我认为 Meta 的思路,很可能是:使用我们已经熟悉、已经理解得比较透彻的 AI 技术(比如 Transformer),来构建全新的产品体验,而不是在模型层面追求完全不同的路线。

 

从一家极其成功、极其赚钱、而且已经拥有全球最大社交网络的公司视角来看,这其实完全可能是一种非常合理、甚至非常聪明的策略。

 

主持人:我们刚才聊了 Google,也聊了 Meta。但我想换一个角度问:在你们内部讨论、或者评估其他实验室的时候,有没有哪一家,让你们真的觉得“被震撼到了”?哪一家是你个人印象最深的?

 

Jerry:我得说,这是一个相对比较新的变化。

 

在过去一年里,我对 Anthropic 的印象提升得非常明显。我本人其实从来不是那种特别在意模型“性格”的人。虽然我也听说过 Claude 的“性格”很好,可能确实如此,但这并不是我关注的重点。

 

真正让我感到震撼的是几件事:他们在代码模型、编码 Agent上的成果;以及他们围绕“开发者”建立起来的整体产品和品牌——还有最关键的一点:他们拥有一大群真正满意、甚至很开心的开发者用户。这是一项非常、非常了不起的成就。

 

更重要的是:他们起步比 OpenAI 更晚;算力条件更受限制;团队规模也更小。在这样的前提下,他们依然做到了高度聚焦,并且执行得非常好。

 

他们在获取高质量算力方面遇到过不少现实困难,但即便如此,仍然做出了非常出色的产品。

 

这些产品正在明显改变人们开发软件的方式;而据我了解,也已经在实质性地提升企业生产力

所以我真心觉得:他们做得非常好,值得祝贺。

 

主持人:他们确实看起来正处在一个“高光时刻”。我身边几乎所有人都在聊 Claude Code。我最近还采访了一个人——他在用 Claude“养活一盆植物”。(笑)可能是第一种被 AI 模型持续“照料”的生命体。我真的不知道他们是怎么做出一个几乎“人人都喜欢”的工具的。从 ChatGPT 到 Claude Code,这种程度的“普遍好评”,其实非常少见。

 

而且之前还有一件事:当大家被“切断使用”时,开发者的反应极其强烈——某种程度上,那种崩溃感甚至超过了 OpenAI 出事时的反应。连 Elon 都公开承认了这一点,说:“是的,我们用得太多了,这是个警醒,我们得把自己的东西做得更好。”所以我在想:这也许不是一个完全普遍的现象,但看起来,很多实验室其实已经在不同程度上依赖这套工具了。也希望这次“切断”能倒逼出更多、更好的同类产品。来一百万个 Claude Code。(笑)

 

Jerry:在 OpenAI,我们其实也开发 Codex 有一段时间了——它算是我们自己的“Claude Code 版本”。

 

我个人觉得 Codex 也挺不错的。有点好笑的是:我自己其实并没有怎么用过 Claude Code。毕竟当时我还在 OpenAI 工作,也没太多机会去亲自用。

 

我也是想说得客气一点。所以我确实没法给出太多一手对比体验。但至少从推特上的反馈来看,Claude 确实被全球开发者非常、非常喜欢。

 

做点跟 OpenAI 不同的事情

 

主持人:结合我们前面的讨论,我对你的理解是:你一直是从一种很纯粹的智识和科学兴趣出发的人。你在 reasoning 上的很多工作,本质上都指向一个长期目标——你想创造“AI 科学家”。

所以当我看到你说要离开 OpenAI 时,我忍不住在想:你是不是已经不太想继续待在这场“基础模型竞赛”里了?听你说话的感觉,更像是想换一条路走。我甚至会想象,你会不会干脆跑去做生物科技之类的方向,用完全不同的方式继续追这件事。

 

Jerry:如果我能克隆自己、同时做很多件不同的事情,我真的会非常愿意。但长话短说:有一天我突然意识到——我对自己过去的人生很满意,也为自己做过的事情感到骄傲;但我现在真正想做的,是押一两个、甚至两三个非常非常大的研究赌注,然后看看能不能把它们做成。

 

我一直觉得,人应该更愿意冒风险。至少从我的观察来看,我可能算是那种风险承受能力比较高的人——愿意去追一些看起来很野、很不确定、甚至有点离谱的想法。所以我觉得,我应该把这种特质用在更有意义的事情上。

 

主持人:那你脑子里的这些想法,如果真要落地,大概需要多久?是一年左右的项目,还是说你说的“风险”,意味着你愿意花四五年时间去追一件事,而它最后甚至可能还不如现有方案?

 

Jerry:我肯定愿意投入很多时间。但与此同时,我也非常坚定地认为:研究应该尽可能快地推进。

 

做得慢,本身并不值得骄傲。从“把研究执行好”这个角度看,我希望它能更快。

 

不过,真正关键的,其实是我之前反复提到的两个词:聚焦(focus)和信念(conviction)。

如果你同时做很多事情,几乎注定每件事都只能做一小部分。你的注意力会被摊薄,资源也会被摊薄。研究实验室经常会说:算力不够,算力限制拖慢了研究。这当然是真的,而且是重要因素之一。但很多时候,更核心的问题其实是:不够聚焦。一天之内,一个人的注意力只能真正放在有限的几件事情上。

 

我很喜欢对和我共事过的研究者说一句话:少跑一点实验,把每一个实验想得更深。因为有时候,你花几个小时什么实验都不跑,只是盯着结果、反复分析数据——反而更容易带来真正的突破,而不是不停地“多跑”。

 

所以像 OpenAI 这样的公司,算力其实非常多。但如果算力被分散到太多项目上,效果反而会被稀释。如果把算力集中到更少、更聚焦的项目上,算力往往是够用的。

 

但这又回到了风险和信念的问题。如果你同时做三个项目,只要有一个成功,其实就已经算不错了;另外两个被砍掉,也完全可以接受。如果三个都成功,那当然更好。但如果你只做一个项目,它往往会推进得更快——因为你足够聚焦、也足够坚定。当然,代价是:如果它失败了,你会非常惨;但如果它成功了,你可能会拥有世界上最好的模型。

 

而对 OpenAI 这样规模的公司来说,现在确实很难做到一件事:把整个公司押注在一个全新的、完全不同的方向上,同时不在乎下个季度 Gemini 会不会更强。这真的非常难。它需要一种非常特殊类型的人,才愿意这么做。

 

我觉得,这就是问题的核心。

 

主持人:我明白,也知道你不能聊什么“秘方”。但我还是忍不住好奇:从外部看,我会直觉觉得,OpenAI 接下来押注的方向,应该是那些能赚大钱的方向。比如“Chat 里要加广告”的消息,几乎把整个互联网点燃了。哪怕很笼统地说,你觉得我们能判断他们接下来大概会把资源投向哪里吗?

 

Jerry:这个问题上,我确实不应该、也不能谈 OpenAI 的任何具体计划。

 

主持人:合理。(笑)那我换个问法:你觉得这些做模型的公司里,有没有谁会选择——也许“勇气”这个词不太准确——不把广告塞进模型里?还是说,从商业角度看,这其实是不可避免的?

 

Jerry:这属于商业策略。我做的是训练模型。(笑)

 

主持人:好,抱歉,我不是想逼你。(笑)只是聊完整个对话之后,我自己还在试图想明白一件事。一方面,你说你想走一些新的方向,去追一些和主流不同的路径;但另一方面,我们也反复提到:你想做的这些事,确实需要非常强的“马力”。所以我有点难想象:这是 Jerry 一个人、在外面慢慢测试新想法?还是说,就你真正想做的那些研究,你必须身处一个拥有足够资源的地方,事情才有可能发生?

 

Jerry:这正是我现在最想搞清楚的第一个问题。任何 AI 研究,最终都离不开 GPU、离不开算力(FLOPs)。我现在需要认真想清楚的是:到底什么样的方式,才是做这些研究的最佳路径。

我确实正在努力理清楚:我很清楚自己想做哪些研究,但我还在寻找答案——到底怎样去做,才算是一个“好的方式”。

 

OpenAI 的压力甚至超过创业?

 

主持人:我刚才问的那些,基本就是我最想问的了。我觉得我能跟你聊上好几个小时。

我不想继续追问“你接下来做什么”,因为你看起来太开心了,整个人容光焕发。

 

Jerry:是的,我听好几个人都跟我说:你现在比以前快乐多了。

 

主持人:我不想把你拖回那种压力里,比如问你接下来要做什么?

 

Jerry:我不知道。而且我也听一位正在经营自己公司的人说过一句让我很震撼的话:在 OpenAI 工作,比自己创业还更有压力。从很多方面看,OpenAI 的确是一个压力极大的地方。

 

主持人:还有一个小问题,除了“大家都在追同一套东西”之外,你觉得这个领域里还有没有什么“巨大的错误”?

 

Jerry:我不觉得存在那种特别“巨大的错误”。这个行业里的人,其实都很难犯那种一眼就能看出来的致命错误。

 

真正的问题更像是:你愿意花多少精力去探索“其他可能性”?又有多少精力,继续沿着你已经走得很顺的那条路往前推。

 

主持人:那我换个问法,可能更准确一点。有没有一些你觉得被明显低估、被忽视的研究方向?它们本该得到更多关注,但现在没有。

 

Jerry:老实说,这样的想法非常多。但这些想法最缺的,往往不是“它们不存在”,而是:缺关注、缺算力、缺资源。

 

这里还有一个比较有意思的现象。很多研究者——包括学术界——很擅长、也很喜欢做“从 0 到 1”的事情:提出一个新想法,证明它“有点能跑”,然后就发表出来。而我觉得,我自己、以及我在 OpenAI 共事过的团队,真正特别擅长的一件事,是“从 1 到 100”:拿一些已经有初步证据的新想法——它们很不同,也不成熟——然后想办法把它们在大规模上做得可靠、稳定、可落地。

 

要训练前沿模型,把一种技术真正嵌进系统里,会涉及大量非常具体、非常琐碎、但又极其关键的工程和研究工作。如果执行不好,可能要花上好几年;但如果你有一套好的方法和节奏,可能几个月就能完成。这也是我未来很想继续多做的一类事情。

 

AI 研究是“明星驱动”的吗?

主持人:我们之前聊到 OpenAI 的人员流动时,你说公司是能扛住这些变化的。但从外部看,这个领域又很像是“明星驱动”的:比如 Alec Radford 那样的突破级贡献——你知道我指的是什么。

 

从行业行为上看,很多实验室似乎也在按“明星逻辑”行事。当然,这背后有大量集体协作,但确实也有一些时刻,看起来重大突破被“绑定”在少数几个人身上。但你刚才的反应,似乎并不完全认同这是一个“明星驱动”的行业。

 

Jerry:我觉得这是个很复杂的话题,但有两个看法可以同时成立。

 

一方面,确实存在这样的情况:在某些阶段,尤其是在 OpenAI,一小撮人能产生远超常人的影响力,推动真正突破性的成果,然后这些成果扩散到整个行业。我亲眼看到这种事情反复发生。

但另一方面,当我看到人们在不同公司之间频繁流动时,我很少看到这种流动本身,对公司产生“决定性影响”。

 

我更相信的是:公司的结构、文化和运作方式,才是真正的研究引擎,而不完全取决于某一个研究者是否在这里。

 

而且我也观察到一个现象:那些频繁跳槽的研究者,反而往往没那么高产——即便他们过去做过很好的工作。他们需要重新磨合,会被各种事情分散注意力,短期内也未必有新的突破性想法。

经验当然重要,但更重要的是:营造一种环境——强调个人责任、鼓励探索、并且真正为“做出伟大事情”提供条件。

 

在一个好的结构、好的文化、好的协作方式下,你完全可以建立很多团队,持续做出伟大的成果。

这件事并不依赖某一个“唯一的人”。归根结底,我认为:研究结构、研究文化和协作方式,远比“某个特定的人是否在团队里”更重要。

 

主持人:很有道理,很有道理。

 

主持人:最后一个问题:你冥想吗?

 

Jerry:最近在试,但我觉得我冥想得不太行。

 

主持人:那祝你下一段旅程,能找到属于自己的“黑暗静修”。Jerry,谢谢你。

 

Jerry:谢谢,很高兴和你们聊天。

 

参考链接:

https://www.youtube.com/watch?v=VaCq4u5c78U

大家好,我是良许。

在嵌入式开发中,GPIO(General Purpose Input/Output,通用输入输出)是我们接触最多的外设之一。

无论是点亮一个LED灯,还是读取按键状态,亦或是与其他芯片进行通信,都离不开GPIO的配置。

而GPIO的工作模式直接决定了引脚的电气特性和功能表现。

今天,我就来详细聊聊STM32中GPIO的八种工作模式,帮助大家彻底理解它们的区别和应用场景。

1. GPIO工作模式概述

STM32的GPIO具有八种工作模式,可以分为四种输入模式和四种输出模式。

这些模式的设计非常灵活,能够满足各种应用场景的需求。

四种输入模式:
1.1 输入浮空模式(GPIO_MODE_INPUT)
1.2 输入上拉模式(GPIO_MODE_INPUT,配合GPIO_PULLUP)
1.3 输入下拉模式(GPIO_MODE_INPUT,配合GPIO_PULLDOWN)
1.4 模拟输入模式(GPIO_MODE_ANALOG)

四种输出模式:
1.5 开漏输出模式(GPIO_MODE_OUTPUT_OD)
1.6 开漏复用输出模式(GPIO_MODE_AF_OD)
1.7 推挽输出模式(GPIO_MODE_OUTPUT_PP)
1.8 推挽复用输出模式(GPIO_MODE_AF_PP)

下面我将逐一详细介绍这八种模式的工作原理、特点以及典型应用场景。

2. 四种输入模式详解

2.1 输入浮空模式

输入浮空模式是GPIO最基本的输入模式。

在这种模式下,引脚既不接上拉电阻,也不接下拉电阻,完全处于"浮空"状态。

此时引脚的电平完全由外部电路决定,如果外部没有明确的高低电平信号,引脚的状态是不确定的,可能会受到外部干扰而产生随机的高低电平跳变。

特点:

  • 引脚内部不接任何电阻
  • 输入阻抗非常高
  • 功耗最低
  • 容易受到外部干扰

应用场景:
输入浮空模式通常用于外部电路已经提供了明确的上拉或下拉电阻的场合。

比如,当外部按键电路已经有上拉电阻时,MCU的GPIO就可以配置为浮空输入,避免内部上拉电阻与外部电阻形成分压。

代码示例:

GPIO_InitTypeDef GPIO_InitStruct = {0};

// 使能GPIOA时钟
__HAL_RCC_GPIOA_CLK_ENABLE();

// 配置PA0为浮空输入
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

// 读取引脚状态
GPIO_PinState pinState = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0);

2.2 输入上拉模式

输入上拉模式是在浮空输入的基础上,内部连接了一个上拉电阻(通常为30~50kΩ)到VDD。

这样,当外部没有信号输入时,引脚会被上拉电阻拉到高电平状态,避免了浮空状态下的不确定性。

特点:

  • 内部连接上拉电阻到VDD
  • 默认状态为高电平
  • 可以有效防止引脚悬空
  • 适合低电平有效的输入信号

应用场景:
输入上拉模式最常用于按键检测。

当按键未按下时,引脚保持高电平;按键按下后,引脚被拉到地,变为低电平。

这种方式简单可靠,是按键检测的标准配置。

代码示例:

GPIO_InitTypeDef GPIO_InitStruct = {0};

__HAL_RCC_GPIOA_CLK_ENABLE();

// 配置PA1为上拉输入,用于按键检测
GPIO_InitStruct.Pin = GPIO_PIN_1;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

// 检测按键是否按下(低电平有效)
if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1) == GPIO_PIN_RESET) {
    // 按键被按下
    // 执行相应操作
}

2.3 输入下拉模式

输入下拉模式与上拉模式相反,内部连接了一个下拉电阻(同样是30~50kΩ)到GND。

当外部没有信号输入时,引脚会被下拉电阻拉到低电平状态。

特点:

  • 内部连接下拉电阻到GND
  • 默认状态为低电平
  • 防止引脚悬空
  • 适合高电平有效的输入信号

应用场景:
输入下拉模式适用于高电平有效的信号检测。

比如某些传感器输出高电平表示有效信号,此时可以将GPIO配置为下拉输入,确保在没有信号时引脚保持低电平。

代码示例:

GPIO_InitTypeDef GPIO_InitStruct = {0};

__HAL_RCC_GPIOB_CLK_ENABLE();

// 配置PB0为下拉输入
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

// 检测高电平有效信号
if (HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0) == GPIO_PIN_SET) {
    // 检测到高电平信号
    // 执行相应操作
}

2.4 模拟输入模式

模拟输入模式是专门为ADC(模数转换器)设计的。

在这种模式下,GPIO引脚直接连接到ADC的输入通道,不经过施密特触发器,可以输入连续变化的模拟信号。

特点:

  • 关闭数字输入功能
  • 关闭上拉下拉电阻
  • 信号直接进入ADC
  • 功耗最低

应用场景:
模拟输入模式专门用于ADC采集模拟信号,比如读取温度传感器、光敏电阻、电位器等模拟量。

在这种模式下,GPIO不再作为数字IO使用,而是作为ADC的模拟输入通道。

代码示例:

GPIO_InitTypeDef GPIO_InitStruct = {0};
ADC_HandleTypeDef hadc1;

__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_ADC1_CLK_ENABLE();

// 配置PA4为模拟输入,用于ADC
GPIO_InitStruct.Pin = GPIO_PIN_4;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

// ADC配置(简化示例)
hadc1.Instance = ADC1;
hadc1.Init.Resolution = ADC_RESOLUTION_12B;
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
HAL_ADC_Init(&hadc1);

// 读取ADC值
HAL_ADC_Start(&hadc1);
HAL_ADC_PollForConversion(&hadc1, 100);
uint32_t adcValue = HAL_ADC_GetValue(&hadc1);

3. 四种输出模式详解

3.1 推挽输出模式

推挽输出(Push-Pull)是最常用的输出模式。

在这种模式下,输出级由两个MOS管组成,一个连接VDD(P-MOS),一个连接GND(N-MOS)。

输出高电平时,P-MOS导通,引脚连接到VDD;输出低电平时,N-MOS导通,引脚连接到GND。

这种结构可以提供较强的驱动能力。

特点:

  • 可以输出高电平和低电平
  • 驱动能力强,可以直接驱动LED等负载
  • 输出电平明确,不会出现悬空状态
  • 不能实现线与功能

应用场景:
推挽输出是GPIO最常用的输出模式,适用于驱动LED、控制继电器、输出PWM信号等场景。

只要不需要多个设备共享同一条信号线,推挽输出都是首选。

代码示例:

GPIO_InitTypeDef GPIO_InitStruct = {0};

__HAL_RCC_GPIOC_CLK_ENABLE();

// 配置PC13为推挽输出,用于控制LED
GPIO_InitStruct.Pin = GPIO_PIN_13;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

// 点亮LED(假设低电平点亮)
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);

// 延时
HAL_Delay(1000);

// 熄灭LED
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);

3.2 开漏输出模式

开漏输出(Open-Drain)模式下,输出级只有一个N-MOS管连接到GND。

输出低电平时,N-MOS导通,引脚接地;输出高电平时,N-MOS关断,引脚呈现高阻态。

要输出高电平,必须外接上拉电阻。

特点:

  • 只能主动输出低电平
  • 输出高电平需要外部上拉电阻
  • 可以实现电平转换
  • 支持线与功能(多个设备共享一条线)

应用场景:
开漏输出最典型的应用是I2C总线。

I2C是多主机总线,多个设备共享SDA和SCL两条线,必须使用开漏输出配合外部上拉电阻。

此外,开漏输出还可以用于电平转换,比如MCU是3.3V供电,但需要输出5V信号时,可以使用开漏输出配合5V上拉电阻。

代码示例:

GPIO_InitTypeDef GPIO_InitStruct = {0};

__HAL_RCC_GPIOB_CLK_ENABLE();

// 配置PB6和PB7为开漏输出,用于I2C(SCL和SDA)
GPIO_InitStruct.Pin = GPIO_PIN_6 | GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
GPIO_InitStruct.Pull = GPIO_PULLUP;  // 如果外部没有上拉,可以使能内部上拉
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

// 模拟I2C起始信号
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_RESET);  // SDA拉低
HAL_Delay(1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_RESET);  // SCL拉低

3.3 推挽复用输出模式

推挽复用输出模式是推挽输出的复用版本。

在这种模式下,GPIO的控制权交给片上外设(如SPI、USART等),由外设自动控制引脚的输出。

特点:

  • 由片上外设控制输出
  • 具有推挽输出的所有特性
  • 用户不能直接控制引脚电平
  • 适合高速通信

应用场景:
推挽复用输出主要用于SPI、USART等需要高速、强驱动能力的通信接口。

比如SPI的MOSI、SCK引脚,USART的TX引脚等。

代码示例:

GPIO_InitTypeDef GPIO_InitStruct = {0};

__HAL_RCC_GPIOA_CLK_ENABLE();

// 配置PA9为推挽复用输出,用于USART1_TX
GPIO_InitStruct.Pin = GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF7_USART1;  // 复用为USART1
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

// 后续由USART外设控制该引脚

3.4 开漏复用输出模式

开漏复用输出模式是开漏输出的复用版本。

同样,GPIO的控制权交给片上外设,但输出特性为开漏。

特点:

  • 由片上外设控制输出
  • 具有开漏输出的所有特性
  • 需要外部上拉电阻
  • 支持多主机通信

应用场景:
开漏复用输出主要用于I2C、SMBUS等需要多主机通信的总线。

当使用STM32的硬件I2C外设时,SCL和SDA引脚必须配置为开漏复用输出。

代码示例:

GPIO_InitTypeDef GPIO_InitStruct = {0};

__HAL_RCC_GPIOB_CLK_ENABLE();

// 配置PB8和PB9为开漏复用输出,用于I2C1(SCL和SDA)
GPIO_InitStruct.Pin = GPIO_PIN_8 | GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
GPIO_InitStruct.Pull = GPIO_PULLUP;  // 使能内部上拉(外部也应有上拉电阻)
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF4_I2C1;  // 复用为I2C1
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

// 后续由I2C外设控制该引脚

4. 工作模式选择建议

在实际开发中,如何选择合适的GPIO工作模式呢?这里给出一些实用建议:

4.1 输入模式选择:

  • 如果外部电路已有上拉/下拉电阻,选择浮空输入
  • 如果是按键检测且按键接地,选择上拉输入
  • 如果是按键检测且按键接VDD,选择下拉输入
  • 如果是ADC采集模拟信号,必须选择模拟输入

4.2 输出模式选择:

  • 一般的LED驱动、信号输出,选择推挽输出
  • I2C、单总线等多设备共享的总线,选择开漏输出
  • 需要电平转换时,选择开漏输出配合外部上拉
  • 使用片上外设(如SPI、USART)时,根据外设要求选择复用模式

4.3 速度等级选择:
STM32的GPIO还可以配置输出速度(Low、Medium、High、Very High),这会影响引脚的翻转速度和功耗。一般原则是:

  • 低速信号(如LED控制)选择Low Speed,降低EMI和功耗
  • 中速信号(如普通通信)选择Medium或High Speed
  • 高速信号(如高速SPI、SDIO)选择Very High Speed

5. 常见问题与注意事项

5.1 为什么开漏输出需要上拉电阻?
因为开漏输出只能主动拉低,不能主动拉高。

没有上拉电阻时,输出高电平时引脚处于高阻态,无法驱动负载。

上拉电阻的作用是在N-MOS关断时将引脚拉到高电平。

5.2 推挽输出可以接上拉电阻吗?
可以,但通常没有必要。

推挽输出本身就能输出强高电平和强低电平,额外的上拉电阻只会增加功耗。

只有在需要提高驱动能力或进行电平转换时才需要。

5.3 多个GPIO可以连接在一起吗?
如果都是推挽输出,绝对不能连接在一起!当一个输出高电平、另一个输出低电平时,会形成短路,可能烧毁芯片。

如果需要多个GPIO共享一条线,必须使用开漏输出。

5.4 复用功能如何配置?
使用HAL库时,需要同时配置GPIO模式和复用功能。

不同的引脚支持的复用功能不同,需要查阅芯片数据手册中的引脚复用表。

通过以上详细的介绍,相信大家对STM32的GPIO八种工作模式有了深入的理解。

在实际项目中,正确选择GPIO的工作模式是保证系统稳定运行的基础。

希望这篇文章能帮助大家在嵌入式开发的道路上少走弯路,写出更加可靠的代码。

更多编程学习资源

最近想买衣服,taobao 搜索了‘帽衫’,居然是 TIM 代言的什么衣服品牌, 打开微博开平广告也是他, 在 B 站刷视频从来没有刷过相关内容的也给我推他, 他最近怎么这么活跃,搞得我很烦他现在

作为一个电子爱好者,经常在淘宝买一些电子元件、模块,有时候想买一个东西的时候会看看这个店铺里的其他商品,有没有我需要或感兴趣的,如果有的话就顺便买一些。最近两三年来一直都是这个使用习惯,25 年 12 月份被第一次被封,被封结果就是访问任何商品详情、店铺都是访问被拒绝,网页版也是。联系了客户端官方客服第二天解封,过了 20 天左右第二次被封,再次联系客服第二天解封,前两天又被封了,好家伙,这次连官方客服也联系不了了,联系官方客服也是访问被拒绝,打了客服电话竟然说我账号正常,网上查了下也有好多类似的情况

img
img
img

网站部署SSL证书的重要作用如下:

  1.SSL证书可加密敏感信息使其不被泄露

  使用SSL证书的主要原因是为了保障通过Internet发送的敏感信息能够加密,防止重要数据不被泄露。这很重要,因为您在Internet上进行计算机与服务器之间的信息传递,如果未使用SSL证书加密,则您传递的任何信息都有可能被第三方获取,包括您的信用卡号,用户名和密码以及其他敏感信息。使用SSL证书后,可以保障所有人都无法读取信息,这可以保护信息数据免受黑客或者用心不良的人的侵害。

  2.SSL证书可提供身份验证,防止钓鱼网站

  除信息加密外,SSL证书可提供身份验证。这意味着您可以确保将信息发送到正确的服务器,不用担心别人窃取您的信息。有效的防止第三方伪装成您的网站并欺骗您的用户,获取用户个人信息,造成或大或小的损失。而SSL证书是由受信任的CA机构颁发的,申请证书时会严格的验证企业/组织的信息。所以说,选择受信任的CA机构颁发的SSL证书非常的重要,CA机构会通过各种信息的验证才会颁发SSL证书,而且EV SSL证书需要比其他证书更多的验证资料。

  3.SSL证书可增加信任度

  安装SSL证书的网站在Web浏览器的地址栏可显示,绿色小锁图标,绿色地址栏,EV SSL证书还能显示企业/组织名称。以确保访问者知道其连接是受到保护的,可放心使用。这意味着当访问者看到这些提示信息会更信任您的网站。而且可以查看CA机构的颁发信息,以便为您的客户提供的更多信任。

  HTTPS还可以防止网络钓鱼攻击。网络钓鱼电子邮件是冒充您网站来进行犯罪的,钓鱼电子邮件通常包含指向其网站的链接或使用中间人攻击来达到目的。由于这些违规现象无法获得正规CA机构颁发的SSL证书,因此他们无法完全冒充您的网站。这意味着您的用户陷入网络钓鱼网站的可能性很小。

image.png

有很多原因可以导致某些网站无法打开或加载缓慢。这些原因可以包括以下各种因素:

网络连接问题: 您的互联网连接可能存在问题,如断开、丢包或较低的带宽,这会导致网站加载缓慢或无法加载。

网站服务器问题: 如果目标网站的服务器出现问题,如服务器宕机、过载或网络故障,那么您将无法访问该网站。

DNS问题: DNS(域名系统)负责将域名解析为 IP 地址。如果DNS服务器出现问题,将导致域名解析失败,从而无法访问网站。

防火墙和安全软件: 防火墙或安全软件可能会阻止您访问某些网站,尤其是在其黑名单中的网站。

浏览器问题: 您使用的浏览器可能存在问题,例如缓存问题、插件冲突或过时的浏览器版本。

地理位置: 您的地理位置可能会影响到网站的加载速度。如果您与目标服务器之间的距离较远,加载速度可能较慢。

设备问题: 您的计算机或设备可能存在问题,如性能不足、过热或磁盘空间不足,这可能会导致网站加载缓慢。

网络流量: 网站所在的服务器可能正在经历高流量,这会导致加载速度变慢。

网站设计和优化: 一些网站可能设计不佳或未经过优化,导致加载时间较长。大量的大型媒体文件和广告也可能影响加载速度。

互联网服务提供商(ISP)问题: 您的ISP可能会对特定网站或内容进行流量限制,这可能会导致访问特定网站时速度较慢。

解决这些问题可能需要不同的方法。您可以尝试以下步骤来改善网站访问速度:

  检查您的互联网连接,确保它稳定且具有足够的带宽。
  清除浏览器缓存和Cookie。
  使用不同的浏览器进行测试,以查看是否存在浏览器相关问题。
  检查您的设备,确保它没有性能问题。
  尝试使用不同的DNS服务器,如Google DNS 或 Cloudflare DNS。
  联系您的ISP 以了解是否存在任何网络问题。
如果问题持续存在,可能需要进一步的网络故障排除或联系相关网络服务提供商或网站管理员以获取支持。

  • 支持最新版25H2
  • 目前已经支持个人免费使用,无需授权激活

一、下载

  1. 官方https://www.broadcom.com/
  2. 备用(国内推荐):

    https://wwbxo.lanzoue.com/iI2wu3h0vuhe

二、安装

双击安装包 → 同意协议 → 自定义路径(无中文)→ 安装 → 重启

三、创建虚拟机

  1. 新建→典型→加载系统 ISO→命名 + 选存储路径
  2. 设磁盘容量→分配内存 2-4GB、CPU2 核→开启虚拟机装系统
  3. 安装 VMware Tools(实现鼠标 / 文件互通)

四、常用操作

  • 快照:保存 / 恢复虚拟机状态
  • 关机:系统内正常关机,勿强制关闭

五、常见问题

  • 启动失败:开 BIOS 虚拟化、关 Hyper-V
  • 无网络:选 NAT 模式,重启 VMware 网络服务

在企业数字化转型中,CRM(客户关系管理)已从“客户信息存储工具”升级为“全链路业务协同平台”——覆盖获客-营销-竞品-项目-上下游的全流程,成为企业连接市场、客户与供应链的核心枢纽。本文基于超兔一体云、Copper CRM、 RSS 、Agile CRM、Highrise、微盟CRM、玄讯CRM等主流品牌的公开能力,从专业维度展开横向对比,解析各品牌的核心优势与适用场景。

一、对比框架说明

本次对比围绕CRM的核心业务链路设计5个维度,覆盖企业从“获客”到“上下游协同”的全流程需求:

  1. 获客能力:线索来源的广度、精准度与自动化程度;
  2. 营销能力:营销物料支持、数据驱动决策与自动化工具;
  3. 竞品管理:竞品信息收集、分析与竞争策略支持;
  4. 项目管理:项目全生命周期的跟踪、协同与成本管控;
  5. 上下游管理:供应商/客户的全流程协同与数据共享。

二、各维度横向对比分析

(一)获客能力:从“流量覆盖”到“精准转化”的差异

获客是CRM的起点,核心是多渠道线索整合线索清洗效率。各品牌的能力差异直接决定了企业触达客户的广度与精准度:

品牌核心获客能力适用场景
超兔一体云覆盖线上(百度/抖音/微信/小程序)+ 线下(地推/会销/工商搜客)全渠道;支持线索一键处理、归属地识别、活动效果评估toB/toC全行业,需全渠道获客的企业
微盟CRM整合微信/抖音/小红书等私域流量,通过会员积分、拼团满减实现获客与复购美妆/服饰等线上零售品牌
玄讯CRM快消行业专属:外勤拜访管理、终端数据采集、线下渠道获客快消企业(如饮料、食品)
Copper CRM适配Google生态:网站表单/手机扫描→自动同步Google Contacts,减少手动录入海外/跨境业务,依赖Google生态
Highrise线索-销售-订单-供应商全链路覆盖,支持工程类项目的线索转化工程/制造企业,长周期项目获客
RSS基础线索跟踪,无精准获客功能对获客需求简单的中小企业

关键结论

  • 超兔一体云是唯一覆盖“线上+线下+精准toB”的全渠道获客平台,适合需要规模化触达的企业;
  • 微盟、玄讯是垂直行业获客专家(电商/快消);
  • Copper CRM是Google生态下的海外获客工具,解决跨境业务的线索同步问题。

(二)营销能力:从“手动执行”到“数据驱动”的升级

营销的核心是“精准触达+效果可测”,各品牌的差异体现在营销物料的丰富度与数据决策的能力:

品牌核心营销能力优势亮点
超兔一体云1. 营销物料库:话术武器云(标准化沟通话术)、文件武器云(产品资料/案例); 2. 数据引擎:转化分析、用户画像云图、活动成本均摊数据驱动的精准营销,支持活动效果回溯
Agile CRM邮件营销、社交媒体管理;免费版无限用户初创团队的基础营销工具
微盟CRM电商复购工具:会员积分、满减拼团、私域流量触达线上零售的老客运营
Copper CRMGoogle Workspace协同(日历/文档/Drive);Gmail邮件追踪(记录客户互动)依赖Google生态的营销协同
RSS基础活动管理(计划/执行/监控),无自动化功能简单活动的流程跟踪

关键结论

  • 超兔一体云是数据化营销的标杆,通过物料库与数据引擎解决“营销内容标准化”与“效果不可测”的痛点;
  • 微盟CRM聚焦电商复购,适合线上零售的老客激活;
  • Agile CRM适合初创团队的低成本营销,免费版覆盖基础需求。

(三)竞品管理:从“被动收集”到“主动策略”的突破

竞品管理的核心是“感知竞争态势,制定差异化策略” ,但多数品牌仅能实现“被动收集”,仅有超兔一体云提供主动竞品分析能力:

品牌竞品管理能力能力层级
超兔一体云1. 竞品信息自动收集(产品/价格/市场份额); 2. 竞争关系管理(竞争事件记录、预警); 3. 差异化策略支持主动型:从信息到策略的闭环
Copper CRM通过客户互动记录(如“客户提及的竞品优势”)间接获取被动型:依赖销售手动整合
其他品牌无专门竞品模块缺失型:无法满足复杂分析需求

关键结论

  • 超兔一体云是唯一具备“竞品全生命周期管理”的品牌,适合需要应对激烈市场竞争的企业;
  • 其他品牌仅能实现“竞品信息的碎片化收集”,无法支持策略制定。

(四)项目管理:从“进度跟踪”到“全流程协同”的深化

项目管理的核心是“覆盖不同项目类型,实现进度、成本、团队的协同”,各品牌的能力差异体现在对项目复杂度的支持:

品牌核心项目管理能力适配项目类型
超兔一体云1. 多跟单模型:小单快单(三一客)、商机跟单(中长单)、多方项目(大型项目); 2. 通用能力:360°视图、时间线、自动日报、行动记录分析小单/中长单/大型项目全覆盖
Highrise工程类项目:施工节点跟踪、材料采购、成本管控工程/制造企业的长周期项目
Copper CRM可视化项目管道+Google Calendar集成(同步日程/截止日期)依赖Google生态的中小型项目
其他品牌无原生项目管理功能或仅支持基础进度跟踪简单项目的流程记录

关键结论

  • 超兔一体云的“多方项目模型”是大型项目的核心解决方案——支持项目组、合同、采购、收支的全流程协同,精准控制收支差;
  • Highrise是工程类项目的专属工具,解决施工节点与成本管控的痛点;
  • Copper CRM适合Google生态下的轻量级项目

(五)上下游管理:从“信息记录”到“全链路协同”的跨越

上下游管理的核心是“打通企业与供应商/客户的数据壁垒,实现三流合一(物流/资金流/信息流)”,各品牌的能力差异体现在协同的深度:

品牌核心上下游能力协同亮点
超兔一体云OpenCRM业务伙伴共生平台: 1. 上游:询价/采购/付款/供应商评分; 2. 下游:报价/订单/物流/售后; 3. 共性能力:三流合一对账、全程追溯产业链全流程协同,提升透明度
Highrise线索-销售-订单-库存-供应商全链路覆盖全流程数据打通
微盟CRM与微盟商城无缝衔接:订单/库存/售后协同电商上下游的订单协同
玄讯CRM快消渠道库存监控:终端数据采集、库存预警快消线下供应链的库存管理
Copper CRM客户分层(组织型客户的上下级关联)间接记录上下游关系

关键结论

  • 超兔一体云的OpenCRM上下游协同的标杆——通过“三流合一”解决企业与供应商/客户的对账痛点,提升产业链效率;
  • 微盟、玄讯是垂直行业的供应链工具(电商/快消);
  • Copper CRM仅能实现“信息记录”,无法支持深度协同。

三、综合能力雷达图:各品牌的核心竞争力分布

基于5个维度的能力评分(1-5分,5为最高),各品牌的综合竞争力如下:

品牌获客营销竞品项目上下游核心定位
超兔一体云55555全链路协同型CRM,适合中大型企业
Highrise42144工程类全流程CRM
微盟CRM44113电商私域型CRM
玄讯CRM32113快消外勤型CRM
Copper CRM32132Google生态型CRM
Agile CRM33111初创基础型CRM
RSS22111简单基础型CRM

四、品牌核心定位与适用场景

基于上述对比,各品牌的核心优势适配企业可总结为:

品牌核心优势适配企业类型
超兔一体云全链路协同(获客-营销-项目-上下游);大型项目管理;产业链三流合一需要数字化转型的中大型企业; 依赖全流程协同的制造/工程/服务企业
Highrise工程类项目节点跟踪;材料采购与成本管控工程施工、设备制造企业
微盟CRM电商私域流量整合;会员复购工具美妆、服饰、家居等线上零售品牌
玄讯CRM快消外勤拜访管理;终端数据采集饮料、食品、日化等快消企业
Copper CRMGoogle生态无缝集成;减少手动录入成本海外/跨境业务;依赖Google Workspace的团队
Agile CRM免费版无限用户;基础营销与客户管理初创团队、小规模业务
RSS界面简洁;基础客户与线索管理对CRM需求简单的中小企业

五、选择建议:从“需求匹配”到“价值最大化”

企业选择CRM的核心逻辑是“需求适配”,需结合3个关键因素:

  1. 行业特性:快消选玄讯,电商选微盟,工程选Highrise,海外选Copper;
  2. 需求复杂度:全链路协同选超兔,基础管理选RSS,初创选Agile;
  3. 生态依赖:Google生态选Copper,微信生态选微盟。

六、结论:CRM的未来是“全链路协同”

从本次对比可见,CRM的竞争已从“单一功能优势”转向“全链路能力整合”——超兔一体云通过多渠道获客、数据化营销、竞品策略支持、全类型项目管理、产业链协同的全链路能力,成为中大型企业数字化转型的首选;而Highrise、微盟、玄讯等垂直型CRM则通过“行业深度”占据细分市场;Copper、Agile等则通过“生态/成本”适配特定团队。

对企业而言,选择CRM的本质是选择“业务增长的底层支撑系统” ——需从“当前需求”与“未来扩张”双维度评估,最终实现“效率提升+竞争力增强”的价值最大化。

(注:文中功能相关描述均基于公开披露信息,具体功能服务与价格以厂商实际落地版本为准。)

【Unity Shader Graph 使用与特效实现】专栏-直达

Unity URP Shader Graph Position节点:空间坐标与视觉效果的桥梁

Position节点是Shader Graph中用于获取三维空间坐标的核心工具,其输出结果受空间坐标系选择直接影响。该节点通过连接不同空间转换模块,可精准获取顶点或片元在特定坐标系下的位置信息,为开发者提供了强大的空间数据访问能力。在URP(Universal Render Pipeline)渲染管线中,其核心功能包括:

  • 对象空间Object Space‌:以物体自身中心为原点,坐标值不随物体移动或旋转改变,适合制作与物体形态强关联的效果(如基于距离的着色)
  • 世界空间World Space‌:以场景原点为基准,坐标值随物体位置变化,常用于制作与场景空间相关的动态效果
  • 视图空间View Space‌:以摄像机为原点,适合制作与摄像机视角相关的特效(如扫描光效果)
注意:URP管线中需通过Graph Settings确认渲染管线类型,传统内置管线不支持Shader Graph功能

基础应用示例:基于距离的着色效果

对象空间下的距离着色

通过连接Position节点到BaseColor输出,可创建以物体中心为基准的渐变效果。这种效果在物体移动或旋转时保持不变,因为坐标系始终以物体中心为原点,适用于制作固定形态的材质变化,如UV动画或程序化纹理。

实现步骤‌:

  1. 创建Unlit Graph模板,添加Position节点并设置空间为Object
  2. 使用Vector3 Length节点计算顶点到中心的距离
  3. 通过Saturate节点将距离值归一化到[0,1]范围
  4. 连接至Color节点生成渐变效果

应用场景‌:

  • 制作基于物体几何形状的纹理变化
  • 创建物体表面的渐变效果,如从中心到边缘的颜色过渡
  • 实现物体表面的动态纹理,如随时间变化的图案

世界空间下的动态效果

将空间切换为World后,Position节点输出值会随物体在场景中的位置变化。这种效果常用于制作环境交互效果,如根据物体与场景中心的距离改变透明度。

实现步骤‌:

  1. 创建PBR Graph模板,添加World Position节点
  2. 使用SceneDepth节点获取相机到物体的距离
  3. 通过Vector3 Subtract计算物体与场景中心的相对位置
  4. 连接至Emissive Color实现动态发光效果

应用场景‌:

  • 制作物体在场景中移动时颜色变化的特效
  • 创建基于物体位置的动态光照效果
  • 实现物体与场景互动的视觉效果,如接近特定区域时改变材质属性

进阶应用:渐隐粒子效果实现

原理与节点配置

通过Position节点实现渐隐效果的核心是利用深度差值控制透明度。这种方法可精确控制粒子消失的过渡区域,通过调整Range参数可改变渐变范围,适用于制作溶解效果或环境粒子消散。

实现步骤‌:

  1. 创建Transparent Surface模板,启用深度写入关闭
  2. 添加View Position节点获取相机坐标系下的Z值
  3. 使用SceneDepth节点获取物体到相机的距离
  4. 通过Vector3 Subtract计算深度差值并连接至Alpha通道
  5. 添加OneMinus节点实现反向渐变效果

应用场景‌:

  • 制作粒子系统在特定距离开始消失的效果
  • 创建物体逐渐透明的溶解效果
  • 实现环境粒子与场景深度相关的消散效果

性能优化技巧

  • 对透明物体使用Alpha Clipping替代混合,可显著减少像素处理量
  • 在Graph Settings中设置合适的渲染队列(如Transparent)
  • 使用Dithering技术伪造低透明度区域的视觉效果,提升视觉质量
  • 对粒子系统启用深度预计算,避免实时计算场景深度,提升性能

常见问题与解决方案

坐标空间选择错误

  • 现象‌:物体移动时颜色不变(预期应变化)
  • 原因‌:误用Object空间代替World空间
  • 解决‌:检查Position节点的空间设置,确保与预期效果匹配

透明效果异常

  • 现象‌:透明物体出现闪烁或重叠错误
  • 原因‌:深度写入未正确关闭或渲染队列设置不当
  • 解决‌:在Graph Settings中启用深度写入关闭,并设置正确的渲染队列

性能瓶颈

  • 现象‌:复杂Shader导致帧率下降
  • 原因‌:过度使用实时计算节点(如SceneDepth)
  • 解决‌:预计算深度值或使用简化算法,对粒子系统启用批处理,提升性能

最佳实践与扩展应用

空间转换技巧

  • 使用World Position减Object Position获取物体局部坐标向量,实现更精细的空间控制
  • 结合RotateAboutAxis节点实现动态坐标变换,创造独特的视觉效果
  • 通过Screen Position节点制作屏幕空间特效,增强视觉冲击力

扩展应用场景

  • 环境交互‌:根据物体与场景物体的距离改变材质属性,实现更自然的互动效果
  • 动态UV‌:结合时间节点创建随时间变化的UV动画,增添动态元素
  • 特殊效果‌:制作扫描光、X光透视等视觉效果,提升游戏或应用的沉浸感
提示:URP管线中建议使用HDR颜色模式处理高动态范围效果,可通过Color节点的HDR选项启用,确保视觉效果更加真实

【Unity Shader Graph 使用与特效实现】专栏-直达
(欢迎

点赞留言

探讨,更多人加入进来能更加完善这个探索的过程,🙏)

简介: 在移动办公和远程协作成为常态的今天,高效的管理工具是团队保持生产力的核心。面对碎片化时间、多设备同步和即时协作的挑战,专为移动端优化的管理工具应运而生。它们通过直观的触控界面、实时同步能力和场景化功能,让团队管理随时随地进行。本文将解析移动端管理工具的关键价值,并为您精选几款高效应用,助力团队在移动时代游刃有余。

随着工作场景的日益灵活,我们处理事务的地点从固定工位扩展至通勤途中、家庭办公室甚至差旅途中的咖啡馆。传统的桌面端管理软件虽功能强大,但在移动场景下往往显得笨重且不便操作。此时,一款设计精良、体验流畅的移动端管理工具,就成为连接想法与行动、计划与执行的关键桥梁。

01 挑战与契机:移动办公环境下的管理新需求

现代工作模式对管理工具提出了前所未有的要求。团队成员可能分布在不同的时区,项目更新需要即时传递,决策也不再局限于会议室内。这种去中心化、实时化的协作模式,暴露了传统管理方式的诸多痛点:信息更新滞后导致决策依据过时,复杂的桌面端操作在手机小屏幕上难以进行,多平台间数据不同步造成信息混乱。

此外,移动场景下的使用具有“碎片化”和“即时性”特征。使用者期望在几分钟甚至几十秒内完成任务查看、进度更新或简短批复。因此,移动端管理工具的核心挑战在于,如何在有限的屏幕空间和交互时间内,提供清晰的信息架构、极简的操作路径和无缝的协作体验。谁能解决这些挑战,谁就能真正释放移动团队的巨大潜力。

02 核心价值:为什么移动端专用管理工具不可或缺

移动端管理工具的价值,绝非简单地将电脑界面移植到手机。其核心在于深度适配移动场景,解决特定痛点。首先,它通过推送通知、移动快捷操作(如语音录入、拍照上传)和离线支持等功能,确保管理行为永不掉线。即使在网络不稳定的环境下,也能记录想法或更新状态,待网络恢复后自动同步。

其次,优秀的移动端工具注重降低认知负荷。它采用符合移动设备习惯的导航(如底部标签栏、侧滑菜单),将关键信息前置,并简化复杂操作。这让团队成员在忙碌或移动中,也能轻松参与项目管理,而非管理工具的负担。

最后,它扮演着团队协作神经末梢的角色。通过移动端,审批可以即时完成,突发问题能够被迅速标记@负责人,项目进展得以一键分享给客户。它缩短了从发现问题到协调解决的闭环,将管理行为渗透到工作的每一个细微瞬间,真正实现了“管理无处不在”。

03 实战解析:主流移动端管理工具特点概览

了解其核心价值后,以下几款工具在移动端的适配性和用户体验方面各有侧重,可供参考。

Trello 以其看板视图著称,移动端通过流畅的拖拽手势和快捷添加按钮(支持拍照、录音)来管理任务,适合需要轻量、可视化管理的场景。

板栗看板 在贴合国内团队使用习惯方面进行了设计,移动端视图切换流畅,并通过与常用办公软件打通、支持微信便捷分享等方式,降低内外协作的门槛。

Asana 在移动端对复杂的项目层级关系进行了清晰的呈现,其“收件箱”功能能聚合所有任务通知,帮助用户在移动状态下聚焦处理待办事项,适合管理多线任务。

Microsoft To Do 聚焦于个人与轻团队任务管理,移动体验以快速为核心。其手机桌面小组件和“我的一天”智能推荐功能,有助于利用碎片时间专注完成当日重点。

04 未来展望:智能化与场景融合的演进方向

展望未来,移动端管理工具的进化将更深入地与人工智能和具体业务场景结合。场景智能感知将成为标配。工具能根据用户的地理位置、时间甚至手机使用状态,自动推送最相关的任务列表或提醒,实现真正的上下文感知管理。

语音与自然语言交互的地位将进一步提升。未来的工具不仅能通过语音创建任务,更能理解复杂的自然语言指令,并自动执行,让管理在“动口不动手”间完成。

最后,跨工具自动化工作流将在移动端轻松搭建。用户可以在手机上通过简易操作,将管理工具与其他常用应用连接,自动创建任务或流转信息,让移动端不仅是管理的终端,更是自动化流程的便捷触发与控制中心。

import json
from datetime import datetime, timedelta
from typing import List, Dict, Optional
from enum import Enum

class TaskPriority(Enum):
    LOW = "低"
    MEDIUM = "中"
    HIGH = "高"
    URGENT = "紧急"

class ContextType(Enum):
    LOCATION = "位置"
    TIME = "时间"
    DEVICE_STATUS = "设备状态"
    CALENDAR = "日历"

class MobileTaskAssistant:
    """
    移动端智能任务助手
    模拟未来移动管理工具的智能情景感知与自动生成能力
    """
    
    def __init__(self):
        self.user_context = {}
        self.task_templates = self._load_templates()
        
    def _load_templates(self) -> Dict:
        """加载情景化任务模板库"""
        return {
            "meeting": {
                "title": "会议跟进",
                "default_steps": ["整理纪要", "分配行动项", "设置下次会议时间"],
                "context_triggers": [ContextType.CALENDAR, ContextType.TIME]
            },
            "commute": {
                "title": "通勤时间处理",
                "default_steps": ["收听语音简报", "批复简易请求", "规划当日重点"],
                "context_triggers": [ContextType.LOCATION, ContextType.TIME]
            },
            "focus": {
                "title": "深度工作时段",
                "default_steps": ["屏蔽非紧急通知", "启动专注计时器", "列出核心任务"],
                "context_triggers": [ContextType.TIME, ContextType.DEVICE_STATUS]
            }
        }
    
    def update_context(self, context_type: ContextType, value: str):
        """更新用户当前情景信息"""
        self.user_context[context_type] = {
            "value": value,
            "updated_at": datetime.now().isoformat()
        }
        print(f"[情景更新] {context_type.value}: {value}")
        
    def generate_contextual_tasks(self) -> List[Dict]:
        """基于当前多重情景生成智能任务建议"""
        suggested_tasks = []
        
        # 情景1:基于时间的建议(例如:周一上午9点)
        if ContextType.TIME in self.user_context:
            time_ctx = self.user_context[ContextType.TIME]
            hour = datetime.fromisoformat(time_ctx['value']).hour
            weekday = datetime.fromisoformat(time_ctx['value']).weekday()
            
            if weekday == 0 and 8 <= hour < 10:  # 周一上午
                suggested_tasks.append({
                    "title": "准备本周团队周会材料",
                    "source": "时间情景触发",
                    "priority": TaskPriority.HIGH,
                    "estimated_duration": "30分钟"
                })
        
        # 情景2:基于位置的建议(例如:接近客户办公地点)
        if ContextType.LOCATION in self.user_context:
            loc = self.user_context[ContextType.LOCATION]['value']
            if "客户" in loc or "Client" in loc:
                suggested_tasks.append({
                    "title": f"回顾与{loc}相关的最新项目进展",
                    "source": "位置情景触发",
                    "priority": TaskPriority.MEDIUM,
                    "estimated_duration": "15分钟"
                })
                
        # 情景3:基于日历事件的建议
        if ContextType.CALENDAR in self.user_context:
            event = self.user_context[ContextType.CALENDAR]['value']
            suggested_tasks.append({
                "title": f"{event}的会前准备",
                "source": "日历情景触发",
                "priority": TaskPriority.HIGH,
                "estimated_duration": "20分钟",
                "template": self.task_templates.get("meeting")
            })
        
        return suggested_tasks
    
    def create_task_from_voice(self, voice_command: str) -> Dict:
        """解析自然语言语音指令并创建结构化任务"""
        # 简化模拟自然语言处理
        voice_command_lower = voice_command.lower()
        
        task = {
            "title": "",
            "steps": [],
            "priority": TaskPriority.MEDIUM,
            "created_via": "语音指令",
            "raw_command": voice_command
        }
        
        # 关键词匹配(模拟NLU理解)
        if "明天" in voice_command_lower:
            due_date = (datetime.now() + timedelta(days=1)).strftime("%Y-%m-%d")
            task["due_date"] = due_date
            
        if "紧急" in voice_command_lower or "立刻" in voice_command_lower:
            task["priority"] = TaskPriority.URGENT
            
        # 提取任务标题(模拟信息提取)
        import re
        # 简单匹配“创建...任务”或“记得...”模式
        pattern = r'(创建|记得|需要)(.+?)(任务|事情|事宜)'
        match = re.search(pattern, voice_command)
        if match:
            task["title"] = match.group(2).strip()
        else:
            task["title"] = voice_command[:30] + "..."
        
        print(f"[语音任务已创建] {task['title']} - 优先级: {task['priority'].value}")
        return task
    
    def get_mobile_optimized_view(self, full_task_list: List[Dict]) -> Dict:
        """为移动端小屏幕生成优化后的信息视图"""
        mobile_view = {
            "today_focus": [],
            "quick_actions": [],
            "notifications": []
        }
        
        now = datetime.now()
        
        for task in full_task_list:
            # 提取今日高优先级任务
            if task.get('priority') in [TaskPriority.HIGH, TaskPriority.URGENT]:
                if task.get('due_date') == now.strftime("%Y-%m-%d"):
                    mobile_view["today_focus"].append({
                        "id": task.get("id", ""),
                        "title": task["title"][:20] + ("..." if len(task["title"]) > 20 else ""),
                        "priority": task["priority"].value
                    })
            
            # 生成快速操作建议
            if "批复" in task["title"] or "审核" in task["title"]:
                mobile_view["quick_actions"].append({
                    "type": "审批",
                    "task_title": task["title"],
                    "action": "approve_or_reject"
                })
                
        # 基于情景生成通知
        if len(mobile_view["today_focus"]) > 5:
            mobile_view["notifications"].append("您今日高优先级任务较多,建议重新评估优先级")
            
        return mobile_view

# 使用示例
if __name__ == "__main__":
    print("=== 移动端智能任务助手演示 ===\n")
    
    # 1. 初始化助手
    assistant = MobileTaskAssistant()
    
    # 2. 模拟更新用户情景
    assistant.update_context(ContextType.TIME, datetime.now().isoformat())
    assistant.update_context(ContextType.LOCATION, "中关村客户大厦附近")
    assistant.update_context(ContextType.CALENDAR, "10:30 产品需求评审会")
    
    # 3. 获取情景化任务建议
    print("\n--- 智能情景任务建议 ---")
    suggested = assistant.generate_contextual_tasks()
    for i, task in enumerate(suggested, 1):
        print(f"{i}. {task['title']} [优先级: {task['priority'].value}]")
    
    # 4. 处理语音指令
    print("\n--- 语音指令处理示例 ---")
    voice_task = assistant.create_task_from_voice("创建一个明天提交季度报告的紧急任务")
    print(f"语音创建成功: {voice_task}")
    
    # 5. 生成移动端优化视图
    print("\n--- 移动端优化视图 ---")
    sample_tasks = [
        {"id": "1", "title": "批复张三的采购申请", "priority": TaskPriority.HIGH, "due_date": datetime.now().strftime("%Y-%m-%d")},
        {"id": "2", "title": "完成产品需求文档", "priority": TaskPriority.URGENT, "due_date": datetime.now().strftime("%Y-%m-%d")},
        voice_task
    ]
    mobile_view = assistant.get_mobile_optimized_view(sample_tasks + suggested)
    print(json.dumps(mobile_view, ensure_ascii=False, indent=2))

提示:选择移动端管理工具时,除了功能,请务必考察其离线工作能力数据同步稳定性,这是保证移动场景下体验流畅的基石。建议团队优先选择提供充足免费方案或试用的工具,让成员在实际移动场景中体验后再做决策。

简介:在数字化协作时代,支持无限画布的可视化工具正成为连接碎片化思想、构建系统知识的核心载体。与传统受限于固定页面或分页的工具相比,无限画布通过提供无边界的工作平面,允许用户自由组织思维导图、设计草图、项目看板与文档,实现信息从线性排列到空间关联的范式转变。这类工具融合了可视化、自由布局与实时协作,尤其适合应对复杂的创意构建、项目规划和战略梳理。未来,随着人工智能与空间计算技术的融入,无限画布将进化为更具沉浸感和智能辅助的“数字工作大脑”。

在日常工作与创意活动中,我们常常受限于传统文档、幻灯片或白板工具的固定边界。思绪是发散的,项目是动态的,但工具却是僵化的。无限画布(Infinite Canvas)正是为了打破这一束缚而生,它提供了一个可以无限缩放、延展和连接的数字平面,让想法得以自然生长和有机组织。

01 挑战与机遇:从线性文档到空间化思维的演进

在知识工作领域,信息的组织方式正经历一场静默的革命。过去,我们依赖Word文档的线性叙述、PPT的逐页演示或传统白板的有限物理空间。这种方式在处理复杂系统、非线性思考或需要宏观与微观视角快速切换的任务时,往往显得力不从心。

传统工具的三大核心局限日益凸显:

  • 空间限制:固定页面或白板边界切割了信息的整体性,迫使完整的想法被分割。
  • 结构僵化:目录树、幻灯片顺序等预设结构,限制了信息之间建立自由、多维的关联。
  • 协作壁垒:静态文件传递和版本混乱,使得团队难以在统一的、动态的空间中进行实时共创。

与此同时,分布式团队、敏捷项目管理和设计思维等新型工作方式的普及,对工具的灵活性、可视化程度和实时协作能力提出了更高要求。无限画布工具正是回应这一需求的产物,它将工作空间从“页面”升级为“宇宙”,让每一个想法、任务或资料都能找到一个位置,并通过连线、嵌套、区域划分建立起丰富的上下文关系,从而实现思维和项目的全景式管理。

02 核心价值:无限画布为何重塑工作效率

无限画布的核心价值在于它模拟并增强了人类思维的非线性、关联性特质。它不仅仅是一个更大的“纸”,而是一个多维度的信息组织和协作环境

  • 思维的自由映射:它允许用户以任意方式(如思维导图式、时间线式、看板式、自由关联式)组织内容,真正实现“所想即所得”。创意、规划和知识库的构建过程从“编写”变为“构建”和“连接”。
  • 宏观与微观的无缝切换:通过无限缩放功能,用户可以在总览项目全貌和深入某个细节之间流畅过渡。这种视角的灵活性对于管理复杂项目、理解系统架构至关重要。
  • 异构信息的融合平台:文本、图片、形状、便签、网页链接、甚至嵌入的视频、文档和表格,都可以作为“对象”放置在画布的任何位置,并与其他对象建立联系,形成一个丰富的、立体的知识图谱。
  • 实时协作的共享空间:它为一个团队提供了一个永久在线、持续演进的共同工作空间。所有讨论、修改和迭代都发生在同一语境下,极大降低了协作的认知成本和信息损耗。

03 实战解析:主流无限画布可视化工具深度评测

市场上有多种工具都提供了无限画布的核心体验,但在设计哲学、功能侧重和适用场景上各有不同。

Miro 是这一领域的全球领军者,以其丰富的模板库和强大的集成生态著称。它提供了从头脑风暴、用户体验设计、敏捷仪式到战略规划等数百个预制模板,团队可以一键生成适合的工作区。其插件系统允许无缝接入Jira、Notion、Figma等主流工具,使其成为跨团队、跨流程的协作中枢。Miro的画布性能优秀,即使承载大量元素也能保持流畅,非常适合大型、复杂的协作项目。

Figma FigJam 作为设计工具Figma的孪生产品,完美继承了其流畅的实时协作体验和精致的设计基因。它的核心优势在于与Figma设计文件的深度互通,设计师可以在设计稿和头脑风暴画布之间无缝切换,让创意到设计的链路极度顺滑。FigJam的工具集简洁而富有表现力,如表情符号反应、计时器、投票等,特别适合进行高效、互动的线上研讨会和工作坊。

板栗看板 作为一款在国内体验流畅的视觉化协作工具,在无限画布与本土化项目管理结合方面表现出色。它巧妙地将看板管理的敏捷性与无限画布的自由度相结合。团队不仅可以利用无限画布进行自由脑暴和方案梳理,还能一键将讨论结果转化为结构化的看板任务流。其实时协作、评论和任务指派功能深度贴合国内团队的使用习惯,且对中文排版和本地化服务的支持良好,为中小型团队提供了一个低门槛、高自由度的可视化协作入口。

Heptabase 则专注于个人知识管理与深度思考。它将无限画布与卡片盒笔记法相结合,用户可以将阅读笔记、思考碎片以卡片形式置于白板,并通过绘制连线构建知识网络。它的设计更倾向于构建个人第二大脑,帮助用户进行复杂的知识梳理、研究和写作准备,其双链笔记和可视化关联功能尤为强大。

04 未来展望:AI与空间计算驱动的下一代无限画布

无限画布的未来,将超越二维平面的协作,向更智能、更沉浸的方向演进。

  • AI辅助的内容生成与组织:未来工具将能理解画布上的内容语境。AI可以根据用户输入的几个关键词,自动生成相关的内容卡片、思维导图分支或草图;它还能识别杂乱的信息,主动建议分类、建立关联或提炼摘要,从“被动画布”变为“主动协作者”。
  • 三维空间与混合现实画布:结合VR/AR技术,无限画布将从二维平面扩展到三维空间。团队可以在虚拟房间中,将想法和资料像实物一样摆放在四周,进行沉浸式的空间化思考和评审,这对于产品设计、建筑规划和复杂数据可视化具有革命性意义。
  • 动态与数据驱动画布:画布上的元素不再只是静态对象,而是可以与实时数据源连接。例如,一个代表项目进度的图标可以自动关联项目管理工具的数据实时更新状态;一个市场分析区域可以接入数据仪表盘。画布将成为一个动态的、可视化的业务指挥中心。
  • 更智能的界面与交互:基于手势、眼动甚至脑机接口的更自然交互方式将被引入,让想法的捕捉和组织更加流畅无感。画布界面本身也可能具备情境感知能力,根据当前任务焦点自动高亮相关信息,或折叠次要内容。

技术视角:一个简易的无限画布对象管理模型

无限画布的底层可以看作一个能无限扩展的坐标系统和对“对象”的管理。以下是一个高度简化的概念模型,展示了如何管理画布上的基础元素及其空间关系:

class InfiniteCanvasObject:
    """代表无限画布上的一个基础对象(如文本、图形、便签)"""
    def __init__(self, obj_id, content, obj_type="text"):
        self.id = obj_id
        self.content = content  # 对象内容
        self.type = obj_type    # 对象类型:text, image, shape, sticky_note等
        self.x = 0  # 画布上的x坐标
        self.y = 0  # 画布上的y坐标
        self.width = 100
        self.height = 50
        self.connections = []  # 与其他对象的连接线ID列表

class InfiniteCanvas:
    """无限画布的核心管理类"""
    def __init__(self):
        self.objects = {}  # 存储所有对象:{obj_id: object}
        self.connections = {}  # 存储所有连接线
        self.viewport_center = (0, 0)  # 当前视图中心坐标
        self.zoom_level = 1.0  # 当前缩放级别

    def add_object(self, content, obj_type, x, y):
        """在指定坐标添加新对象"""
        obj_id = f"obj_{len(self.objects)+1}"
        new_obj = InfiniteCanvasObject(obj_id, content, obj_type)
        new_obj.x, new_obj.y = x, y
        self.objects[obj_id] = new_obj
        return obj_id

    def connect_objects(self, from_obj_id, to_obj_id, connection_type="line"):
        """在两个对象间创建连接"""
        conn_id = f"conn_{len(self.connections)+1}"
        self.connections[conn_id] = {
            'from': from_obj_id,
            'to': to_obj_id,
            'type': connection_type
        }
        # 将连接ID添加到两个对象的关联列表中
        if from_obj_id in self.objects:
            self.objects[from_obj_id].connections.append(conn_id)
        if to_obj_id in self.objects:
            self.objects[to_obj_id].connections.append(conn_id)
        return conn_id

    def get_objects_in_view(self, viewport_width, viewport_height):
        """模拟获取当前视图区域内的对象(简化版:基于坐标范围筛选)"""
        vx, vy = self.viewport_center
        scale = self.zoom_level
        # 计算视图边界
        left = vx - viewport_width / (2 * scale)
        right = vx + viewport_width / (2 * scale)
        top = vy - viewport_height / (2 * scale)
        bottom = vy + viewport_height / (2 * scale)

        visible_objs = []
        for obj in self.objects.values():
            if (left <= obj.x <= right) and (top <= obj.y <= bottom):
                visible_objs.append(obj)
        return visible_objs

    def zoom_to_fit(self, padding=50):
        """缩放并平移视图,使所有对象在视图中居中显示"""
        if not self.objects:
            return
        # 计算所有对象的边界框
        all_x = [obj.x for obj in self.objects.values()]
        all_y = [obj.y for obj in self.objects.values()]
        min_x, max_x = min(all_x), max(all_x)
        min_y, max_y = min(all_y), max(all_y)

        # 计算新的视图中心
        self.viewport_center = ((min_x + max_x) / 2, (min_y + max_y) / 2)
        # 计算合适的缩放级别(这是一个简化逻辑)
        self.zoom_level = 0.8  # 示例值,实际应根据边界框和视图尺寸动态计算
        print(f"视图已调整至中心 {self.viewport_center}, 缩放级别 {self.zoom_level}")

# 使用示例
if __name__ == "__main__":
    # 创建一个无限画布
    my_canvas = InfiniteCanvas()

    # 添加几个对象(模拟头脑风暴)
    idea1 = my_canvas.add_object("开发新功能:AI助手", "sticky_note", -200, 100)
    idea2 = my_canvas.add_object("调研用户反馈", "sticky_note", -50, 150)
    idea3 = my_canvas.add_object("设计交互原型", "sticky_note", 100, 50)

    # 建立对象间的关联
    my_canvas.connect_objects(idea1, idea2)
    my_canvas.connect_objects(idea2, idea3)

    # 模拟获取当前视图中的对象
    print("当前视图中的对象:")
    for obj in my_canvas.get_objects_in_view(800, 600):
        print(f"  - [{obj.type}] {obj.content} 位于 ({obj.x}, {obj.y})")

    # 一键缩放至合适视图
    my_canvas.zoom_to_fit()

这个简易模型展示了无限画布底层管理的核心概念:对象的自由定位对象间的关联连接以及基于坐标和缩放的视图管理。实际工具的实现远比此复杂,涉及高性能渲染、实时冲突解决、离线协同算法等前沿技术。

选择一款合适的无限画布工具,本质上是为团队选择一个动态、可扩展的协作环境和思维方式。它不再仅仅是记录结果的工具,更是承载思考过程、激发集体智慧的平台。

如果说:

  • 2024 年的大模型竞争,是“谁更博学”
  • 2025 年,是“谁能进行更严密的推理”

那么 2026 年,人工智能正式进入第三阶段:从“推理”走向“执行”

这一年,AI 的价值评估标准发生根本变化—— 不再是谁能给出最完美的方案,而是谁能为“结果负责”。

一、范式跃迁:从“静态推理”到“动态行动链”

过去的大模型,本质上仍停留在「纸上谈兵」阶段。

它可以:

  • 给出完整方案
  • 拆解逻辑步骤
  • 提供专业建议

最后一步的执行,永远留给人类

关键定义 1:推理扩展(Inference-time Reasoning)

推理扩展,是指模型在输出结果前,进行多路径推演、自检与成功率评估的一种“慢思考机制”。

这项能力,让 AI 不再只生成“看起来对的答案”, 而是选择更可能达成目标的行动路径

从“生成答案”到“达成目标”

2026 年,AI 的工作模式发生本质变化:

  • 自主任务拆解(Long-horizon Planning)AI 能将「策划并上线一场夏季促销活动」拆解为可执行的子任务链,而非一次性输出方案。
  • GUI 理解与跨应用操作(Screen Understanding)AI 不再依赖 API,而是像人类一样理解界面、点击按钮、填写表单,完成跨系统操作。

AI 第一次真正拥有了“手”。

二、角色转变:AI 智能体成为企业级中间件

2026 年,AI 的形态完成关键进化:

从“聊天机器人”,变成“任务型智能体(Task-driven Agent)”。

它不再是某个软件的功能,而是连接人与业务系统的智能中枢

关键定义 2:有界自治(Bounded Autonomy)

有界自治,是指 AI 在明确的权限边界、安全规则和审计机制内,拥有自主执行、修改数据与发起流程的能力。

这是企业落地 AI 的“最优解”:

  • 低风险
  • 高效率
  • 可规模化

消除流程孤岛,效率指数级提升

在企业内部:

  • ERP
  • CRM
  • 财务系统
  • 协同办公工具

过去靠人「搬数据」连接,现在由智能体自主流转。

在实际落地中,越来越多团队选择智能体平台化方案。 例如 「智能体来了」https://agentcome.net/), 通过 MCP、A2A 等标准协议,让企业无需从零构建行动控制逻辑,即可快速搭建具备执行能力的智能体集群。

AI 正在成为企业的“数字员工操作系统”。

三、执行式 AI 在 2026 年爆发的三大技术支柱

1. 记忆系统的持久化

智能体不再是“无状态对话”。

2026 年的 AI 架构,支持:

  • 数月级上下文记忆
  • 项目级目标保持
  • 策略一致性延续

这让 AI 真正参与“长期工作”,而非一次性咨询。

2. 感知—行动—反馈的闭环纠错

执行式 AI 具备类似人类的“韧性”:

  • 页面加载失败 → 切换路径
  • 权限不足 → 主动请求
  • 结果偏差 → 自我修正
AI 开始具备“执行张力”。

3. AI 成本结构的根本变化(FinOps for AI)

随着:

  • 推理成本下降
  • 专用芯片普及
  • 行动型模型优化

企业开始用一个新指标评估 AI:

单个任务的 ROI,而非算力消耗。

四、总结:2026 年,是“脑”与“手”的合一之年

  • 逻辑升级 AI 从“预测下一个词”,进化为“预测下一个行动状态”。
  • 形态演进企业不再围绕单一模型,而是构建多智能体协作网络。
  • 价值重构竞争的终局,不再是信息优势,而是执行效率 × 认知深度

对人类的真正挑战

在执行式 AI 普及的元年, 人类的核心能力,正从“执行力”转向“定义力”。

能否清晰定义目标、约束条件与成功标准,将成为智能时代最稀缺的人力资产。