Postsread more
Agent 日记系列(三):揭秘 Agent 的自我进化:动态工具创建与管理
传统 Agent 的能力在诞生时就固定了——给什么工具就用什么工具。真正的自进化 Agent 应该能在运行时识别能力缺口,自主扩展工具集。
何时需要动态工具
典型场景:
- 批量文件重命名:没有 rename 工具,但 Agent 可以写一个 Python 脚本
- API 数据聚合:需要组合多个接口的结果,现成工具不支持
- 格式转换:CSV → JSON、Markdown → HTML,临时需要
- 测试辅助:需要一个 mock 服务或数据生成器
工具创建流程
识别缺口 → 编写代码 → 安全审查 → 注册到 Tool Registry → 可用
识别缺口
Agent 在以下情况触发工具创建:
- 工具调用连续失败(“没有这个工具”)
- 用户明确请求不存在的功能
- 任务需要多步组合但无现成路径
编写代码
Agent 根据需求生成工具脚本,关键约束:
- 输入输出必须有明确 schema
- 必须包含错误处理
- 不能访问超出工作目录的路径
安全审查
这是最关键的一步。Agent 生成的代码必须经过:
- 语法检查:确保可执行
- 沙箱试运行:用测试数据验证
- 权限边界:不读取敏感文件、不发起外部网络请求
- 用户确认(可选):高风险操作需人工批准
注册与生命周期
# 工具注册伪代码
tool_registry.register(
name="batch_rename",
description="批量重命名文件,支持正则匹配",
parameters={
"pattern": {"type": "string", "description": "正则匹配模式"},
"replacement": {"type": "string", "description": "替换字符串"},
"directory": {"type": "string", "description": "目标目录"}
},
handler="tools/batch_rename.py",
scope="session" # session / persistent
)
工具作用域: