普通视图

发现新文章,点击刷新页面。
今天 — 2025年12月10日首页

年内成立FOF数量逼近80只

2025年12月10日 14:28
12月10日华商汇享多元配置3个月持有混合FOF成立,募集规模6.35亿元。根据Wind统计,截至12月10日包括该FOF在内年内成立的FOF数量接近80只,募集总规模近800亿元,其中有13只FOF募集规模超20亿元,最大募集规模超过65亿元。(证券时报)

上海前滩太古里扩建,两座超甲级办公楼落地

2025年12月10日 14:24
36氪获悉,太古地产今日宣布推出“前滩广场”(Qiantan Place),预计于2026年底落成。该项目由太古地产与陆家嘴集团联合开发,包含“前滩广场一座”及“前滩广场二座”两座超甲级办公楼,是扩建后的前滩太古里综合发展项目的办公楼组成部分。

中欧基金杜厚良:2026年AI应用、新软件及物理世界应用潜力或成“灰犀牛”

2025年12月10日 14:22
36氪获悉,近期,在上海举办的“看见・中欧基金2026年度投资策略会”上,中欧基金基金经理杜厚良预计,2026年国内外市场在训练与推理环节对算力的需求都将大幅攀升。他指出,当前核心瓶颈在供给端,目前国产芯片流片仍依赖海外代工厂。预计2026年供需错配或将显现,国内优质代工厂需加速技术突破与产能建设。杜厚良认为,2026年AI应用、新软件及物理世界应用潜力或成“灰犀牛”。

ANSI-Escapes 命令行光标操作完全指南

作者 三年三月
2025年12月10日 14:20

1. 命令行中光标操作的底层原理

在命令行界面中,光标操作的底层原理基于ANSI转义序列(ANSI Escape Sequences),这是一套标准化的控制字符序列,用于控制终端的各种行为,包括光标移动、文本样式、屏幕清除等。

1.1 ANSI转义序列基础

  • 转义字符:所有ANSI转义序列都以转义字符ESC(ASCII码27,十六进制0x1B,通常表示为\033\u001B)开头
  • 序列格式:基本格式为 ESC[参数;参数;...命令 或简写为 \033[参数;参数;...命令
  • 命令类型
    • 光标移动命令(如A上移、B下移、C右移、D左移)
    • 屏幕操作命令(如J清除屏幕、K清除行)
    • 样式设置命令(如文本颜色、背景色、粗体等)

1.2 终端解析机制

当终端接收到包含ANSI转义序列的输出时:

  1. 识别ESC字符作为转义序列的开始
  2. 解析[之后的参数(以分号分隔)
  3. 执行参数对应的命令操作
  4. 转义序列不会显示在终端上,只会触发相应的控制行为

1.3 光标定位原理

  • 终端屏幕被划分为行列网格,通常从左上角(0,0)或(1,1)开始计数
  • 光标移动命令通过指定行列位置或相对偏移来控制光标位置
  • 不同终端可能有细微差异,但基本遵循ANSI标准

2. ANSI-Escapes 工具介绍

ansi-escapes是一个Node.js库,它提供了一组简洁的API,用于生成各种ANSI转义序列,简化了在命令行应用中控制光标、清除屏幕、操作终端等复杂功能的实现。

2.1 主要功能分类

  1. 光标控制:移动、定位、保存/恢复位置、隐藏/显示
  2. 屏幕操作:清除行、清除屏幕、滚动
  3. 终端控制:切换屏幕、设置工作目录
  4. 实用功能:创建链接、显示图片、发出蜂鸣

2.2 优势

  • 跨平台兼容性:自动处理不同终端和操作系统的差异
  • 简化API:将复杂的转义序列封装为易记的函数调用
  • 类型安全:提供TypeScript支持,减少使用错误
  • 模块化设计:按需导入所需功能

3. ANSI-Escapes 核心功能详解

3.1 光标移动与定位

cursorTo(x, y) - 移动光标到指定位置

功能:将光标移动到屏幕上的指定坐标位置

Demo代码

import ansiEscapes from 'ansi-escapes';
import process from 'process';

// 移动到第2行第6列
process.stdout.write('第一行\n');
process.stdout.write('第二行\n');
process.stdout.write('第三行\n');
process.stdout.write(ansiEscapes.cursorTo(5, 1)); // x:5, y:1 (行列从0开始)
process.stdout.write('✓ 光标移动到这里了\n');

底层实现

export const cursorTo = (x, y) => {
    if (typeof x !== 'number') {
        throw new TypeError('The `x` argument is required');
    }

    if (typeof y !== 'number') {
        return ESC + (x + 1) + 'G'; // 只指定x坐标
    }

    return ESC + (y + 1) + SEP + (x + 1) + 'H'; // 指定x,y坐标
};

解析

  • 当只提供x坐标时,生成序列 \033[6G(移动到第6列)
  • 当提供x和y坐标时,生成序列 \033[2;6H(移动到第2行第6列)
  • 注意:终端通常使用1-based索引,而API使用0-based索引,所以需要+1转换

cursorMove(x, y) - 相对移动光标

功能:从当前位置相对移动光标

Demo代码

import ansiEscapes from 'ansi-escapes';
import process from 'process';

process.stdout.write('Hello World');
process.stdout.write(ansiEscapes.cursorMove(-5, -1)); // 左移5字符,上移1行
process.stdout.write('✓ 相对移动到这里');

底层实现

export const cursorMove = (x, y) => {
    if (typeof x !== 'number') {
        throw new TypeError('The `x` argument is required');
    }

    let returnValue = '';

    if (x < 0) {
        returnValue += ESC + (-x) + 'D'; // 左移
    } else if (x > 0) {
        returnValue += ESC + x + 'C'; // 右移
    }

    if (y < 0) {
        returnValue += ESC + (-y) + 'A'; // 上移
    } else if (y > 0) {
        returnValue += ESC + y + 'B'; // 下移
    }

    return returnValue;
};

解析

  • 根据x和y的正负值决定移动方向
  • 左移:\033[5D
  • 右移:\033[5C
  • 上移:\033[1A
  • 下移:\033[1B

cursorUp(count) / cursorDown(count) - 上下移动光标

功能:向上或向下移动指定行数

Demo代码

import ansiEscapes from 'ansi-escapes';
import process from 'process';

process.stdout.write('第一行\n');
process.stdout.write('第二行\n');
process.stdout.write('第三行\n');
process.stdout.write(ansiEscapes.cursorUp(2)); // 上移2行
process.stdout.write('✓ 上移到第二行');

底层实现

export const cursorUp = (count = 1) => ESC + count + 'A';
export const cursorDown = (count = 1) => ESC + count + 'B';

解析

  • cursorUp:生成 \033[2A 表示上移2行
  • cursorDown:生成 \033[2B 表示下移2行
  • 默认移动1行

cursorForward(count) / cursorBackward(count) - 左右移动光标

功能:向左或向右移动指定字符数

Demo代码

import ansiEscapes from 'ansi-escapes';
import process from 'process';

process.stdout.write('Hello World');
process.stdout.write(ansiEscapes.cursorBackward(6)); // 左移6字符
process.stdout.write('✓ 左移到Hello后');

底层实现

export const cursorForward = (count = 1) => ESC + count + 'C';
export const cursorBackward = (count = 1) => ESC + count + 'D';

解析

  • cursorForward:生成 \033[2C 表示右移2字符
  • cursorBackward:生成 \033[6D 表示左移6字符
  • 默认移动1字符

3.2 光标状态控制

cursorHide / cursorShow - 隐藏和显示光标

功能:控制光标的可见性

Demo代码

import ansiEscapes from 'ansi-escapes';
import process from 'process';
import { delay } from './utils'; // 假设存在延迟函数

process.stdout.write('光标可见...');
await delay(1500);
process.stdout.write(ansiEscapes.cursorHide);
process.stdout.write('\n光标隐藏了...');
await delay(2000);
process.stdout.write(ansiEscapes.cursorShow);
process.stdout.write('\n光标显示了✓');

底层实现

export const cursorHide = ESC + '?25l';
export const cursorShow = ESC + '?25h';

解析

  • cursorHide:生成 \033[?25l 隐藏光标
  • cursorShow:生成 \033[?25h 显示光标
  • 常用于需要暂时隐藏光标以提升用户体验的场景

cursorSavePosition / cursorRestorePosition - 保存和恢复光标位置

功能:保存当前光标位置,稍后可以恢复到该位置

Demo代码

import ansiEscapes from 'ansi-escapes';
import process from 'process';
import { delay } from './utils';

process.stdout.write('第一行\n');
process.stdout.write('第二行');
process.stdout.write(ansiEscapes.cursorSavePosition); // 保存位置
process.stdout.write('保存点');
await delay(1000);
process.stdout.write('\n第三行\n第四行\n');
await delay(1000);
process.stdout.write(ansiEscapes.cursorRestorePosition); // 恢复位置
process.stdout.write('✓ 恢复到保存点');

底层实现

export const cursorSavePosition = isTerminalApp ? '\u001B7' : ESC + 's';
export const cursorRestorePosition = isTerminalApp ? '\u001B8' : ESC + 'u';

解析

  • 针对Apple Terminal使用不同的转义序列 \u001B7\u001B8
  • 其他终端使用标准序列 \033[s(保存)和 \033[u(恢复)

3.3 屏幕操作

eraseLine / eraseScreen - 清除行和屏幕

功能:清除当前行或整个屏幕

Demo代码

import ansiEscapes from 'ansi-escapes';
import process from 'process';

// 清除当前行
process.stdout.write('这是一行要清除的文本');
process.stdout.write(ansiEscapes.eraseLine);
process.stdout.write('✓ 行已被清除,在同一位置输出新文本\n');

// 清除屏幕
await delay(1000);
process.stdout.write(ansiEscapes.eraseScreen);
process.stdout.write('✓ 屏幕已被清除\n');

底层实现

export const eraseEndLine = ESC + 'K';      // 清除从光标到行尾
export const eraseStartLine = ESC + '1K';   // 清除从光标到行首
export const eraseLine = ESC + '2K';        // 清除整行
export const eraseDown = ESC + 'J';         // 清除从光标到屏幕底部
export const eraseUp = ESC + '1J';          // 清除从光标到屏幕顶部
export const eraseScreen = ESC + '2J';      // 清除整个屏幕

解析

  • eraseLine 生成 \033[2K 清除整行
  • eraseScreen 生成 \033[2J 清除整个屏幕
  • 这些命令不会移动光标位置

clearScreen / clearViewport - 清屏操作

功能:更彻底的清屏操作

Demo代码

import ansiEscapes from 'ansi-escapes';
import process from 'process';

// 清除屏幕并将光标移到左上角
process.stdout.write('大量输出内容...\n'.repeat(20));
process.stdout.write(ansiEscapes.clearScreen);
process.stdout.write('✓ 屏幕已清除,光标在左上角\n');

底层实现

export const clearScreen = '\u001Bc';

export const clearViewport = `${eraseScreen}${ESC}H`;

解析

  • clearScreen 生成 \033c 重置终端(更彻底的清屏)
  • clearViewport 结合了 eraseScreen 和光标移动到左上角 \033[H

3.4 终端屏幕控制

enterAlternativeScreen / exitAlternativeScreen - 切换屏幕

功能:创建一个临时的替代屏幕,退出后恢复原屏幕内容

Demo代码

import ansiEscapes from 'ansi-escapes';
import process from 'process';

// 进入替代屏幕
process.stdout.write(ansiEscapes.enterAlternativeScreen);
process.stdout.write('这是在替代屏幕中\n');
process.stdout.write('原屏幕内容被保存\n');

// 等待用户输入后退出
process.stdin.once('data', () => {
    process.stdout.write(ansiEscapes.exitAlternativeScreen);
    process.stdout.write('已返回原屏幕\n');
    process.exit(0);
});

底层实现

export const enterAlternativeScreen = ESC + '?1049h';
export const exitAlternativeScreen = ESC + '?1049l';

解析

  • enterAlternativeScreen 生成 \033[?1049h 进入替代屏幕
  • exitAlternativeScreen 生成 \033[?1049l 退出替代屏幕
  • 常用于全屏应用或需要临时切换显示内容的场景

3.5 其他实用功能

beep - 发出蜂鸣音

功能:让终端发出蜂鸣提示音

Demo代码

import ansiEscapes from 'ansi-escapes';
import process from 'process';

process.stdout.write('即将发出蜂鸣...\n');
process.stdout.write(ansiEscapes.beep);
process.stdout.write('蜂鸣已发出✓');

底层实现

export const beep = BEL; // BEL = '\u0007'

解析

  • 生成 \u0007 (BEL字符),大多数终端会将其解释为蜂鸣音

link(text, url) - 创建可点击链接

功能:在支持的终端中创建可点击的URL链接

Demo代码

import ansiEscapes from 'ansi-escapes';
import process from 'process';

process.stdout.write(ansiEscapes.link('访问GitHub', 'https://github.com') + '\n');
process.stdout.write('在支持的终端中,上面的文本是可点击的链接');

底层实现

export const link = (text, url) => {
    const openLink = wrapOsc(`${OSC}8${SEP}${SEP}${url}${BEL}`);
    const closeLink = wrapOsc(`${OSC}8${SEP}${SEP}${BEL}`);
    return openLink + text + closeLink;
};

解析

  • 使用OSC (Operating System Command)序列创建链接
  • 格式为 \033]8;;url\a文本\033]8;;\a
  • 在支持的终端(如iTerm2, GNOME Terminal)中,文本会显示为可点击的链接

4. 跨平台兼容性处理

ansi-escapes库内置了跨平台兼容性处理,确保在不同终端和操作系统上都能正常工作:

  1. 终端类型检测

    const isTerminalApp = !isBrowser && process.env.TERM_PROGRAM === 'Apple_Terminal';
    const isWindows = !isBrowser && process.platform === 'win32';
    const isTmux = !isBrowser && (process.env.TERM?.startsWith('screen') || process.env.TERM?.startsWith('tmux') || process.env.TMUX !== undefined);
    
  2. Windows特殊处理

    const isOldWindows = () => {
        // 检测旧版Windows系统并返回不同的清屏命令
    };
    
  3. Tmux支持

    const wrapOsc = sequence => {
        if (isTmux) {
            // Tmux需要特殊的OSC序列包装
            return '\u001BPtmux;' + sequence.replaceAll('\u001B', '\u001B\u001B') + '\u001B\\';
        }
        return sequence;
    };
    

5. 最佳实践

  1. 资源清理:使用 cursorShow 确保程序退出时光标可见
  2. 异常处理:在异步操作中处理可能的错误
  3. 用户体验:在长时间操作中隐藏光标,完成后显示
  4. 兼容性检查:对于高级功能,检查终端是否支持
  5. 性能考量:批量执行操作,减少I/O调用

6. 总结

ansi-escapes是一个强大的库,它将复杂的ANSI转义序列封装为简洁易用的API,极大地简化了命令行应用中光标控制、屏幕操作等功能的实现。通过本文的介绍,你应该已经掌握了其核心功能和使用方法。

无论是创建简单的命令行工具还是复杂的交互式终端应用,ansi-escapes都能为你提供强大的支持,帮助你打造出更加专业和友好的用户体验。

数据标注平台重磅上线 | 标注赚现金 低门槛真收益

作者 掘金酱
2025年12月10日 14:19

68f71ddf171f8850e881f947f1cfb861.png

  • 你是否想亲身体验最前沿的 AI 数据工作,却找不到专业的参与路径?
  • 你是否希望让精通的编程技能,在业余时间创造实实在在的价值?

一个多领域的数据采集与标注服务平台,为你而来!

低门槛、真收益! 利用碎片时间,将你的代码洞察力直接变现

这不仅仅是一个任务平台,更是一个专为资深开发者打造的、用技术换取回报的高价值社区。

📒 招募介绍

我们是谁

AIDP(AI Data Platform) 提供完整的 AI 数据解决方案,涵盖:

  • 数据采集
  • 数据标注
  • 数据合成
  • 多种数据生产能力

平台支持 Seed、Stone、Flow、头抖、剪映、TT 等核心业务的快速迭代和发展。

需要你做什么

参与后训练高质量代码数据生产,包括但不限于:

任务类型 说明
强化学习数据生产 为 RLHF 训练提供高质量反馈数据
监督微调(SFT) 生产指令-响应对数据
奖励模型(RM) 对模型输出进行偏好排序和评分
数据质检 审核和优化已有数据质量

你将获得的回报

  • 💰现金收益:深度参与数据标注的代码专家,月均获取 ¥10000+ 以上回报
  • 时薪范围:50 - 1000 元,具体以项目最终定价为准,多劳多得,任务明码标价;
  • 计税方式:劳务独立计税,收益清晰透明。
  • 参与智能 Agent 调优,掌握前沿技术动态

需要具备的条件

  • 对 AI 有热情,日常高频使用 AI Coding 工具
  • 具备扎实的编程基础和代码理解能力

加分项

  • LeetCode Hard 题目高通过率
  • GitHub 高星仓库贡献者
  • 开源社区活跃成员

同时欢迎:PM、QA 同学参与,平台同时提供非技术类题目

👀 我们的目标用户

我们在寻找这样的你:

  • 技术栈:熟悉大前端、Python、Java、C++、Go 等主流编程语言
  • 质量意识:熟悉测试与质量保障流程
  • 探索精神:对前沿技术有自己的理解,乐于探索新知识
  • 社区参与:有开源贡献、LeetCode 活跃经历者优先

🚀你的专家任务

标注实验

对代码片段、日志、技术文档等进行精准标注

具体职责

  • 按照项目制定的标注规范,对指定数据(文本、代码片段、日志、技术文档等)进行准确标注
  • 识别并修正数据中存在的歧义、错误或不一致之处
  • 对复杂样本给出专业判断,确保标注结果的准确性与一致性

质量把控

互审他人成果,保障数据纯度

具体职责

  • 参与标注标准的制定与完善,提出改进意见
  • 执行专家互审机制,对其他标注结果进行审核和反馈
  • 结合实际经验,对标注样本的合理性和业务适配度进行评估

知识贡献

沉淀最佳实践,打造可复用的知识宝库

具体职责

  • 将个人专业知识转化为标注规范、最佳实践或案例,供团队参考
  • 在遇到疑难问题时,作为专家提供判定依据,形成可复用的知识库
  • 协助项目组优化任务分配、质量监控和流程设计

☎️ 社群交流

参加活动的掘友一定要入群:

  • 重要消息不错过
  • 大家互相鼓励
  • 有问题可以在群内咨询

134067c882fcc733a803fb9c71f0d2a6.png

⁉️ 常见问题 FAQ

Q1:没有标注经验可以参与吗?

我们需要你具备扎实的编程基础即可快速上手,所以需要你有一定的编程经验

Q2: 每天需要投入多少时间?

完全灵活,可以根据自己的时间安排参与,充分利用碎片时间。

Q3: 如何保证收益?

任务明码标价,多劳多得,平台提供清晰的计价规则和结算流程。

Q4: 非程序员可以参与吗?

可以。平台同时提供非技术类题目,欢迎 PM、QA 等岗位同学参与。

美团AI转向,前字节视觉模型AI平台负责人潘欣加入

2025年12月10日 14:17
36氪从多个信息源独家获悉,前闪极AI合伙人、前字节视觉大模型AI平台负责人潘欣,近期已经加入美团。潘欣曾任谷歌大脑(Google Deepmind)研究员,推动TensorFlow动态图模式开发。回国后,他先后在百度、腾讯与字节跳动任职。 36氪独家了解到,入职美团后,潘欣负责多模态AI创新工作,主导了LongCat App等多个相关应用的开发。

美团AI转向,前字节视觉模型AI平台负责人潘欣加入|智能涌现独家

2025年12月10日 14:16

文|邓咏仪

编辑|苏建勋 杨轩

《智能涌现》从多个信息源独家获悉,前闪极AI合伙人、前字节视觉大模型AI平台负责人潘欣,近期已经加入美团。

潘欣曾任谷歌大脑(Google Deepmind)研究员,推动TensorFlow动态图模式开发。回国后,他先后在百度、腾讯与字节跳动任职。 

在百度,他曾主导PaddlePaddle平台优化、无量深度学习框架构建,而后任腾讯、字节跳动AIGC和视觉大模型AI平台负责人,业务方向集中在多模态领域。此后,2024年11月,潘欣加 入闪极科技,担任AI合伙人,整体负责AI技术研发及智能眼镜项目。 

《智能涌现》独家了解到,入职美团后,潘欣负责多模态AI创新工作,主导了LongCat App等多个相关应用的开发。

2025年,美团的关键词是外卖大战与AI。 

“美团在AI技术上的战略定位,是积极进攻而非消极防御。”王兴曾表示。2025年的一季度电话会上,美团创始人王兴首次披露了美团 AI 大模型LongCat(龙猫)的相关进展。 

他曾表示,美团的AI战略建立在三个层面: 

  • AI at work,主要把AI运用在所有员工的工作和运营上;
  • AI in products,用AI改造既有2B和2C端的产品和服务,打造全新的AI原生产品;
  • 以及Building LLM(大语言模型),积极投入Capex(资本支出),完善自研基座模型能力。

不过,今年第二季度起,国内开始了轰轰烈烈的外卖大战。压力之下,美团将有限的子弹,先放在了基座模型的训练上。

《智能涌现》从接近美团的人士了解到,2025年,美团在包括预训练、业务侧AI应用方面的招聘积极性并没有减少。 

“今年美团招聘的AI人才集中在模型训练方面,招聘标准也很高,人才主要来自阿里通义、Seed以及腾讯混元团队。”一位知情人士表示。 

2025年至今,美团密集地发布了一系列基座模型和应用进展,包括: 

  • 6月,美团发布首款AI编程产品Nocode,我们也曾独家报道;
  • 9月,正式发布并开源首款大语言模型LongCat-Flash-Chat、发布推理模型 LongCat-Flash-Thinking;
  • 10月,发布视频生成模型LongCat-Video,并同步开源;
  • 11月,发布开源全模态模型LongCat-Flash-Omni;
  • 12月,发布并开源三款图像模型LongCat‑Image、LongCat‑Image‑Dev、LongCat‑Image‑Edit。

可以看出,在今年,美团已经基本完成从语言模型,到视觉、音频、视频的全模态基座的建设。 

基座能力的建设,某种程度也是为美团主营业务AI化铺路。从2025年下半年开始,美团在AI应用侧明显提速,但更加聚焦于主线业务的AI化改造。

比如,10月,美团就向餐饮商家推出了“袋鼠参谋”、“智能掌柜”等AI工具,向行业所有商家免费开放。 

当前,包括美团金融线、客服线、电商线在内的业务,都在大力招聘AI应用人才,集中在后训练和商业化落地。 

此前美团的AI应用创新,以一些独立的AI To C应用为主,如Wow、妙刷等,均是独立在主线业务之外的创新。如今,这些To C探索已有所收缩。 

一个旁证是,前创始人王慧文曾创立大模型公司“光年之外”,被美团收购后,这一团队以GN06为名称运营。据雷峰网报道,11月,原“光年之外”负责人刘炯已经调任至美团,直接向美团平台负责人李树斌汇报。 近期,这一团队招聘力度也有减少。 

封面来源|IC photo

👇🏻 扫码加入「智涌AI交流群」👇🏻

欢迎交流

本文来自微信公众号“智能涌现”,作者:邓咏仪,36氪经授权发布。

React Native 样式系统详解:与 Web CSS 的“似是而非”

2025年12月10日 14:14

很多从 Web 转战 React Native 的开发者最先问的问题通常是:“我能直接把 CSS 文件复制进去吗?”

答案是不能。虽然 React Native 的样式系统在命名和行为上极力模仿 CSS,但它本质上是JavaScript 对象,运行机制也完全不同。以下是关于这两者差异的完整技术总结。

1. 核心语法:从 Kebab-case 到 CamelCase

在 Web 中,CSS 是文本;在 RN 中,样式是代码(对象)。由于 JavaScript 对象的属性名不能包含连字符(-),所有 CSS 属性都必须转换为 小驼峰命名法 (camelCase)

特性 Web CSS React Native Style
背景色 background-color: red; backgroundColor: 'red'
字体大小 font-size: 16px; fontSize: 16 (注意是数字)
外边距 margin-top: 20px; marginTop: 20
复合属性 border: 1px solid red; 不支持。必须拆分为 borderWidth, borderColor, borderStyle

为什么这样做?

因为样式是 JS 对象,这意味着你可以利用编程语言的所有能力:变量、条件判断、函数计算等。

// React Native 允许动态计算样式
<View style={{
  backgroundColor: isActive ? 'blue' : 'gray', // 条件样式
  width: windowWidth * 0.5 // 动态计算
}} />

2. 继承与层叠:数组覆盖法

Web CSS 的全称是“层叠样式表”(Cascading Style Sheets),依赖选择器权重(Specificity)来决定谁生效。

React Native 没有选择器(没有 .class 或 #id),也没有隐式的样式继承(子元素不会自动继承父元素的字体颜色)。

RN 的“层叠”通过数组实现:

RN 允许你给 style 属性传递一个数组。数组中越靠后的样式优先级越高。

const styles = {
  base: { fontSize: 14, color: 'black' },
  active: { color: 'blue' } // 激活状态覆盖颜色
};

// 数组最后一个生效,最终颜色为 blue
<Text style={[styles.base, styles.active]}>Hello</Text>

这种方式让样式覆盖变得显式且可预测,彻底消除了 Web 开发中“不知道这个样式是从哪里继承来的”痛苦。

3. 布局系统:Flexbox 是唯一真理

React Native 移除了 Web 中复杂的 float, display: block/inline, grid 等布局方式,只保留并强制使用 Flexbox

但有一个巨大的陷阱需要注意:默认主轴方向不同

  • Web Flexbox: 默认 flex-direction: row (横向排列)。

  • RN Flexbox: 默认 flexDirection: 'column' (纵向排列)。

    • 原因: 手机屏幕是窄长的,垂直滚动是移动端的默认交互模式。

4. 尺寸与单位:没有 px,只有逻辑点

在 Web 上,我们纠结于 px, em, rem, vw, vh。

在 RN 上,几乎所有尺寸属性(width, height, margin, padding, fontSize)都只接受不带单位的数字。

  • 含义: 这些数字代表 逻辑像素 (Logical Pixels / Points)

  • 自动适配: RN 会根据设备的屏幕密度(DPI/PixelRatio)自动将其转换为屏幕上的物理像素。

    • width: 100,在普通屏是 100px,在 Retina 屏可能是 200px 或 300px。
    • 例外: 也可以使用百分比字符串,如 width: '50%'

5. 常见痛点与已知限制 (Known Issues)

根据你提供的文档片段,RN 并不是完美复刻了 CSS 引擎,这里有几个著名的“坑”:

A. 触摸区域与父级边界 (Parent Bounds)

  • Web: 子元素设为 absolute 并移出父元素框外,通常依然可见且可点击。

  • RN (Android): 子元素的触摸事件无法超出父组件的边界。如果你把按钮用 position: absolute 移到了父 View 的外面,你看着它在那里,但点它没反应。

    • 注: 视觉上,Android 默认 overflow: hidden 行为较强,虽新版本有改善,但点击判定依然严格遵循父级区域。

B. 负边距 (Negative Margins)

  • Web: margin-top: -50px 是常用的重叠布局技巧。
  • RN: 文档明确提到 "on Android negative margin is not supported" (或支持受限)。虽然现代 RN 版本对负 margin 的支持已经好转,但在某些复杂嵌套或旧版本 Android 上,它依然会导致布局塌陷或裁剪。

C. 圆角与图片 (Border Radius)

如前文所述,iOS 的 <Image> 组件对 borderTopLeftRadius单独圆角属性支持不佳。必须通过包裹一个 <View> 并设置 overflow: 'hidden' 来实现异形图片。

D. 阴影 (Shadows)

这是最分裂的地方:

  • iOS: 使用 shadowColor, shadowOffset, shadowOpacity (类似 CSS)。
  • Android: 必须使用 elevation (一个数字,对应 Material Design 的层级高度)。为了跨平台,通常需要根据平台写两套代码。

6. 最佳实践:StyleSheet.create

虽然你可以直接写内联样式对象 style={{color: 'red'}},但官方推荐使用 StyleSheet.create

import { StyleSheet } from 'react-native';

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
  },
});

为什么?

  1. 性能: 系统可以将这些样式对象 ID 化并缓存,避免每次渲染组件时都重新创建新的对象。
  2. 验证: 它会在开发阶段检查你的属性名是否合法(比如如果你写了 background-color,它会直接报错提醒你改成 backgroundColor)。

总结

当你开始在 React Native 中写样式时,请记住:

  1. ❌ 不要用 Kebab-case (font-size),要用 CamelCase (fontSize)。
  2. ❌ 不要加 px 单位,直接写数字
  3. ❌ 不要指望样式自动继承(Text 组件内的嵌套除外)。
  4. ⚠️ 默认布局是 纵向 (Column) 的。
  5. ⚠️ 所有的边框、阴影、圆角,在 iOS 和 Android 上可能表现不一致,多真机测试。

隐形追踪者:当你删除了 Cookies,谁还在看着你?——揭秘浏览器指纹

2025年12月10日 14:05

韭菜们是否经历过这样的诡异时刻:你在某个购物网站搜索了一双球鞋,仅仅过了一分钟,当你打开新闻网站或社交媒体时,那双球鞋的广告就出现在了显眼的位置。

通常,我们会把这归咎于 Cookies。于是,聪明的韭菜打开了“无痕模式”,或者彻底清除了浏览器的缓存和 Cookies,认为这样就能隐身于互联网。

然而,广告依然如影随形。

这是因为,由于 “浏览器指纹”(Browser Fingerprinting) 技术的存在,你实际上一直在“裸奔”。

什么是浏览器指纹?

在现实生活中,指纹是我们独一无二的生理特征。而在互联网世界中,浏览器指纹是指当你访问一个网站时,你的浏览器不仅会请求网页内容,还会无意中暴露一系列关于你设备的软硬件配置信息。

这些信息单独看起来都很普通,比如:

  • 你的操作系统(Windows, macOS, Android...)
  • 屏幕分辨率(1920x1080...)
  • 浏览器版本(Chrome 120...)
  • 安装的字体列表
  • 时区和语言设置
  • 显卡型号和电池状态

神奇之处在于组合: 当把这几十甚至上百个特征组合在一起时,它们就形成了一个极高精度的“特征值”。据研究,对于绝大多数互联网用户来说,这个组合是全球唯一

它是如何工作的?

为了生成这个指纹,追踪者使用了一些非常巧妙的技术:

1. Canvas 指纹(画布指纹)

这是最著名的指纹技术。网站会命令你的浏览器在后台偷偷绘制一张复杂的隐藏图片(包含文字和图形)。

由于不同的操作系统、显卡驱动、字体渲染引擎处理图像的方式有微小的像素级差异,每台电脑画出来的图在哈希值上是完全不同的。

2. AudioContext 指纹(音频指纹)

原理类似 Canvas。网站会让浏览器生成一段人耳听不到的音频信号。不同的声卡和音频驱动处理信号的方式不同,生成的数字指纹也就不同

3. 字体枚举

你安装了 Photoshop?或者安装了一套冷门的编程字体?网站可以通过脚本检测你系统里安装了哪些字体。安装的字体越独特,你的指纹辨识度就越高

为什么它比 Cookies 更可怕?

特性 Cookies (传统的追踪) 浏览器指纹 (新型追踪)
存储位置 你的电脑硬盘里 不需要存储,实时计算
用户控制 你可以随时一键删除 你无法删除,它是你设备的属性
隐身模式 无效(隐身模式不读旧Cookies) 依然有效(隐身模式下设备配置不变)
持久性 易丢失 极难改变,甚至跨浏览器追踪

这就好比:

  • Cookies 就像是进门时发给你的一张胸牌,你把它扔了,保安就不认识你了
  • 浏览器指纹 就像是保安记住了你的身高、长相、穿衣风格和走路姿势。这和你戴不戴胸牌没有任何关系

主要用途

浏览器指纹技术在现代网络中有多种用途,主要可以分为追踪识别安全防护两大类:

追踪与用户画像

  • 跨网站追踪用户:广告网络会在不同站点嵌入脚本,通过指纹标记“同一访客”,进而在B站推送你在A站浏览过的商品或内容,实现“精准广告”。
  • 绘制用户画像:即使未登录,只要指纹相同,网站就能合并浏览记录、点击路径、停留时长等数据,推测兴趣偏好、消费水平,再反向优化推荐算法。
  • “无Cookie” 追踪:指纹在无痕/隐私模式下依旧存在,且无法像Cookie那样一键清空,因此被视为更顽固的追踪手段。

反欺诈与风控

  • 账号安全:银行、支付、社交平台把指纹作为“设备信任度”指标。若登录指纹突然大变(新系统、虚拟机、海外设备),可触发二次验证或冻结交易。
  • 薅羊毛/作弊识别:投票、抽奖、优惠券领取页面用指纹判断“是否同一设备反复参与”,防止批量注册、刷单。
  • 广告反欺诈:验证广告点击是否来自真实浏览器,而非自动化脚本或虚假流量农场。

多账号管理

  • 跨境电商/社媒运营:卖家或营销人员需要在一台电脑同时登录几十个Amazon、eBay、Facebook、TikTok账号。若用普通浏览器,平台会因指纹相同判定“关联店铺”并封号。指纹浏览器可为每个账号伪造独立的设备环境(分辨率、字体、Canvas、WebGL、MAC地址、IP等),实现“物理级隔离”。
  • 数据抓取与测试:爬虫或自动化测试脚本通过切换指纹模拟不同真实用户,降低被目标站点封锁的概率。

合规与隐私保护

  • 反指纹追踪:隐私插件或“高级指纹保护”功能会故意把Canvas、音频、WebGL结果做随机噪声,或统一返回常见值,削弱指纹的唯一性,减少被跨站跟踪。

React Native 图片机制深度解析:设计哲学、性能优化与避坑指南

2025年12月10日 14:02

1. 核心哲学:体验优先于便利 (UX > DX)

React Native 在图片处理上与 Web 浏览器有着本质的不同。RN 宁愿让开发者多写一点代码,也要保证用户体验的极致顺滑。

  • 拒绝“布局抖动” (No Layout Shift):

    • Web 痛点: 浏览器加载图片时默认是 0x0,下载完瞬间撑开,导致页面跳动。
    • RN 策略: 强制要求开发者预先指定远程图片的宽高。这意味着图片加载前位置就已留好,加载后只是填空,界面纹丝不动。
  • 例外: 本地静态图片(require('./icon.png'))因在编译时已知尺寸,可自动推断宽高。

2. 底层性能:为了不卡顿 (Performance)

RN 在幕后做了大量工作,确保即使加载高清大图,App 的 UI 线程(Main Thread)也不会阻塞。

  • 后台解码 (Off-thread Decoding):

    • 图片解码(JPEG/PNG转像素)非常耗时。RN 将其移至后台线程执行,解码完成后再送回主线程显示。这避免了 Web 常见的“滚动时因加载图片导致的掉帧”。
  • iOS 智能选图 (The 50% Rule):

    • 从相册加载图片时,RN 不会无脑加载原图(太费内存),也不会选太小的图(太糊)。
    • 它会自动寻找第一张比显示区域大 50% 以上的缩略图版本。既保证了清晰度(避免拉伸模糊),又最大程度节省了内存。

3. 架构设计:面向未来的扩展性 (Extensibility)

  • Source 是对象而非字符串:

    • <Image source={{uri: '...'}} /> 的设计看似繁琐,实则为了扩展。
    • 它允许携带元数据(Metadata),并为未来特性(如雪碧图裁剪 crop 属性)预留了接口,保证了代码的向后兼容性。

4. iOS 实战:避坑与进阶调优 (iOS Specifics)

针对 iOS 平台,有一些特殊的限制和高级配置需要注意:

  • 圆角样式的坑:

    • 问题: borderTopLeftRadius 等单独圆角属性在 iOS <Image> 上往往不生效。
    • 解法: 使用“外部裁剪法”。将 Image 包裹在 <View> 中,在 View 上设置圆角并加上 overflow: 'hidden'
  • 手动控制缓存 (Cache Limits):

    • 能力: 可以在 AppDelegate.m 中调用 RCTSetImageCacheLimits
    • 参数: 可以设定“单张图片最大体积”(超过不缓存)和“总缓存池上限”(超过踢掉旧图),从而在内存紧张或图片密集的 App 中找到性能平衡点。

总结

React Native 的 Image 组件不仅仅是一个简单的 UI 元素,它是一个高度封装的、自带性能优化策略的子系统。理解这些机制,能帮你写出即便在数千张图片的瀑布流中依然如丝般顺滑的 App。

玩家口中「凉了」的国民游戏,在工作日晚上排起长队

2025年12月10日 14:00

文丨果脯

「为什么这游戏要排队啊?」

近期我的不少朋友登上《英雄联盟》,都不禁会发出一句相同的感慨。

毕竟《英雄联盟》用户流失基本成了玩家们公认的事实,毕竟游戏除了赛事高峰期,很少会出现排队的情况,甚至很多时候,哪怕是白银、黄金等常见段位,玩家开一把排位赛都得花几分钟时间来匹配对手。作为一款已经运营16年的游戏,《英雄联盟》正不可避免地慢慢变成玩家回忆中的过去时。

不可否认,它曾影响了一整代人的游戏体验,并在中文互联网构建出了数量庞大的游戏社区群体,其中还不时会诞生出类似「虚空索敌」「YYDS」等破圈梗。哪怕时至今日,它也仍旧是大家耳熟能详的存在,但更多时候,《英雄联盟》已经缺少了让玩家打开游戏的动力——本来应该是这样的。

换谁恐怕都没办法想到,就是这样一款逐渐不温不火的产品,如今连工作日的晚上都开始排起了长达十多分钟的长队。随着玩家数量激增,互联网上的二创内容也开始疯狂增加。

而这一切,都只来源于游戏近期更新的新模式「海克斯大乱斗」。

现在《英雄联盟》需要排队的情况很少见

不可否认,《英雄联盟》近几年确实迎来了自己的「中年危机」。今年上半年,游戏的全球活跃用户数量出现了持续性下滑,并且核心玩家平均年龄已攀升至28岁。

当主流玩家从开黑大学生成长为普通上班族,游戏自然也难以复刻曾经深夜排位的繁荣。在非高峰时段,现在《英雄联盟》排位赛的匹配时间经常长达三四分钟,跟以往的「秒排」完全没法比。

而持续性的用户流失也并非来源某个单一问题。

比如过去开一把游戏超过30分钟是常态,像同类头部MOBA产品《Dota 2》单局时长打满1小时也不足为奇。而现在大多主流MOBA产品更加突出快节奏,尽可能将单局时长控制在20分钟左右。

为了顺应市场趋势,《英雄联盟》不仅将最早启动投降投票时间从20分钟改成了15分钟,今年更是取消了提前投降必须全员同意的设计,改成了和常规投降一样的多数决规则。后续推出的许多新玩法,也尽可能把对局时间维持在20分钟甚至是15分钟内。

15投机制最早出现在2018年

而从《英雄联盟》的核心属性看,MOBA产品的上升瓶颈相对固定,很难像其他类型游戏那样做玩法迭代和融合。

过去几年,《英雄联盟》曾尝试过「神话装备系统」「光明哨兵主题版本」「galgame型分支叙事」「新的模式玩法」等多样化的运营内容,像无限火力、噩梦人机,以及无尽狂潮,都取得了还算不错的成绩。其中,无尽狂潮模式引入了wasd键盘移动模式,一定程度上像是不久后游戏新版操作方式的提前尝试,用以满足一部分新生代玩家的游玩习惯偏好。

wasd操作模式

游戏之外,电竞也是其不可忽视的一部分。

拳头几乎是全球范围内公认「最懂做电竞游戏」的公司。基于《英雄联盟》积累的经验,公司后续推出的《无畏契约》以相当恐怖的效率就打出了一片市场,并且游戏还能兼顾玩法博弈和观赏性两大重点部分。

电竞比赛不仅每年为《英雄联盟》带来的大量收入,还为游戏创造出每年一次的爆火周期,大幅延长了产品寿命。

像在2018年,社区上不乏退坑《英雄联盟》的声音,直到后续IG一举为LPL(中国赛区)夺下长达8年的首冠,游戏再次爆发出了极其恐怖的热度——比赛结束当晚,国内线上线下都在狂欢,游戏排队人数瞬间突破10万,各个大学宿舍楼更是因为欢呼声从物理意义上震动起来。

哪怕到了现在,社区上仍旧不乏「IG拯救了当年中国《英雄联盟》」的声音。

IG夺冠

类似的火热局面,也曾出现在EDG、FPX夺冠的时候。

只是凡事有利弊。近两年T1持续连冠,国内职业选手也开始出现断层,LPL赛事的关注度也已经出现疲态,按理说或多或少也会影响到国内的《英雄联盟》热度。因此,游戏现在如果开始走下坡路,可能换谁都认为是一个十分合理的情况。

但事实并非如此。

哪怕与《三角洲行动》《无畏契约》这些紧跟时代的现象级爆款同台竞争,《英雄联盟》今年依旧在国内保持着统治地位。在网吧热力榜中,它依旧持续保持在Top 1的位置。

数据来源:顺网科技网吧热力榜

不可否认,运营时间、游戏寿命以及电竞赛事热度确实给《英雄联盟》带来了不少负面影响,但大家可能都不太能注意到,这款产品近几年所呈现的转变趋势与创新能力。

比较明显的就是游戏玩法模式的迭代。

就拿近期《英雄联盟》最火的玩法海克斯大乱斗为例。自这一模式于10月推出后,大量玩家开始回流,让《英雄联盟》成功回到了WeGame周下载榜第一的位置,并且连带着大乱斗陪玩的生意也开始变得火爆起来,游戏也从原来的平平淡淡,变成了连工作日上线都可能需要玩家排队。后续,官方也应玩家要求,把这一限时玩法改成了常驻模式。

网上还因此出现一段调侃:每当《英雄联盟》的热度消退,玩家流失,游戏里就会出现一个拯救产品的玩法。6年前是云顶之弈,而如今则是海克斯大乱斗。

而这一玩法的具体构成,看起来似乎也很简单:单纯是在游戏原有的极地大乱斗基础上,加入了一些带有Roguelike效果的海克斯符文。只是这背后对应的,却并不是拳头的一次偶然性成功,而是他们经历数年明确的尝试与积累的结果。

海克斯大乱斗

一方面,海克斯大乱斗的基底来源于游戏多年迭代积累的极地大乱斗。多年来,这一模式上线过大量不同程度的调整与修改,并且基本保留了那些广受好评的优化设计。比如在2022年,他们针对大乱斗做出一次大调,主要加入了海克斯传送门和防御塔废墟两大机制。

其中,海克斯传送门允许玩家快速从极地传送到前线,削除了游戏中大量的无意义重生赶路时间,从而加快玩家的战斗节奏。而防御塔废墟则是会随着对战进度推进,改造战场地图,用以丰富玩家之间的战术博弈。而最终基于这两个设计的玩家反馈,海克斯传送门持续沿用至今,成了大乱斗的一大核心设计,防御塔废墟则因为体验不理想被移除。

此外官方也曾围绕地美术做过调整,比较突出的两次更新就是屠夫之桥、灵魂莲华两大核心地图。在这些版本中,他们基本算是重做了两版适配大乱斗的新地图,并陆续加入如幽灵之靴、幽魂弯刀等带有特殊机制的专属装备——部分装备经历调整,也加入到了海克斯大乱斗之中。

灵魂莲华

最终被验证不可行或需要持续优化的尝试同样存在。比如在《双城之战2》动画播出期间,他们融合动画内容推出过「进步之桥」,为游戏的优劣势方分别提供不同的玩法加成。只是最终这一玩法遭受大量差评,最终反馈并不理想,所以海克斯大乱斗明显也没有再加入任何相似的设计。

值得一提的还有英雄选择的小调整。它从最初玩家相互「抢英雄」的模式变成了优先自选两到三个英雄,算是一个优化玩家体验的小设计。

图为自定义模式截取

另一方面,海克斯大乱斗的Roguelike元素,其实来源于另一广受欢迎的模式斗魂竞技场。

斗魂竞技场

它是《英雄联盟》最初于2023年推出的2v2v2v2娱乐模式,融合了Roguelike成长元素。和召唤师峡谷不同,它允许玩家通过属性bulid构建出数值或机制足够夸张的英雄玩法。经过3年迭代,它已经构建了一套内容体验丰富有趣、且平衡性足够合理的数值体系。这些内容,基本被1比1搬到了海克斯大乱斗中,比如符文和属性锻造两个核心系统。

只不过由于两个模式的底层对战玩法完全不同,一些符文的数值明显也还没经过足够好的优化调整平衡,用以适配大乱斗的5v5玩法,比如杰斯拿到「一板一眼」后,会呈现出极其恐怖的数值。

这是游戏刚开始杰斯的数值

也就是说,跟云顶之弈类似,哪怕没有海克斯大乱斗,《英雄联盟》其实也会持续推出各种不同的玩法,经过玩家选择和体验进行试错,最后终究能跑出一款足够吸引人、且有趣的内容。

如果换个思路去看,《英雄联盟》如今对应的其实并不是单一的召唤师峡谷5v5玩法,而是兼具了大乱斗、自走棋等多种游戏体验的IP产品。他们遵循的底层逻辑,依旧是做「让玩家觉得足够有趣」的内容,《英雄联盟》自身只是一个启动器——让人不禁想起以前爆火过的「元宇宙」概念。

遵循这一逻辑,游戏的召唤师峡谷模式明显也已经找到了一套适配的运营方法论,即现在常提到的「主题版本」。每年,拳头都会推出一套截然不同的体系玩法,在原来的基础上添砖加瓦,并且会随着世界观突进、IP新增内容呈现出不同的变化。比如今年,他们围绕英雄赵信的故事,推出了灵魂莲华主题活动故事,新英雄芸阿娜、亚恒,以及独特的地图机制Boss厄塔汗。

厄塔汗

而在近期公布的新版本中,他们也将更迭地图机制,推出新装备、分路新机制等内容。在核心玩法不变的情况下,他们希望给予玩家不同的游戏体验,而这些机制沿用到电竞比赛中,往往又能驱使职业选手们不断研究新玩法,丰富观赏性。

其中当然也免不了一些试错,比如过去让人印象最深的一次迈大步尝试,就是2021年的神话版本,它要求玩家遵循特定的路线打造装备,减少了运营策略的可能,因此最终也很快就被官方淘汰。

只是可能也会有人发出质疑:每个活到长线的产品,其实都遵循着类似的内容迭代策略,《英雄联盟》似乎并没有太多值得拿出来讲的特殊点。

比如鹰角《明日方舟》作为不折不扣的二游老产品,他们通过推出「集成战略」等诸多玩法,近两年都陆续取得了还算不错的流水成绩,数个版本收入都创下新高。哪怕在二游大逃杀环境下,《明日方舟》基于这套「玩法至上」的迭代里面,似乎也活得还算不错。

也有很多长线产品,可能如他们一般,引入了Roguelike、UGC等主流趋势的趣味玩法内容,但仍旧没能阻挡住游戏的下滑趋势。

这里所涉及到的问题,其实无非两个——

《英雄联盟》有足够的成本、受众群体,允许他们进行多次、长周期的试错。就像前面所说,拳头并不是从一开始就能端上来令人满意的内容,甚至如果回头去看,他们做过各类PvE、类似《守望先锋》的推车以及不同的Roguelike活动玩法。

但最终真正跑出来的,就只有云顶之弈、斗魂竞技场以及如今的海克斯大乱斗,哪怕就连早期被看好的无限火力、噩梦人机,其实都没能取得类似的成绩。而这三个内容,基本都是他们摸石头过河一步一步积累过来的。

并且他们能适当地顺应时代趋势做内容,并且把原有的玩法不断迭代成熟。如在自走棋兴起的时候,拳头紧跟时代做出了云顶之弈,并借由《英雄联盟》的受众基础发扬光大,而现在玩家注重快节奏、强反馈、重复玩法趣味,那么Roguelike就是不可忽视的一环。

而之后云顶之弈每个赛季新版本,也还会推出独特的机制,哪怕一些核心体系的阵容设计不变,也能迸发出各种各样的玩法内容。

这两套运营逻辑,其实象征着玩家对联机玩法内容始终保留着最终的选择权。如今大多数玩家的电脑上往往装着不止一款游戏,哪怕不玩《英雄联盟》,大概率也不会将其卸载,因为你不知道什么时候朋友之间就突然想要「开一把」。《三角洲行动》《无畏契约》等游戏也是同理。在各类产品兼具的情况下,厂商所需要思考的或许也不再是如何争抢用户,把用户留在自己的产品里,而是开始思考如何做到「玩法至上」。

本文来自“36氪游戏”

NAND成本暴涨,PC厂商压缩SSD配置以防价格失控

2025年12月10日 13:56
内存市场供需失衡状况持续恶化,据供应链透露,由于NAND配额不足、成本暴涨,多家PC/OEM厂商正在重新调整2026年新品内固态硬盘(SSD)规格,以防止设备价格失控飙升。具体措施包括,将标准SSD配置如512GB削减至256GB,1TB型号的容量或将压缩至512GB。(财联社)

猿辅导一个月连发两张 AI 牌:这次把 Agent 交给老师

2025年12月10日 13:53

猿辅导的 AI 节奏明显提速。

继刚刚发布纯 AI 外教产品「斑马口语」后,12 月 1 日,猿辅导再推面向教师的 Agent 工具「飞象老师」,这是一个原生 AI 生成式产品: 教师只需要描述教学创意和想法,就能直接生成可交互的教学动画与游戏化课件。

一个月内连发两款 AI 产品,这种「高频出牌」的信号很直接:

这家以在线课程和题库见长的教育科技集团,正把 AI 的押注从「零散功能」推向「垂直场景的系统化重做」。

「斑马口语」把外教课堂交给 AI,让每一位孩子都有一位专属的 AI 外教。「飞象老师」更激进——chat to APP(对话即应用):让老师用自然语言「做」出课堂级教学产品。

密集的产品节奏背后,猿辅导似乎正在向外界强调新身份:

不只是一家在线教育巨头,而是一家扎根教育场景的 AI 公司。

 

01

「飞象老师」到底是什么?

 

一句话总结: 老师输入一句需求,AI 生成一堂能直接用的互动课。 老师在课堂上打开 就能 用,所以它是个网站, 目前没有 APP

比如输入:

「帮我设计一个球体体积推导的互动演示。」

系统会通过多轮对话,实时生成包含互动 H5 动画、结构化板书设计、随堂习题的全套课件。

这跟上一代教育 AI 很不同,过去更多是「生成教案、出题、润色」。而「飞象老师」的核心能力在于多模态的即时生成——「即时构建课堂应用」。

你以为是在聊天,它其实在搭课程、搭互动、搭节奏。

结果很直接:老师不必学 Flash、GeoGebra。你懂教学、会表达,就能做教学软件。

 

02

体验层冲击:为什么它不像「花活」?

 

从交付看,「飞象老师」不是一个通用模板「套」所有学科。它做的是更难、也更有价值的事: 按学科痛点做深度垂直优化。

比如,数学学科最怕「会背不会懂」。在「飞象老师」里输入「平方差公式几何证明」,系统直接生成可视化推导动画:大正方形拆解、小正方形切除、剩余图形平移拼接,代数公式被还原成清晰且生动的几何过程。

学生看见了「为什么」,而不只是「答案是什么」。

又比如,语文的难点不是「读」,是「进不去」。

输入「生成黛玉进贾府-沉浸式体验」,它会生成交互式剧情:学生以第一视角进入贾府路线,看布局、走情境、触发人物互动,名著从「讲解范本」变成了「体验现场」。

还有,英语的痛点是「脱离真实场景的重复性枯燥」。在「飞象老师」里上传课本截图,场景就能动起来;上传单词表或输入 Unit 名称,就能即时生成超市购物、环游世界等情景小游戏。

这三个例子的共同点很清楚:

它不是「让课件更炫」,而是让教学可交互、可理解、可被学生主动参与 ,这也是它最像「应用级教师 Agent」的地方。

 

03

当教育垂直 Agent「撞车」Gemini 3.0

 

非常有意思的是,就在「飞象老师」发布前后脚,Google 发布的 Gemini 3.0 也展示了类似能力。社交网络上,大量硬核玩家用 Gemini 3.0「手搓」应用。

这反而从侧面说明一件事: 猿辅导在技术路径的选择上是非常超前的。他们不仅押中了「多模态+互动生成」这个大方向,在产品落地上,甚至比 Google 的通用模型应用得更早、更深。

「既然 Gemini 3.0 也能做,为什么我们需要一个专门的「飞象老师」?」

这话听着耳熟——「通用大模型都这么强了,为什么还需要专业级 Agent?」从 Cursor 、Harvey 开始,每当一个垂直领域的 AI 新工具出现,这个问题就得来一遍。

答案是「可规模化」:通用模型能做 demo,垂直 Agent 要解决日常使用。全民手搓应用可以嗨一嗨,但「看起来好玩」和「上课能用」是两码事。

实际体验后我们发现,「飞象老师」把三个关键点做到产品化:

第一,0 门槛。

通用模型能做,但门槛高很难「长期手搓」。 教师的真实时间和技能结构,更不允许他们每天当「半个产品经理+半个提示词工程师」。

「飞象老师」把这些复杂度压在后台,老师看到的只有「我说需求,你给结果」的对话界面。

第二,输出「教法」,不只素材。

它内置教师 workflow:从情境引入、概念讲解、提问脚手架、随堂检测,AI 输出的是一套成体系的教学组织方式,而不仅仅是「太炸裂了」。

第三,知识库护栏。

教育不允许「差不多」。

「飞象老师」调用猿辅导的「超级知识库」,十几年积累的题库、知识图谱、教法体系,把学段匹配、考点引用、难度边界拉回可控范围, 这是垂直 Agent 的关键护城河。

 

04

一个「更大的问题」冒出来

 

过去两年,所有垂直行业都在等一个答案:

「大模型的能力进化,最终会把行业重做成什么样?」

创业团队冲得快,但容易昙花一现;通用模型公司技术强,但容易「拿着锤子找钉子」;行业巨头懂场景、能规模化,但必须证明: 能把 AI 做成大规模、日常、高频的应用级产品

教育作为「超级场景」,是包括 OpenAI 在内的所有大模型公司,都视为 AI 应用排名前三的领域;教育学习,也是 AI 时代创业者必看的机会。

所以,大模型的能力进化,最终会把教育重做成什么样?

「飞象老师」更像是猿辅导给出的一种明确态度:

在教育这个强专业、强准确性、强场景约束的行业里,AI 的下一步绝不只是简单 的 效率工具, 而 是彻底升级课堂形态,革新学习范式。

 

05

结语

 

从「斑马口语」到「飞象老师」,猿辅导的 AI 版图不会止步。初创在冲刺,通用大模型在下探,追击只会更快、更凶。

从历史周期看, 最容易跑出「大规模、日常、高频应用级产品」的,往往就是教育。

场景重、需求真、决策链清晰,足以把「概念」逼成「日常」。

当 AI 进入新的技术纪元,答案正在逼近:

教育行业,会成为最先跑出「应用级 Agent」的第一批样板吗?

跨越比特与原子,小鹏汽车下一个十年的「物理 AI」路线图

2025年12月10日 13:50

整理|汤一涛

编辑| 靖宇

 

在极客公园创新大会 2026 的舞台中央,小鹏汽车董事长兼 CEO 何小鹏发表了一场极具行业洞察的年度演讲。

何小鹏在极客公园创新大会 2026 上发表演讲|图片来源:极客公园

 

作为穿越了互联网、移动互联网到人工智能周期的连续创业者,何小鹏此次的目光不再局限于单一的交通工具。他敏锐地指出, 科技界正在经历从「数字能源」向「物理 AI」的范式转移 。从自动驾驶的端到端大模型,到人形机器人 IRON,再到打破维度的陆地航母,小鹏汽车正在构建一个打通比特世界与原子世界的全新生态。

何小鹏认为,未来十年, 我们将不再仅仅讨论规模效应或网络效应,而是迎来一个属于「智能体效应」的全新时代

以下是何小鹏在极客公园创新大会 2026 上关于物理 AI、具身智能以及未来出行图景的演讲实录,由极客公园整理:

回顾过去二十多年的创业历程,我们见证了数字世界的爆发——从计算机软件、互联网、移动互联网到如今的 AI 浪潮。这背后有一个非常重要的底层逻辑: 能源与引擎的组合形式决定了科技浪潮的方向。

数字世界和物理世界的融合,将催生物理 AI|图片来源:小鹏汽车

在物理世界,19 世纪的蒸汽机、20 世纪的石油与内燃机,分别催生了火车、汽车和飞机的诞生,深刻改变了人类的生活。而在数字世界,同样存在「能源」与「引擎」。今天,数据与算力的结合构成了新型能源,而芯片与交互界面(GUI)则是利用这种能源的新型引擎。

能源的转变推动了动力形式的转变,而能源加动力形式的转变,又改变了所有人的生活。在下一个数十年里边,如果我们有一天把核聚变做的非常小型,放到心脏里面,也许新一代的超人就会出现。

所以能源+动力形式的改变推动了这个世界上科技的浪潮。换个角度,我们相信下一个十年到三十年里,很有可能出现一种全新的创业方式: 物理如何跟 AI 耦合

 

01

从网络效应到「智能体效应」

 

那么在物理世界跟数字世界,我们如何去把自己的壁垒提高,如何构建自己的最强大的能力?在这里面做一个分析。

在商业与技术的演进中,不同的时代遵循不同的效应:

  • 物理世界 遵循「规模效应」:规模越大,成本越低,竞争力越强。
  • 互联网世界 遵循「网络效应」(Network Effect):产品对用户的价值取决于使用该产品的其他用户的数量,连接的节点越多,价值呈指数级增长。

我们相信,随着物理 AI 出现之后,下一个世界物理和数字这两个世界开始融合,我们会出现一个全新的效应—— 智能体效应 。在这个效应里面所有的东西都会不一样。

比如说我们以前会讨论,汽车领域将来会不会出现赢者通吃的结构?所有做汽车的人都不认同,因为汽车是个规模效应,一定是多定位、多区域的多头并存。换到互联网世界,就出现了赢者通吃的情况。

智能体效应会不会出现新的效应,比如说寡头垄断,不知道,但是一定会出现全新的思考逻辑。这跟大家分享两个有趣的观点。

第一个智能体里面的一个表现形式叫 黑洞效应 。AI 会不断吞噬知识、压缩知识,涌现出全新的能力。

在自动驾驶领域,我们已经观察到这种现象:模型开始展现出人类未曾预设的逻辑。例如,车辆在红灯即将变绿时产生的预判性「蠕行」,这并非代码规则所写,而是模型从海量数据中涌现出的智慧。这也是为什么在未来,代码的重要性将让位于数据;也是许多公司开源模型,却绝不开源核心数据的底层逻辑。

黑洞效应:AI 将化为不断吞噬知识的黑洞,不断涌现出全新的知识和能力|图片来源:小鹏汽车

第二我们看到智能体效应里面叫 蚁群效应, 这是一种去中心化的高适应性智慧。蚂蚁搬运食物,个体在路上看到一只虫子,它不会回到蚁巢向蚁后汇报,让蚁后派蚂蚁小队把虫子搬走;而是会跟附近的蚂蚁形成近场的网络效应,附近的蚂蚁越多,它的 power 越强。

个体之间可以通过近场网络通讯,通过局部互动涌现出群体智慧。附近的「蚂蚁」(智能体)越多,系统的鲁棒性和适应性越强。未来的物理智能体将具备独立的感知、思考、推理、控制和决策能力,大家也会看到一个全新的效应会出现。

蚁群效应:非中心化调度的近场网络效应,实现统一、高效、自适应的集体行动|图片来源:小鹏汽车

新的效应一定有巨大新的机会,这里举两个小鹏汽车在做的例子。

为什么在过去的几十年里,无论是家电、手机还是传统汽车,都难以形成真正的「网络效应」?

原因有二:一是缺乏足够的规模;二是缺乏自主规划的能力,只是工具,产生不了自身的内容。但在新的 AI 时代,情况发生了改变。在这个过程中,人类的角色将从劳动的「生产者」转变为智能的「监管者」。这种变化也将在小鹏的 Robotaxi 、Robo 车型以及未来的人形机器人上得到体现。

所以下一个十年,我们极有可能见证一种全新形态的巨型企业诞生。回顾商业历史,过去数十年甚至上百年的大型公司,其架构往往是线性的——「十万名员工、十万个工具」的物理堆叠。而在最近二十年的互联网时代,服务器成为了新的杠杆,企业通过「人+服务器」的模式实现了规模复利的效率提升。

所有企业在物理 AI 的新十年,都将经历颠覆性的生产力变革

在下一代,这个变化可能会更剧烈。我们将看到「十万名员工」叠加「百倍数量的智能体(Agent)」,以及充足的算力资源。这意味着企业将进入一个全新的生产力维度,生产关系也将发生本质的跃迁: 生产协作不再局限于「人与人」之间,而是演进为「人与智能体」、「智能体与智能体」以及「人与人」并存的复合协作网络。

要怎么去迎接这种变化,小鹏汽车的思考逻辑是,通过自研算力的芯片、自研操作系统以及物理世界运动的模型,构建基于物理 AI 的全栈自研能力。在这个基础上,我们又孵化出了 Robotaxi、飞行汽车等新形态。AI 大模型为物理 AI 提供认知与理解能力,具身载体提供与真实世界交互执行的能力。

 

02

重构自动驾驶——超越语言(Language),

走向行动(Action)

 

大家知道,小鹏是非常早就在做自动驾驶的一家整车厂。过去时间里,我们一直看到一个问题:为什么无论用规则算法还是小模型,都难以突破 L2 级辅助驾驶的瓶颈?

路德维希・维特根斯坦有一句名言(Ludwig Wittgenstein):「语言即世界。」我们尝试用人类的语言去归纳这个世界,写出很多的规则。但是为什么语言就是我们的世界?为什么仅仅用语言来束缚跟框架?

举个例子,小朋友们想学游泳,他可以看书学习理论,也可以去水里亲自学一下,哪一个有效?很多时候,人类习得知识和技能并非是通过语言,而是感知。

人类用语言归纳世界,但一个人在自我学习的领域里面,有很多时候是不能通过语言去学习的。举个例子,小朋友们想学游泳,他可以看书学习理论,也可以去水里亲自学一下,哪一个有效?很多时候,人类习得知识和技能并非是通过语言,而是感知。

所以语言只是人类归纳世界的一种方式。今天我们大部分的大模型都叫大语言模型。这意味着它们可能并不是这个世界上最有效率、最综合、最全面的模型,因为它是人类把这个世界高度抽象和归纳之后形成的模型。

为了实现真正的 L4 甚至 L5 级自动驾驶,我们必须跳出「语言」的框架。小鹏的 第二代 VLA 选择跳过了语言框架,直接通过视频(Video)结合语言(Language),最终输出为行动(Action)。这种直接从物理世界进行感知、规划、推理并执行的模型,效率和能力将大幅提升。

我们相信,在未来,一个直接从物理世界进行感知和规划、推理、执行的模型,一定会在物理 AI 领域和大语言模型结合。

这也是为什么,我们认为,下一个五年里,大家会看到无人驾驶时代。

我相信在无人驾驶时代,有两种无人驾驶的汽车。一种是没有人开的无人驾驶汽车,也就是 Robotaxi。我相信这种汽车会在下一个五年里会出现,但数量不会非常大。

更多的是有人开的 L4 体验的汽车,小鹏明年会推出三款这样的汽车。虽然仍需驾驶员坐在位子上,但车辆具备全冗余硬件和无接管能力。

今天所有的 L2 都只能在城区开,不能在小区、小路开。2026 年,小鹏会在我们的 Robotaxi 上试运营我们相关的能力,还会推出一个全新的 Robo 汽车,能够规模交付所有用户,可以不限区域,特别是小区内、地下车库内,园区内都能非常好的行驶。

小鹏将在未来推出的产品 Robo|图片来源:小鹏汽车

 

03

具身智能的终极形态——

为何是人形机器人?

 

小鹏在物理 AI 领域的另一大探索是名为「IRON」的全新一代人形机器人。很多人问,为什么是人形?

首先,环境适配性。下一个二十年、三十年全球有很多种机器人,一定有非常多的专有机器人。但我们相信人形机器人是最普遍的,因为这个世界是按照人去设计的。

我们在过去做了七代机器人,有四代是四足机器人。我们做第三代的时候,把四足机器人放在一个开发者的家里去用,提前感知一下四足机器人在家庭场景里有没有用。我们发现了无数问题。如果一个人走到床头柜旁,可以轻松原地转身;但对于四足机器人而言,在狭窄空间内原地掉头的难度非常高。

我想用这个小案例说明,如果你想让一个机器人更容易适应于这个社会,人形是非常重要的,因为这个社会都是为了我们人去思考、设计、使用的。

第二点是数据获取。只有把机器人做成人形,才能直接利用海量的人类行为数据,来对机器人进行训练。如果做一个专有机器人,要获得海量数据是非常困难的。

第三点是工具使用。很多人说可以把机器人做成跟一个工具的嵌入合体,它当然更好,我同意。但是这个世界上有 100 万种工具为人而设计去使用的,人形机器人可以最大程度适应这些工具。这跟机器人只有一个工具或者少数几种工具的使用权利相比,有非常大的不同。

我今天还想跟大家分享一下小鹏机器人走猫步这件事。

小鹏 IRON 为什么能走猫步?核心是硬件的设计。我们深入研究人体解剖学,增加了颈部和肩部关节,特别是在腰部设计了五个关节。只有拥有像人一样的肌体,才可能从物理层面还原人的体态。

小鹏 IRON 机器人在之前的发布会上引起了轰动|图片来源:小鹏汽车

 

如何从过去的模仿和简单的记录,变成真正的泛化、有重映射的逻辑,机器人才能进入到人类真实的步态。

目前的机器人行业大多处于第一代的阶段,表现力很强,但是需要提前录制。

从第一代进化到第二代,能够在不同的状态下比较快速和自然地切换不同的动作。

今天做的比较好的大多处于「1.5 代」阶段:能走和跑,但是很难干其他事情。换个角度说,绝大部分是半身运动,不是全身运动。

但是真正要做得好的是全新的泛化性最重要一代,我们自己内部叫零重力的控制体态:让机器人全身 70-80 个关节,在模拟无重力的状态下实现真实的协同运动。再在上面加上运控的生成式运动规划,才有可能在将来量产的机器人里面达到人的所有姿态和形式。只有攻克了这一难关,量产机型才能真正具备人类的姿态灵活性。

第三代人形机器人的特点是泛化性强,具备对全新的动作零样本迁移的能力|图片来源:小鹏汽车

小鹏汽车正在努力,希望在明年量产下一代的运动控制。

一个机器人体系里,需要有所有软件控制硬件的能力,而硬件设计需要足够的生产制造能力,这是最重要的。

小鹏 2025 年的研发投入预计接近 110 亿元人民币。我们会把汽车与 AI 领域的研发能力,迁移应用到机器人研发中;未来我们在机器人研发上的团队规模,也可能从千人级别逐步扩充到万人级别,覆盖软件、硬件、算力、嵌入式电子电器、线束等全链条技术领域。

我们认为,未来的汽车公司,本质上也会是机器人公司,这正是我们对行业发展的期待。

小鹏人形机器人 IRON,与 AI 汽车技术、制造和商业同源

与依赖 WiFi 连接云端的机器人不同,小鹏坚持端侧算力。IRON 机器人搭载 3 颗自研图灵芯片,拥有 2250 TOPS 的有效算力,并运行多个操作系统,包括 VLT、VLA、VLM 实现一个机器人进入高阶的能力。

关于落地场景,在中国和在欧美不一样,在欧美我会选择工业,在中国我会选择商业。至于进入家庭,还需要等待几年。

除了陆地,我们也在探索天空。小鹏汽车做了 12 年的低空飞行,现在向大家介绍一下我们的两大飞行体系。

明年,小鹏会推出第一个分体式飞行汽车——「陆地航母」。它创新性地解决了飞行器的存储、运输和补能问题:将飞机折叠收纳于汽车尾箱,随走随停。但带来的问题是只能飞 20 分钟以内,所以换个角度,它主要为了旅游观光。但是我们相信,将来我们会做出长续航版本。

另一个是垂直起降电动飞机 A868,它是纯飞机的形式,能够满足多人长航程高效出行。

小鹏汇天两大飞行体系:「陆地航母」满足个人低空飞行体验;「A868」实现多人长航程高效出行|图片来源:小鹏汽车

很多人都开过车,但极少人开过飞机。我相信下一个十年会有越来越多人开过真正的飞机。

这就是小鹏在新的十年里面我们正在探索的事情:如何在物理 AI 世界探索未来的出行;如何在全球化里做一个科技平权的具身智能公司。

相信下一个十年里,我们会和大家一起看到在 AI 的驱动下涌现出更多科技变革,让我们每个人的生活都会更加美好。

谢谢大家。

小米汽车公布燃油液位显示方法专利

2025年12月10日 13:44
36氪获悉,爱企查App显示,小米汽车科技有限公司申请的“燃油的液位显示方法、装置、车辆、介质及程序产品”专利公布。摘要显示,该专利包括:确定交通工具的油箱内燃油的第一显示液位值,响应于燃油的第一显示液位值与燃油的第一采集液位值之间的第一液位差值大于预设差值,对燃油的显示液位值进行至少两次调整,使得燃油的显示液位值逐渐变化为与燃油的采集液位值之间的差值小于预设差值,减少油量跳变,使得驾驶员能够平稳的观察燃油液位变化,避免燃油液位跳变影响驾驶员的驾驶体验。
❌
❌