🛠️ 第二章:Tools 工具系统

掌握所有内置工具,学习工具权限配置和自定义工具

📖 2.1 工具系统概述

Tools(工具)是 LLM 在你的代码库中执行操作的方式。OpenCode 附带了一套内置工具, 同时支持自定义工具和 MCP 服务器扩展。

💡 默认行为: 所有工具默认启用,无需权限即可运行。可以通过权限配置控制工具行为。

🔧 2.2 内置工具列表

bash

在项目环境中执行 Shell 命令。强大的自动化能力,需谨慎配置权限。

edit

使用精确字符串替换修改现有文件。安全的编辑方式。

write

创建新文件或覆盖现有文件。需注意文件保护。

read

读取代码库中的文件内容。基础但重要的工具。

grep

使用正则表达式搜索文件内容。代码搜索利器。

glob

通过模式匹配查找文件。支持通配符搜索。

list

列出给定路径下的文件和目录。目录浏览工具。

webfetch

获取 Web 内容。支持抓取网页和 API 调用。

skill

加载技能并返回其内容。Skills 系统集成工具。

todowrite/todoread

管理待办事项列表。任务跟踪工具。

lsp (实验性)

与配置的 LSP 服务器交互。代码分析工具。

patch

应用补丁到文件。批量修改工具。

🔐 2.3 工具权限配置

通过 permission 字段控制工具行为:

"permission": { "read": "allow", "write": "allow", "edit": "allow", "bash": { "*": "allow", "rm *": "deny", "rm -rf *": "deny", "sudo *": "ask" }, "webfetch": "allow" }
⚠️ 危险操作必须拦截: rm, rm -rf, sudo, dd, mkfs 等危险命令必须配置为 deny 或 ask。

🔧 2.4 自定义工具

在配置文件中定义自定义工具:

"tools": { "myCustomTool": { "description": "A custom tool for data processing", "parameters": { "type": "object", "properties": { "input": { "type": "string", "description": "Input data" } }, "required": ["input"] }, "code": "..." } }

🌐 2.5 MCP 服务器集成

MCP(Model Context Protocol)服务器允许集成外部工具和服务:

"mcp": { "servers": { "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"] }, "github": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"] } } }

📁 2.6 忽略模式配置

工具如 grep、glob、list 默认遵守 .gitignore 规则。创建 .ignore 文件包含额外忽略的文件:

// .ignore 文件示例 node_modules/ *.log .DS_Store *.tmp

✅ 本章小结

  • 掌握所有 12 个内置工具的用途
  • 学会配置工具权限(allow/ask/deny)
  • 了解如何创建自定义工具
  • 掌握 MCP 服务器集成方法
← 返回首页 下一章:Skills 技能系统 →