开启养虾篇的更新喽!最近OpenClaw特别火,之前自己也写过一点ts代码,于是扒了一下OpenClaw代码研究一下,本篇文章将会从0到1讲解一下爆火的OpenClaw手脚是如何长出来的?
大纲
- 1.什么是 OpenClaw?
- 2.“手脚”是什么?OpenClaw 是怎么执行真正的动作的?
-
- 2.2 Tools(工具)与 Function Calling —— 动作真正执行者
- 3.OpenClaw 源码核心分析
-
- 3.2 工具集





简单来说,OpenClaw 是一个开源的 AI Agent 平台,它不是普通聊天机器人,而是 真正能执行任务的人工智能助手框架。它能自动化执行命令、操作文件、运行浏览器自动化流程、集成 API、响应消息渠道等。
📌 核心特点:
- 多种渠道支持:Telegram、Discord、WhatsApp 等聊天平台可接入 OpenClaw Agent。(OpenClaw Center)
- 支持多种模型:如 GPT、Claude、Gemini、本地模型等。(OpenClaw Center)
- 完全开源、自主部署,数据可以留在本地而不泄露给第三方。(OpenClaw)
- 不是纯聊天机器人,它可以 执行真正的动作——运行代码、控制浏览器、执行命令等。(Best AI Tools)
🧠 通俗比喻:
如果把普通聊天机器人当成智能客服,OpenClaw 就像是 一个会动、会操作、会执行任务的 AI 助手的操作系统。
OpenClaw 最核心的价值就是 —— 让 AI 不只是生成文字,而是“做事”。
为了做到这一点,它有两个关键体系:
2.1 Skills(技能)—— AI 能做什么?
技能(Skills) 类似于文档SOP,描述了 Agent 能做的事情:
- 简单技能:比如返回当前时间
- 复杂技能:比如进行 Web 搜索、管理邮箱、运行 shell 命令、API 工作流
- 自定义技能:社区或开发者自己开发的扩展模块
这些 skills 通常由一个目录+文档组成,OpenClaw 在启动时会自动扫描这些技能并将它们加载到 Agent 的能力列表中。
📌 Skill 的作用:它不是执行逻辑,而是 告诉 Agent:这个功能存在、可以被调用、该如何使用。
换句话说:
Skills 是能力声明,但不执行动作。
OpenClaw 的技能系统遵循 AgentSkills 兼容规范。 每个技能是一个文件夹,至少包含一个 ,用于向 Agent 显示:
- 技能名称、描述
- 当用户/模型应当触发该技能时
- 与该技能相关的工具使用说明
典型结构:
在 SKILL.md 里你写:
OpenClaw 会从三个位置加载技能(优先级为 workspace > 本地 > 内置),然后把这些技能信息注入到生成给模型的 prompt 里,让模型“知道有这些能力”。
2.2 Tools(工具)与 Function Calling —— 动作真正执行者
当 Agent 决定要“去做某件事”,它需要调用一个具体的 工具(tool)。
这正是 Function Calling / Tool Calling 的意义所在。
什么是 Function Calling(或 Tool Calling)?
Function Calling(工具调用)不是 OpenClaw 自创,而是 OpenAI API 的官方概念。
它是模型与外部系统交互的通用机制——模型在生成输出时,会提出一个“函数调用请求”(结构化 JSON),由程序执行后再返回结果给模型。OpenClaw 就是利用这个机制让模型做实际操作。
- Function Calling 基本流程
工具调用是指您的应用程序与模型之间通过 OpenAI API 进行的一系列多步骤交互。工具调用流程主要包含五个步骤:
- 使用模型可以调用的工具向模型发出请求
- 接收来自模型的工具调用
- 使用来自工具调用的输入,在应用程序端执行代码
- 使用工具输出向模型发出第二个请求
- 接收模型的最终响应(或更多工具调用)
这个过程就像:
这就是所谓的 Function Calling(工具调用)机制。它让模型的输出不仅仅是文本,而是一种结构化请求。OpenClaw 的“手脚”正是构建在这个机制之上。
3.1 技能加载
基于底层库来构建
Skills 加载入口:loadWorkspaceSkillEntries
在 源码中,OpenClaw 通过 函数实现了一套多层级的“能力发现”机制。并不只看一个目录,它会从多个源合并技能,并遵循“近者优先”的覆盖逻辑:
- Extra Dirs: 用户自定义的外部路径。
- Bundled: 框架内置的核心技能。
- Managed: 全局管理目录()。
- Agents Skills: 遵循 标准的项目或个人技能。
- Workspace: 当前项目下的 目录(最高优先级)。
另外,代码中实现了一个性能优化:路径压缩(Compact Paths)。这个有趣的函数叫做。它会将路径中的用户主目录替换为 。
技术细节:这不仅是为了美观,通过将长路径(如 )缩短,每个技能可以节省 5-6 个 Token。在加载数百个技能时,能为系统提示词(System Prompt)腾出 400-600 个 Token 的空间。
3.2 工具集
在 OpenClaw 里面,“工具(Tools)” 就是 Agent 的实际执行能力。模型根据技能和 prompt 判断“应该用哪个工具做事”,再通过 函数调用(Function/Tool Calling) 真正触发执行。
核心入口就是:
这个函数负责收集、构建、过滤和注入所有 OpenClaw 可用的工具,并最终返回一组工具定义,供模型执行。它基于 pi‑agent‑core / pi‑coding‑agent 实现,并在此基础上扩展了 OpenClaw 自有的能力。
OpenClaw 的工具不是单一来源,它实际上把不同来源的工具组合起来,并在运行前经过 策略过滤、权限校验、schema 清理 等步骤,构成最终可被模型调用的工具列表。
支持的工具见前面图片即可。
AI时代已来,加速学习!
学习更多干货,欢迎关注转发!
玩转cpp小项目星球3周年了!


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/237208.html