游乐游手机版
首页/AI教程/文章详情

OpenClaw本地部署教程:零基础快速跑通5大真实场景项目

时间:2026-08-17 10:19
在本地部署OpenClawAgent框架,通过5个难度递增的实战项目实现文件操作、自定义工具、日志分析、HTTP调用和数据库查询等真实场景任务。项目基于ReAct循环驱动LLM调用工具,并支持部署到腾讯云Serverless环境实现定时自动运行。

项目目标

本文完成以下目标:在本地部署 OpenClaw Agent 框架,并通过 5 个难度递增的实战项目,实现文件操作、自定义工具、日志分析、HTTP 调用和数据库查询等真实场景任务。最后提供将 Agent 部署到腾讯云 Serverless 环境、实现定时自动运行的方案。

最终效果

完成部署后,Agent 能够接收自然语言任务,自主调用 shell、文件、HTTP、数据库等工具,生成问候语、统计代码行数、巡检日志异常、查询天气并推送通知、从 SQLite 查询数据并生成 Markdown 报表。部署到腾讯云后,Agent 可 7×24 小时按预设计划执行任务。

技术方案

OpenClaw Agent 是一个轻量级 AI 智能体框架,基于 ReAct 循环(Reason → Act → Observe)驱动 LLM 调用工具完成任务。本文使用本地推理后端 Ollama 加载 Qwen2.5 7B 模型,通过 YAML 配置文件注册 shell_execfile_iohttp_request 等工具,并支持自定义 Python 工具扩展。

环境与依赖

  • 操作系统:Ubuntu 20.04 / macOS / Windows WSL2
  • Python 3.10 或以上
  • 推理后端(二选一):
    • Ollama(推荐本地):通过 curl -fsSL https://ollama.com/install.sh | sh 安装,拉取模型 ollama pull qwen2.5:7b-q4_K_M
    • OpenAI API(备选):需 API Key
  • Python 依赖包:openclaw-agentpython-dotenv

项目结构

openclaw-lab/
├── .env
├── config.yaml
├── hello_agent.py
├── tools/
│   ├── code_stats.py
│   └── sqlite_tool.py
├── log_agent.py
├── weather_agent.py
└── report_agent.py
  • .env:环境变量,配置 Ollama 或 OpenAI 地址
  • config.yaml:Agent 核心配置,指定 LLM 提供商、模型、工具列表、最大迭代次数
  • .py 文件:对应 5 个实战项目的 Agent 程序
  • tools/:自定义工具模块

核心实现

1. 最小配置文件

在项目根目录新建 .env(若使用 Ollama 则无需 KEY):

# 使用 Ollama
OLLAMA_BASE_URL=https://localhost:11434
# 或使用 OpenAI 兼容接口
# OPENAI_API_KEY=sk-xxx
# OPENAI_BASE_URL=https://api.openai.com/v1

新建 config.yaml

llm:
  provider: ollama # 或 openai
  model: qwen2.5:7b-q4_K_M
  temperature: 0.3
tools:
  - shell_exec
  - file_io
  - http_request
max_iterations: 6

2. 项目 1:Hello World —— 自动生成并保存问候语

创建 hello_agent.py

from openclaw import Agent
from openclaw.tools import FileTool

agent = Agent.from_config("config.yaml")
agent.register_tool(FileTool())

task = """
请用中文写一段欢迎语,包含当前日期,然后使用 file_io 保存到 /tmp/welcome.txt。
"""
agent.run(task)

运行方法:执行 python hello_agent.py

结果验证:检查 /tmp/welcome.txt 文件内容是否包含中文欢迎语和当前日期。

3. 项目 2:代码行数统计器(自定义工具)

创建 tools/code_stats.py

from pathlib import Path
import json
from openclaw.tool import Tool

class CodeStatsTool(Tool):
    name = "code_stats"
    description = "统计目录下代码文件行数,返回总行数及最多行数的前5个文件"

    def run(self, directory: str = ".") -> str:
        total = 0
        files = []
        for p in Path(directory).rglob("*"):
            if p.suffix in [".py", ".js", ".ja va", ".go", ".c", ".cpp"] and p.is_file():
                try:
                    lines = len(p.read_text(encoding="utf-8").splitlines())
                    total += lines
                    files.append((str(p), lines))
                except:
                    continue
        files.sort(key=lambda x: x[1], reverse=True)
        return json.dumps({"total_lines": total, "top5": [{"file": f, "lines": l} for f, l in files[:5]]})

创建 stats_agent.py

from openclaw import Agent
from tools.code_stats import CodeStatsTool

agent = Agent.from_config("config.yaml")
agent.register_tool(CodeStatsTool())

task = "使用 code_stats 分析 /path/to/your/project,将结果打印出来"
agent.run(task)

运行方法:执行 python stats_agent.py,将 /path/to/your/project 替换为实际代码目录。

结果验证:观察控制台输出,应包含总行数和前 5 大文件信息。

4. 项目 3:日志异常巡检员

创建 log_agent.py

from openclaw import Agent
from openclaw.tools import FileTool, ShellTool

agent = Agent.from_config("config.yaml")
agent.register_tool(FileTool())
agent.register_tool(ShellTool())

task = """
1. 执行 shell_exec: tail -n 100 /var/log/syslog
2. 统计输出中包含 'ERROR' 的行数
3. 如果大于 3,则使用 file_io 写入 /tmp/alert.md,内容为 '发现错误数: ',否则写入 '日志正常'
"""
agent.run(task)

运行方法:执行 python log_agent.py(需确保有 /var/log/syslog 访问权限)。

结果验证:检查 /tmp/alert.md 文件内容是否正确反映日志状态。

5. 项目 4:多工具协作 —— 查询天气并发送通知

创建 weather_agent.py

from openclaw import Agent
from openclaw.tools import HttpTool

agent = Agent.from_config("config.yaml")
agent.register_tool(HttpTool())

task = """
1. 使用 http_request GET https://wttr.in/Beijing?format=%C+%t 获取天气(如 'Sunny  5°C')
2. 将结果拼成 '当前北京天气:xxx'
3. 使用 http_request POST 到 https://localhost:9999/notify,body为{'msg': '...'}
"""
agent.run(task)

运行方法:执行 python weather_agent.py。需提前在本地启动一个 Webhook 服务监听 localhost:9999(可用 nc -l 9999 简单测试)。

结果验证:Webhook 服务端应收到包含天气信息的 POST 请求。

6. 项目 5:数据库查询 + 报表生成(含 SQLite)

创建 tools/sqlite_tool.py

import sqlite3, json
from openclaw.tool import Tool

class SQLiteQueryTool(Tool):
    name = "sql_query"
    description = "执行只读 SQL 查询,返回 JSON 结果"

    def run(self, db_path: str, sql: str) -> str:
        conn = sqlite3.connect(db_path)
        cur = conn.cursor()
        cur.execute(sql)
        rows = cur.fetchall()
        cols = [d[0] for d in cur.description]
        conn.close()
        return json.dumps([dict(zip(cols, row)) for row in rows])

创建 report_agent.py

from openclaw import Agent
from tools.sqlite_tool import SQLiteQueryTool

agent = Agent.from_config("config.yaml")
agent.register_tool(SQLiteQueryTool())

task = """
请查询 /data/sales.db 中,上月(2026-06)各品类的总销量,SQL 语句为:
SELECT category, SUM(quantity) FROM sales WHERE strftime('%Y-%m', date)='2026-06' GROUP BY category;
将结果转换为 Markdown 表格,保存到 /tmp/report.md。
"""
agent.run(task)

运行方法:执行 python report_agent.py。需准备一个包含 sales 表的 SQLite 数据库文件 /data/sales.db

结果验证:检查 /tmp/report.md 文件是否包含 Markdown 格式的品类销量报表。

配置说明

  • LLM 后端切换:修改 config.yaml 中的 provideropenai,并确保 .env 中配置了 OPENAI_API_KEYOPENAI_BASE_URL
  • 工具注册:内置工具(FileToolShellToolHttpTool)需在 Agent 中显式注册;自定义工具需先实例化后调用 register_tool
  • 最大迭代次数max_iterations 控制 ReAct 循环上限,复杂任务可能需要增大。
  • 温度参数temperature: 0.3 降低 LLM 随机性,提高任务执行稳定性。

运行方法

  1. 确保 Ollama 服务已启动,且模型 qwen2.5:7b-q4_K_M 已拉取。
  2. 进入项目目录 openclaw-lab,激活虚拟环境(如已创建)。
  3. 按需执行对应项目的 Python 脚本,例如 python hello_agent.py
  4. 观察终端输出,Agent 会逐步展示思考、行动和观察过程。

结果验证

  • 项目 1:检查 /tmp/welcome.txt 文件存在且内容符合预期。
  • 项目 2:终端输出包含 total_linestop5 信息。
  • 项目 3:检查 /tmp/alert.md 文件内容(条件分支结果)。
  • 项目 4:Webhook 服务端收到 POST 请求。
  • 项目 5:检查 /tmp/report.md 文件包含 Markdown 表格。

常见问题

  • Ollama 模型未加载:运行 ollama list 确认模型存在,若未拉取则执行 ollama pull qwen2.5:7b-q4_K_M
  • 配置文件解析错误:检查 config.yaml 缩进(YAML 要求空格对齐),工具列表项前加 -
  • 工具未注册:注册内置工具时需导入对应类,例如 from openclaw.tools import FileTool
  • 自定义工具未找到:确保 tools/ 目录下有 __init__.py 文件(可为空),或直接在脚本中引用相对路径。
  • 网络问题:使用 wttr.in 或 OpenAI API 时需确保网络可达。

后续优化

  • 云端部署:将项目打包,改造入口函数为 main_handler(event, context),部署到腾讯云函数(SCF),配合定时触发器实现自动化运行。模型后端可切换为 OpenAI API 或腾讯混元 API。
  • 持久化存储:将生成的文件上传至腾讯云对象存储(COS),使用 COS SDK 实现报告长期保存。
  • 工具扩展:添加邮件发送、Docker 操作、企业微信/钉钉通知等工具,增强 Agent 能力。
  • 知识库集成:结合向量数据库(如 Chroma、FAISS)实现本地知识问答,让 Agent 具备领域知识检索能力。

验证清单

  • 确认 Ollama 服务运行正常,模型可用。
  • 确认 .envconfig.yaml 配置正确。
  • 依次运行 5 个项目脚本,每个脚本均能正常结束,无报错。
  • 检查每个项目对应的输出文件或终端结果,确认 Agent 完成了任务描述。
来源:https://cloud.tencent.com.cn/developer/article/2719070
上一篇Python爬虫urllib库状态码异常处理与浏览器伪装设置教程 下一篇Harness:2026年AI工程系统范式定义与实践趋势
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
CAD零基础入门教程:坐标输入、图层管理与基础绘图命令
AI教程 · 2026-09-01

CAD零基础入门教程:坐标输入、图层管理与基础绘图命令

本文面向CAD零基础学习者,系统讲解坐标输入、图层管理与基础绘图命令的核心用法。通过分步实操与常见问题排查,帮助新手建立精确绘图习惯,掌握规范出图的基础能力。

CAD从入门到项目交付:绘图、标注、图块与实战工作流
AI教程 · 2026-09-01

CAD从入门到项目交付:绘图、标注、图块与实战工作流

掌握CAD的核心在于建立“画得准、标得清、复用快、交付稳”的工作流。本文提供从环境设置、高频命令组合、标注规范、图块标准化到项目分阶段交付的完整路径,帮助初学者避免常见返工陷阱,独立完成可检查、可复用、可打印的工程图纸。

Claude Code 登录指南:个人、Teams 与企业账号区分与授权步骤
AI教程 · 2026-09-01

Claude Code 登录指南:个人、Teams 与企业账号区分与授权步骤

本文详细解析 Claude Code 登录前的账号类型区分方法,涵盖个人订阅、Teams 席位与企业 Enterprise 席位的授权路径差异。提供终端登录命令、环境变量排查及常见异常处理步骤,帮助用户快速完成正确授权并避免登录路径混淆。

Claude Code 文件修改前的权限模式配置与命令审批指南
AI教程 · 2026-09-01

Claude Code 文件修改前的权限模式配置与命令审批指南

本文详细介绍Claude Code在修改文件前的权限模式配置方法,包括defaultMode可选值、permissions allow与deny规则设置、多层级配置文件管理以及 status验证技巧,帮助开发者安全高效地使用AI编程助手。

Claude Code接入VS Code后先测扩展和终端命令
AI教程 · 2026-09-01

Claude Code接入VS Code后先测扩展和终端命令

在VS Code中接入Claude Code后,建议优先验证扩展面板与集成终端两条入口。本文提供标准检查顺序、关键命令与常见故障排查路径,帮助你快速确认环境就绪,避免后续开发受阻。