智能体设计为何仍是一大挑战?
构建智能体(Agent)依然充满挑战。尽管技术快速发展,但实际开发中仍面临诸多复杂问题。作者基于近期实践总结出几点关键经验:SDK抽象在真实工具调用场景下容易失效;手动管理缓存虽繁琐,却能带来更高的可控性与成本透明度;强化学习机制在循环中承担了远超预期的支撑作用;失败必须严格隔离,防止连锁崩溃;共享状态通过类似文件系统的机制实现至关重要;输出工具的设计尤为棘手,模型选择仍高度依赖具体任务。 在SDK选择上,作者曾尝试使用Vercel AI SDK,但发现其抽象层级过高,难以适配复杂代理逻辑。尤其是面对Anthropic等平台的专用工具时,消息格式统一性不足,导致历史记录被破坏。相比之下,直接对接Anthropic SDK能更精细控制缓存、获得更清晰的错误提示。因此,作者认为当前阶段应避免过度依赖高层抽象,保持对底层流程的掌控。 缓存管理方面,Anthropic要求显式定义缓存点,初看不便,实则带来巨大优势。通过在系统提示后、对话起始处设置缓存点,并动态调整上下文,可实现并行推理、上下文编辑等高级操作。同时,显式缓存使成本预测更准确,避免“命中率忽高忽低”的问题。为保持缓存有效性,系统提示和工具选择需尽量静态,动态信息(如时间)则通过后续消息注入。 强化学习在代理循环中扮演关键角色。每次工具调用后,不仅返回结果,还可注入目标提醒、任务状态、失败建议等反馈信息。例如,Claude Code中的“todo write”工具虽仅为回显,却有效推动任务进展。此外,当环境异常或数据损坏时,可通过强化信号引导代理回退重试,提升鲁棒性。 失败隔离是保障稳定性的核心。可通过子代理独立执行可能失败的任务,仅汇报成功结果与失败原因;或在Anthropic等平台使用上下文编辑,剔除无效失败记录,保留关键信息。但需注意,上下文编辑会强制失效缓存,需权衡成本。 共享状态依赖虚拟文件系统,使代码执行与推理工具可共享数据。这一机制支持跨模块协作,避免“死胡同”式工具设计。 输出工具的设计令人意外地困难。独立输出工具虽便于控制最终输出,但难以调节语气与风格,尝试用小模型二次加工反而降低质量并引入冗余信息。因此,需通过强化信号强制调用输出工具。 模型选择上,Haiku与Sonnet仍是最佳工具调用者;Gemini 2.5适合处理文档与图像;GPT系列在主循环中表现不佳。值得注意的是,成本不仅看token单价,更取决于整体效率——高效模型可能更经济。 测试与评估仍是最大难题。代理的动态性使得传统外部评估失效,必须基于可观测数据或真实运行记录进行,目前尚无理想方案。 最后,作者提到正在尝试Amp框架,因其子代理协作设计精巧,接近真实产品思维,有助于验证不同架构。此外,他推崇轻量级CLI工具替代复杂MCP服务,认为“小而美”的开源时代已结束,AI可即时生成简单工具。Tmux在交互系统中价值突出,值得掌握。