封面图

前言
Openclaw的热度持续上升证明了AI已从简单对话问答的时代进入到了“可以真正干活的时代”。Openclaw真正爆火的原因之一是Openclaw/Claude灵活的skills系统。Skills系统相当于LLM的“外接办事指南”。Skills通过人类语言,将做某件事的步骤清晰描述,AI便能学会做这件事。例如从往上下载并总结资料,基于已知内容自动格式化并生成PDF文档等。Skills的出现极大的方便了人类拓展LLM的能力。
Skills的详细介绍参见:https://agentskills.io/specification
接下来问题来了,Openclaw可以支持调用skills,我们自己编写的agent如何调用Skills?一个简单的方案是使用deepagents。Deepagents是Langchain 2025年开源的企业级高级智能体框架。支持任务分解,多智能体等,开箱即用。当然最重要的是原生支持skills。本篇为大家带来deepagents加载和使用skills的方法。
环境要求
演示环境要求如下:
- 任意Linux系统
- uv
- Python3.12或者以上版本
- 一个本地的vLLM模型服务(Ollama也可以)
使用uv添加项目依赖(uv add ...)。需要安装的依赖如下所示:
[project]
name = "deep-agent"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.14"
dependencies = [
"deepagents>=0.4.11",
"langchain>=1.2.12",
"langchain-community>=0.4.1",
"langchain-experimental>=0.4.1",
"langchain-openai>=1.1.11",
]
项目结构
项目的目录结构如下所示:
├── README.md
├── main.py
├── pyproject.toml
├── skills
│ └── weather
│ └── SKILL.md
└── uv.lock
为了演示方便,skills使用clawhub一个获取天气预报的skill。链接为:https://clawhub.ai/steipete/weather
SKILL.md中给出访问命令在命令行直接试用发现有问题,无法返回天气预报,不确定是网络问题还是服务商的接口规则有变化。经过试验后修改SKILL.md中所有访问wttr.in的URL为:
curl -s "wttr.in/London"
确保其能调用成功。
main.py我们在下一节准备。
编写main.py代码
代码的主要步骤为:
- 创建llm对象,连接vLLM模型服务。
- 创建deepagent,使用上面给出的llm对象,从指定目录中扫描并加载skills,加载调用shell的工具ShellTool。
- 调用deepagent。
按照主要步骤,编写代码如下:
from deepagents import create_deep_agent
from deepagents.backends.filesystem import FilesystemBackend
from langchain_openai import ChatOpenAI
from langchain_community.tools import ShellTool
def init_vllm_model():
# 配置vLLM参数(需要指定vllm服务地址和api-key)
llm = ChatOpenAI(
api_key="sk-1234567",
base_url="http://192.168.0.1:8091/v1",
model="Qwen3_32B", # 模型名
temperature=0.1, # 生成温度(越低越稳定)
top_p=0.95
)
return llm
def run_deepagent_vllm_demo():
llm_chain = init_vllm_model()
# 初始化ShellTool
shell_tool = ShellTool(verbose=True)
# 创建DeepAgent实例
# Skills放置在本地文件系统,因此使用FilesystemBackend
agent = create_deep_agent(
model=llm_chain,
tools=[shell_tool],
backend=FilesystemBackend(root_dir="/root/projects/deep_agent/tmp/"),
skills=["/root/projects/deep_agent/skills/"],
system_prompt="你是一个个人助手,按照用户提出的问题给出解答,输出结果要清晰易读。"
)
# 创建用户请求
user_request = {
"messages": [
{
"role": "user",
"content": f"北京天气如何?"
}
]
}
# 运行Agent并输出结果
result = agent.invoke(user_request)
print("=" * 50)
print("DeepAgent + vLLM 执行结果:")
result['messages'][-1].pretty_print()
def main():
run_deepagent_vllm_demo()
if __name__ == "__main__":
main()
验证执行
执行方法:
uv run main.py
执行结果(截取关键步骤和结果):
Executing command:
['curl -s "wttr.in/Beijing"']
...(中间省略)
DeepAgent + vLLM 执行结果:
================================== Ai Message ==================================
当前北京天气:霾,气温12°C,东北风4公里/小时,能见度5公里。
**今日(17日)预报**:
- 上午:局部多云,6°C
- 中午至傍晚:多云,9°C至11°C
- 夜间:晴,9°C
**明日(18日)**:
- 全天晴,气温5°C至12°C
**后日(19日)**:
- 上午至中午:局部多云,8°C至13°C
- 傍晚:晴,14°C
- 夜间:晴,12°C
数据来源:[wttr.in](https://wttr.in)(无API密钥的免费服务)
我们可以看到deepagent读取了weather skill,并按照SKILL.md文档中说明的方式调用了curl -s "wttr.in/Beijing"获取到了北京的天气。最后将返回结果加工返回给用户。
参考资料
Langchain的内置工具:https://docs.langchain.com/oss/python/integrations/tools
DeepAgents如何使用skills:https://docs.langchain.com/oss/python/deepagents/skills#usage