📖 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 服务器集成方法