🐣 SmolAgents:小而美的Agent框架
2024年底,HuggingFace的一群工程师看着满屏复杂的Agent框架代码,突然问了一个灵魂问题:"我们真的需要3000行代码来做一个Agent吗?"于是SmolAgents诞生了——代码不到1000行,但能做其他框架能做的一切。有时候,少即是多。
HuggingFace 轻量级 代码生成
🎯 什么是 SmolAgents?
SmolAgents 是 HuggingFace 开源的极简Agent框架。它的核心代码不到1000行,却支持完整的Agent能力:工具调用、多步推理、代码执行。
一句话定义:SmolAgents = Agent框架的"口袋版"——小到可以装进口袋,但功能一个不少。
🧠 设计理念:Code over JSON
SmolAgents 最大的创新是抛弃了传统的 JSON 工具调用格式,让 Agent 直接写 Python 代码来调用工具。
传统方式 vs SmolAgents 方式
# 传统方式:JSON 工具调用
{
"tool": "web_search",
"parameters": {
"query": "OpenClaw 最新功能"
}
}
# SmolAgents 方式:直接写代码
web_search(query="OpenClaw 最新功能")
# 甚至可以组合多个工具
docs = web_search("OpenClaw documentation")
summary = text_summarizer(docs[0])
write_file("summary.txt", summary)
核心优势
- 更灵活:可以写循环、条件判断、变量赋值
- 更直观:程序员一眼就能看懂Agent在做什么
- 更强大:Agent可以自己写代码来解决问题
- 更容易调试:出错时直接看代码,不用解析JSON
⚡ OpenClaw 实战:借鉴 SmolAgents 思想
OpenClaw 的工具调用机制其实和 SmolAgents 的"代码即动作"理念有异曲同工之妙:
SmolAgents vs OpenClaw 对比
| 特性 | SmolAgents | OpenClaw |
|---|---|---|
| 动作格式 | Python 代码 | 自然语言 + Tool JSON |
| 工具定义 | @tool 装饰器 | TOOL.md + functions |
| 多步推理 | 自动代码生成 | ReAct 循环 |
| 沙箱执行 | E2B 等沙箱 | 本地 + 可选沙箱 |
| 模型支持 | 任何 LLM | 多模型路由 |
实践:让OpenClaw Agent生成工具调用代码
#!/bin/bash
# smolagents-style.sh - SmolAgents风格的代码生成
TASK="搜索最近的AI新闻,总结成3个要点,保存到文件"
# 让Agent直接生成可执行的Python代码
openclaw sessions_spawn \
--task "请生成Python代码来完成这个任务:$TASK
你可以使用以下工具函数:
- web_search(query) -> list[dict]: 搜索网页
- fetch_url(url) -> str: 获取网页内容
- summarize(text, n_points=3) -> str: 总结要点
- write_file(path, content): 写入文件
请生成可直接执行的Python代码,不需要解释。" \
--agentId "code-generator" \
--mode run
# 生成的代码示例:
# results = web_search('AI news 2025')
# content = fetch_url(results[0]['url'])
# summary = summarize(content, n_points=3)
# write_file('ai_news_summary.txt', summary)
🚀 SmolAgents 快速上手
# 安装
pip install smolagents
# 最简单的Agent
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel
agent = CodeAgent(
tools=[DuckDuckGoSearchTool()],
model=HfApiModel()
)
agent.run("搜索OpenClaw最新更新,总结新功能")
🎯 适用场景
- ✅ 快速原型开发——几行代码就能跑起来
- ✅ 教学演示——代码简单,容易理解原理
- ✅ 工具集成——和HuggingFace生态无缝衔接
- ✅ 代码生成任务——让AI写代码来解决问题
🎪 妙趣观点
SmolAgents的出现让我想起了那个经典的程序员笑话:"我用100行代码写了一个功能,然后花了3天优化成10行。"有时候框架的"臃肿"不是为了功能,而是为了生态、为了兼容性、为了那些你可能永远用不到但别人离不开的功能。SmolAgents选择了另一条路——够用就好。这让我想起了OpenClaw的设计哲学:简单的工具调用,灵活的组合方式。也许最好的Agent框架,就是那个让你忘记框架存在的框架。
关键洞察:SmolAgents证明了一个重要趋势——Agent框架正在从"大而全"转向"小而美"。OpenClaw的轻量级设计也是这个方向的体现。未来我们可能不会用"框架"这个词,因为Agent能力会成为基础设施的一部分,像今天的HTTP库一样理所当然。