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

推荐订阅源

Jina AI
Jina AI
N
Netflix TechBlog - Medium
P
Proofpoint News Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
DataBreaches.Net
人人都是产品经理
人人都是产品经理
aimingoo的专栏
aimingoo的专栏
Stack Overflow Blog
Stack Overflow Blog
Blog — PlanetScale
Blog — PlanetScale
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
I
InfoQ
F
Fortinet All Blogs
J
Java Code Geeks
Last Week in AI
Last Week in AI
美团技术团队
大猫的无限游戏
大猫的无限游戏
有赞技术团队
有赞技术团队
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园_首页
量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件

博客园 - 人艰不拆_zmc

AG-UI 是什么?一篇文章讲清楚 AI Agent 与前端如何交互 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 的“标准设计图” Skill 里的 Python 脚本,到底是不是 Tool? 我终于搞懂了 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 独有
我终于搞懂了 Tool:原来不只是 Function Calling 里的函数
人艰不拆_zmc · 2026-09-06 · via 博客园 - 人艰不拆_zmc

以前我一直以为:

Tool 就是 Function Calling 里的函数,或者 MCP Server 里面暴露出来的函数。

后来在用 Codex 时,我发现它还会调用:

bash
read
write
grep
浏览器
GitHub
MCP Tool

这时候我才意识到:

Tool 不只是“业务函数”,而是 Agent 可以调用的一项具体能力。

这篇文章就用最小白的方式把 Tool 讲明白。


先记一句:

Tool = 给 AI Agent 使用的一项“可调用能力”。

例如:

查订单
读文件
写文件
执行命令
搜索代码
调用浏览器
访问 GitHub
查询 OA

这些都可以被做成 Tool。

所以 Tool 的范围其实比“函数”更大。


因为我们最常见的例子是 Function Calling。

例如:

def query_order(order_no: str):
    ...

把它注册给模型后,模型就可以调用:

query_order(order_no)

用户问:

帮我查一下订单 10086。

模型可能选择:

query_order(
    order_no="10086"
)

后台执行这个函数,再把结果交回模型。

所以这个例子里:

query_order
=
Tool

因此很容易形成:

Tool = Python 函数

这个理解不算错,但不够完整。


假设 Codex 想执行:

python check_excel.py

真正的 Tool 不是:

python check_excel.py

而是:

bash(command)

Codex 实际上相当于调用:

bash(
    command="python check_excel.py"
)

所以:

bash
=
Tool

python check_excel.py
=
传给 Tool 的参数

这和:

query_order(order_no)

其实是一个思路。

对模型来说,它们都是:

“我可以调用的一个能力入口”。


例如 Codex 要读取文件:

read(path)

要写文件:

write(path, content)

要搜索代码:

grep(pattern, path)

从模型角度看,它们也都像函数:

read("/project/app.py")

write("/project/result.md", "...")

grep("login", "/project")

所以:

Tool 最常见的表现形式确实很像“函数名 + 参数”。

但 Tool 背后真正做什么,不一定只是执行一个普通 Python 函数。


例如:

Tool:query_order(order_no)

底层可能是:

Python 函数
↓
HTTP API
↓
订单系统

而:

Tool:bash(command)

底层可能是:

Harness / Runtime
↓
Shell
↓
操作系统

再比如:

Tool:read(path)

底层就是文件读取能力。

所以:

Tool 是上层概念,底层可以用函数、API、Shell、文件系统、浏览器等很多方式实现。


MCP 可以理解成:

把 Tool 按统一标准提供给 Agent 的协议。

例如 OA 的 MCP Server 提供:

query_todo
query_approval
create_ticket

Codex 连接后,就可以把这些当 Tool 使用。

所以:

MCP
=
提供和连接 Tool 的标准协议

MCP Tool
=
通过 MCP 暴露出来的具体能力

MCP 不是 Tool 本身。


可以简单理解:

Tool
=
能力

Function Calling
=
模型表达“我要调用这个能力”的一种方式

例如:

Tool:
query_order(order_no)

模型通过 Function Calling 表达:

我要调用 query_order
参数是 10086

所以 Tool 是“能力”,Function Calling 更像“调用机制”。


不一定。

例如 Skill 里有:

scripts/check_excel.py

这个文件本身只是:

Python 脚本

Codex 可能通过:

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

来执行它。

这里:

bash
=
Tool

check_excel.py
=
被 Tool 执行的脚本

只有当 check_excel 被专门注册、暴露成:

check_excel(file_path)

让模型可以直接选择调用时,它才真正成为一个 Tool。


模型本身不会真正执行 Tool。

模型只负责决定:

调用哪个 Tool
+
传什么参数

真正执行 Tool 的,是:

Agent Runtime / Harness

完整流程:

用户提出问题
↓
模型判断需要 Tool
↓
模型选择 Tool + 参数
↓
Harness / Runtime 执行 Tool
↓
返回执行结果
↓
模型继续判断
↓
最终回答

所以:

LLM
=
大脑

Tool
=
可以使用的具体能力

Harness
=
真正负责执行和调度 Tool 的运行底座

10. 用 Codex 举个完整例子

用户说:

帮我检查这个 Excel 文件,然后生成一份结果。

Codex 可能这样工作:

1. 调用 read Tool
   ↓
   读取文件

2. 调用 bash Tool
   ↓
   执行 Python 检查脚本

3. 调用 write Tool
   ↓
   保存分析结果

4. 再检查结果

5. 最终回复用户

所以 Codex 做任务时,并不是只靠大模型“想”。

而是:

LLM
+
Tool
+
Harness

一起工作。


最后总结

最终我把 Tool 理解成:

Tool = Agent 可以调用的一项具体能力。

它可能是:

业务函数
HTTP API
Shell
文件读取
文件写入
浏览器
GitHub
MCP Tool
数据库查询

但从模型角度看,通常都会被包装成类似:

工具名称(参数)

的形式。

所以最关键的一句话是:

Tool 不只是 Function Calling 里的业务函数,也不只是 MCP 里的函数;只要是 Agent 能够选择并调用的一项具体能力,都可以叫 Tool。

再压缩成一句:

Tool
=
AI Agent 的“手”

模型负责决定“用哪只手”,Harness 负责真正把这只手动起来。