원클릭으로
programmatic-tool-calling
编程化工具调用指南。允许 Agent 编写并执行 Python 代码,从而能够在一个沙箱环境中动态调用其他工具,实现循环、批处理和复杂逻辑。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
编程化工具调用指南。允许 Agent 编写并执行 Python 代码,从而能够在一个沙箱环境中动态调用其他工具,实现循环、批处理和复杂逻辑。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
赋予 Agent 作为集群指挥官(Leader)的能力,通过去中心化任务队列将子任务派发给 Worker 节点并发执行。
Captures learnings, errors, and corrections to .learnings/ directory for continuous improvement.
【系统级后备工具】仅用于网络诊断、进程管理等基础任务。代码搜索/数据分析等应使用专用 skill。
用于管理长耗时、异步任务的工具集。当任务预计执行时间超过 10 秒(如模型训练、大型构建、批量数据处理)时,必须使用此工具,而不是 bash。
Automates browser interactions for web testing, form filling, screenshots, and data extraction. Use when the user needs to navigate websites, interact with web pages, fill forms, take screenshots, test web applications, or extract information from web pages.
从外部 skills 库(~/.agents/skills)中查找、匹配并加载最合适的 skill 指令。注意:本 skill 专门用于操作外部 skill 库,加载本项目内置 skill 请使用 skill_load
| name | programmatic-tool-calling |
| description | 编程化工具调用指南。允许 Agent 编写并执行 Python 代码,从而能够在一个沙箱环境中动态调用其他工具,实现循环、批处理和复杂逻辑。 |
本技能赋予了 Agent 编写并在沙箱中执行 Python 代码的能力。最强大的特性是:可以在 Python 代码中动态调用 Agent 的其他工具。
run_programmatic_task这是本技能提供的唯一工具。
当遇到以下情况时,必须使用此工具,而不是尝试通过多轮对话来解决:
web_search,会浪费大量 Token 和时间。for/while)、条件判断 (if/else) 或重试逻辑来控制工具调用。web_search 即可。严禁使用 bash 工具来运行 Python 脚本以完成此类任务!
bash 执行 python -c "import requests..."
call_tool 不可用),无法复用 Session 状态,且难以处理异步逻辑。run_programmatic_task 工具,将代码作为参数传入。你编写的代码不仅是标准的 Python 代码,还运行在一个预配置的 async 环境中。
await call_tool(...)环境内置了一个特殊函数 call_tool,用于调用 Agent 已加载的其他工具。
await call_tool(tool_name: str, **kwargs) -> Any
web_search, codebase_search, bash 等)。沙箱环境预装了以下数据科学和异步库:
pandas (已导入为 pd)matplotlib.pyplot (已导入为 plt)asyncio (已导入为 asyncio)json, os, re, math 等)任务: "搜索 Python, JavaScript, Go 的最新特性,并统计结果长度。"
# 注意:代码无需包裹在 def 中,但建议使用 main 函数保持整洁
# 必须使用 await 调用 call_tool
async def main():
queries = [
"Python 3.13 new features",
"JavaScript ES2024 features",
"Go 1.22 new features"
]
results = {}
print(f"开始批量搜索 {len(queries)} 个主题...")
for q in queries:
print(f"正在搜索: {q}")
# 调用 web_search 工具 (假设该工具已加载)
# 如果不确定工具名,可以使用 bash 调用脚本
try:
# 方式 A: 直接调用工具 (推荐)
output = await call_tool('web_search', query=q)
except:
# 方式 B:降级使用 bash
output = await call_tool('bash', command=f'echo "Search failed for {q}"')
results[q] = len(str(output))
print(f" -> 结果长度: {len(str(output))}")
print("\n统计结果:")
print(pd.Series(results))
# 启动执行
await main()
任务: "生成一组随机数据并画图。"
import numpy as np
# 生成数据
x = np.linspace(0, 10, 100)
y = np.sin(x)
# 绘图
plt.figure(figsize=(10, 6))
plt.plot(x, y, label='Sin(x)')
plt.title('Demo Plot')
plt.grid(True)
# 这一步不是必须的,但在某些环境中可以保存图片
plt.savefig('sine_wave.png')
print("图表已生成: sine_wave.png")
# 在 pandas 中处理
df = pd.DataFrame({'x': x, 'y': y})
print("\n数据摘要:")
print(df.describe())
await: 调用 call_tool 时必须加 await,否则会返回协程对象而不是结果。stdout) 作为返回值。如果你不 print(),你将看不到任何结果。asyncio.run(): 代码是在一个已经在运行的事件循环中执行的。使用 asyncio.run() 会报错。直接 await 你的异步函数即可。call_tool 前,请确认 Agent 加载了哪些工具。如果不确定,可以先调用 get_tools 或查看系统提示。