AI Agent 调用工具时上下文爆炸?Pctx 用 Code Mode 把 150K Token 降到 2K
你有过这种经历吗?AI 编码 Agent 需要处理一个简单的数据筛选任务——从 Google Sheet 读取数据,过滤出符合条件的行,然后计算汇总。传统工具调用模式下,Agent 先调用 getSheet(id) 获取 1000 行数据塞进上下文,再调用 filterRows(criteria) 过滤出 50 行又塞回去,最后再调用 summarize()……每一步的中间结果都在撑大上下文窗口,Token 消耗像滚雪球一样增长。
Anthropic 的工程师们提出了一个解决思路——Code Mode(代码模式):让 Agent 直接写代码来批量处理,而不是逐次调用工具。但实现 Code Mode 需要处理 MCP 服务器聚合、认证管理、沙箱安全等一系列基础设施问题。Pctx(读作「p-context」)正是解决这个问题的开源框架——它坐落在 AI Agent 和 MCP 服务器之间,聚合多个上游 MCP 服务器,通过统一的 Code Mode 接口暴露工具,让 Agent 用写代码的方式替代序列化工具调用。
| 场景 | 传统工具调用 (Tool Mode) | Code Mode (Pctx) |
|---|---|---|
| 数据过滤 + 筛选 + 汇总 | 3 次工具调用,中间数据来回塞上下文 | 1 段 TypeScript 代码本地运行 |
| Token 消耗 | 150K tokens(多步操作实测) | 2K tokens(98.7% 减少) |
| 上下文污染 | 每步中间结果残留在上下文中 | 只在沙箱中处理 |
| 错误恢复 | 每步需独立重试工具调用 | 代码级 try/catch |
| 多 MCP 认证 | 每个 MCP 单独管理 | Pctx 统一管理 |
三行命令上手
Pctx 的安装方式覆盖了主流包管理器:
brew install portofcontext/tap/pctx npm i -g @portofcontext/pctx curl --proto '=https' --tlsv1.2 -LsSf https://raw.githubusercontent.com/portofcontext/pctx/main/install.sh | sh
安装后,一行命令启动 Code Mode:
pctx start
要聚合多个 MCP 服务器也很简单:
pctx mcp init pctx mcp add stripe https://mcp.stripe.com pctx mcp add memory --command "npx -y @modelcontextprotocol/server-memory" pctx mcp dev pctx mcp start --stdio
核心能力
Code Mode:工具调用的范式转变
Pctx 的核心价值在于用代码执行替代序列化工具调用。传统 MCP 流程中,Agent 每调用一个工具就要把结果送回上下文,Agent 再基于结果决定下一步——这就像每次发完命令都要等人把结果读回大脑,再想下一步。Code Mode 让 Agent 直接写一段 TypeScript 脚本在沙箱中运行:
// 传统方式:3 次工具调用,150K tokens
const sheet = await gdrive.getSheet({ sheetId: "abc" });
const orders = sheet.filter((row) => row.status === "pending");
console.log(`Found ${orders.length} orders`);
这段代码在 Pctx 的 Deno 沙箱中本地执行,一次性完成数据获取、过滤和计算,Agent 只接收最终的 console.log 输出。实测数据显示,对同一个多步操作,Token 消耗从 150K 降至 2K——减少了 98.7%。
Python SDK 让 Agent 框架无缝接入
如果你使用 OpenAI Agents SDK、LangChain 或其他 Python Agent 框架,Pctx 提供了完整的 Python SDK:
pip install pctx-client
from pctx_client import Pctx, tool
from agents import Agent
from agents.run import Runner
@tool
def get_weather(city: str) -> str:
"""Get weather information for a given city."""
return f"It's always sunny in {city}!"
pctx = Pctx(tools=[get_weather])
tools = pctx.openai_agents_tools()
agent = Agent(
name="WeatherBot",
model="gpt-4o",
instructions="You run code to complete complex tasks.",
tools=tools,
)
统一 MCP 聚合与认证管理
当你同时使用多个 MCP 服务器时,Pctx 充当了统一的入口。Agent 不需要分别管理每个 MCP 的连接、认证和认证刷新——Pctx 的 pctx.json 配置集中处理这些,LLM 生成的代码永远看不到你的认证凭据。
认证信息来源有优先级:环境变量 → 系统钥匙串 → 外部命令,保证密钥安全。
与传统方案的横向对比
| 维度 | Pctx (Code Mode) | 传统 Tool Mode | 自定义脚本 |
|---|---|---|---|
| Token 效率 | 极高(2K/步) | 极低(150K/步) | 中等 |
| Agent 认知负荷 | 低(单段代码) | 高(多步工具编排) | 中(需预定义流程) |
| 安全沙箱 | ✅ Deno 隔离沙箱 | ❌ 无沙箱 | ❌ 依赖实现 |
| 多 MCP 聚合 | ✅ 原生支持 | ❌ 需手动管理 | ❌ 需手动实现 |
| 安装复杂度 | 1 条命令 | 无安装 | 需开发 |
| 许可证 | MIT | — | — |
注意事项
- Pctx 当前版本(v0.x)需要 Rust 环境或通过预编译包安装,Node.js 18+ 和 Homebrew 用户安装最顺畅
- Code Mode 生成的代码在 Deno 沙箱中运行,默认只能访问配置文件允许的网络主机——如果你需要访问特定 API,记得在
pctx.json的allowedHosts中添加 - Python SDK 是 HTTP 客户端模式,需要先启动
pctx服务器进程 - 目前 Node.js SDK 即将推出(README 标注 “Coming soon”),纯 TypeScript 生态的开发者暂时通过 MCP 服务器模式使用
- 被 Block(原 Square)和 Sentient 等公司采用,说明在生产环境中已有验证
总结
如果你的 AI Agent 工作流中涉及多次工具调用(数据处理、多步编排、跨 MCP 服务器操作),Pctx 的 Code Mode 方案能显著降低 Token 消耗和上下文污染。用一次安装、一行启动,让 Agent 从「一个个调工具」升级为「写代码批量处理」——这才是 AI Agent 调用工具的合理姿势。
- GitHub:portofcontext/pctx(267⭐, MIT)
- 文档:pctx.readthedocs.io
- Python SDK:
pip install pctx-client