这是 Agent 进化的关键一步:从“只会说话”变成了“真正干活”

Java 实现代码

这段代码相比 s01,最大的进步在于能力的扩展安全边界。说白了就是,你可以像搭积木一样给 Agent 塞入各种工具函数,让它的能力边界随插件无限延伸。

这段代码应该已经很清晰,我这里就不多解释了

工具抽象框架(策略模式)

核心思想:从"硬编码工具"升级为"可插拔架构",实现工具与主循环的解耦

  • 开闭原则:不修改主循环就能添加新工具

  • 统一管理:所有工具注册、调用逻辑一致

  • 类型安全:通过枚举定义工具,避免硬编码字符串

文件操作工具集

核心思想:为Agent提供文件系统读写能力,使其能像人类开发者一样操作文件。

  • 沙箱安全:所有文件操作都经过safePath检查

  • 渐进式反馈:读操作支持截断,避免响应过大

  • 容错处理:编辑前检查文本是否存在

  • 自动化:写文件时自动创建父目录

动态工具路由

  • 动态分派:根据LLM选择的工具名调用对应实现

  • 统一错误处理:未知工具、执行异常都有统一格式的返回

  • 解耦:主循环不需要知道具体工具的实现细节

架构对比与价值

从AgentLoop到AgentWithTools的演进: 维度AgentLoopAgentWithTools工具数量1个(Bash)4+个(可扩展)架构设计硬编码策略模式添加新工具修改主代码注册表添加文件操作无读写编辑安全性命令检查沙箱路径代码复用低高 核心价值

  1. 可扩展性:添加新工具只需在注册表中添加一行

  2. 维护性:工具实现与主循环分离

  3. 安全性:统一的路径和权限控制

  4. 专业性:为开发任务优化的专用工具集