工具使用教程

intermediate
## 什么是工具 在 OpenClaw 中,工具(Tools)是智能体与外部世界交互的"手"。智能体本身只能思考和生成文本,而工具让它能够执行命令、读写文件、浏览网页、发送消息等实际操作。 你可以把工具理解为智能体的能力扩展——没有工具的智能体只是一个聊天机器人,有了工具的智能体才是真正的 AI 助手。 ## 内置工具分类 OpenClaw 内置了丰富的工具,按功能可以分为以下几大类: | 工具 | 功能 | 说明 | |------|------|------| | `exec` | 执行 Shell 命令 | 运行终端命令,如 `ls`、`git`、`npm` 等 | | `browser` | 浏览器控制 | 控制 Chromium 浏览器,导航、点击、截图 | | `web_search` | 网页搜索 | 搜索互联网内容 | | `read` | 读取文件 | 读取本地文件内容 | | `write` | 写入文件 | 创建或修改本地文件 | | `image` | 图像处理 | 生成、分析和处理图像 | | `message` | 发送消息 | 主动向用户发送消息 | | `cron` | 定时任务 | 创建和管理定时任务 | | `gateway` | Gateway 管理 | 查看和管理 Gateway 状态 | | `memory_search` | 记忆搜索 | 语义搜索长期记忆 | | `memory_get` | 记忆读取 | 读取记忆文件内容 | | `process` | 进程管理 | 管理后台运行的进程 | | `code_execution` | 代码执行 | 在沙箱中运行 Python 代码 | 每个工具都有明确的职责边界,智能体会根据用户的请求自动选择合适的工具来完成任务。 ## 工具、技能与插件的三层关系 OpenClaw 的能力扩展体系分为三个层级,理解它们的关系很重要: ``` 插件(Plugins) └── 提供底层能力(渠道连接、模型接入、语音通话等) └── 需要重启 Gateway 生效 技能(Skills) └── 提供高层指令(Markdown 文件,指导智能体如何完成特定任务) └── 热加载,无需重启 工具(Tools) └── 提供原子操作(执行命令、读写文件、浏览网页等) └── 内置于 OpenClaw,开箱即用 ``` 简单来说: - **工具**是最底层的原子能力,比如"执行一条命令"、"读取一个文件" - **技能**是基于工具的高层指令,比如"帮我写一个 React 组件"——技能文件会告诉智能体该用哪些工具、按什么步骤完成 - **插件**是系统级扩展,比如"连接 WhatsApp"、"接入语音通话"——插件可以引入全新的工具和能力 ## 工具权限控制 默认情况下,OpenClaw 会根据安全策略限制某些工具的使用。你可以通过 `tools.allow` 和 `tools.deny` 来精确控制智能体可以使用哪些工具。 ### 允许列表(allow) 明确允许智能体使用的工具: ```json5 { "tools": { "allow": ["read", "write", "exec", "browser"] } } ``` 设置 `allow` 后,智能体**只能**使用列表中的工具,其他工具全部禁用。 ### 拒绝列表(deny) 明确禁止智能体使用的工具: ```json5 { "tools": { "deny": ["exec", "browser"] } } ``` 设置 `deny` 后,智能体可以使用除列表之外的所有工具。 ### 优先级规则 - 如果同时设置了 `allow` 和 `deny`,`deny` 优先 - 如果只设置了 `allow`,未列出的工具全部禁用 - 如果只设置了 `deny`,未列出的工具全部可用 - 如果都不设置,使用默认的工具配置文件(tools.profile) ## 工具配置文件(tools.profile) `tools.profile` 是一种快捷方式,可以一键设置工具权限的预设方案: | Profile | 包含的工具 | 适用场景 | |---------|-----------|----------| | `full` | 所有工具 | 完全信任的环境,最大能力 | | `coding` | read、write、exec、browser、web_search | 编程开发场景 | | `messaging` | message、web_search、memory_search | 纯聊天场景,不操作文件 | | `minimal` | read、web_search | 最小权限,只读 + 搜索 | 在配置文件中设置: ```json5 { "tools": { "profile": "coding" } } ``` 你也可以在 profile 基础上用 `allow` / `deny` 做微调: ```json5 { "tools": { "profile": "coding", "deny": ["browser"] // 在 coding 基础上禁用浏览器 } } ``` ## 常用工具分组 OpenClaw 提供了工具分组(group)的概念,方便你按类别批量管理工具权限: | 分组 | 包含的工具 | 说明 | |------|-----------|------| | `group:fs` | read、write | 文件系统操作 | | `group:web` | browser、web_search | 网络相关 | | `group:runtime` | exec、code_execution、process | 代码执行相关 | | `group:ui` | message、image | 用户界面交互 | | `group:sessions` | memory_search、memory_get | 会话和记忆 | 在权限配置中可以直接使用分组名: ```json5 { "tools": { "allow": ["group:fs", "group:web"] // 等同于 allow: ["read", "write", "browser", "web_search"] } } ``` 分组让权限管理更简洁,特别是当你需要按场景快速切换工具集时。 ## 浏览器工具 浏览器工具(`browser`)让智能体能够控制一个真实的 Chromium 浏览器实例,执行网页操作。 ### 基本能力 - **导航**:打开指定 URL - **点击**:点击页面元素 - **输入**:在表单中填写内容 - **截图**:对当前页面截图并分析 - **提取**:获取页面文本内容 ### 启用浏览器工具 浏览器工具默认可能未启用,需要在配置中添加: ```json5 { "tools": { "allow": ["browser"] } } ``` 或者使用 `full` 或 `coding` profile,它们默认包含浏览器工具。 ### 使用场景 浏览器工具适合以下场景: - **网页信息抓取**:让智能体打开网页,提取你需要的信息 - **表单自动填写**:自动登录、提交表单 - **页面截图分析**:截取页面截图,让智能体分析页面内容或布局 - **Web 应用测试**:自动化测试 Web 应用的功能 ### 登录保持 浏览器工具支持登录状态保持(browser-login)。你可以先手动登录某个网站,浏览器会保存 Cookie 和会话信息,之后智能体就可以在已登录状态下操作该网站。 ```bash # 打开浏览器进行手动登录 openclaw browser-login ``` 登录完成后关闭浏览器窗口,登录状态会被保存。下次智能体使用浏览器工具访问同一网站时,会自动使用已保存的登录状态。 ### 注意事项 - 浏览器工具需要系统安装了 Chromium 或 Chrome - Linux 服务器环境可能需要安装额外的依赖(`apt install chromium-browser`) - WSL2 环境下需要配置远程 CDP(Chrome DevTools Protocol)连接到 Windows 上的 Chrome ## 代码执行工具 OpenClaw 提供了两种代码执行方式,适用于不同场景。 ### exec 工具 `exec` 是最常用的命令执行工具,可以运行任意 Shell 命令: ``` 用户:帮我查看当前目录下的文件 智能体:(使用 exec 工具执行 ls -la) ``` `exec` 工具的特点: - 直接在宿主机上执行命令 - 可以访问所有系统资源 - 适合日常开发和系统管理任务 ### code_execution 工具 `code_execution` 是一个沙箱化的 Python 执行环境,适合数据分析和计算任务: ``` 用户:帮我分析这份 CSV 数据 智能体:(使用 code_execution 工具运行 Python 脚本) ``` `code_execution` 的特点: - 在隔离的沙箱中运行 - 预装了常用的数据分析库(pandas、numpy、matplotlib 等) - 适合数据处理、图表生成、数学计算 ### 执行审批机制 为了安全,OpenClaw 支持命令执行审批(exec-approvals)。你可以配置哪些命令需要用户确认才能执行: ```json5 { "tools": { "exec": { "approvals": { "mode": "allow", // allow: 白名单模式, deny: 黑名单模式 "commands": [ "ls", "cat", "echo", "git status", "git log" ] } } } } ``` 在 `allow` 模式下,只有白名单中的命令可以直接执行,其他命令需要用户确认。这在生产环境中特别有用,可以防止智能体误执行危险命令。 ### 命令白名单配置 推荐的安全配置是使用白名单模式,只允许安全的只读命令自动执行: ```json5 { "tools": { "exec": { "approvals": { "mode": "allow", "commands": [ // 文件查看 "ls", "cat", "head", "tail", "wc", // 版本控制 "git status", "git log", "git diff", // 系统信息 "whoami", "pwd", "date", "uname" ] } } } } ``` 其他命令(如 `rm`、`mv`、`npm install` 等)执行前会弹出确认提示,你可以选择允许或拒绝。 ## 工具使用最佳实践 ### 1. 最小权限原则 只给智能体它需要的工具权限。如果你只需要智能体帮你写代码,用 `coding` profile 就够了,不需要给 `full` 权限。 ### 2. 生产环境用审批 在生产服务器上运行智能体时,一定要配置 exec 审批机制,防止误操作。 ### 3. 善用工具分组 用 `group:fs`、`group:web` 等分组来管理权限,比逐个列出工具名更清晰、更不容易遗漏。 ### 4. 按智能体配置 如果你运行多个智能体(多智能体模式),可以为每个智能体配置不同的工具权限: ```json5 { "agents": { "coder": { "tools": { "profile": "coding" } }, "assistant": { "tools": { "profile": "messaging" } } } } ``` 这样编程智能体有完整的开发工具,而聊天助手只有消息和搜索能力。 ## 小结 OpenClaw 的工具体系设计得既强大又安全: - 内置工具覆盖了文件操作、命令执行、网页浏览、消息发送等常见需求 - 工具、技能、插件三层架构让能力扩展灵活有序 - 权限控制(allow/deny/profile/group)让你精确掌控智能体的能力边界 - 浏览器工具和代码执行工具是两个最强大的高级工具,善用它们能大幅提升效率 #OpenClaw工具 #工具权限 #浏览器控制 #代码执行 #龙虾技能库