为什么有时候选择手搓Agent?
这是 Agent 工程里面一个很常见的架构选择问题。很多公司会问为什么不用 LangChain、AutoGen、CrewAI 这些成熟框架而要自己实现 Agent答案不是“自己写一定更好”而是业务需求、可控性、性能、复杂度决定是否手搓。一 、什么叫“手搓 Agent”手搓 Agent 指不用完整 Agent 框架而是自己实现核心循环用户输入↓任务理解↓状态管理↓LLM调用↓Tool选择↓工具执行↓结果反馈↓继续推理↓输出例如自己写while steps max_steps: response llm.chat(messages) if response.need_tool: result execute_tool(response.tool) memory.add(result) else: return response.answer也就是自己控制 Agent Loop。二、为什么选择手搓 Agent原因1需要极强的控制能力成熟框架通常提供Agent├── Memory├── Tool├── Planner└── Executor但是很多企业场景需要每一步都必须可控。比如机器人用户去客厅拿水机器人 Agent不能LLM:我要先问天气我要搜索地图我要联网查询而应该任务解析↓导航模块↓运动控制↓视觉确认↓抓取机器人领域延迟要求高安全要求高行为必须确定所以经常自己设计 Agent。原因2框架太重比如 LangChain为了通用性引入很多抽象ChainAgentExecutorRetrieverMemoryCallbackRunnable一个简单流程调用LLM↓调用工具↓返回结果可能需要很多层封装。但是企业内部可能只需要LLMTool RouterMemoryWorkflow Engine自己写几百行即可。原因3性能优化框架为了通用会增加对象封装状态转换中间消息Callback导致一次Agent执行纯API调用:100ms框架:200~500ms对于实时机器人自动驾驶高频交易延迟很重要。原因4数据和安全要求企业经常不能把Prompt用户数据Tool调用记录交给第三方框架。原因5框架设计理念不符合业务例如LangChain默认Agent决定下一步但是工业机器人可能任务规划Agent|↓固定技能模块导航Skill抓取Skill避障Skill充电Skill这里更像Agent Workflow而不是纯Agent。三、那为什么不用手搓直接用框架因为框架也有优势。优势1开发快例如实现工具调用自己写Tool注册参数解析异常处理消息管理可能几天。框架几十分钟。优势2生态成熟例如LangChain已有RAGMemoryVector DBTool接口Agent模板不用重复造轮子。优势3快速验证想法创业早期目标先证明Agent能不能工作不是打造工业级Agent Runtime所以框架优先。