共计 8468 个字符,预计需要花费 22 分钟才能阅读完成。
我们可以说,Claude 正在策划一场更为宏大的战略布局,而非单纯的损失分析。
最初,Cursor 作为一种黏合剂的角色已经显现,现在 Cursor2.0 则拥有了独立的编程框架。
然而,这种转变仍难以解决迫在眉睫的问题,因为在编程 AI 领域,最具实力的竞争者依然是 GPT 与 Claude。
TRAE 虽然实力不如 Cursor,但得益于 Claude 与 GPT 的强大支持,也能在竞争中占有一席之地。
这一切发生在 Claude Code 和 GPT5-Codex 尚未问世的时期。
随着 Claude Code 和 GPT5-Codex 的推出,AI 编程的格局正在发生改变,大型模型开始取代那些依赖外壳的编程工具。
因资金问题,GPT 目前并未停止供应,然而若其继续独占市场并获得更高收益,GPT 与 Gemini 或许也会逐渐减少供应。
不仅仅是 Claude 在展开行动,GPT 同样渴望实现市场主导地位。
此外,由于去除了地域限制,Claude 自身的实力也让其不再需要依靠其他编程产品进行推广。
完全凭借自身的能力就足够了。
在 AI 编程中,最大的障碍莫过于 Tokens 的高成本。
所有 AI 编程都无法避免这一高昂的 Tokens 费用。
我从 Claude 的角度来看,Claude 在 11 月取得了显著突破,目前 Claude Code 已经能够将 150K Tokens 的工作直接缩减至 2K Tokens 完成。
成本骤降近 98%!!!

最近看到 Anthropic 发布的新技术指南,老实说,看完第一遍我完全无言以对。
150,000 个 tokens 直接降到 2,000,这不是单纯的优化,而是颠覆性的打击啊!
这一下的降价幅度甚至超过了 Deepseek 的 3.2……
如果自己已经可以做到,何必再为他人操心呢?
毫不夸张地说,这可能是我在 2025 年见过的最出色的 AI 代理优化方案。
老实跟你们说,我之前参与的多工具代理项目,API 账单让我惊恐不已——一个月高达 $360,000,这谁能承受得了?
如今,Anthropic 却将费用直接砍至 $4,800,节省了 98.7% 的成本。
而且,响应时间也从 20 秒缩短到 5.5 秒。
传统方法将 AI 模型视为数据中转站,所有中间数据都要经过一遍上下文,这样的做法简直是在自寻死路。
Anthropic 此次直接将数据处理放入执行环境中,模型仅需负责生成代码和接收结果,决策层与执行层完全分离。
经过总结,我认为这里有三个最值得注意的亮点:
从事多工具代理的人都明白,当前的问题根本不是优化所能解决的,而是 架构性缺陷。
如果想要功能齐全,就得接入众多工具;而想要节省 Tokens,功能就只能大打折扣。
这并不是一个两难的选择,而是一种死循环。
说实话,没有 50 到 200 个工具,企业级代理根本无法运转。
从数据库查询、邮件发送、Salesforce 对接到 Slack 协作、GitHub 集成,这些都是基本配置。
我之前的项目,仅工具接入就花了两个月的时间。
更为棘手的是调用频率。
一个复杂的工作流可能需要 10 到 30 次的工具调用,链式依赖 的痛苦——工具 A 的输出作为工具 B 的输入,B 的输出再给 C,每次都需要在上下文中转一圈。

传统架构无法实现并行处理,只能逐一执行,眼睁睁看着延迟不断积累。
调用次数与成本之间的关系:
MCP (Model Context Protocol)协议的推出确实是个利好消息,它统一了工具接入的标准。
过去每个服务都需要独立的 SDK、认证和数据格式,而现在通过 JSON Schema 来定义工具签名,list_tools() API 能够自动发现工具,省去不少麻烦。

但!
尽管 MCP 解决了接口碎片化的问题,理论上想接入多少工具都可以,实际上仍然受到上下文窗口的限制。
例如,一个项目需要从 10 万条记录中筛选 5 条生成报告。
传统流程却是个巨大的坑:
阶段 1 – 工具定义预加载:
阶段 2 – 数据检索(这一环节是重灾区):
- 代理调用 database.query()
- 100,000 条记录 → 全部进入上下文
- Token 消耗:100,000 条 × 50 tokens = 5,000,000 tokens
- 延迟:序列化、传输、解析,至少需要 15 秒
- 问题:10 万条中有 99,995 条都是无效数据,全都进入了上下文
阶段 3 – 数据过滤:
- 调用 filter()工具
- 10 万条数据再次传输(没错,又传输一次)
- 最终返回 5 条结果
阶段 4 – 生成报告:
- 终于只传输 5 条了
- 但前面的步骤已经造成了巨大的损失
总账单:
- Token:5,006,000(约 500 万)
- 往返次数:3 次
- 延迟:20 秒
- 最搞笑的是:10 万条数据走了一圈,真正有用的仅 5 条
流程概述:

这说明了什么呢?
传统架构将 AI 模型视作数据总线,所有数据都要经过模型这一关。
模型不仅要进行决策,还要承担数据搬运的任务,Token 消耗与数据量成正比,这样能不出问题吗?
工具定义的预加载是第一个重大缺陷。代理启动时就需将所有工具定义加载到上下文中:功能描述、参数说明(类型、必填项、默认值、验证规则)、返回格式、2 到 3 个使用示例。
若有 50 个工具,则 50 × 100 tokens = 5,000 tokens 的基础开销。但规模效应更是令人头痛:
若有 200 个工具,Token 消耗直接从 20,000 tokens 起步。
更荒谬的是工具的利用率。
统计表明,单次任务平均只需使用 3 到 5 个工具,利用率仅为 2.5%。
换句话说,97.5% 的工具定义 tokens 都是白白浪费。
那么,为什么不能按需加载呢?
因为传统架构要求预先声明所有工具,模型必须“看到”所有选项才能进行选择。
中间结果的传递:数据重复传输的重大陷阱。
Salesforce 的真实案例:
# 颠覆传统:用新架构优化工具调用# 传统方法 - 三次独立工具调用(每次都是煎熬)# 第一次:搜索
search_result = agent.call_tool("search_salesforce", {
"query": "active accounts",
"fields": ["name", "revenue", "status"]
})
# 1000 条记录,20,000 tokens,心在滴血
# 第二次:过滤
filtered = agent.call_tool("filter_records", {
"data": search_result, # 20K tokens 的数据又传一遍
"condition": "revenue > 1000000"
})
# 过滤完 50 条,2,500 tokens
# 第三次:汇总
summary = agent.call_tool("create_summary", {"data": filtered # 又传一遍})
# 终于完事了,500 tokens
# 工具定义:5,000
# 第一次搜索:20,000
# 传给 filter:20,000(重复传输!)# 过滤结果:2,500
# 传给 summary:2,500(又重复!)# 最终结果:500
# 总计:51,000 tokens,每次看到这个数字我都想哭
每次往返 500 毫秒,三次累计耗时 1.5 秒,仅仅是在网络上等待。
数据序列化还伴随着潜在的成本。
原始 1KB 数据转化为 JSON 后,大小膨胀至 1.5-2KB,膨胀系数达 1.5- 2 倍。
模型还需花费时间解析 JSON 结构。
Anthropic 提出的解决方案可以归结为一句话:不再优化,直接更改架构。Agent 不再仅仅是工具的使用者,而是代码的创造者。MCP 服务器不再仅是函数调用的接口,而是代码模块。
核心理念听起来简单,但实现起来却非常复杂:模型不直接执行工具,而是生成执行工具的代码。
代码在独立的环境中运行,所有的数据处理都在这个环境内部完成,模型只接收最终结果。
MCP 服务器重构成代码 API,从函数调用转变为模块导入(这一变化至关重要)。
// 传统方式(每次调用都是灾难)agent.call_tool("search", {query: "..."})
// 代码执行方式(简洁清爽)import {search} from 'mcp-server'
技术实现(支持 TypeScript 和 Python)!
TypeScript 版本:
// mcp-servers/salesforce/index.ts
export class SalesforceClient {async search(params: SearchParams): Promise {
// 这里的实现全在执行环境,模型根本不知道
const results = await this.api.query(params);
return results;
}
async update(id: string, data: object): Promise {
// 所有操作都在环境内,秒啊
return await this.api.update(id, data);
}
}
Python 版本:
# mcp_servers/salesforce/__init__.py
from typing import List, Dict
class SalesforceClient:
def search(self, query: str) -> List[Dict]:
"""环境内执行,不走模型上下文"""
results = self._api_call(query)
return results
def filter_high_value(self, records: List[Dict], threshold: float) -> List[Dict]:
"""原生 Python 过滤,又快又省"""
return [r for r in records if r['revenue'] > threshold]
类型提示的好处显而易见:IDE 可以自动补全、类型检查和文档悬停,开发体验显著提升。async/await 的原生支持也提高了并发性能。
按需加载的懒加载机制(省 Token 省到飞起)!
传统方式:预加载 50 个工具 = 5K tokens
代码执行:只导入 2 个工具 = 0 tokens
为什么是 0?
因为导入语句不占用模型的上下文!
动态导入实现:
// 运行时按需导入,想用啥导啥
const toolName = determineRequiredTool(task);
const module = await import(`mcp-servers/${toolName}`);
const tool = new module.Client();
search_tools 工具发现 API(这个设计太聪明了)
async function search_tools(query: string): Promise {
// 轻量级元数据,每个工具
tool.tags.includes(query) ||
tool.description.includes(query)
);
// 按相关性和流行度排序
return matches.sort(byRelevance).map(t => ({
name: t.name,
summary: t.summary
}));
}
元数据索引在启动时构建一次,后续查询响应时间仅 10 毫秒。采用倒排索引和内存缓存,性能得到极大提升。
实际使用场景示例:
- Agent 需要 ” 发邮件 ”
- 调用
search_tools("email")→ 返回 3 个邮件工具(150 tokens) - Agent 选择 ”Gmail Sender”
import {GmailSender} from 'mcp-servers/gmail'- 仅加载这个工具,其余 197 个工具完全不受影响
工具选择逻辑:描述匹配度 + 历史使用频率 + 上下文相关性。
Agent 转变为程序员,模型的角色从 ” 执行者 ” 变为 ” 编排者 ”。它负责生成代码,但不直接执行工具调用。这就需要对代码质量进行保证:
- ESLint、Pylint 进行自动语法检查
- TypeScript/Python 的类型系统进行类型校验
- 复用最佳实践的代码模板库
代码模板库减少生成错误的可能性。例如,数据库查询的标准模板和 API 调用的重试模板,都是经过验证的。
依然在环境内处理:数据不出环境。
执行环境的安全隔离至关重要!
安全第一,架构设计为:沙箱 + 资源限制 + 实时监控。
沙箱技术(结合 Docker 与 seccomp 的多层防护)
- 网络隔离:只能访问 MCP 服务器,其他外部链接全部禁用
- 文件系统隔离 :代码库为只读,只有
/tmp目录可以写入,以防破坏 - 进程隔离:使用独立容器,进程间实现完全隔离
资源配额(固定规则)
- CPU:2 核
- 内存:4GB
- 执行
超时将使用 SIGALRM 信号强制终止。如果内存超限,则会通过 cgroup 进行限制,OOM killer 保护宿主机。

核心技术在于数据流的重定向!
Salesforce 案例的改写版本(对比强烈)
高效数据处理:如何通过代码优化提升性能
// 由 Agent 编写的代码 - 单一函数处理全部任务
import {salesforce} from 'mcp-servers';
async function 获取 Salesforce 概述() {
// 步骤一:数据获取(模型对此一无所知)const 结果集 = await salesforce.search({
query: "活跃账户",
fields: ["名称", "收入", "状态"]
});
// 环境内存中存储了 1000 条记录
// 重要的是:模型完全无法感知这些记录的存在
// 步骤二:数据筛选(利用原生 JS 进行操作)const 筛选结果 = 结果集.filter(record =>
record.revenue > 1000000
);
// 最终得到 50 条结果,模型仍然不可见
// 步骤三:聚合计算(使用原生的 reduce 和 sort)const 汇总信息 = {
总账户数: 筛选结果.length, // 统计数量
总收入: 筛选结果.reduce((sum, r) =>
sum + r.revenue, 0), // 计算总收入
最高账户: 筛选结果.sort((a, b) =>
b.revenue - a.revenue)[0] // 排序并获取收入最高的账户
};
// 步骤四:返回结果(仅将此对象传递给模型)return 汇总信息;
// 模型接收到的内容为:// {总账户数: 50, 总收入: 150000000, 最高账户: {...} }
}
// Token 消耗:大约 100(仅此汇总对象)
数据流向示意图:
数据库 → 执行环境内存(1000 条,模型不可见)
↓ 筛选操作
执行环境内存(50 条,模型不可见)
↓ 聚合计算
执行环境内存(汇总对象)
↓ 返回
模型上下文(仅汇总,~100 tokens)
执行耗时:
- 数据库查询:2 秒
- 环境内筛选:0.05 秒
- 环境内聚合:0.05 秒
- 总计:2.1 秒
Token 节省:1000 条记录从未序列化,50 条记录从未传输,只有汇总返回。51K → 100 = 99.8% 的节省。
中间数据的内存管理,100K 条记录存储于环境内存,模型无感知。选择合适的数据结构极为关键:JavaScript 数组和 Python 列表,原生性能最优。
处理超大数据集时可使用 Generator 逐条处理,以避免全量加载:
function* 处理大数据集(data) {for (let item of data) {yield 转换项(item); // 逐条处理,节省内存
}
}
实时监控内存使用情况:
const 内存使用 = process.memoryUsage();
if (内存使用.heapUsed > 阈值) {// 内存即将溢出,切换为流式处理}
将 50 次调用合并为 1 次(这个优化真是厉害)
// 传统方式:50 次工具调用 = 50 次往返 = 25 秒的等待
// 代码执行:通过一个循环完成
const 结果集 = [];
for (let i = 0; i
进阶并发版本:
// 50 个并发请求,0.5 秒完成
const 结果集 = await Promise.all(items.map(item => 处理项目(item))
);
并发控制以防止服务器过载:
import pLimit from 'p-limit';
const 限制 = pLimit(10); // 最多 10 个并发
const 结果集 = await Promise.all(items.map(item => 限制(() => 处理项目(item)))
);
错误重试机制以增强容错性:
async function 重试(fn, 次数 = 3) {for (let i = 0; i
效果对比:真实的财务数据:

Token 节省率计算:
延迟改善:
Claude 这一手,真是优势明显!
自己也能搞定,再也不用依赖他人了……
1. Token 效率:成本大幅缩减
不同规模的真实成本对比,这张表格让多少老板心痛!

实施成本如下:
- 环境搭建:$50K(一次性支出)
- 每月维护:$5K
中规模回本0.14 月 ≈ 3.6 天
三年总拥有成本对比(传统方式与代码执行):
传统方式:$360K × 36 = $12.96M
代码执行:$50K + ($4.8K + $5K) × 36 = $402.8K
三年节省:$12.96M – $403K = $12.56M(节省了 96.9%)
2. 渐进式工具发现:无需再预加载
search_tools 完整实现,这个 API 设计实在是太巧妙了!
数据处理新纪元:打破传统的限制
在项目启动时,构建倒排索引的效率可达 10 毫秒,这种速度令人瞩目:
// 启动倒排索引构建
const invertedIndex = new Map>();
for (const tool of allTools) {const words = [...tool.tags, ...tool.description.split(' ')];
for (const word of words) {if (!invertedIndex.has(word)) {invertedIndex.set(word, new Set());
}
invertedIndex.get(word).add(tool.name);
}
}
// 查询复杂度为 O(1),速度极快
function fastSearch(query: string): string[] {const words = query.split(' ');
let results = invertedIndex.get(words[0]) || new Set();
for (let i = 1; i wordResults.has(x)));
}
return Array.from(results);
}
在 Token 使用方面的比较(简直令人震惊):
- 传统方式:预加载 200 个工具 = 20K tokens
- search_tools:返回 3 个匹配项 = 150 tokens
- 动态导入:import 语句 = 0 tokens
- 总节省:99.25%
3. 大数据处理:无惧数据量的挑战
性能曲线对比显示,随着数据量的增加,优势愈加明显!

性能的拐点出现在 100 行 时。
对于少于 50 行的情况,传统方式显得更为简便,而超过 100 行的代码则展现了极大的执行效率。
动态策略选择:
async function processData(dataSource) {const estimatedSize = await estimateDataSize(dataSource);
if (estimatedSize
构建数据管道:
// 链式操作,内存峰值控制良好
const pipeline = data
.filter(cleanData) // 数据清洗
.map(transformFormat) // 格式转换
.reduce(aggregateByGroup) // 数据聚合
.map(calculateMetrics); // 指标计算
// 流式处理超大数据集
async function* streamProcess(dataSource) {for await (const batch of dataSource.batches(1000)) {
const processed = batch
.filter(validate)
.map(transform);
yield processed; // 逐批处理,内存使用可控
}
}
处理 100K 行数据时,内存峰值仅需500MB,而若是全量加载则需要5GB。
此外,编程的控制流、循环、条件及错误处理都是原生支持的。通过将 50 次调用减少到 1 次执行,延迟降低了 25 倍;并且在隐私安全方面,敏感数据不进入模型,确保 GDPR 和 HIPAA 的合规性;状态持久化机制使得长任务可以跨会话完成,3 小时的任务可拆分为 3 次执行;技能生态 SKILL.MD 文档化后,能力得以复用,团队的效率提升了 3 - 5 倍等等……

