整个对话循环（run conversation）的最终目标是什么？	不断调用 Claude，直到它不再要求使用工具。
在代码中，创建 `run tool` 辅助函数的目的是什么？	用于根据工具名称和输入，确定并执行所需的工具函数。
为了实现工具调用逻辑，`run tool` 函数内部使用了什么机制？	使用一系列 `if` 语句或检查来判断需要运行哪个工具。
在重构过程中，主循环是如何修改以使用新的工具执行逻辑的？	将直接的工具调用替换为调用 `run tool` 函数，并传入工具请求的名称和输入。
`run tools` 函数在对话历史中扮演什么角色？	它负责将用户消息和工具执行的结果添加到对话历史中。
`run conversation` 函数中的循环何时停止？	当 Claude 不再要求使用工具时，循环停止。
在处理 Claude 的响应时，代码需要解决的关键问题是什么？	如何正确处理单个消息中包含多个工具使用块（multiple tool use blocks）的情况。
多轮工具调用（multi-turn tool calling）的完整流程是什么？	Claude 请求工具 -> 工具运行并返回结果 -> 将结果反馈给 Claude -> 重复直到获得最终答案。
在 `run tools` 函数中，处理工具调用时需要执行哪些步骤？	提取所有工具使用块，为每个块运行相应的工具，并将所有结果反馈给 Claude。
在本次项目后续需要增加哪些工具的支持？	需要添加对 `add duration` 和 `set reminder` 工具的支持。
