open-ptc-agent
open-ptc-agent 是一个开源智能体框架,实现了 Anthropic 提出的“程序化工具调用”(PTC)理念。与传统 AI 工具逐个执行指令不同,它让大模型直接编写并运行 Python 代码来 orchestrate 复杂工作流。
这一设计巧妙解决了大模型处理海量数据时的痛点。在传统模式下,大量原始数据(如数千条股票行情)需全部传入模型上下文,极易导致令牌消耗过大甚至超出限制。open-ptc-agent 通过在安全的 Daytona 沙箱中本地执行代码,仅将最终处理结果返回给模型,从而减少 85%-98% 的令牌用量,显著提升处理效率与成本效益。
该工具特别适合开发者、数据分析师及 AI 研究人员使用,尤其是那些需要处理大规模结构化数据、时间序列分析或复杂数据清洗场景的专业人士。普通用户若具备基础编程概念,也能通过其交互式命令行界面轻松上手。
技术亮点方面,open-ptc-agent 基于 LangChain DeepAgents 构建,支持子代理异步并行执行、任务状态实时监控以及多模态视觉分析能力。它不仅保留了代码执行的灵活性,还通过标准化的 Agent Skills 接口实现了功能扩展,是让大模型真正化身“数据工程师”的高效利器。
使用场景
一位量化分析师需要快速处理过去三年涵盖 50 只股票的每日交易数据(约 4 万行 JSON),以计算移动平均线并生成可视化图表。
没有 open-ptc-agent 时
- 上下文窗口爆炸:传统工具调用会将数万条原始行情数据全部返回给大模型,瞬间耗尽 Token 配额,导致任务失败或成本激增。
- 逻辑碎片化严重:模型必须分步发起成百上千次独立的工具调用来逐行处理数据,不仅速度极慢,还容易在复杂的中间步骤中丢失逻辑连贯性。
- 后处理繁琐:模型只能输出原始数值,分析师需手动将结果复制到本地,再编写额外代码进行清洗、聚合及绘图,工作流被强行割裂。
使用 open-ptc-agent 后
- 沙箱内闭环计算:open-ptc-agent 指挥模型直接在 Daytona 沙箱中编写并执行 Python 脚本,数据在本地完成过滤与聚合,仅将最终结论回传,节省 95% 以上的 Token。
- 代码编排工作流:利用大模型擅长的代码生成能力,一次性 orchestrate(编排)完整的数据分析链路,从读取文件到计算指标一气呵成,无需反复交互。
- 直接交付可用成果:脚本执行完毕后,分析图表和统计报告直接生成在沙箱指定目录,用户可立即下载查看,实现了从“对话”到“交付”的无缝衔接。
open-ptc-agent 通过将“工具调用”升级为“代码执行”,让 AI 代理在处理大规模结构化数据时,真正具备了独立端到端解决复杂工程问题的能力。
运行环境要求
- Linux
- macOS
- Windows
未说明
未说明

快速开始
开源 PTC 代理
快速入门 | CLI 参考 | 配置 | 更新日志 | 路线图
演示:使用 DeepSeek V3.2 分析 NVDA、AMD 和 SPY 股票的两年数据(超过 15,000 行原始 JSON)
什么是程序化工具调用?
本项目是 Anthropic 最近推出的 程序化工具调用 (PTC) 的开源实现,它使智能体能够通过代码执行来调用工具,而不是逐个发出 JSON 工具调用。这一范式也在他们早期的技术博客 使用 MCP 进行代码执行 中有所体现。
为什么选择 PTC?
大型语言模型在编写代码方面表现出色!它们擅长理解上下文、推理数据流并生成精确的逻辑。PTC 让它们发挥所长——编写协调整个工作流程的代码,而不是一次只处理一个工具调用。
传统的工具调用会将完整的结果返回到模型的上下文窗口中。假设要获取 10 个股票代码一年的日线价格数据,这意味着超过 2,500 个 OHLCV 数据点会污染上下文——仅仅为了计算一个投资组合摘要就需要消耗数万 tokens。而使用 PTC 时,代码会在沙盒环境中运行,在本地处理数据,只有最终输出才会返回给模型。结果是 token 消耗减少了 85% 到 98%。
PTC 在处理大量结构化数据、时间序列数据(如金融市场数据)以及需要进一步数据处理——过滤、聚合、转换或可视化后再返回给模型的场景中尤为出色。
工作原理
用户任务
|
v
+-------------------+
| PTCAgent | 工具发现 -> 编写 Python 代码
+-------------------+
| ^
v |
+-------------------+
| Daytona Sandbox | 执行代码
| +-------------+ |
| | MCP Tools | | tool() -> 处理 / 过滤 / 聚合 -> 输出到 data/ 目录
| | (Python) | |
| +-------------+ |
+-------------------+
|
v
+-------------------+
|最终交付物 | 文件和数据可以从沙盒下载
+-------------------+
基于 LangChain DeepAgents 构建——该项目使用了 DeepAgents 的许多组件,并且 CLI 功能是从 deepagent-cli 启动的。特别感谢 LangChain 团队!
沙盒环境由 Daytona 提供。
新特性
- 交互式 CLI - 新增
ptc-agent命令,支持基于终端的交互,具有会话持久化、计划模式、主题和丰富的 UI 界面 - 后台子代理执行 - 子代理以异步方式运行,并分配任务 ID(Task-1、Task-2 等)。主代理在子代理并行执行的同时继续工作。完成的结果会被缓存,代理会收到通知并通过
task_output()获取结果 - 任务监控 -
wait()会阻塞直到任务完成;task_output()可以获取结果或显示进度 - 代理技能 - 通过开放的 Agent Skills 标准扩展能力
- 视觉/多模态支持 - 新增
view_image工具,使具备视觉能力的大模型能够分析来自 URL、base64 数据或沙盒文件中的图像
特性
- 通用 MCP 支持 - 自动将任何 MCP 服务器工具转换为 Python 函数
- 渐进式工具发现 - 按需发现工具,避免一次性加载大量工具定义带来的高 token 消耗
- 自定义 MCP 上传 - 可直接将 Python 实现的 MCP 部署到沙盒会话中
- 代理技能 - 用于自定义工作流程的技能
- 增强的文件工具 - 优化了 glob、grep 等文件操作工具,专为沙盒环境设计
- Daytona 后端 - 安全的代码执行,具备文件系统隔离和快照支持
- 自动图片上传 - 图表和图片会自动上传到云存储(Cloudflare R2、AWS S3、阿里云 OSS)
- 兼容 LangGraph - 可与 LangGraph Cloud/Studio 部署兼容
- 多 LLM 支持 - 可与 Anthropic、OpenAI 以及您在
llms.json中配置的任何 LLM 提供商一起使用
项目结构
├── libs/
│ ├── ptc-agent/ # 核心代理库
│ │ └── ptc_agent/
│ │ ├── core/ # 沙盒、MCP 注册表、工具生成器、会话
│ │ ├── config/ # 配置类和加载器
│ │ ├── agent/ # PTCAgent、工具、提示词、中间件、子代理
│ │ └── utils/ # 云存储上传工具
│ │
│ └── ptc-cli/ # 交互式 CLI 应用程序
│ └── ptc_cli/
│ ├── core/ # 状态、配置、主题设置
│ ├── commands/ # 斜杠命令、Bash 执行
│ ├── display/ # 丰富的终端渲染
│ ├── input/ # 提示词、补全功能、文件引用
│ └── streaming/ # 工具审批、执行
│
├── skills/ # 演示技能(来自 Anthropic)
│ ├── pdf/ # PDF 处理
│ ├── xlsx/ # 电子表格操作
│ ├── docx/ # 文档创建
│ ├── pptx/ # 演示文稿制作
│ └── creating-financial-models/ # 金融建模
│
├── mcp_servers/ # 演示 MCP 服务器实现
│ ├── yfinance_mcp_server.py
│ └── tickertick_mcp_server.py
│
├── example/ # 演示笔记本和脚本
│ ├── PTC_Agent.ipynb
│ ├── Subagent_demo.ipynb
│ └── quickstart.py
│
├── config.yaml # 主配置文件
└── llms.json # LLM 提供商定义
原生工具
该代理拥有原生工具以及来自 deep-agent 的中间件功能:
核心工具
| 工具 | 描述 | 关键参数 |
|---|---|---|
| execute_code | 在具备 MCP 工具访问权限的情况下执行 Python 代码 | code |
| Bash | 运行 Shell 命令 | command, timeout, working_dir |
| Read | 按行读取文件并附带行号 | file_path, offset, limit |
| Write | 写入或覆盖文件 | file_path, content |
| Edit | 精确替换字符串 | file_path, old_string, new_string |
| Glob | 文件模式匹配 | pattern, path |
| Grep | 内容搜索(ripgrep) | pattern, path, output_mode |
中间件
| 中间件 | 描述 | 提供的工具 |
|---|---|---|
| SubagentsMiddleware | 将专业任务委托给具有隔离执行环境的子代理 | task() |
| BackgroundSubagentMiddleware | 异步执行子代理任务,并通过通知收集结果 | wait(), task_output() |
| ViewImageMiddleware | 将图像注入对话中,以支持多模态大模型 | view_image() |
| FilesystemMiddleware | 文件系统操作 | read_file, write_file, edit_file, glob, grep, ls |
| TodoListMiddleware | 任务规划与进度跟踪(自动启用) | write_todos |
| SummarizationMiddleware | 自动总结对话历史(自动启用) | - |
可用子代理(默认):
research- 使用 Tavily 进行网络搜索,并结合 think 工具进行战略思考general-purpose- 提供完整的 execute_code、文件系统和视觉工具,适用于复杂的多步骤任务
后台执行模型:
当代理调用 task() 时,子代理会被分配顺序编号(Task-1、Task-2 等),并在后台运行。主代理会:
- 立即收到包含任务 ID 的确认信息
- 继续执行其他工作,同时子代理并行运行
- 在任务完成后收到通知
- 调用
task_output()获取缓存的结果 - 如有需要,可使用
wait(task_number=N)阻塞等待特定任务完成
MCP 集成
演示 MCP 服务器
演示中包含了 3 个在 config.yaml 中配置好的 MCP 服务器:
| 服务器 | 传输方式 | 工具数量 | 用途 |
|---|---|---|---|
| tavily | stdio (npx) | 4 | 网络搜索 |
| yfinance | stdio (python) | 21 | 股票价格、财务数据 |
| tickertick | stdio (python) | 7 | 财经新闻 |
MCP 工具的呈现方式
在提示词中 - 工具摘要会被注入到系统提示词中:
tavily: 用于查找最新信息的网络搜索引擎
- 模块:tools/tavily.py
- 可用工具:4 个
- 导入语句:from tools.tavily import <tool_name>
在沙盒中 - 会生成完整的 Python 模块:
/home/daytona/
├── tools/
│ ├── mcp_client.py # MCP 通信层
│ ├── tavily.py # from tools.tavily import search
│ ├── yfinance.py # from tools.yfinance import get_stock_history
│ └── docs/ # 自动生成的文档
│ ├── tavily/*.md
│ └── yfinance/*.md
├── results/ # 代理输出
└── data/ # 输入数据
在代码中 - 代理可以直接导入并使用工具:
from tools.yfinance import get_stock_history
import pandas as pd
# 获取数据 - 数据保留在沙盒内
history = get_stock_history(ticker="AAPL", period="1y")
# 在本地处理 - 不浪费任何 token
df = pd.DataFrame(history)
summary = {"mean": df["close"].mean(), "volatility": df["close"].std()}
# 只将摘要返回给模型
print(summary)
技能
Agent Skills 是 Anthropic 推出的一项开放标准,用于将领域专业知识打包成可重用的指令和资源文件夹。技能通过渐进式披露动态加载——启动时仅加载元数据,内容则按需加载。
包含的演示技能
为演示目的,包含了来自 anthropics/skills 的以下技能:
| 技能 | 描述 |
|---|---|
| PDF 文档操作 - 提取文本/表格、创建、合并/拆分、填写表单 | |
| xlsx | 使用公式、格式化及数据分析创建电子表格 |
| docx | 创建、编辑和格式化文档 |
| pptx | 创建、编辑和分析演示文稿 |
| creating-financial-models | DCF 分析、敏感性测试、蒙特卡洛模拟 |
配置
技能默认启用,加载路径如下:
- 用户目录:
~/.ptc-agent/skills/ - 项目目录:
.ptc-agent/skills/(或旧版中的skills/)
当名称冲突时,项目技能会覆盖用户技能。
# config.yaml
skills:
enabled: true
user_skills_dir: "~/.ptc-agent/skills"
project_skills_dir: ".ptc-agent/skills"
创建自定义技能
每个技能是一个包含 SKILL.md 文件的文件夹,其中包含 YAML 前言和说明:
---
name: my-skill
description: "清晰描述该技能的作用及适用场景"
---
# 我的技能
Claude 在此技能激活时遵循的指令、工作流程和示例。
## 指导原则
- 指导原则 1
- 指导原则 2
此外,还可以将其他文件(如 reference.md、脚本等)与 SKILL.md 一同打包,并根据需要引用。技能会被上传至沙盒中的 /home/daytona/skills/<skill-name>/ 目录。
有关详细指南,请参阅 Anthropic 的技能创作最佳实践。
开始使用
先决条件
- Python 3.12+
- Node.js(用于 MCP 服务器)
- uv 包管理器
安装
git clone https://github.com/Chen-zexi/open-ptc-agent.git
cd open-ptc-agent
uv sync
source .venv/bin/activate # Windows 系统:.venv\Scripts\activate
最小配置
创建一个 .env 文件,包含最低要求的密钥:
# 选择一个 LLM 提供商
ANTHROPIC_API_KEY=your-key
# 或
OPENAI_API_KEY=your-key
# 或
# 任何您已在 llms.json 和 config.yaml 中配置的模型
# 您也可以在此处使用 Minimax 和 GLM 的编程计划!
# Daytona(必需)
DAYTONA_API_KEY=your-key
请从 Daytona 控制台获取您的 Daytona API 密钥。他们为新用户提供了免费额度!
扩展配置
若需完整功能,可添加以下可选密钥:
# MCP 服务器
TAVILY_API_KEY=your-key # 网络搜索
ALPHA_VANTAGE_API_KEY=your-key # 财务数据
# 云存储(选择一个提供商)
R2_ACCESS_KEY_ID=... # Cloudflare R2
AWS_ACCESS_KEY_ID=... # AWS S3
OSS_ACCESS_KEY_ID=... # Alibaba OSS
# 跟踪(可选)
LANGSMITH_API_KEY=your-key
完整环境变量选项列表请参阅 .env.example。
运行 CLI
启动交互式 CLI:
ptc-agent
有关所有命令和选项,请参阅 ptc-cli 文档。
如需以编程方式使用 PTC Agent,请参阅 ptc-agent 文档。
演示笔记本
以下是 Jupyter 笔记本示例:
- PTC_Agent.ipynb - 使用 open-ptc-agent 的快速演示
- Subagent_demo.ipynb - 后台子代理执行
- quickstart.py - Python 脚本快速入门
您还可以选择使用 LangGraph API 部署该代理。
配置
该项目使用两个配置文件:
- config.yaml - 主配置文件(LLM 选择、MCP 服务器、Daytona、安全性和存储)
- llms.json - LLM 提供商定义
快速配置
在 config.yaml 中选择您的 LLM:
llm:
name: "claude-sonnet-4-5" # 可选:claude-sonnet-4-5、gpt-5.1-codex-mini、gemini-3-pro
启用或禁用 MCP 服务器:
mcp:
servers:
- name: "tavily"
enabled: true # 设置为 false 可禁用
有关完整的配置选项,包括 Daytona 设置、安全策略以及添加自定义 LLM 提供商,请参阅 配置指南。
CLI 参考
ptc-agent 命令提供交互式终端界面,具备以下功能:
- 会话持久化和沙箱复用
- 斜杠命令(
/help、/files、/view、/download) - 使用
!command执行 Bash 命令 - 使用
@path/to/file引用文件 - 可自定义的主题和颜色方案
快速入门:
ptc-agent # 启动交互式会话
ptc-agent --plan-mode # 启用执行前的计划审批
ptc-agent list # 列出可用代理
有关完整的 CLI 文档,包括所有选项、命令、键盘快捷键和主题配置,请参阅 CLI 参考。
路线图
计划中的功能和改进:
- PTC 代理的 CLI 版本
- 支持代理技能(agentskills.io 开放标准)
- 自动化测试的 CI/CD 管道
- 更多 MCP 服务器集成 / 更多示例笔记本
- 性能基准测试和优化
- 改进的搜索工具,以更流畅地发现工具
贡献
我们欢迎社区的贡献!以下是一些您可以帮助的方式:
- 代码贡献 - 修复 bug、新增功能、改进(CI/CD 即将推出)
- 用例 - 分享您如何在生产或研究中使用 PTC
- 示例笔记本 - 创建展示不同工作流的演示
- MCP 服务器 - 构建或推荐与 PTC 配合良好的 MCP 服务器(数据处理、API 等)
- 提示技巧 - 分享能够提升代理性能的提示技术
请在 GitHub 上提交问题或拉取请求以参与贡献!
致谢
本项目基于以下研究和工具:
研究/文章
- 在 Claude 开发者平台上引入高级工具使用 - Anthropic
- 使用 MCP 进行代码执行:构建更高效的 AI 代理 - Anthropic
- CodeAct:可执行代码操作可激发更好的 LLM 代理 - Wang 等人
框架和基础设施
- LangChain DeepAgents - 基础代理框架
- Daytona - 沙盒基础设施
星标历史
如果您觉得这个项目有用,请考虑给它一个星标!这有助于让更多人发现这项工作。
许可证
MIT 许可证
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。
