普通视图
上海前滩太古里扩建,两座超甲级办公楼落地
韩国电商Coupang首席执行官因数据泄露事件辞职
中欧基金杜厚良:2026年AI应用、新软件及物理世界应用潜力或成“灰犀牛”
ANSI-Escapes 命令行光标操作完全指南
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转义序列的输出时:
- 识别
ESC字符作为转义序列的开始 - 解析
[之后的参数(以分号分隔) - 执行参数对应的命令操作
- 转义序列不会显示在终端上,只会触发相应的控制行为
1.3 光标定位原理
- 终端屏幕被划分为行列网格,通常从左上角(0,0)或(1,1)开始计数
- 光标移动命令通过指定行列位置或相对偏移来控制光标位置
- 不同终端可能有细微差异,但基本遵循ANSI标准
2. ANSI-Escapes 工具介绍
ansi-escapes是一个Node.js库,它提供了一组简洁的API,用于生成各种ANSI转义序列,简化了在命令行应用中控制光标、清除屏幕、操作终端等复杂功能的实现。
2.1 主要功能分类
- 光标控制:移动、定位、保存/恢复位置、隐藏/显示
- 屏幕操作:清除行、清除屏幕、滚动
- 终端控制:切换屏幕、设置工作目录
- 实用功能:创建链接、显示图片、发出蜂鸣
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库内置了跨平台兼容性处理,确保在不同终端和操作系统上都能正常工作:
-
终端类型检测:
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); -
Windows特殊处理:
const isOldWindows = () => { // 检测旧版Windows系统并返回不同的清屏命令 }; -
Tmux支持:
const wrapOsc = sequence => { if (isTmux) { // Tmux需要特殊的OSC序列包装 return '\u001BPtmux;' + sequence.replaceAll('\u001B', '\u001B\u001B') + '\u001B\\'; } return sequence; };
5. 最佳实践
-
资源清理:使用
cursorShow确保程序退出时光标可见 - 异常处理:在异步操作中处理可能的错误
- 用户体验:在长时间操作中隐藏光标,完成后显示
- 兼容性检查:对于高级功能,检查终端是否支持
- 性能考量:批量执行操作,减少I/O调用
6. 总结
ansi-escapes是一个强大的库,它将复杂的ANSI转义序列封装为简洁易用的API,极大地简化了命令行应用中光标控制、屏幕操作等功能的实现。通过本文的介绍,你应该已经掌握了其核心功能和使用方法。
无论是创建简单的命令行工具还是复杂的交互式终端应用,ansi-escapes都能为你提供强大的支持,帮助你打造出更加专业和友好的用户体验。
数据标注平台重磅上线 | 标注赚现金 低门槛真收益
![]()
- 你是否想亲身体验最前沿的 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 活跃经历者优先
🚀你的专家任务
标注实验
对代码片段、日志、技术文档等进行精准标注
具体职责
- 按照项目制定的标注规范,对指定数据(文本、代码片段、日志、技术文档等)进行准确标注
- 识别并修正数据中存在的歧义、错误或不一致之处
- 对复杂样本给出专业判断,确保标注结果的准确性与一致性
质量把控
互审他人成果,保障数据纯度
具体职责
- 参与标注标准的制定与完善,提出改进意见
- 执行专家互审机制,对其他标注结果进行审核和反馈
- 结合实际经验,对标注样本的合理性和业务适配度进行评估
知识贡献
沉淀最佳实践,打造可复用的知识宝库
具体职责
- 将个人专业知识转化为标注规范、最佳实践或案例,供团队参考
- 在遇到疑难问题时,作为专家提供判定依据,形成可复用的知识库
- 协助项目组优化任务分配、质量监控和流程设计
☎️ 社群交流
参加活动的掘友一定要入群:
- 重要消息不错过
- 大家互相鼓励
- 有问题可以在群内咨询
![]()
⁉️ 常见问题 FAQ
Q1:没有标注经验可以参与吗?
我们需要你具备扎实的编程基础即可快速上手,所以需要你有一定的编程经验。
Q2: 每天需要投入多少时间?
完全灵活,可以根据自己的时间安排参与,充分利用碎片时间。
Q3: 如何保证收益?
任务明码标价,多劳多得,平台提供清晰的计价规则和结算流程。
Q4: 非程序员可以参与吗?
可以。平台同时提供非技术类题目,欢迎 PM、QA 等岗位同学参与。
美团AI转向,前字节视觉模型AI平台负责人潘欣加入
美团AI转向,前字节视觉模型AI平台负责人潘欣加入|智能涌现独家
文|邓咏仪
编辑|苏建勋 杨轩
《智能涌现》从多个信息源独家获悉,前闪极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 的“似是而非”
很多从 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行为较强,虽新版本有改善,但点击判定依然严格遵循父级区域。
-
注: 视觉上,Android 默认
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',
},
});
为什么?
- 性能: 系统可以将这些样式对象 ID 化并缓存,避免每次渲染组件时都重新创建新的对象。
-
验证: 它会在开发阶段检查你的属性名是否合法(比如如果你写了
background-color,它会直接报错提醒你改成backgroundColor)。
总结
当你开始在 React Native 中写样式时,请记住:
- ❌ 不要用 Kebab-case (
font-size),要用 CamelCase (fontSize)。 - ❌ 不要加
px单位,直接写数字。 - ❌ 不要指望样式自动继承(Text 组件内的嵌套除外)。
- ⚠️ 默认布局是 纵向 (Column) 的。
- ⚠️ 所有的边框、阴影、圆角,在 iOS 和 Android 上可能表现不一致,多真机测试。
深成指拉升翻红,早盘一度跌超1%
隐形追踪者:当你删除了 Cookies,谁还在看着你?——揭秘浏览器指纹
韭菜们是否经历过这样的诡异时刻:你在某个购物网站搜索了一双球鞋,仅仅过了一分钟,当你打开新闻网站或社交媒体时,那双球鞋的广告就出现在了显眼的位置。
通常,我们会把这归咎于 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 图片机制深度解析:设计哲学、性能优化与避坑指南
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。
谷歌在印度推出Google AI Plus服务,月费399卢比
玩家口中「凉了」的国民游戏,在工作日晚上排起长队
文丨果脯
「为什么这游戏要排队啊?」
近期我的不少朋友登上《英雄联盟》,都不禁会发出一句相同的感慨。
毕竟《英雄联盟》用户流失基本成了玩家们公认的事实,毕竟游戏除了赛事高峰期,很少会出现排队的情况,甚至很多时候,哪怕是白银、黄金等常见段位,玩家开一把排位赛都得花几分钟时间来匹配对手。作为一款已经运营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配置以防价格失控
猿辅导一个月连发两张 AI 牌:这次把 Agent 交给老师
猿辅导的 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」的第一批样板吗?
连卡佛成都IFS门店将于2026年2月28日停业
跨越比特与原子,小鹏汽车下一个十年的「物理 AI」路线图
整理|汤一涛
编辑| 靖宇
在极客公园创新大会 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 的驱动下涌现出更多科技变革,让我们每个人的生活都会更加美好。
谢谢大家。