惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Check Point Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 聂微东
月光博客
月光博客
博客园 - 司徒正美
爱范儿
爱范儿
aimingoo的专栏
aimingoo的专栏
量子位
Recent Announcements
Recent Announcements
V
V2EX
P
Proofpoint News Feed
小众软件
小众软件
云风的 BLOG
云风的 BLOG
腾讯CDC
宝玉的分享
宝玉的分享
Microsoft Azure Blog
Microsoft Azure Blog
大猫的无限游戏
大猫的无限游戏
Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
A
About on SuperTechFans
B
Blog
博客园_首页
GbyAI
GbyAI
博客园 - Franky

博客园 - 人艰不拆_zmc

AI 里的“本体”到底是什么?一篇写给技术小白的通俗解释 15000mAh 到底是什么概念?一篇看懂电池容量 go2_ros2_sdk 到底是干什么的?从 Go2、官方 SDK、ROS2 一路讲到 SLAM 和 Nav2 买了宇树 Go2 以后怎么二次开发?写给第一次做机器狗项目的人 买了一块 NVIDIA Jetson,怎么在上面安装 ROS2?从 JetPack 到 ROS2 的完整入门指南 NVIDIA Jetson 到底是什么?写给第一次接触机器人和边缘 AI 的人 ROS / ROS2 到底是什么?写给第一次接触机器人开发的人 大模型到底能同时多少人用?一篇看懂并发、排队与容量估算 大模型为什么有快有慢?一篇看懂响应速度背后的关键因素 技术小白也能看懂:大模型里的量化、蒸馏到底是什么意思? Codex 使用技巧:从“会聊天”到“真正能干活” 我终于搞懂了:Codex 对话中插件和 Skill 到底怎么用 我终于搞懂了 Agent Spec:它其实就是 Agent 的“标准设计图” 我终于搞懂了 Tool:原来不只是 Function Calling 里的函数 我终于搞懂了 Codex 的 Plugin 和 Skill:顺便把 App、MCP 一次理清 我终于搞懂了 Codex 的“应用”:App 到底是什么,怎么添加和维护? 我终于搞懂了 Tool、Function Calling 和 MCP:大模型到底怎么知道该调哪个接口? 我终于搞懂了 MCP:从 HTTP API 到 ERP MCP Server 的完整入门 我终于搞懂了 Codex 的“记忆”是怎么回事 Codex 用久了越来越慢?我的上下文管理小技巧 我终于搞懂了 Codex 里的 Thread、Turn 和 Session 从 Qwen3.8-27B 到 FP8、NVFP4、MoE:一次搞懂几个常见大模型概念 FPS 是什么意思?简单理解 60 FPS、25 FPS 和视频帧率 DeepSeek Harness 明明像 AI Coding 工具,为什么又能用来构建各种 Agent? 使用 Codex 开发项目,怎么才能节约 Token? 模型里的 32K、128K、256K 是什么意思?简单聊聊上下文限制 Codex 一次对话到底会给模型发送什么?以 Spring Boot 项目为例讲清 Context、代码读取与 Token 消耗 AI Agent 中的 Rule 是什么?以 Codex 为例,小白也能看懂 我终于搞懂了 Harness:它不是论文,也不是标准,更不是 Codex 独有 小白也能看懂:RTSP 到底是什么?
Skill 里的 Python 脚本,到底是不是 Tool?
人艰不拆_zmc · 2026-09-06 · via 博客园 - 人艰不拆_zmc

最近在理解 Codex 的 Skill 时,我遇到一个很容易混淆的问题:

Skill 里面的 .py 脚本,是不是就叫 Tool?

答案是:

不一定。普通 Python 脚本本身通常不叫 Tool。


1. 先看一个 Skill 目录

例如:

excel-skill/
├── SKILL.md
└── scripts/
    └── check_excel.py

这里:

SKILL.md

是这项 Skill 的工作说明书。

而:

check_excel.py

只是一个普通 Python 脚本。

它本身不会自动变成 Tool。


2. 那这个 Python 脚本是谁执行的?

假设 SKILL.md 里写着:

处理 Excel 完成后,
运行 scripts/check_excel.py 检查结果。

Codex 可能会这样执行:

Codex 读取 Skill
↓
发现需要运行 check_excel.py
↓
调用 bash Tool
↓
执行:

python scripts/check_excel.py

所以这里真正的 Tool 是:

bash

而不是:

check_excel.py

更准确地说:

bash(command="python scripts/check_excel.py")

其中:

bash
= Tool

python scripts/check_excel.py
= 传给 Tool 的命令

check_excel.py
= 被执行的 Python 脚本

可以简单理解成:

Tool = 模型可以直接调用的一个能力入口。

例如:

bash(command)

read(path)

write(path, content)

query_order(order_no)

这些都可以是 Tool。

模型会决定:

调用哪个 Tool
+
传什么参数

真正执行 Tool 的,是 Agent 的 Runtime / Harness。


如果我们把一个 Python 函数专门注册给模型,例如:

def check_excel(file_path: str):
    ...

并把它暴露成:

check_excel(file_path)

让模型可以直接选择并调用它,

那么:

这个 Python 函数就可以成为一个 Tool。

所以:

普通 Python 脚本
≠ 天然就是 Tool

而:

被注册、暴露成模型可调用能力的函数
= 可以成为 Tool

5. 最简单的关系

可以这样记:

Skill
= 工作说明书

Python 脚本
= 配套代码

Tool
= 模型可以调用的能力入口

Harness / Runtime
= 真正负责执行 Tool

完整流程:

用户提出任务
↓
Codex 使用 Skill
↓
Skill 告诉 Codex 要运行某个脚本
↓
Codex 调用 bash Tool
↓
Harness 执行 Python 脚本
↓
脚本返回结果
↓
Codex 继续处理

最后总结

一句话记住:

Skill 里的 Python 脚本只是代码文件,不一定是 Tool;只有当某个函数或能力被注册并暴露给模型直接调用时,它才算 Tool。

再压缩一点:

.py 脚本
= 被执行的代码

Tool
= 执行能力的入口