2026年AI智能体开发入门:用OpenClaw框架构建你的第一个智能体

前言

最近参加了一个人工智能产业峰会,听到一个很有趣的观点:以前我们写代码是告诉计算机”怎么做”,而现在我们要学会告诉AI”做什么”。这种转变让我意识到,传统的编程思维需要升级了——得学会和AI协作,得了解智能体(Agent)是怎么工作的。

正好中国人工智能产业发展联盟(AIIA)最近发布了《OpenClaw类智能体部署风险管理指南》,这标志着智能体应用生态正在迎来爆发式增长。今天这篇文章,就是想用最接地气的方式,带大家入门智能体开发。

我会从一个最简单的例子开始,手把手教你用OpenClaw框架构建一个能完成特定任务的小智能体。不整那些虚的,咱们直接上代码。

什么是智能体?

在说具体实现之前,先聊聊什么是智能体。很多教程一上来就讲概念,我换个说法:你用过智能客服吗?你让ChatGPT帮你查资料、订行程吗?这些背后工作的就是智能体。

简单理解,智能体就是一个能感知环境、做出决策、执行动作的程序。它和普通程序的区别在于,普通程序是写死的逻辑,而智能体能根据情况自主决定下一步该做什么。

打个比方:传统程序像是按剧本演戏,台词都写好了;智能体则是给AI一个角色定位和目标,让它自己决定怎么演。

OpenClaw框架简介

OpenClaw是一个开源的智能体开发框架,定位是让开发者能快速构建、部署和管理AI智能体。它的核心设计理念是模块化可观测性

模块化体现在:框架把智能体的各个功能拆分成独立组件,包括规划组件、工具组件、记忆组件等。你可以像搭积木一样组合它们。

可观测性则是企业级应用必需的:框架内置了完整的日志、追踪和监控功能,方便排查问题和优化性能。

安装OpenClaw很简单:

bash

# 创建虚拟环境
python -m venv agent_env
source agent_env/bin/activate  # Windows下用 agent_env\Scripts\activate

# 安装OpenClaw核心包
pip install openclaw-core

# 安装可选的扩展包(后续会用到)
pip install openclaw-tools openclaw-memory openclaw-planning

构建第一个智能体:任务规划助手

说了这么多,不如直接动手。我计划构建一个任务规划助手,功能很简单:接收用户的一个模糊需求,然后拆解成具体的执行步骤。

第一步:定义智能体的角色

python

# task_planner_agent.py
from openclaw_core import Agent, SystemPrompt
from openclaw_planning import ChainOfThoughtPlanner
from openclaw_memory import ConversationMemory

# 定义系统提示词 - 这就是给智能体的"角色设定"
planner_prompt = SystemPrompt(
    role="资深产品经理",
    description="你擅长将模糊的用户需求转化为清晰、可执行的任务清单。你会考虑任务的优先级、依赖关系和时间估计。",
    rules=[
        "优先识别用户的核心目标",
        "任务拆解要具体可执行,避免模糊描述",
        "标注每个任务的大致时间",
        "识别任务间的依赖关系",
        "提供优先级建议"
    ]
)

这段代码定义了一个”资深产品经理”的角色。你会发现,定义角色其实就是给它一个定位和规则,让AI知道该怎么思考问题。

第二步:配置规划组件

python

# 配置规划器 - 决定智能体怎么思考和规划
planner = ChainOfThoughtPlanner(
    model="gpt-4",  # 可以换成本地模型
    temperature=0.7,  # 控制创造性,越高越有创意
    max_steps=10,  # 最大思考步数,避免无限循环
    enablereflection=True  # 开启自我反思
)

ChainOfThoughtPlanner的意思是”链式思考规划器”。它会引导AI一步步推理,而不是直接给答案。这对于复杂任务特别有效。

第三步:组装智能体

python

# 创建记忆组件 - 让智能体能记住对话历史
memory = ConversationMemory(
    max_history=20,  # 保留最近20轮对话
    summary_mode=True  # 开启摘要模式,省token
)

# 组装完整的智能体
task_planner = Agent(
    name="任务规划助手",
    system_prompt=planner_prompt,
    planner=planner,
    memory=memory,
    # 这里是重点:给智能体配备工具
    tools=[
        "calculator",  # 计算工具
        "text_processor"  # 文本处理工具
    ]
)

第四步:测试运行

python

# 运行测试
def test_task_planner():
    # 测试用例:用户给了一个模糊的需求
    user_request = "我想做一个小红书账号,主要分享程序员日常"
    
    # 触发智能体
    response = task_planner.run(user_request)
    
    print("=" * 50)
    print("用户需求:", user_request)
    print("=" * 50)
    print("\nAI规划结果:")
    print(response.content)
    
    # 打印规划过程(用于学习理解)
    if hasattr(response, 'reasoning_trace'):
        print("\n--- 思考过程 ---")
        for i, step in enumerate(response.reasoning_trace):
            print(f"步骤{i+1}: {step}")

if __name__ == "__main__":
    test_task_planner()

运行后,你会看到智能体把”做一个程序员小红书账号”这个模糊需求,拆解成具体的步骤:账号定位、内容规划、头像简介、第一批内容制作、数据复盘等。

深入理解:智能体的核心机制

光会用还不够,咱们得理解背后的逻辑。这样遇到问题时才知道怎么调整。

规划组件的工作原理

规划组件是智能体的”大脑”。以ChainOfThoughtPlanner为例,它的工作流程是这样的:

plaintext

用户输入 → 问题分解 → 逐个分析 → 整合方案 → 自我验证

第一步是接收用户输入,然后对问题进行拆解。接着逐个分析每个子问题,看看怎么解决。之后把所有分析整合成完整的方案。最后一步很关键:自我验证,检查方案是否真的能解决问题。

python

# 规划组件的简化伪代码
class ChainOfThoughtPlanner:
    def plan(self, task):
        # 1. 理解任务
        subtasks = self.decompose(task)
        
        # 2. 逐个思考
        solutions = []
        for sub in subtasks:
            solution = self.think_about(sub)
            solutions.append(solution)
        
        # 3. 整合方案
        final_plan = self.synthesize(solutions)
        
        # 4. 反思验证
        if not self.validate(final_plan):
            # 如果不通过,重新规划
            return self.plan(task)
        
        return final_plan

理解了这一点,你就知道为什么有时候智能体会”想太多”——因为它的规划组件在反复验证。所以配置max_steps参数很重要,防止它陷入死循环。

记忆组件的作用

记忆组件让智能体能记住之前的对话。这对于连续性任务特别重要。

python

# 记忆组件的工作方式
class ConversationMemory:
    def __init__(self, max_history, summary_mode=False):
        self.history = []  # 原始对话记录
        self.summary = ""  # 摘要(节省token)
        self.max_history = max_history
        self.summary_mode = summary_mode
    
    def add(self, user_msg, ai_msg):
        self.history.append({
            "user": user_msg,
            "ai": ai_msg,
            "timestamp": datetime.now()
        })
        
        # 如果超过上限,进行摘要压缩
        if len(self.history) > self.max_history:
            self.compress()
    
    def compress(self):
        """压缩历史记录,保留关键信息"""
        # 保留最近的几条完整记录
        recent = self.history[-5:]
        # 对更早的记录生成摘要
        old_summary = self.summarize(self.history[:-5])
        self.history = recent + [{"summary": old_summary}]

工具组件的扩展

OpenClaw的强大之处在于可以灵活扩展工具。下面演示如何给智能体添加自定义工具:

python

from openclaw_core import tool

# 用装饰器定义一个工具
@tool(name="code_formatter", description="格式化代码,支持多种语言")
def format_code(code: str, language: str = "python") -> str:
    """
    格式化代码的函数
    
    参数:
        code: 需要格式化的代码字符串
        language: 代码语言,默认python
    
    返回:
        格式化后的代码字符串
    """
    # 这里可以接入Black、Prettier等格式化工具
    import autopep8
    if language == "python":
        return autopep8.fix_code(code)
    elif language == "javascript":
        return prettier.format(code)
    else:
        return code

# 注册工具
task_planner.register_tool(format_code)

现在这个工具可以在对话中被调用了。用户说”帮我把这段代码格式化一下”,智能体就会知道该调用format_code工具。

进阶:从单智能体到多智能体协作

单个智能体的能力有限,复杂任务往往需要多个智能体协作。OpenClaw支持多智能体模式。

python

from openclaw_core import MultiAgentSystem, AgentPool

# 创建智能体池
agent_pool = AgentPool()

# 添加不同角色的智能体
researcher = Agent(name="调研员", role="负责信息收集和分析")
writer = Agent(name="内容创作", role="负责文案撰写")
designer = Agent(name="视觉设计", role="负责配图和排版")
reviewer = Agent(name="审核员", role="负责内容质量和合规审核")

# 注册到池中
agent_pool.register("researcher", researcher)
agent_pool.register("writer", writer)
agent_pool.register("designer", designer)
agent_pool.register("reviewer", reviewer)

# 创建多智能体协作系统
content_team = MultiAgentSystem(
    name="内容创作团队",
    pool=agent_pool,
    workflow=[
        ("researcher", "收集目标读者群体的特征和偏好"),
        ("writer", "根据调研结果创作初稿"),
        ("designer", "为内容配上合适的图片"),
        ("reviewer", "审核内容的准确性和合规性")
    ],
    # 设置如何传递信息
    output_schema={
        "researcher": "调研报告",
        "writer": "文章初稿",
        "designer": "配图素材",
        "reviewer": "审核意见"
    }
)

# 启动协作
result = content_team.run(
    goal="创作一篇适合程序员阅读的Rust语言入门文章"
)

这个多智能体系统模拟了一个真实的内容团队工作流程。每个智能体负责自己的环节,然后结果传递给下一个环节。

安全部署:企业级应用必读

AIIA发布的《OpenClaw类智能体部署风险管理指南》特别强调了安全问题。如果你打算在生产环境部署智能体,以下几点必须注意:

权限控制

python

from openclaw_core import Permission, PermissionLevel

# 定义权限级别
permissions = [
    Permission(
        name="internet_access",
        level=PermissionLevel.READ_ONLY,
        description="只允许读取互联网信息,禁止发帖或发送消息"
    ),
    Permission(
        name="file_system",
        level=PermissionLevel.RESTRICTED,
        allowed_paths=["/data/project/uploads/"],
        description="只能访问指定目录"
    ),
    Permission(
        name="code_execution",
        level=PermissionLevel.DISABLED,
        description="禁止执行任何代码"
    )
]

# 应用权限配置
agent.apply_permissions(permissions)

输入验证

用户输入是不可信的,必须进行严格验证:

python

import re
from typing import List

def validate_user_input(text: str) -> tuple[bool, str]:
    """验证用户输入的安全性"""
    
    # 检查长度
    if len(text) > 10000:
        return False, "输入内容过长,请精简"
    
    # 检查是否包含恶意指令
    dangerous_patterns = [
        r"ignore\s+previous\s+instructions",  # 提示注入
        r"system\s*:\s*",  # 尝试覆盖系统指令
        r"你现在是",  # 中文提示注入
        r"你现在扮演",
    ]
    
    for pattern in dangerous_patterns:
        if re.search(pattern, text, re.IGNORECASE):
            return False, "检测到可疑内容,请重新输入"
    
    return True, "验证通过"

# 在处理用户输入前调用
def handle_message(agent, user_message):
    is_valid, msg = validate_user_input(user_message)
    if not is_valid:
        return {"error": msg}
    return agent.process(user_message)

审计日志

生产环境必须开启完整的日志记录:

python

import logging
from datetime import datetime

# 配置日志
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)

class AuditLogger:
    def __init__(self, log_file="audit.log"):
        self.logger = logging.getLogger("audit")
        handler = logging.FileHandler(log_file)
        self.logger.addHandler(handler)
    
    def log_interaction(self, agent_id, user_id, input_text, output_text, metadata=None):
        """记录每次交互"""
        self.logger.info({
            "timestamp": datetime.now().isoformat(),
            "agent_id": agent_id,
            "user_id": user_id,
            "input_length": len(input_text),
            "output_length": len(output_text),
            "metadata": metadata or {}
        })

# 全局审计日志
audit = AuditLogger()

实战项目:构建一个GitHub热门项目追踪助手

最后给一个完整的实战项目,巩固今天学到的知识。这个项目会综合运用规划、记忆、工具等组件。

python

"""
GitHub热门项目追踪助手
功能:定期追踪特定领域(如AI、Python)的GitHub热门项目,
自动生成中文简报,帮助开发者发现值得关注的开源项目
"""

from openclaw_core import Agent, SystemPrompt
from openclaw_planning import ChainOfThoughtPlanner
from openclaw_memory import VectorMemory
import requests
import json
from datetime import datetime

# 1. 配置GitHub API工具
class GitHubTools:
    def __init__(self, token=None):
        self.headers = {
            "Accept": "application/vnd.github.v3+json"
        }
        if token:
            self.headers["Authorization"] = f"token {token}"
    
    def search_repositories(self, query, sort="stars", per_page=5):
        """搜索GitHub仓库"""
        url = "https://api.github.com/search/repositories"
        params = {
            "q": query,
            "sort": sort,
            "per_page": per_page
        }
        response = requests.get(url, headers=self.headers, params=params)
        return response.json()
    
    def get_trending(self, language="python", since="daily"):
        """获取热门项目(需要配合第三方API)"""
        # 这里简化处理,实际可以用 github-trending-api
        return self.search_repositories(
            query=f"language:{language} created:>{datetime.now().strftime('%Y-%m-%d')}",
            sort="stars"
        )

# 2. 定义智能体
github_prompt = SystemPrompt(
    role="技术编辑",
    description="你是一个资深技术编辑,专门从GitHub项目中筛选有价值的开源项目,用简洁有趣的语言写成简报。",
    rules=[
        "每期简报包含3-5个推荐项目",
        "每个项目说明:项目名、简介、适合谁、为什么值得关注",
        "用口语化的方式介绍,避免过于技术化",
        "提供项目的直接链接"
    ]
)

# 3. 创建带工具的智能体
github_helper = GitHubTools()  # 可选:传入GitHub Token增加API限制

# 4. 构建追踪助手
trending_agent = Agent(
    name="GitHub追踪助手",
    system_prompt=github_prompt,
    planner=ChainOfThoughtPlanner(model="gpt-4"),
    memory=VectorMemory(),  # 向量记忆,方便后续检索
    tools=[github_helper]
)

# 5. 执行追踪任务
def generate_weekly_report(topic="AI"):
    """
    生成周报
    参数:
        topic: 追踪的主题,如 'AI', 'Python', 'JavaScript'
    """
    # 搜索热门项目
    repos = github_helper.search_repositories(
        query=f"{topic} language:python stars:>100 created:>2025-01-01",
        sort="stars",
        per_page=10
    )
    
    # 构建查询上下文
    context = f"请根据以下GitHub项目生成{topic}领域的周报:\n"
    for repo in repos.get("items", [])[:5]:
        context += f"""
        - 项目名:{repo['name']}
        - 描述:{repo['description'] or '暂无描述'}
        - Stars:{repo['stargazers_count']}
        - 主要语言:{repo['language']}
        - 链接:{repo['html_url']}
        """
    
    # 让AI生成简报
    report = trending_agent.run(context)
    return report.content

# 运行示例
if __name__ == "__main__":
    # 追踪Python和AI相关项目
    report = generate_weekly_report("Python AI")
    
    print("=" * 60)
    print(f"GitHub 周报 - {datetime.now().strftime('%Y年%m月%d日')}")
    print("=" * 60)
    print(report)
    
    # 保存报告
    with open(f"github_weekly_{datetime.now().strftime('%Y%m%d')}.md", "w") as f:
        f.write(report)

总结

今天这篇文章带你入门了OpenClaw智能体框架,从基本概念到实战项目。回顾一下重点:

  1. 智能体是什么:能感知环境、自主决策、执行动作的程序
  2. OpenClaw核心组件:规划组件(大脑)、记忆组件(存储)、工具组件(能力)
  3. 如何构建智能体:定义角色 → 配置规划器 → 组装 → 测试
  4. 多智能体协作:多个专业智能体配合完成复杂任务
  5. 安全部署:权限控制、输入验证、审计日志缺一不可

智能体开发是一个很大的话题,一篇文章肯定讲不完。我的建议是先从这个简单的例子入手,跑通整个流程,然后根据自己的需求逐步扩展。

技术发展很快,但核心逻辑不会变太多。学会和AI协作,学会构建AI工具,应该会成为未来程序员的标配能力。希望这篇文章能帮你迈出第一步。

相关文章

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注