Damnatiox
知识文件夹

Tools与Runtime

现代 Agent Engineering 学习路线:Tools与Runtime

1 子目录8 文档

子目录

1

文档

8
Tools Call 推荐阅读Tools Call 推荐阅读 OpenAI Function Calling:严格 schema、工具选择和消息结构。 Anthropic Tool Use:client tool、server tool 及 tool result 契约。 Gemini Function Calling:多工具组合与函数调用配置。 Model Context Protocol:标准化接入 tools、resources 和 prompts。 ToolTool、Invocation、Execution 与 Runtime 边界Tool、Invocation、Execution 与 Runtime 边界 Freshness metadata last verified : 2026 08 24 version scope : provider neutral tool runtime source type : official SDK docs + engineering synthesis stability : stable concept 1. 四层不Tools Call:从工具暴露到结果回填Tools Call:从工具暴露到结果回填 1. 工具不是一段 prompt Tool 是运行时可调用接口,至少包含: 稳定名称和版本; 用途与适用条件; 输入 JSON Schema; 输出 Schema; 权限和副作用级别; handler; 超时、重试、幂等规则; 观测和审计字段。 模型只负责提出调用。Registry、Router、Permission Gate 和 Executor 负责把调用变成真实动作。 2. 完整数据流 工具 Schema、权限门与幂等设计工具 Schema、权限门与幂等设计 1. 输入 Schema 要表达语义 仅写 type: string 远远不够。一个文件读取工具应明确: 路径是相对工作区还是绝对路径; 是否允许 glob; 编码; 最大字节数; 行号是否从 1 开始; 路径必须存在且位于哪些根目录。 2. 权限是确定性层 Permission Gate 在执行前检查主体、动作、资源和上下文: 常见策略: 只读工具默认通过; 工作区内可逆写入按策略通过; 外部发布工具失败、空结果、重复调用与证据管理工具失败、空结果、重复调用与证据管理 1. 区分失败与空结果 以下状态语义完全不同: success with data :成功且有数据; success empty :查询成功但没有匹配; not found :指定资源不存在; invalid argument :调用参数错误; permission denied :策略阻止; timeout :结果未知或未完成; partial :返回了部分数据; internal error :Terminal 执行:从命令请求到可验证的进程结果Terminal 执行:从命令请求到可验证的进程结果 Terminal 是 Coding Agent 最常用、也最容易被低估的工具。它不是“把一段字符串交给 shell”,而是一个受约束的 OS 进程执行器 :接收结构化请求,创建子进程,持续消费输出,处理超时与取消,最后返回可审计结果。 1. Terminal Tool 的职责边界 模型负责选择“运行什么以及为什么运行”,Terminal Executor 负责“如何可靠地运行”: TTerminal 输出读取:stdout、stderr、事件流与有界观察Terminal 输出读取:stdout、stderr、事件流与有界观察 执行命令只是第一步。Agent 还需要知道命令正在做什么、是否卡住、哪些输出是结果、哪些是诊断,以及输出被截断后还能否追溯完整日志。可靠的 Terminal Tool 应把 字节流、进程状态和面向模型的观察 分成三层。 1. 三层数据模型 1. 传输层 :OS 提供的字节流,可能按任意边界分块; 2. 事件层 :为每一块数据添加进程 ID、流名称、单调递增序号和时File I/O:读取、写入、补丁、并发保护与证据File I/O:读取、写入、补丁、并发保护与证据 文件工具是 Coding Agent 与仓库交互的基础。可靠实现的目标不是“让模型拥有一个万能文件 API”,而是提供少量、语义明确、结果可验证的操作,使每次读取和变更都能定位、比较、回滚和测试。 1. 建议的最小工具集 工具 主要输入 主要输出 默认副作用 list directory path、depth、cursor typed entries、next cursor 无 sta