用途:在 AI 应用中实现面向生产的 LLM 查询循环(Agent Loop),用于添加工具调用与 ReAct 式推理流程。
架构:按产品基础设施而非提示词拼接来构建,分为三层——ConversationManager 负责会话 id、消息、用户设置、预算与持久化等持久状态;QueryLoop 负责单轮任务:调用模型、检测工具调用、执行工具、追加工具结果并重复;ToolRuntime 负责已注册工具的 schema、权限检查、执行与错误格式化。以 ReAct(Thought → Action → Observation → Thought → Answer)为心智模型,实现为结构化 API 交互:model thinking/text → tool_call → tool_result → 下一次模型调用 → 最终文本。
实施流程:1)检查用户技术栈与现有 LLM 调用点,确认消息构建位置、模型调用位置及是否已配置工具调用;2)引入最小查询循环,首版保持窄范围:一个模型调用函数、一个工具注册表、明确退出条件;3)规范化消息结构,优先使用提供商的结构化工具调用格式,避免解析自由文本 Action;4)加入工具执行安全:按 schema 校验输入、对高风险工具做权限检查、将失败包装为工具结果、记录每次调用;5)在扩展功能前加入退出与预算保护:maxTurns、超时/取消、token/成本预算检查、致命错误路径。上下文窗口策略(裁剪、检索、摘要、压缩)留在本技能之外,仅以消息为输入并返回更新后的消息。
退出条件:正常完成(无工具调用)、达到最大轮数、中止/超时、权限被拒、预算超支、致命工具错误;建议返回结构化终止原因,如 completed、max_turns、aborted、timeout、permission_denied、budget_exceeded、fatal_tool_error。
工具契约:每个工具定义 name、description、inputSchema、risk(read/write/execute/external)、validate、canUse、call;执行顺序为按名查找、schema 校验、工具特定校验、权限检查、调用、将成功或错误格式化为 tool_result。模型可合理恢复的错误(参数无效、文件未找到、搜索为空、瞬时 API 错误)应返回给模型;安全违规、重复失败、缺少凭证或预算耗尽则停止循环。
产品设计:让“智能”留在模型,让“可靠性”留在代码——模型决定是否需要再次调用工具,代码强制执行 schema、权限、预算与循环退出。简单应用初期避免子代理、worktrees 与流式工具执行。
限制:资料未提供具体模型提供商、收费、价格或平台信息;未给出完整代码示例。需要更多细节时可阅读 references/query-loop-patterns.md。