工具调用代表语言模型在提示轮次期间请求代理执行的操作。当 LLM 确定需要与外部系统交互时——如读取文件、运行代码或获取数据——它会生成代理代表其执行的工具调用。 代理通过Documentation Index
Fetch the complete documentation index at: https://acp-docs.cxykevin.top/llms.txt
Use this file to discover all available pages before exploring further.
session/update 通知报告工具调用,允许客户端向用户显示实时进度和结果。
虽然代理处理实际执行,但它们可以利用客户端功能,如权限请求或文件系统访问,以提供更丰富、更集成的体验。
创建
当语言模型请求工具调用时,代理应该向客户端报告:会话中此工具调用的唯一标识符
描述工具正在做什么的人类可读标题
被调用工具的类别。工具种类帮助客户端选择适当的图标并优化工具执行进度的显示方式。
发送到工具的原始输入参数
工具返回的原始输出
更新
随着工具执行,代理发送更新以报告进度和结果。 更新使用带有tool_call_update 的 session/update 通知:
toolCallId 外的所有字段在更新中都是可选的。只需包含正在更改的字段。
请求权限
代理在执行工具调用之前可以通过调用session/request_permission 方法请求用户权限:
此请求的会话 ID
包含操作详细信息的工具调用更新
"cancelled" 结果响应:
用户的决定,可以是:
cancelled- 提示轮次被取消selected并带有optionId- 所选权限选项的 ID
权限选项
提供给客户端的每个权限选项包含:此选项的唯一标识符
显示给用户的可读标签
帮助客户端为每个选项选择适当图标和 UI 处理的提示。
allow_once- 仅允许此操作一次allow_always- 允许此操作并记住选择reject_once- 仅拒绝此操作一次reject_always- 拒绝此操作并记住选择
状态
工具调用在其生命周期中经历不同的状态:pending
工具调用尚未开始运行,因为输入正在流式传输或等待批准
in_progress
工具调用当前正在运行
completed
工具调用成功完成
failed
工具调用失败并出现错误
内容
工具调用可以产生不同类型的内容:常规内容
标准内容块,如文本、图像或资源:差异
显示为差异的文件修改:被修改的文件的绝对路径
原始内容(新文件为 null)
修改后的新内容
终端
命令执行的实时终端输出:使用
terminal/create 创建的终端的 ID了解更多关于终端的信息
跟随代理
工具调用可以报告它们正在处理的文件位置,使客户端能够实现”跟随”功能,实时跟踪代理正在访问或修改的文件。正在访问或修改的文件的绝对路径
文件中的可选行号