📚 首页 / 04-tool-use/questions / architect-questions.md

模块 4 架构师问答题 — 工具使用

每题先自己答,再看参考要点。场景题格式:Scenario / Constraints / Options / Best choice / Why / Why others are weaker / Tradeoffs / What would change the answer。

Q1. 场景题:客服 agent 误删生产数据

Scenario:客服 agent 有 delete_order_record 工具。某天 Claude 在多轮上下文里"自作主张"调了它(用户只说"帮我清理一下我的订单页面")。事后复盘。 Constraints:不能取消工具(业务需要);要杜绝未授权删除。 Options:(a) system prompt 加"未经明确用户确认不得删除" (b) 工具改名为 dangerous_delete 吓退模型 (c) 应用层人审门:删除类 tool_use 进审批队列 (d) 移除工具,改人工流程 Best choice:。仅对删除等不可逆动作生效——审核延迟可接受。 Why:唯一的强制点。LLM 指令不是授权机制——prompt 约束是概率性的(可被 prompt injection 绕过),代码拒绝是确定性的。人审拒绝后以 is_error 回传,Claude 能向用户解释。 Why others are weaker: 单靠概率约束,注入/长上下文漂移即可击穿; 名字工程不改变权限模型; 牺牲了 agent 化收益。 Tradeoffs:删除类操作延迟从秒级到分钟级;要设计审批 UI 与超时策略(默认拒绝)。 What would change the answer**:若删除有 30 天回收站(可逆),可降级为"执行+审计日志"。

Q2. "什么由 Claude 决定,什么由代码决定"——给出你的分界线与原则。

参考要点:

Q3. 工具报 500 时,三种处理方式的后果分别是什么?

参考要点:

  1. 只打日志、向上抛异常:用户看到系统错误,Claude 失去改道机会(最差)
  2. 应用层静默重试:可能恢复(瞬时故障),但 Claude 不知道在重试;重试烧钱
  3. 回传 is_error: true + 指导性错误消息:Claude 能换工具/告知用户/调整参数(官方推荐);错误消息质量直接决定恢复效果("failed" vs "HTTP 500, retry after 60s, 或改用 forecast 工具")
  4. (来源: https://platform.claude.com/docs/en/agents-and-tools/tool-use/handle-tool-calls(访问于 2026-08-30))

Q4. 你的 agent 每轮工具调用都重新生成 tools 数组的 JSON(字段顺序不同)。有什么隐患?

参考要点:

Q5. 什么时候用 server tools 而不是自建 client tool?

参考要点:

Q6. 多步 agent 回路里,如何防止"无限调工具"?

参考要点:

Q7. 描述字段写"当用户问天气时使用此工具"为什么还不够?

参考要点:

Q8. 为什么说"把网页内容搬进 system prompt"是安全反模式?

参考要点:

📚 目录