P220 · 工具调用

在正确范围内查询资源 ID

Resolve opaque IDs within their scope

将名称转换成服务 ID 时保留所属组织或父资源的范围。

编辑审核

以下示例与示意结果由本站编写,用于说明方法,不是模型实测结果。

使用场景

用户要修改Finance列表的Budget任务,另一个列表也有Budget。教学发现Finance=L7,其中Budget=T9;L8也有同名T2。名称、资源id和父级身份必须一起核对,不能跨范围复用。

具体做法

先确定工作区与父资源,读取真实列表id,再在选定父级内定位子资源并消歧。执行时使用返回的父/子id,核对目标与操作范围,结果回读身份。无法唯一匹配时保留候选或必要询问,不把display name当opaque id或默认父级。

反例

直接传tasklist_id=Finance、task_id=Budget,或全局搜索命中L8/T2就更新,不核对用户父级。

改进写法

按教学用户目标解析Finance到L7,在L7中查Budget并确认T9,不能取L8/T2。使用发现返回的L7/T9及实际schema执行获准修改,回读核对列表与任务身份。同名Finance或Budget未能唯一匹配先消歧,不猜id、默认列表或跨工作区缓存。

为什么这样改

名称用于人类识别,ID用于具体服务对象;父级限制决定同名对象是谁。逐级解析与回读使操作连到用户实际目标,而非一个看似合理的全局匹配。

如何验证

教学正确请求L7/T9,不是标签或L8/T2;重复父/子名时应留下未决而不是随机选第一个。

检查id来自当前正确范围的返回,读权限与修改权限分开。本篇不更新真实任务。

适用边界

ID也可能被删除或权限改变,执行失败需核对当前对象。服务层级各不相同,冻结格式/默认名单不是普遍契约;资源定位不自动授权清空或删除列表。

原文与版本

如何收录这些方法