普通视图
香农芯创:一季度净利同比预增6715%-8747%,企业级存储产品价格持续上涨
中科曙光:2026年第一季度净利润2.25亿元,同比增长20.88%
谷歌发布AI心理健康支持更新
西部矿业:控股股东一致行动人西矿资产拟增持1.1%-2%股份
龙净环保:拟与亿纬锂能合资投建60GWh储能电池工厂
字节/腾讯内部流出!Claude Code 2026王炸玩法!效率暴涨10倍
还在把 Claude 当“高级代码抄写员”?
让它写个函数、改个 bug,一问一答像聊天?
大错特错! 2026 年的 Claude Code 早已进化成自主 AI 开发智能体——
它能自己读项目、自己规划、自己写代码、自己跑测试、自己修 bug,甚至直接操控你的电脑完成全流程开发!
真实案例:
字节某团队用 Claude Code 的 Subagents(多智能体) 功能,30 分钟交付一个带用户认证的完整博客系统;
腾讯某工程师靠 Computer Use(电脑直控),让 AI 自动部署项目、复现并修复 UI Bug,全程无需动手。
今天这篇,把 Claude Code 2026 最强玩法、最新功能、隐藏技巧、实战避坑 一次性讲透,看完直接从新手变大神!
一、先看效果:以前累死,现在躺赢
| 场景 | 旧方式 | Claude Code 新方式 |
|---|---|---|
| 开新对话 | 重复解释项目架构、规范 | Kairos 长期记忆自动加载上下文 |
| 部署项目 | 手动敲命令、点 Vercel | Computer Use 自动操作 GUI 完成 |
| 复杂开发 | 一人单干,耗时一天 | Subagents 派出 AI 团队并行开发 |
| 关机后 | 任务中断 | /schedule 云端继续跑 |
核心价值:
从“人写代码” → “人定目标,AI 自主完成全流程”
二、2026 三大王炸功能(官方 3 月刚上线)
1. Computer Use:AI 直接操控你的 macOS 电脑
这是 AI 编程的革命性突破!
Claude 不再局限于代码文本,而是像人一样操作系统:
- ✅ 自动打开终端、执行
npm install - ✅ 截图识别报错弹窗、日志
- ✅ 点击按钮、填写表单、操作 GUI 工具
- ✅ 完整 Debug 循环:运行→报错→修改→再运行
实战场景:
“帮我部署这个 React 项目到 Vercel”
→ Claude 自动登录 Vercel → 构建 → 部署 → 返回结果
全程你只需要看着!
注意:目前仅支持 macOS + Pro/Max 订阅,需授权安全目录。
2. Subagents:召唤你的 AI 开发团队
一个 Claude 不够用?直接派多个分身并行工作!
- 前端组:开发页面、写样式
- 后端组:设计 API、写逻辑
- 测试组:编写用例、跑测试
- 安全组:审查漏洞、提建议
效率提升:日常开发 3-5 倍,复杂项目 10 倍+!
3. Kairos 长期记忆:AI 永远记住你的项目
解决“金鱼记忆”痛点——跨会话永久记忆 + 自动整理。
启用方式:
在项目根目录创建 CLAUDE.md,Claude 自动读取并永久记忆。
# 项目规范(示例)
- 技术栈:React 18 + TypeScript
- 代码规范:ESLint + Prettier
- 命名:小驼峰,组件名大写开头
- 禁止:直接修改 src/legacy 目录
下次打开,无需重复解释任何信息!
三、硬核对比:为什么 Claude Code 是 2026 最强?
SWE-bench 权威数据(复杂任务通过率)
- Claude Opus 4.6:80.8%(行业第一)
- GPT-5.2:80.0%
- Cursor(GPT-5 后端):61.3%
Token 效率:省 5.5 倍成本
同样复杂任务:
- Claude Code:33,000 tokens,零错误
- Cursor:188,000 tokens,多次报错
适用场景对比
| 工具 | 最佳场景 | 劣势 |
|---|---|---|
| Claude Code | 大型项目、全流程开发、跨文件重构 | 界面极简,学习曲线略陡 |
| Cursor | 前端快速开发、实时补全 | 复杂项目理解弱 |
| Copilot | 单行补全、IDE 集成 | 自主能力差 |
结论:
做正经开发,选 Claude Code;简单业务,选 Cursor。
四、90% 人不知道的隐藏技巧
1. 7 个必学斜杠命令
/auto # 全自动模式,AI 自主决策
/debug # 查看会话状态、工具调用
/skill list # 查看所有可用技能
/schedule # 云端定时任务(关机后继续跑)
/context clear # 清理上下文,防“变笨”
/llm # 切换模型(Sonnet/Opus)
2. 提示词黄金公式
角色+目标+规范+示例+约束
【角色】资深全栈,精通 React+TS
【目标】开发登录页,含表单验证
【规范】Tailwind CSS,小驼峰命名
【示例】参考注册页风格
【约束】响应式,支持移动端
3. Computer Use 安全玩法
- 开启
Safe Mode:敏感操作需二次确认 - 用
/allow dir ./my-project限定工作目录 - 重要操作前手动审查 AI 计划
五、新手 3 步速成指南(闭眼操作)
第 1 步:安装+配置
npm install -g @anthropic/claude-code
claude login
claude config set model opus-4.6
claude config set computer_use true
第 2 步:必装 Skills 包
# 添加市场
claude market add official
claude market add https://github.com/affaan-m/everything-claude
# 安装神级包
claude install everything-claude # 60+ 全能技能
claude install kairos-mem # 长期记忆
claude install computer-use-pro # 电脑直控增强
第 3 步:最佳工作流
- 项目根目录创建
CLAUDE.md - 启动 Claude:
claude - 启用技能:
/skill use everything-claude - 下达目标:“帮我分析项目,规划开发计划”
- 确认后执行:
/auto
六、避坑指南:7 个常见错误
| 错误 | 正确做法 |
|---|---|
| 把 Claude 当聊天机器人 | 给完整角色、目标、规范 |
| 不设权限,放任 AI 操作 | 严格限定目录,开安全模式 |
| 上下文爆炸不清理 | 定期 /context clear
|
| 所有任务用最贵模型 | 简单用 Sonnet,复杂用 Opus |
| 忽略 Computer Use 安全 | 仅授权工作目录,手动审查 |
七、2026 选型指南:谁最适合用?
必选 Claude Code,如果你是:
- 后端/全栈,做复杂业务系统
- 架构师,负责大型项目重构
- 技术团队,追求效率最大化
- 独立开发者,想一个人顶一个团队
考虑其他工具,如果你是:
- 纯前端,只做快速页面(选 Cursor)
- 学生/新手,追求简单易用(选 Cursor)
- 仅需单行补全(选 Copilot)
结语:AI 编程已进入 2.0 时代
2026 年,AI 编程不再是“辅助”,而是“主力”。
Claude Code 代表的自主智能体开发模式,正在彻底重构软件开发流程。
今天学会 Claude Code,不是掌握一个工具,而是抢占 AI 时代的开发效率制高点。
各位互联网搭子,要是这篇文章成功引起了你的注意,别犹豫,关注、点赞、评论、分享走一波,让我们把这份默契延续下去,一起在知识的海洋里乘风破浪!
科瑞技术:目前海外半导体和光模块业务收入规模及营收占比较小
大厂都在偷偷用的 Cursor Rules 封装!告别重复 Prompt,AI 编程效率翻倍
还在每天教 AI “失忆实习生”?
每次开新对话都要重讲项目架构、代码规范、命名风格……
而用这套 Rules 配置,Cursor 直接变成“懂你心思的老搭档”——跨会话记忆、自动守规范、团队统一标准,字节/腾讯内部已全面落地!
如果你受够了:
- 写 200 行 Prompt 只为让 AI 记住项目
- 团队成员各自为战,AI 输出风格五花八门
- 代码不规范、漏 error、命名混乱,返工到崩溃
那么,这篇经过 GitHub 5w+ 星验证的 Rules 完全指南,就是为你写的——
不用背命令,装完就忘,自然语言写需求,AI 自动按规矩干活!
一、先看效果:以前累死,现在躺赢
| 场景 | 旧方式 | Rules 新方式 |
|---|---|---|
| 开新对话 | 粘贴 300 行项目背景 | 自动加载上下文 |
| 写 Go 代码 | 手动提醒“加注释、小驼峰” | 自动遵守官方规范 |
| 团队协作 | 每人一套 Prompt,风格乱飞 | 共享规则包,输出统一 |
| 代码审查 | 人工查漏 | 自动 lint + 安全扫描 |
真实收益:
- 每天节省 1~2 小时重复解释
- 代码返工率下降 70%
- 新人上手 AI 编程速度提升 3 倍
二、Rules 是什么?
传统 Prompt = 便利贴
贴一次用一次,新开对话就丢。
Rules = 永久工作手册
写一次,全局生效,团队共享,Git 可管。
核心价值:
让 Cursor 从“聪明但没规矩” → “专业且守纪律”
三、必装三大神级 Rules(附一键安装)
1. everything-cursor(闭眼装)
GitHub ⭐ 52k+,黑客松冠军,60+ 规则覆盖全开发流程。
支持:Go / Java / Python / React / Rust / Next.js
能力:自动格式化、TDD、部署提示、安全检查
命令:/fmt /check /tdd /mem
/rule market add https://github.com/affaan-m/everything-cursor
/rule install everything-cursor@everything-cursor
2. cursor-mem(解决金鱼记忆)
GitHub ⭐ 23k+,跨会话永久记住你的项目!
再也不用重复解释:
- 业务逻辑
- 技术架构
- 特殊约束
/rule market add https://github.com/thedotmack/cursor-mem
/rule install cursor-mem@cursor-mem
3. super-rules(工程化最强)
GitHub ⭐ 28k+,让 AI 像资深工程师一样思考。
TDD 测试驱动
结构化调试
代码审查分级(Minor/Normal/Critical)
/rule market add https://github.com/obra/cursor-super-rules.git
/rule install super-rules@cursor-super-rules
避坑:装了
everything-cursor就别装plan-with-code,指令冲突!
四、Rules 怎么工作?完全无感!
99% 的规则安装后自动生效,无需手动触发!
Cursor 会智能判断:
- 你打开的是 Go 文件 → 自动激活
go-standard - 你在写前端 → 自动加载
react-rules - 你问架构问题 → 启用
arch-rules
你只需要用自然语言描述需求,剩下的交给 Rules!
五、两种安装方式(推荐第一种)
方式一:市场导入(推荐)
# 添加市场(只需一次)
/rule market add https://github.com/getcursor/cursor-rules-official
# 安装规则包
/rule install go-pack@cursor-rules-official
方式二:本地手动(私有/离线场景)
# macOS/Linux
cp -r my-rule ~/.cursor/rules/
六、新手安装优先级(直接抄作业)
| 优先级 | 规则包 | 理由 |
|---|---|---|
| 第一 | everything-cursor | 全能王,闭眼装 |
| 第二 | cursor-mem | 解决记忆痛点 |
| 第三 | super-rules | 提升工程质量 |
| 4 | code-fmt(官方) | 自动格式化 |
| 5 | rule-maker(官方) | 自定义规则 |
七、大厂为什么都在用?
-
字节:用
cursor-mem统一 200+ 微服务上下文 -
腾讯:
super-rules接入 CI,代码审查自动化 -
阿里云:基于
rule-maker生成内部规范包
Rules 不是玩具,而是 AI 编程的“基础设施”
结语:AI 编程,进入“有纪律”时代
当你不再为重复解释焦头烂额,
当你团队的 AI 输出风格高度统一,
你就知道——Rules,是每个专业开发者必须掌握的生产力核弹。
各位互联网搭子,要是这篇文章成功引起了你的注意,别犹豫,关注、点赞、评论、分享走一波,让我们把这份默契延续下去,一起在知识的海洋里乘风破浪!
宏发股份:控股股东拟协议转让5%股份
RainbowKit快速集成多链钱包连接:从“连不上”到丝滑切换的踩坑实录
背景
上个月,我接手了一个新的DeFi聚合器项目的前端重构。这个项目的老前端用的是web3modal + 自定义的链配置,代码已经有点“祖传”的味道了,每次加一条新链都得手动改好几个配置文件,测试起来也麻烦。产品经理提了新需求:要快速支持Arbitrum、Optimism、Polygon等七八条EVM链,并且用户切换链的体验要足够丝滑。
我评估了一下,自己从头用wagmi去搭一套连接组件,虽然灵活,但时间成本太高,光是设计UI和处理好各种边缘情况(比如用户钱包里没添加该链)就得花上好几天。这时候,我想到了RainbowKit——一个基于wagmi构建的、开箱即用的钱包连接套件,UI漂亮,文档说支持多链配置。心想,用它应该能快速搞定,把时间省下来去处理更复杂的业务逻辑。于是,我的“快速集成”之旅开始了,没想到,快是快了,坑也是一个没少踩。
问题分析
一开始,我的思路很简单:照着RainbowKit官方文档的“Getting Started”部分,安装依赖,用getDefaultConfig搞个配置,把RainbowKitProvider和WagmiProvider一套,最后把ConnectButton一扔,不就完事了吗?我最初的核心配置代码是这样的:
import { getDefaultConfig, RainbowKitProvider } from '@rainbow-me/rainbowkit';
import { WagmiProvider } from 'wagmi';
import { mainnet, polygon, optimism, arbitrum } from 'wagmi/chains';
const config = getDefaultConfig({
appName: 'My DeFi App',
projectId: 'YOUR_PROJECT_ID', // 从WalletConnect Cloud拿的
chains: [mainnet, polygon, optimism, arbitrum],
});
function App() {
return (
<WagmiProvider config={config}>
<RainbowKitProvider>
<ConnectButton />
</RainbowKitProvider>
</WagmiProvider>
);
}
跑起来一看,连接MetaMask确实没问题,主网也能用。但当我尝试切换到Polygon时,问题来了。点击切换,钱包弹窗倒是出来了,但要么是提示“未添加网络”,要么是切换后前端的链ID显示还是1(以太坊主网)。控制台里时不时飘过一些关于RPC URL的警告。
我意识到,问题出在链的配置上。getDefaultConfig和从wagmi/chains导入的链定义,其RPC端点可能是公共的,有速率限制或不稳定。而且,对于用户钱包里没有的链,RainbowKit的默认行为可能和我想的不一样。我需要更精细地控制每条链的配置,特别是RPC,并且要处理好钱包添加网络的流程。这不是一个“五分钟集成”就能完事的问题,需要深入配置。
核心实现
第一步:自定义链配置,搞定稳定的RPC
公共RPC是第一个坑。尤其是在测试网或者Polygon这类链上,公共RPC经常不稳定,导致交易发送失败或者读取数据超时。我的解决方案是使用项目自己的Infura或Alchemy节点,如果没有,也可以选择一些更可靠的公共服务商如publicnode.com。
这里有个关键点:RainbowKit(或者说底层的wagmi v2)的链配置对象,需要包含rpcUrls字段,并且要正确区分default和public。我一开始没注意,直接覆盖错了,导致钱包连接内部调用还是走了不稳定的节点。
// chains/customChains.ts
import { Chain } from 'wagmi/chains';
// 自定义Polygon链配置
export const customPolygon: Chain = {
id: 137,
name: 'Polygon',
network: 'matic',
nativeCurrency: {
name: 'MATIC',
symbol: 'MATIC',
decimals: 18,
},
rpcUrls: {
// default 和 public 最好都配置,default用于钱包写操作,public用于前端读操作
default: {
http: ['https://polygon-mainnet.g.alchemy.com/v2/YOUR_API_KEY'], // 你的Alchemy或Infura URL
},
public: {
http: ['https://polygon-rpc.com'], // 一个可靠的公共RPC
},
},
blockExplorers: {
default: { name: 'PolygonScan', url: 'https://polygonscan.com' },
},
contracts: {
multicall3: {
address: '0xca11bde05977b3631167028862be2a173976ca11',
blockCreated: 25770160,
},
},
};
// 同理,配置其他链,比如Arbitrum
export const customArbitrum: Chain = {
id: 42161,
name: 'Arbitrum One',
network: 'arbitrum',
nativeCurrency: {
name: 'Ether',
symbol: 'ETH',
decimals: 18,
},
rpcUrls: {
default: {
http: ['https://arb1.arbitrum.io/rpc'],
},
public: {
http: ['https://arb1.arbitrum.io/rpc'],
},
},
blockExplorers: {
default: { name: 'Arbiscan', url: 'https://arbiscan.io' },
},
contracts: {
multicall3: {
address: '0xca11bde05977b3631167028862be2a173976ca11',
blockCreated: 7654707,
},
},
};
第二步:配置RainbowKit与Wagmi
有了自定义的链配置,接下来就是正确创建wagmi的config对象。这里我放弃了getDefaultConfig这个快捷方法,因为它对配置的控制不够细。我改用createConfig手动配置,这样可以明确指定传输层(transport)和连接器。
注意这个细节:wagmi的createConfig需要为每条链单独创建transport。我在这里又踩了个坑,试图用一个transport给所有链用,结果只有主网能正常工作。
// config/wagmiConfig.ts
import { http, createConfig } from 'wagmi';
import { mainnet } from 'wagmi/chains';
import { customPolygon, customArbitrum, customOptimism } from '../chains/customChains';
import { getDefaultWallets } from '@rainbow-me/rainbowkit';
// 定义项目支持的链数组
const projectChains = [mainnet, customPolygon, customArbitrum, customOptimism] as const;
// 1. 设置钱包连接器 (RainbowKit提供)
const { connectors } = getDefaultWallets({
appName: 'My DeFi Aggregator',
projectId: 'YOUR_WALLETCONNECT_PROJECT_ID', // 必须去WalletConnect Cloud创建项目获取
chains: projectChains,
});
// 2. 创建Wagmi配置
export const config = createConfig({
chains: projectChains,
transports: {
// 为每条链分别创建transport,使用我们自定义的RPC
[mainnet.id]: http(mainnet.rpcUrls.default.http[0]), // 也可以用你的主网节点
[customPolygon.id]: http(customPolygon.rpcUrls.default.http[0]),
[customArbitrum.id]: http(customArbitrum.rpcUrls.default.http[0]),
[customOptimism.id]: http(customOptimism.rpcUrls.default.http[0]),
},
connectors, // 注入RainbowKit生成的连接器
ssr: false, // 如果不是Next.js等SSR框架,可以设为false
});
第三步:集成到React应用中并实现链切换
配置完成后,在应用根组件中注入Provider就相对简单了。但为了让用户能方便地切换链,我不仅使用了ConnectButton(它自带切换网络的下拉菜单),还在应用内部关键位置(比如资产面板顶部)添加了一个手动的链切换器,使用useSwitchChain这个hook。
这里有个用户体验上的坑:如果用户的钱包里没有添加你指定的链,直接调用switchChain会失败。RainbowKit的ConnectButton下拉菜单会自动处理这个情况(触发钱包添加网络),但自己写的切换器需要手动处理。我的做法是捕获错误,然后调用addChain。
// components/ChainSwitcher.tsx
import { useChainId, useSwitchChain, useChains } from 'wagmi';
import { useCallback } from 'react';
export function ChainSwitcher() {
const currentChainId = useChainId();
const { switchChain } = useSwitchChain();
const supportedChains = useChains();
const handleSwitch = useCallback(async (targetChainId: number) => {
if (targetChainId === currentChainId) return;
try {
await switchChain({ chainId: targetChainId });
} catch (error: any) {
// 错误码 4902 是钱包(如MetaMask)提示用户添加网络的标准错误
if (error?.code === 4902) {
// 在实际项目中,这里应该弹出一个更友好的提示,引导用户去ConnectButton那里切换,或者手动触发addChain。
// 因为addChain API需要完整的链信息,直接从supportedChains里找。
const targetChain = supportedChains.find(c => c.id === targetChainId);
if (targetChain) {
console.warn(`请手动在钱包中添加 ${targetChain.name} 网络,或使用右上角的连接按钮进行切换。`);
// 可以在这里调用 window.ethereum.request({ method: 'wallet_addEthereumChain', params: [targetChainInfo] })
}
}
console.error('切换链失败:', error);
}
}, [currentChainId, switchChain, supportedChains]);
return (
<div className="chain-switcher">
<span>当前网络: </span>
<select
value={currentChainId}
onChange={(e) => handleSwitch(Number(e.target.value))}
>
{supportedChains.map((chain) => (
<option key={chain.id} value={chain.id}>
{chain.name}
</option>
))}
</select>
</div>
);
}
完整代码示例
下面是一个简化但可运行的应用根组件示例,整合了上述所有配置:
// App.tsx
import { WagmiProvider } from 'wagmi';
import { RainbowKitProvider, darkTheme, ConnectButton } from '@rainbow-me/rainbowkit';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { config } from './config/wagmiConfig';
import { ChainSwitcher } from './components/ChainSwitcher';
import '@rainbow-me/rainbowkit/styles.css'; // 不要忘记引入样式!
// 为Wagmi的缓存创建QueryClient
const queryClient = new QueryClient();
function App() {
return (
<WagmiProvider config={config}>
<QueryClientProvider client={queryClient}>
<RainbowKitProvider
theme={darkTheme()} // 可以自定义主题
coolMode // 开启酷炫的按钮效果
locale="en-US" // 设置语言
>
<div className="app">
<header>
<h1>我的DeFi聚合器</h1>
<div className="wallet-section">
<ConnectButton
accountStatus="full" // 显示完整地址
chainStatus="icon" // 只显示链图标,不显示名称
showBalance={false}
/>
</div>
</header>
<main>
<div className="network-panel">
<ChainSwitcher />
</div>
{/* 你的其他业务组件 */}
<div>业务内容区域...</div>
</main>
</div>
</RainbowKitProvider>
</QueryClientProvider>
</WagmiProvider>
);
}
export default App;
踩坑记录
-
projectId无效或缺失导致的静默失败:最开始我没仔细看文档,随便写了个字符串当projectId。结果钱包连接(尤其是WalletConnect)时,移动端扫码后一直连接不上,前端也没明显报错。解决方法:必须去WalletConnect Cloud创建项目,获取真实的projectId。 -
链切换后,前端状态不同步:点击切换链,钱包成功了,但应用里
useChainId()返回的还是旧的链ID。排查发现:这是因为我在不同的地方用了不同的wagmi配置实例,或者Provider包裹层级有问题。解决方法:确保整个应用只用一个config,且WagmiProvider包裹了所有用到wagmi hook的组件。 -
自定义链的图标不显示:RainbowKit为一些主流链内置了图标,但自定义链或一些较新的链(比如Base)可能没有。解决方法:可以通过
RainbowKitProvider的chainImages属性来注入自定义链图标,是一个{ [chainId: number]: string }的映射,值为图片URL。 -
SSR(Next.js)下的水合错误:在Next.js项目里,因为服务端和客户端初始状态可能不一致(比如连接的钱包信息),会导致水合错误。解决方法:RainbowKit提供了
SSRProvider组件来配合Next.js的App Router使用。同时,将wagmi配置中的ssr设为true,并确保连接状态相关的UI在客户端渲染后再显示(用useEffect或useState控制)。
小结
这次集成让我体会到,RainbowKit确实能极大加速Web3应用钱包连接部分的开发,但它不是“无脑”配置就能应对所有生产环境需求的。核心收获是:多链支持的关键在于稳定且可控制的RPC配置,以及对“用户钱包可能未添加链”这一情况的妥善处理。 下一步,可以继续深挖RainbowKit的主题定制、与Zustand/Redux的状态集成,以及如何优雅地处理连接断开和重连的逻辑。
AI 全流程解析(LLM / Token / Context / RAG / Prompt / Tool / Skill / Agent)
前言
AI圈子里每天都在冒新名词:LLM、Token、Context、Prompt……这些词你可能都听说过。但是,你真的能准确说出其中每一个概念的确切含义吗?
这篇文章不整那些虚头巴脑的商业概念,我们从最底层的工程视角出发,一个一个把这些概念拆开、揉碎讲清楚。相信读完这篇文章,你对AI的理解绝对会上升一个台阶。
![]()
一、LLM(大语言模型)
1.1 什么是LLM?
LLM全称是Large Language Model,翻译成中文就是大语言模型,简称大模型。
基本上现在所有的大模型都是基于Transformer这套架构训练出来的。这个架构最早由Google团队在2017年提出,对应的论文名是《Attention is All You Need》。
极具戏剧性的是,虽然Google发明了火种,但真正把它点燃并且引爆全世界的却是OpenAI。
1.2 大模型的发展历程
- 2020年:GPT-3发布,已经具备初步实用价值
- 2022年底:GPT-3.5横空出世,真正让大模型进入大众可用阶段
- 2023年3月:GPT-4发布,把AI的能力天花板拉到了新高度
- 至今:Claude等优秀后起之秀在各领域与OpenAI同台竞技
GPT系列是今天AI浪潮的绝对鼻祖,时至今日,GPT家族依然非常强大,GPT-4仍是业界标杆之一。
1.3 大模型的工作原理
大模型到底是怎么工作的?答案非常简单朴素:它本质上就是一个文字接龙游戏。
虽然本质是"预测下一个Token",但通过大规模训练,这种能力涌现出了推理、总结、代码生成等复杂行为。
具体例子:
假设你向大模型提问:"这个产品怎么样?"
- 模型接收这句话后,经过内部运算,预测下一个概率最高的词:"非常"
- 模型把"非常"抓回来,追加到输入后面
- 继续预测下一个字:"好"
- 再把"好"塞回去,继续预测:"用"
- 最后输出结束标识符
完整回答:"非常好用"
这就是为什么大模型要一个词一个词地输出答案——因为它就是这么运作的。
一句话总结:大模型 = 一个极其复杂的"概率文字接龙机器"
二、Token(词元)
2.1 文字与数字的桥梁
大模型本质上是一个庞大的数学函数,里面跑的全是矩阵运算。它接收的是数字,输出的也是数字,压根儿就不认识人类写的文字。
在人类和大模型之间必须有一个中间人来做翻译,这个中间人就叫做Tokenizer(分词器),负责编码和解码两件事情:
- 编码:把文字变成数字
- 解码:把数字还原成文字
2.2 Token的生成过程
以用户提问"这个产品怎么样?"为例,这句话通常会被切分成若干个Token(具体数量取决于模型的分词策略,不同模型可能略有差异)。
第一步:切分
把用户的问题拆成一个一个最小的片段,这些片段就叫做Token。
第二步:映射
把每个Token对应到一个数字上去,这个数字就叫做Token ID。
2.3 Token vs 词:不是一对一关系
你可能会想:Token就是词,对吧?
不一定! Token和词并没有明确的一对一关系。
中文例子:
- "工作坊" → 拆成"工作"+"坊"(2个Token)
- "程序员" → 拆成"程序"+"员"(2个Token)
英文例子:
- "hello" → 1个Token
- "going" → 1个Token
- "helpful" → 拆成"help"+"ful"(2个Token)
特殊字符:
某些情况下,一个字符会被切分成多个Token。比如"✓"(对勾)需要3个Token来表示。
2.4 Token的估算标准
平均来讲:
- 1个Token ≈ 0.75个英文单词
- 1个Token ≈ 1.5~2个汉字
举例:
- 40万个Token ≈ 60~80万个汉字
- 40万个Token ≈ 30万个英文单词
总结:Token是模型自己学会的一套文本切分规则,切出来的每一块就是它一次能够处理的最小单位。
一句话总结:Token是模型理解世界的"最小语言单位"
三、Context(上下文)
3.1 大模型的"记忆"之谜
我们平时和大模型聊天,它好像能记住之前说的话。比如你开头告诉他"我的名字是小明",他给你回复以后,你再问他"我叫什么名字",他还是能够回答得出来。
但问题是,大模型本质上只是一个数学函数,它并不像人一样真的有记忆。它是怎么记住之前的聊天内容的呢?
答案:每次给大模型发送消息时,并不只会发我们的问题,背后的程序会自动把之前的整段对话历史找出来,一起发过去。
3.2 什么是Context?
Context(上下文)代表大模型每次处理任务时所接触到的信息总和。
Context包含的内容:
- 用户问题
- 对话历史
- 大模型正在输出的每个Token
- 工具列表
- System Prompt(系统提示词)
- 其他信息
可以把Context看成是大模型的一个临时记忆体。
3.3 Context Window(上下文窗口)
Context Window代表Context能够容纳的最大Token数量。
主流模型的Context Window:
| 模型 | Context Window |
|---|---|
| GPT-4 | 128K(约105万Token) |
| Claude 3.1 Pro | 100万Token |
| Claude Opus 4 | 100万Token |
100万个Token ≈ 150万个汉字,整个《哈利波特》全集的内容都能装下。
技术细节:为什么Context会影响推理能力?因为大模型进行复杂推理(如链式思考)需要足够长的上下文来"记住"推理过程。没有足够的Context,模型无法进行多步骤的逻辑推演。
一句话总结:Context不是记忆,是一次性打包输入
四、RAG(检索增强生成)
4.1 问题场景
假设你有一个上千页的公司产品手册,你希望大模型根据这个手册来回答用户的各种疑问,要怎么实现?
4.2 不好的方案
把手册的全部内容跟着用户问题一起扔给大模型?
问题:
- 产品手册太长
- 即使模型的Context Window不被撑爆,成本也无法控制
4.3 RAG解决方案
RAG(Retrieval-Augmented Generation,检索增强生成)可以从产品手册中抽取与用户问题最为匹配的几个片段,然后只把这几个片段发给大模型。
优势:
- 不受Context Window大小限制
- 成本大大降低
- 大模型接收的不是一整本书,可能只是几段话
RAG vs Fine-tuning:RAG是检索时动态注入知识,适合知识频繁更新的场景;微调是将知识嵌入模型参数,适合特定任务的优化。两者可以结合使用。
一句话总结:RAG = 给大模型外挂一个可检索的知识库
五、Prompt(提示词)
5.1 什么是Prompt?
Prompt(提示词)是大模型接收的具体问题或指令。
比如你向大模型提需求:"帮我写一首诗。"这句话就是Prompt。
不要把Prompt想成特别复杂高端的东西,它只不过就是给大模型的一个问题或者是指令而已。
5.2 为什么Prompt很重要?
如果你只是简单地说"帮我写一首诗",大模型可能会:
- 写古诗
- 写现代诗
- 写打油诗
原因:Prompt太模糊,它不知道你具体想要什么。
5.3 如何写好Prompt?
一个好的Prompt应该是:清晰的、具体的、明确的。
好的例子:
"请帮我写一首五言绝句,主题是秋天的落叶,风格要悲凉一点。"
这样一来,大模型就清楚多了,生成的内容也更符合你的预期。
5.4 Prompt Engineering(提示词工程)
Prompt Engineering本质上不是"黑科技",而是"把话说清楚"——这也是为什么它门槛并不高。
现状:
- 门槛较低,本质上就是把话说清楚
- 大模型能力越来越强,即使提示词含糊不清,大模型也能大致猜出你的意图
- 现在还在提它的人寥寥无几
一句话总结:Prompt = 你和大模型沟通的唯一接口
六、User Prompt vs System Prompt
6.1 两种不同的Prompt
有些时候我们不仅要告诉大模型它要处理的具体任务,还要告诉它人设和做事规则。
User Prompt(用户提示词)
- 定义:说明具体任务的Prompt
- 来源:用户自己在对话框输入
- 示例:"3加5等于几?"
System Prompt(系统提示词)
- 定义:说明人设和做事规则的Prompt
- 来源:开发者在后台配置
- 示例:"你是一个耐心的数学老师,当学生问你数学问题的时候,不要直接给出答案,而是要一步一步引导学生思考,帮助他们理解解题思路。"
6.2 具体例子
场景:做一个数学辅导机器人
System Prompt(后台设置,用户看不到):
"你是一个耐心的数学老师,当学生问你数学问题的时候,不要直接给出答案,而是要一步一步引导学生思考,帮助他们理解解题思路。"
User Prompt(学生输入):
"3加5等于几?"
大模型的回答:
"我们可以这样想,你手里有三个苹果,然后又拿了5个,现在一共有多少个呢?你可以数一数看。"
对比:如果没有System Prompt,大模型可能直接说"8"了。
七、Tool(工具)
![]()
7.1 大模型的弱点
大模型有一个明显的弱点:无法感知外界环境。
没有Tool的大模型,本质上是"闭着眼睛说话"。
例子:
假设你问大模型:"今天上海的天气怎么样?"
它可能会说:
"抱歉,我无法获取实时天气信息。我的知识库截止到某年某月,无法提供当前的天气数据。"
原因:大模型只是个文字接龙游戏,它的能力是根据训练数据来预测下一个词,但它真的没有办法去查天气预报网站拿到实时的天气数据。
7.2 什么是Tool?
Tool(工具)本质上就是一个函数,你给它输入,它就给你输出。
天气查询工具例子:
- 输入:城市、日期(两个参数)
- 内部操作:调用气象局的接口
- 输出:天气信息
有了工具,大模型就可以回答天气相关的问题了。
7.3 工作流程
完整流程涉及的角色:
- 用户:提出问题
- 大模型:理解问题,决定是否需要调用工具
- 工具:执行具体任务,返回结果
- 大模型:根据工具返回的结果,生成最终回答
具体步骤:
- 用户问:"今天上海天气怎么样?"
- 大模型识别到需要天气信息
- 大模型调用天气查询工具,传入参数:城市="上海",日期="今天"
- 工具调用气象局API,返回天气数据
- 大模型根据天气数据生成自然语言回答
- 用户收到:"今天上海晴,气温25°C,适合出行。"
7.4 常见工具类型
| 工具类型 | 功能 | 示例 |
|---|---|---|
| 搜索工具 | 实时搜索互联网信息 | Google搜索、Bing搜索 |
| 计算工具 | 执行数学计算 | Python代码执行器 |
| 数据库工具 | 查询数据库 | SQL查询工具 |
| API工具 | 调用外部服务 | 天气API、股票API |
| 文件工具 | 读写文件 | 文档处理工具 |
一句话总结:Tool = 让大模型睁开眼睛看世界的能力
八、Skill(技能)
我帮你写一版“风格统一的”👇(可以直接用)
什么是Skill?
Skill(技能)是针对特定任务的预配置能力包。它把大模型、Prompt、工具、记忆等组件打包在一起,形成一个可以直接使用的功能模块。
如果说:
- Tool 是一个个“工具函数”
- 那 Skill 就是把多个 Tool + Prompt + 执行流程 组合在一起,形成一个可复用的能力模块
Skill的组成
| 组件 | 说明 | 示例 |
|---|---|---|
| 大模型配置 | 选择哪个模型 | GPT-4、Claude、Gemini |
| System Prompt | 人设和任务规则 | "你是一个Python代码专家" |
| 工具列表 | 可调用的工具 | 代码执行器、Git操作 |
| 记忆配置 | 是否需要记忆 | 短期记忆、长期记忆 |
| 输出格式 | 结果的格式要求 | JSON、Markdown、代码块 |
Skill vs Agent vs SubAgent
| 对比维度 | Skill | Agent | SubAgent |
|---|---|---|---|
| 定位 | 功能模块 | 任务执行者 | 辅助执行者 |
| 配置 | 预配置 | 动态配置 | 由Agent分配 |
| 复用性 | 高(可跨项目) | 中(项目内) | 低(任务内) |
| 自主性 | 低(被动调用) | 高(自主规划) | 低(被动执行) |
Skill的生态系统
开源Skill库:
- GitHub上的Skill仓库
- 社区贡献的Skill包
- 可直接下载使用
商业Skill市场:
- 官方Skill商店
- 第三方Skill平台
- 付费/免费Skill
自定义Skill:
- 根据业务需求定制
- 企业内部Skill库
- 持续迭代优化
九、Agent(智能体)
9.1 从大模型到Agent
前面我们学习了Tool,让大模型能够调用外部函数来获取信息。但这里有个问题:谁来决定什么时候调用工具?调用哪个工具?工具返回的结果怎么处理?
这就是Agent(智能体)登场的时候了。
Agent是大模型的进阶形态,它不仅能理解用户需求,还能自主规划和执行任务。
Agent不是更聪明,是更会做事。
9.2 Agent的核心能力
一个完整的Agent通常具备以下能力:
1. 感知能力
理解用户的意图和当前环境信息。
2. 规划能力
把复杂任务拆解成多个步骤,制定执行计划。
3. 执行能力
调用工具、访问外部API、操作文件等。
4. 反思能力
评估执行结果,调整策略,重新规划。
9.3 Agent vs 大模型的区别
| 对比维度 | 大模型 | Agent |
|---|---|---|
| 核心能力 | 文本生成 | 任务执行 |
| 主动性 | 被动响应 | 主动规划 |
| 工具使用 | 需要人工指定 | 自主决定调用 |
| 任务处理 | 单轮对话 | 多步骤任务流 |
| 记忆能力 | 有限(Context限制) | 可扩展(外部存储) |
| 错误处理 | 无 | 可重试、调整策略 |
9.4 Agent工作流程示例
场景:用户让Agent帮忙订一张去北京的机票
步骤1:理解意图
Agent分析用户需求:"订去北京的机票"
步骤2:规划任务
Agent把任务拆解:
- 确定出发城市
- 确定出发日期
- 查询航班信息
- 选择合适航班
- 完成预订
步骤3:执行与交互
- Agent问:"请问您从哪个城市出发?"
- 用户答:"上海"
- Agent问:"请问您希望什么日期出发?"
- 用户答:"明天"
- Agent调用航班查询工具
- Agent展示查询结果
- Agent问:"您选择哪个航班?"
- 用户选择后,Agent调用预订工具
步骤4:反馈与确认
Agent返回:"已为您预订成功,订单号是..."
8.5 SubAgent(子智能体)
什么是SubAgent?
SubAgent是Agent的子智能体,用于处理Agent任务流程中的子任务。
Agent vs SubAgent的区别
| 对比维度 | Agent | SubAgent |
|---|---|---|
| 定位 | 主控智能体 | 辅助智能体 |
| 任务范围 | 完整任务 | 子任务 |
| 调用关系 | 被用户调用 | 被Agent调用 |
| 生命周期 | 长期存在 | 任务完成后销毁 |
| 决策权 | 高 | 低(由Agent分配) |
SubAgent使用场景
例子:用户让Agent写一个技术文档
- Agent接收到任务:"写一份API文档"
-
Agent规划:
- 调用SubAgent1:分析代码,提取API接口信息
- 调用SubAgent2:生成文档模板
- 调用SubAgent3:填充具体内容
- SubAgent1完成代码分析,返回接口列表
- SubAgent2生成文档结构
- SubAgent3根据接口信息填充文档内容
- Agent整合所有结果,返回最终文档
一句话总结:Agent = 能自己决定怎么做事的大模型
8.6 多Agent协同模式
为什么需要多Agent协同?
单个Agent虽然强大,但面对复杂任务时,往往需要"术业有专攻"。通过多个Agent协同工作,可以实现:
- 专业分工:每个Agent专注自己的领域
- 质量提升:通过互相检查、辩论,减少错误
- 效率优化:并行处理多个子任务
- 能力互补:不同Agent拥有不同的工具和知识
动态规划示例:
- 代码审查Agent:挂载代码分析工具,使用Claude模型(擅长代码理解)
- 数据分析Agent:挂载数据处理工具,使用GPT-4模型(擅长数学推理)
- 文档写作Agent:挂载文档模板工具,使用Gemini模型(擅长长文本生成)
三种主流协同模式
![]()
一、上下级协同(Hierarchical)——类比公司组织架构
结构:
![]()
工作方式:
- 中控Agent负责拆解任务、分配工作、整合结果
- 子Agent负责具体执行
- 可以多层嵌套,形成树状结构
适用场景:
- 大型项目管理
- 复杂系统的开发
- 需要严格流程控制的任务
实际案例 - 飞猪行程规划:
- 中控Agent:接收用户"规划一次北京到上海的旅行"需求
- SubAgent1:查询北京到上海的航班信息
- SubAgent2:搜索上海的酒店和景点
- SubAgent3:生成详细的行程安排
- 中控Agent:整合所有信息,输出完整行程单
实际案例 - 机票预订:
- 中控Agent:接收"预订明天北京到上海的机票"需求
- SubAgent1:查询航班信息(时间、价格、航空公司)
- SubAgent2:对比不同航班的性价比
- SubAgent3:执行预订操作
- 中控Agent:确认预订结果,返回订单号
二、师生式协同(Master-Disciple)——本质是"带思路"
结构:
工作方式:
- 专家Agent提供策略、方法论、评价标准
- 新手Agent按照专家的指导执行具体任务
- 专家可以实时反馈和调整
关键要素:
- 策划思路:如何拆解问题、制定策略
- 信息收集方法:从哪里获取信息、如何筛选有效信息
- 表达格式规范:输出应该是什么格式、包含哪些要素
- 评价标准:如何判断结果的好坏、如何改进
适用场景:
- 需要传承专业知识的任务
- 质量要求高的内容创作
- 需要标准化流程的工作
实际案例 - 单轮对话优化:
- 用户输入:"帮我写一个产品介绍"
- 新手Agent:生成初步版本(可能不够专业)
- 专家Agent:提供反馈:"需要突出产品的核心优势,增加数据支撑,使用更专业的术语"
- 新手Agent:根据反馈优化输出
- 专家Agent:继续指导:"结构可以调整为:问题背景 → 产品解决方案 → 核心优势 → 客户案例"
- 新手Agent:按照新结构重新生成
- 最终输出:高质量的产品介绍
本质区别:上下级协同是主智能体严格拆解任务并分配,师生式协同则是通过讨论和反馈优化输出,更具互动性。
三、竞争式协同(Competitive / Debate)——让模型"互相杠"
结构:
工作方式:
- 多个Agent独立生成不同方案
- 裁判Agent对比分析各方案优劣
- 选择最优或融合多个方案
本质:多解 → 对比 → 选择最优
适用场景:
- 开放性问题(没有标准答案)
- 需要高质量输出的任务
- 容易"幻觉"的任务(需要互相验证)
- 创意类工作(需要多个视角)
实际案例 - 营销文案创作:
- 任务:"为一款智能手表写营销文案"
- Agent1:强调性价比(价格优势、功能对比)
- Agent2:强调品质(材质、工艺、品牌背书)
- Agent3:强调创新(独特功能、技术突破)
-
裁判Agent:综合三个角度,生成最优文案
- 开头用创新点吸引注意力
- 中间用品质数据建立信任
- 结尾用性价比促成转化
为什么竞争式协同有效?
- 避免单一视角:不同Agent从不同角度思考,避免思维局限
- 互相验证:多个方案可以互相检查,减少幻觉和错误
- 激发创意:竞争机制激发Agent的创造力,产生更好的想法
- 质量提升:通过对比筛选,最终输出质量更高
应用场景总结
多智能体协作适用于复杂任务(如工程开发、项目上线),通过分工减轻单一智能体负担。
| 应用场景 | 推荐模式 | 理由 |
|---|---|---|
| 工程开发 | 上下级协同 | 需要严格的任务拆解和流程控制 |
| 项目上线 | 上下级协同 | 涉及多个环节,需要统一调度 |
| 代码审查 | 师生式协同 | 需要专家指导,逐步优化代码质量 |
| 内容创作 | 师生式协同 | 需要反复打磨,提升内容质量 |
| 方案设计 | 竞争式协同 | 需要多角度思考,选择最优方案 |
| 创意生成 | 竞争式协同 | 需要激发创意,避免思维固化 |
| 数据分析 | 混合模式 | 用上下级协同拆解任务,用竞争式协同验证结果 |
如何选择协同模式?
| 任务特点 | 推荐模式 |
|---|---|
| 复杂、需要严格流程 | 上下级协同 |
| 需要专业知识传承 | 师生式协同 |
| 开放性、创意类 | 竞争式协同 |
| 需要多角度验证 | 竞争式协同 |
| 大型项目管理 | 上下级协同 |
| 需要迭代优化 | 师生式协同 |
一句话总结:多Agent协同 = 让多个专业AI各司其职,通过分工、合作、竞争,共同完成复杂任务
十、思考题
Q1:Token和字符有什么区别?为什么大模型不直接处理字符?
- Token是大模型处理文本的最小单位,Token和字符不是一对一关系
- 一个Token可能对应一个词、多个字符,也可能一个字符对应多个Token
- 平均1个Token ≈ 1.5~2个汉字,或0.75个英文单词
- 不直接处理字符的原因:字符粒度太细,模型需要学习更多模式;Token粒度更符合语言单元,训练效率更高
Q2:Context Window越大越好吗?
- Context Window是大模型一次能处理的最大Token数量
- 它决定了模型能"记住"多少信息
- 影响模型的成本和性能
- 不同模型的Context Window大小不同(GPT-4:128K,Claude 3.1 Pro:100万)
- 不是越大越好:更大的Context意味着更高的计算成本,需要根据实际需求选择合适的模型
Q3:RAG和Fine-tuning有什么区别?什么时候用哪个?
- RAG:检索时动态注入知识,适合知识频繁更新的场景
- Fine-tuning:将知识嵌入模型参数,适合特定任务的优化
- RAG优势:知识可实时更新,成本低,不受Context Window限制
- Fine-tuning优势:模型对特定领域更熟悉,输出更稳定
- 两者可以结合使用:用Fine-tuning学习领域风格,用RAG获取最新知识
Q4:Agent和普通的大模型有什么本质区别?
- Agent是具备自主规划和执行能力的智能体
- 区别:
- 大模型:被动响应,只能生成文本
- Agent:主动规划,可以执行多步骤任务
- Agent的核心能力:感知、规划、执行、反思
- Agent可以自主决定何时调用工具、调用哪个工具
- Agent不是更聪明,是更会做事
Q5:Agent未来的发展方向是什么?
技术方向:
- 多模态能力:处理文本、图像、音频、视频
- 更强的规划能力:处理更复杂的任务链
- 自主学习:根据反馈优化自身行为
- 协作能力:多个Agent协同工作
应用方向:
- 垂直领域Agent:医疗、法律、金融等
- 个人化Agent:深度了解用户习惯和偏好
- 企业级Agent:处理复杂的业务流程
- 物理世界Agent:机器人、自动驾驶等
挑战:
- 安全性:防止Agent执行危险操作
- 可控性:确保Agent行为符合预期
- 成本:降低Agent运行成本
- 普适性:让更多普通人能使用Agent
十一、总结
核心概念回顾
| 概念 | 英文 | 定义 |
|---|---|---|
| 大语言模型 | LLM | 基于Transformer架构训练的大规模语言模型 |
| 词元 | Token | 大模型处理文本的最小单位 |
| 上下文 | Context | 大模型每次处理任务时接收的信息总和 |
| 上下文窗口 | Context Window | Context能容纳的最大Token数量 |
| 提示词 | Prompt | 大模型接收的具体问题或指令 |
| 检索增强生成 | RAG | 从大量文档中检索相关片段发给大模型的技术 |
| 工具 | Tool | 让大模型能够执行具体任务的函数 |
| 智能体 | Agent | 具备自主规划和执行能力的AI系统 |
| 子智能体 | SubAgent | 被Agent调用的辅助智能体 |
| 技能 | Skill | 针对特定任务的预配置能力包 |
| 模型上下文协议 | MCP | 连接大模型和外部数据源的标准化协议 |
![]()
十二、结语
AI技术日新月异,但核心概念始终如一。从最底层的LLM、Token,到中层的Context、Prompt、RAG,再到上层的Tool、Agent、Skill、MCP,这些概念构成了现代AI应用的技术栈。
希望这篇文章能帮助你建立扎实的AI知识体系。如果觉得有用,欢迎分享给更多需要的朋友!
注:本文内容基于当前主流AI技术整理,随着技术发展,部分概念可能会有更新。建议持续关注最新动态。
联想天禧 Claw 产品体验:大家都能吃的龙虾才是好龙虾
![]()
2026 年虽然是马年,但真要选个「年度动物」的话,非得是龙虾莫属。
就像海里的龙虾一样,OpenClaw 虽然美味,但想要烹调和享用好,还是需要相当的门槛的:不仅要自己配置环境、设置接口、寻找模型,更是得专门留一台 24 小时待机的电脑给它当「笼子」。
![]()
再加上自己配置技能(Skill)、进行微调(SFT)、接入 MCP 所需的时间、精力和金钱成本,真正的日常用户其实是很难让 OpenClaw 发挥出「明显改善效率」的意义的。
就在这时,老牌 PC 大厂联想站了出来,做了一件非常具有启发性的事情。
它们以联想电脑、平板和摩托罗拉手机为载体,做了个免安装、跨平台、全天候的 Claw 服务——
![]()
换言之:让每个人都能享受 Claw 的乐趣。
3 月 18 号,联想在春季新品直播中正式宣布了自家智能助手「天禧个人智能体」 Claw 能力上线,并于 3 月 30 号正式开启了内测:
![]()
▲ 图|联想
爱范儿也参与了这次天禧 Claw 的测试活动。在这段时间的使用之后,我们觉得:天禧 Claw 就是现阶段上手难度最低、跨设备能力最强、软硬件结合最好的 Claw 部署方案之一。
龙虾「最后一公里」,联想替你走
以往想要在 Windows 上安装一个能用的龙虾,是件非常让人头疼的事情。
由于 OpenClaw 高度依赖类 Unix 环境,许多底层脚本也是基于 Darwin 或 Linux 写的,因此想要在 Windows 上得到一个能用的龙虾助手,光是折腾 WSL2 就足够劝退 90% 的尝鲜用户了。
而对于联想的天禧 Claw 来说,以上这些都不是问题——
![]()
与纯本地手动部署不同,天禧 Claw 采用了「端云混合」的运营逻辑。
联想作为软硬件供应商,可以直接给自家硬件预留好调用接口,然后用类似「云电脑」的形式,在服务器端运行天禧 Claw。
这样一来,用户既省下了手动部署的麻烦,获得了文件隔离的安全性,同时还能享受到纯本地龙虾带来的硬件操控能力。
仅需一个联想账号,所有人都可以在电脑、Pad 和手机上同时运行天禧 Claw,做到了真正的「零成本部署」和「开箱即用」。
就拿我们在内测阶段的体验来说,在这台联想 YOGA Air 14 上运行天禧 Claw,其实只需要四步:开机、打开天禧 app、登录联想账号,开始使用:
![]()
同时,天禧 Claw 作为一款「预装类」的龙虾助理,最大的优势就在于它出厂预装了非常多实用的技能(Skills),不需要挨个在 ClawHub 上下载压缩包了:
![]()
在目前的测试版本中,天禧 Claw 已经支持了包括文档处理、设计创作、硬件操控、生活娱乐、技术工具等等十多种 Skills 。
无论是要天禧 P 个图、草拟一份周报、写一封声情并茂的请假申请,还是直接搞定路演 PPT,都只是一句话的事儿:
![]()
除了这些预装技能之外,你当然也可以自己给天禧 Claw 添加别的 Skill ——
比如我自己常用的高级搜索工具 web-search-plus,只需要把 ClawHub 的项目网址发给天禧 Claw 就可以自动完成安装:
![]()
但即使不看上述的第三方 Skill,天禧 Claw 作为一款电脑出厂预装的龙虾助手,仅仅依靠它自带的那些技能就已经足够满足绝大多数的日常需求了。
就拿编辑的工作流为例,我可以用自然语言给天禧 Claw 设置一个循环任务,让它每天早上检索并整理过去 12 小时的热门科技新闻,生成摘要并导出至本地:
![]()
而在工作过程中,则可以直接和天禧 Claw 以聊天的形式让它帮忙搜索信息、整理知识库和修改图片,以及对我来说最重要的——查找本地文件:
![]()
这时,天禧 Claw 就可以发挥出它作为一个端云混合龙虾的全部优势:我既不需要盯着一个沉闷的 cmd 窗口等回复,过程期间我的电脑风扇也不会起飞,只需要舒舒服服等待它反馈。
第一个免配置跨平台龙虾
折腾 OpenClaw 的另一个问题是如何跨端跨网进行指挥。
如你所知,OpenClaw 原本作为一个纯本地化运行的 agent 工具,如果你的使用场景仅限自己家里的空间,那么完全不需要担心操控问题。
可一旦你希望出门之后也能控制你的龙虾,尤其是涉及到使用 MCP 以及管理龙虾后台的时候,就必须给家里的网络设置内网穿透或者虚拟代理,繁琐程度可想而知。
![]()
天禧 Claw 对于这个问题给出了一个相当完美的解法:它重新给龙虾套了一层网络客户端的壳,所有指令都通过「天禧个人超级智能体」app 上传和下发。
这样一来,只要你的电脑开着机、连着网,你在千里之外只需要拿出手机或者平板电脑,就可以继续执行天禧 Claw 在电脑上的操作:
![]()
并且这种能力还不是单向的——我用这一台 moto razr 60 可以远程管理联想笔记本上面的文件,自然也能反过来用笔记本管理手机和 Pad。
这时就不得不提天禧 Claw 的独家 Skill 了:由于天禧 Claw 属于联想的第一方应用,联想专门为它配置了一套可以直接调用硬件功能的专属技能。
比方说用手机给电脑上的天禧 Claw 发信息,让它把电脑设置成暗色模式,并且把屏幕亮度调整到最低,电脑就可以直接执行:
![]()
同理,在电脑上对着天禧 Claw 说在平板上设置一个明早 7 点起来喂猫的闹钟,它就可以在平板上直接创建闹钟,完全不需要解锁:
![]()
而上述的一切,都只需要一个联想账号。
这样一套跨平台、跨设备的龙虾不仅不需要分别折腾 Windows 和 Android 两套繁琐的配置,更实现了熄屏时的后台静默操作,能够为普通用户解锁什么样的便捷场景简直不敢想——
小问题不影响天禧成为「最方便吃」的龙虾
需要注意的是,联想天禧 Claw 目前仍然处在测试阶段,我们体验到的各项功能严格来说都还不是「完全体」。
在短暂的测试中,我们也注意到了天禧 Claw 目前存在的一些问题——毕竟从它的运行机制来说,相比本地部署 OpenClaw 它还存在一些不太完美的地方。
首先,你虽然可以通过给天禧 Claw 发送链接的方式要求它安装 Skill,但添加某些 Skill 所需的 API Key 却很麻烦。
原因很简单:天禧 Claw 运行在联想服务器上的一个虚拟容器里,我们对话的 app 只是一个聊天窗口。
如果你使用的 Skill 需要通过修改根目录里面的 .json 文件添加 API Key,那暂时是没有办法进行修改的:
![]()
其次,目前测试版天禧 Claw 还不支持更换基础的对话模型,也无法直接修改和调整它的「性格」和对话方式——
换言之,如果你想让你的龙虾说话「更有人情味」,或者保持某种预设角色的话,天禧 Claw 目前还办不到,仅能通过添加知识库的方式让它的对话风格产生一些倾向。
最后,也是最重要的,就是天禧 Claw 的记忆机制和词元(token)收费规则了。
受限于运营模式,测试阶段的天禧 Claw 还无法负担非常长的上下文 session,会自动执行 /compress 压缩早期的信息,因此有时候会忘记你之前告诉过它的东西。
而如果你想要让天禧 Claw 长期记住什么信息,就必须命令它「记住这个」,从而将信息半手动地保存到当前账号的知识库里:
![]()
同时,联想官方目前尚未公布天禧 Claw 的词元收费制度,至于后续是否会开放用户自行选择基础模型则有待讨论。
参考其他已经存在的 OpenClaw 托管类服务的收费标准,我们猜测天禧 Claw 后续可能会采用「限时免费、后续订阅」的机制,同时也可能整合进联想其他云服务的订阅当中。
总的来说,天禧 Claw 是目前难得一见的、真正称得上「零门槛人人可用」的龙虾方案——
用户不需要自己折腾 Linux 容器,不需要在闲鱼上花 800 块钱安装再卸载,也不用担心天禧 Claw 会误删你的文件——它在执行任何删除动作之前都会向你询问,并且所有调用的数据都保存在天禧 app 的沙盒内。
对于基础的 OpenClaw,我们总会把它形容成托尼·斯塔克的 Jarvis ——但真正的难点从来都不是和 Jarvis 对话,而是怎么让它去接入和控制那些硬件。
![]()
而天禧 Claw 恰恰像是有了自己战甲的 Jarvis:它可以自己对话、自己控制、自己决断,我们只需要像托尼一样直接下达命令就好。
#欢迎关注爱范儿官方微信公众号:爱范儿(微信号:ifanr),更多精彩内容第一时间为您奉上。
ST中珠:陈旭因工作调整辞任董事长
长源东谷:拟购买襄阳康豪机电工程100%股权,股票复牌
金杯汽车、自变量机器人在沈阳成立合资公司
Vite:比Webpack快100倍的“闪电侠”,原理竟然这么简单?
听说Vite很快?快得像你点下保存,浏览器立马刷新。今天我们就来拆解这个“前端新宠”,看看它到底用了什么黑魔法。看完你会发现:哦,原来不是魔法,是“降维打击”!
前言
Webpack就像个勤劳的蚂蚁,把整个项目一点点搬完再给你看结果。Vite则像个聪明的快递员:你点什么,它送什么,绝不提前扛一堆货。
Vite(法语“快”)是尤雨溪推出的构建工具,开发服务器启动快到“秒开”,热更新快到“没感觉”。它的秘诀就是:利用浏览器原生ES模块(ESM),让浏览器帮你分担工作,自己只做最轻量的事。
一、Webpack为什么慢?因为它在“提前打包”
Webpack的工作方式是:启动开发服务器时,要从入口开始,把整个项目的所有模块都打包成一个(或几个)bundle。即使你用lazy loading,它也要先解析所有依赖关系。
这个过程随着项目变大而变慢。想象一下,你只是改了一行代码,Webpack却要重新打包一大坨东西——虽然做了缓存,但还是很重。
二、Vite的思路:让浏览器做打包
现代浏览器已经支持<script type="module">,可以直接在HTML里导入ES模块,浏览器会按需请求每个模块文件。
Vite利用这一点:开发时,它不打包,而是直接把源码转换成ES模块,让浏览器去请求。当浏览器请求/src/main.js时,Vite拦截请求,实时编译(比如把JSX转成JS,把TS转成JS),然后返回给浏览器。
启动速度对比
- Webpack:启动 = 打包整个应用 → 慢。
- Vite:启动 = 启动一个静态服务器 + 预构建第三方依赖 → 极快。
热更新(HMR)对比
- Webpack:改一个模块,可能需要重新打包部分bundle。
- Vite:利用ESM的精确依赖关系,只更新被改的模块,浏览器只需要重新请求那个模块,速度飞起。
三、Vite的核心原理:三大绝招
1. 基于原生ESM的开发服务器
Vite在开发环境下,把每个文件都当作独立的模块,通过koa或connect启动一个服务器。当浏览器请求/src/App.vue时,Vite会实时编译Vue组件,返回一个JS模块。
// 浏览器请求 main.js
import { createApp } from '/node_modules/.vite/deps/vue.js'
import App from '/src/App.vue'
createApp(App).mount('#app')
注意,import里的路径是相对于服务器的,Vite会拦截并处理。
2. 预构建:用esbuild把第三方库“打成一块”
虽然Vite不打包业务代码,但第三方库(比如vue、react)往往有很多内部模块。如果让浏览器一个个请求,请求数太多,性能差。
Vite在启动时会用esbuild(用Go写的,超快)把第三方库预构建成单个ESM模块,然后缓存起来。这样浏览器只需要请求一个文件,而不是几十个。
3. 按需编译 + 缓存
Vite只会编译浏览器实际请求的文件。你没访问到的页面组件,Vite根本不会编译。而且编译结果会缓存到node_modules/.vite,下次启动秒开。
四、生产环境:还是Rollup打包
有人问:Vite开发那么快,生产环境也用ESM不就行了?问题是,纯ESM在生产环境下有太多请求,性能不好。而且需要做tree shaking、代码分割、压缩等优化。
所以Vite在生产环境默认使用Rollup打包,打包出高度优化的静态文件。这样既享受了开发时的快,又保证了生产时的优。
五、手写一个迷你Vite
我们来模拟Vite的核心思想:一个按需编译的静态服务器。
// mini-vite.js
const express = require('express');
const fs = require('fs');
const path = require('path');
const { transform } = require('esbuild'); // 用esbuild转译
const app = express();
app.use((req, res, next) => {
const url = req.url;
if (url === '/') {
// 返回index.html
const html = fs.readFileSync('./index.html', 'utf-8');
res.setHeader('Content-Type', 'text/html');
return res.send(html);
}
// 处理JS文件
if (url.endsWith('.js')) {
const filePath = path.join(__dirname, url);
const content = fs.readFileSync(filePath, 'utf-8');
// 用esbuild转译JSX/TS等(简化版)
transform(content, { loader: 'jsx' }).then(result => {
res.setHeader('Content-Type', 'application/javascript');
res.send(result.code);
});
} else {
next();
}
});
app.listen(3000, () => console.log('Mini Vite running at http://localhost:3000'));
这只是个玩具,真实Vite复杂得多(处理Vue单文件、HMR、预构建等),但核心思想一致:拦截请求、实时转换、返回ES模块。
六、Vite的适用场景和坑点
适用场景
- 新项目,尤其使用Vue3或React+TS
- 需要极快开发体验
- 对构建配置要求不高(默认配置够用)
坑点
- 依赖CommonJS格式的库可能有问题(Vite会尝试转换,但少数不行)
- 动态导入
import()的路径必须静态可分析 - 生产环境用Rollup,配置和开发环境可能不一致(但Vue官方推荐)
七、总结:Vite不是魔法,是“借力”
- 开发时:利用浏览器ESM + esbuild预构建 + 按需编译 → 秒启、快更。
- 生产时:Rollup打包 → 优化产物。
- 核心思想:让浏览器做更多,服务器做更少。
Webpack正在努力追赶(比如Webpack5的模块联邦和缓存),但Vite的“降维打击”思路确实带来了革命性的开发体验。如果你还没试过,去创建一个Vite项目体验一下,你会回来点赞的。
如果你觉得今天的“闪电侠”够形象,点个赞让更多人看到。明天我们将进入TypeScript基础,从类型注解到接口,让你写出更健壮的代码。我们明天见!