文章摘要
文章核心内容:作者分享构建智能代理的新发现,指出当前代理开发仍面临诸多挑战,包括SDK抽象在真实工具使用时失效、缓存管理需自定义、强化学习负担过重、失败隔离要求严格等问题,同时强调文件系统式共享状态层的重要性。作者反思了Vercel AI SDK的选择,认为底层SDK可能更适合代理开发。
文章总结
智能体设计依然充满挑战
发布日期:2025年11月21日
作者分享了构建智能体(agent)的最新实践经验,核心观点是:尽管技术进步显著,但智能体开发仍面临诸多挑战。以下是关键发现:
1. SDK选择困境
开发智能体时面临底层SDK(如OpenAI/Anthropic)与高级抽象(如Vercel AI SDK)的选择。作者团队曾采用Vercel AI SDK的提供者抽象层,但发现: - 不同模型差异显著,需要自定义抽象层 - 处理提供者端工具时兼容性问题频发(如Anthropic的网页搜索工具会破坏消息历史记录) - 直接使用原生SDK能获得更清晰的错误提示和缓存控制
结论:目前阶段更推荐直接使用平台原生SDK,避免抽象层带来的额外复杂度。
2. 缓存管理经验
- Anthropic的显式缓存管理:虽然初期认为手动管理繁琐,但最终发现其优势:
- 支持对话分支并行执行
- 允许上下文编辑
- 成本预测更精准
- 实现方案:在系统提示后设置缓存点,对话开头设置两个缓存点(最后一个随对话尾部移动)
3. 强化机制的应用
在智能体循环中通过以下方式增强效果: - 工具调用后注入任务状态、环境变更等元信息 - 失败时提示回退步骤 - 自强化工具(如Claude Code的待办事项回显工具)
4. 故障隔离策略
- 子代理隔离:将可能失败的任务交由子代理执行,仅返回成功结果和失败摘要
- 上下文编辑(Anthropic特有):可移除无效尝试记录,但会破坏缓存
5. 核心架构设计
- 虚拟文件系统:作为子代理/子推理间的共享存储层,解决工具间数据传递问题
- 输出工具挑战:
- 难以控制输出语气(额外调用轻量级LLM反而降低质量)
- 存在漏调用问题,需通过结束检查强制触发
6. 模型选择建议
- 主循环:Haiku/Sonnet(最佳工具调用模型)或Gemini系列
- 子任务:Gemini 2.5(适合文档/PDF处理及图像信息提取)
- 成本考量:更高效的模型虽单token成本高,但总消耗可能更低
7. 测试评估难题
智能体的动态特性使得传统评估方法失效,目前尚未找到理想的测试方案,需依赖实际运行时的可观测数据。
附:近期阅读推荐
- 浏览器智能体的极简实现:用基础CLI工具替代复杂MCP服务器
- 小型开源库的未来:AI生成代码正在取代简单工具库
- Tmux在交互系统中的价值
- LLM API的同步问题
标签:人工智能
(注:本文保留了技术细节和实证发现,删减了部分个人化表述和外部链接的具体实现描述)
评论总结
评论总结
1. 自定义框架 vs. 抽象层
支持自定义框架:认为现有LLM抽象层过于复杂且难以维护,建议自行构建框架。
- "I'd stay clear of any llm abstraction... crumbling under their own weight due to the sheer futility of supporting every permutation of every SDK evolution"(评论1)
- "don’t use SDK:s for agents. Use a while loop and craft your own JSON"(评论9)
支持特定工具:推荐Claude Code/Agent SDK,认为其高效且易用。
- "using cc is the first that has felt magic... incredibly self aware"(评论2)
- "Claude Code SDK is amazing... but only Anthoripic models are supported"(评论10)
2. 技术迭代与锁定风险
技术快速迭代:认为当前优化可能因模型升级而过时,建议避免过度投入。
- "a lot of these techniques are simply optimisations to tackle some deficiency in LLMs that is a problem 'today'"(评论6)
- "Design is hard because models change almost on a weekly basis"(评论12)
供应商锁定风险:需权衡锁定风险与开发效率。
- "Vendor lock-in is a risk, but the bigger risk is having an agent that is less capable"(评论2)
- "SmythOS SDK provides flexibility in terms of choosing the model provider"(评论10)
3. 架构设计与工具选择
多样化架构尝试:用户尝试多种架构(子代理、线性、规划-执行等),但尚无统一方案。
- "tried three different SDKs and a couple of architectures... will write a detailed post about my learnings"(评论10)
- "I still feel there is no sure shot way to build an abstraction yet"(评论5)
推荐轻量工具:如Pocketflow因其简单性和跨语言支持受推荐。
- "The simple api and mental model makes it easy for everyone on my team to jump into"(评论13)
4. 实用建议与质疑
强化循环(Reinforcement in the Loop):认为异步/事件驱动模式强大。
- "use this pattern to enable async/event steered agents, it’s super powerful"(评论4)
技术质疑:部分用户认为当前技术被过度炒作,或存在基础缺陷。
- "Most of it reads like too high expectation of overhyped technology"(评论7)
- "why can’t the agent just know where the data is?"(评论3)
5. 商业服务 vs. 自建
倾向商业服务:部分用户选择付费服务以节省开发成本。
- "Paying an agentic coding company to do this makes perfect sense for me"(评论11)
自建控制权:强调自主控制的重要性,尤其是非简单场景。
- "You will in practice need this level of control if you are not doing something trivial"(评论9)