发现真实工具名,只给审阅代理读取能力
本页展示随包原生输入和验收参考。目标产品运行状态:未运行。表格与图片不代表产品已经生成的结果。
input.csv / practice-data.json
本课实际输入字段
| tool | kind | allow |
|---|---|---|
| get_project | read | True |
| get_screen | read | True |
| create_project | write | False |
| generate_screen_from_text | write | False |
建立允许名单
reference.csv:作者验收映射,不是目标API回包
| reviewPolicy | include | missingName |
|---|---|---|
| read only | ||
| actual discovered read tool names | ||
| stop and review |
规则与输入文件原文
{
"inputRows": [
{
"tool": "get_project",
"kind": "read",
"allow": true
},
{
"tool": "get_screen",
"kind": "read",
"allow": true
},
{
"tool": "create_project",
"kind": "write",
"allow": false
},
{
"tool": "generate_screen_from_text",
"kind": "write",
"allow": false
}
],
"referenceRows": [
{
"reviewPolicy": "read only"
},
{
"include": "actual discovered read tool names"
},
{
"missingName": "stop and review"
}
],
"invalidRows": [
{
"tool": "get_screeen",
"error": "not in discovered directory"
},
{
"fallback": "include all",
"error": "widens task capability"
}
],
"notes": [
"全部输入为作者自制教学资料,不含真实客户或账号。",
"referenceRows是校验基准,不是目标模型预测或识别结果;targetProduct=not_run。"
],
"files": {
"input.json": "[\n {\n \"tool\": \"get_project\",\n \"kind\": \"read\",\n \"allow\": true\n },\n {\n \"tool\": \"get_screen\",\n \"kind\": \"read\",\n \"allow\": true\n },\n {\n \"tool\": \"create_project\",\n \"kind\": \"write\",\n \"allow\": false\n },\n {\n \"tool\": \"generate_screen_from_text\",\n \"kind\": \"write\",\n \"allow\": false\n }\n]\n",
"reference.json": "{\n \"identity\": \"作者验收参考,非模型返回\",\n \"rows\": [\n {\n \"reviewPolicy\": \"read only\"\n },\n {\n \"include\": \"actual discovered read tool names\"\n },\n {\n \"missingName\": \"stop and review\"\n }\n ]\n}\n",
"invalid.json": "{\n \"identity\": \"作者构造负例,非实际错误回包\",\n \"rows\": [\n {\n \"tool\": \"get_screeen\",\n \"error\": \"not in discovered directory\"\n },\n {\n \"fallback\": \"include all\",\n \"error\": \"widens task capability\"\n }\n ]\n}\n",
"case.md": "# Stitch Agent工具筛选:发现真实工具名,只给审阅代理读取能力\n\nStitch Agent工具筛选把“审阅页面”和“生成页面”分成不同工具集合。先通过listTools查看实际工具名,再用include缩小代理可见范围,避免模型在审阅中意外创建项目。\n\n## 定义审阅任务\n\n给代理的目标仅为列出页面并查看元数据,明确不生成或修改。\n\n本地练习先准备工具目录清单,不接目标账号也能检查过滤逻辑。\n\n## 发现工具元数据\n\n使用当前client.listTools()读取实际工具名和参数。\n\n不同版本名称可能变化,不能把博客中的旧名当永久协议。\n\n## 建立允许名单\n\n按目录选择读取工具,排除create_project和生成/编辑工具。\n\ninclude是工具暴露过滤,不是云端账户权限系统的替代品。\n\n## 构造AI SDK工具集\n\n用stitchTools({include:[实际允许名]})创建集合。\n\n先查看构造结果,找不到名称时停止而不是自动开放全部。\n\n## 执行审阅样例\n\n在隔离项目让代理读页面,保留实际调用轨迹。\n\n轨迹应只有允许的读取动作,不应出现写操作。\n\n## 测试负例\n\n给本地目录插入一个拼错名,检查配置验证是否失败。\n\n把失败写成工具配置问题,不让代理猜一个相近写工具。\n\n## 交付工具契约\n\n保存目录版本、允许名单和调用记录。\n\n未运行云端时只有本地集合检查结果,不能写账号只读已验证。\n\n身份:输入与参考为作者材料;localCli有实测记录时仅证明对应CLI运行,目标云端与模型推理未执行。\n"
}
}应当保留的约束
| reviewPolicy | include | missingName |
|---|---|---|
| read only | ||
| actual discovered read tool names | ||
| stop and review |
故意构造的错误样例
| tool | error | fallback |
|---|---|---|
| get_screeen | not in discovered directory | |
| widens task capability | include all |
先保存真实产品输出,再逐项对照。actualOutput / actualResult 在未执行时保持 not_run,不能把这里的期望值复制成已测结果。