Agent 不只是一次模型调用

能够执行任务的 Agent 至少包含模型、上下文、工具、权限和执行状态五部分。模型负责决策,工具负责改变外部世界,真正决定系统可靠性的往往是工具边界与状态管理。

工具接口要小而明确

工具输入应使用结构化 Schema,并限制可选字段。读取与写入工具分开,危险操作增加确认步骤。不要提供一个可以执行任意 SQL 或任意 Shell 的万能工具,否则权限审计和错误恢复都会变得困难。

{ "name": "get_public_article", "arguments": { "article_id": "71f893ca-..." } }

上下文采用分层装配

系统规则、当前页面信息、用户会话、检索内容和最近对话应该分层管理。每轮只装配完成当前任务所需的信息,避免把整个数据库或大量历史对话直接塞入提示词。检索内容还应携带来源,便于回答时引用。

  • 每个工具调用记录 trace_id、用户、参数摘要和结果状态。
  • 写操作使用幂等键,超时重试不会重复创建数据。
  • 长任务保存检查点,进程重启后能够继续或明确终止。
  • 模型输出先经过参数校验,再进入真实工具。

失败必须可解释、可恢复

工具失败时不要只把错误文本重新交给模型无限重试。系统应区分参数错误、权限不足、依赖超时和不可恢复错误,并为每类错误设定重试次数和用户提示。连续失败后停止执行,比让 Agent 在未知状态下继续操作更安全。

评估应覆盖执行结果

除了回答是否自然,还要评估工具选择是否正确、参数是否完整、是否越权、最终状态是否符合预期。把这些指标沉淀成回归用例,才能在更换模型或提示词后及时发现能力退化。