Skip to content

工具

管理 LLM 可以使用的工具。

工具允许 LLM 在你的代码库中执行操作。OpenCode 自带了一系列内置工具,但你可以通过 自定义工具MCP 服务器 来扩展它。

默认情况下,所有工具都是 启用 的,且无需权限即可运行。但你可以通过配置文件进行配置并控制 权限


配置

你可以全局配置工具,也可以为每个智能体单独配置。特定于智能体的配置会覆盖全局设置。

默认情况下,所有工具都设置为 true。要禁用某个工具,请将其设置为 false


全局

使用 tools 选项全局禁用或启用工具。

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"write": false,
"bash": false,
"webfetch": true
}
}

你也可以使用通配符同时控制多个工具。例如,禁用来自某个 MCP 服务器的所有工具:

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"mymcp_*": false
}
}

按智能体

在智能体定义中使用 tools 配置来为特定智能体覆盖全局工具设置。

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"write": true,
"bash": true
},
"agent": {
"plan": {
"tools": {
"write": false,
"bash": false
}
}
}
}

例如,这里的 plan 智能体覆盖了全局配置,禁用了 writebash 工具。

你也可以在 Markdown 中为智能体配置工具。

~/.config/opencode/agent/readonly.md
---
description: 只读分析智能体
mode: subagent
tools:
write: false
edit: false
bash: false
---
在不进行任何修改的情况下分析代码。

了解更多 关于为每个智能体配置工具的信息。


内置

以下是 OpenCode 中所有可用的内置工具。


bash

在你的项目环境中执行 shell 命令。

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"bash": true
}
}

此工具允许 LLM 运行终端命令,如 npm installgit status 或任何其他 shell 命令。


edit

使用精确的字符串替换来修改现有文件。

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"edit": true
}
}

此工具通过替换精确匹配的文本对文件进行精确编辑。这是 LLM 修改代码的主要方式。


write

创建新文件或覆盖现有文件。

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"write": true
}
}

使用此工具允许 LLM 创建新文件。如果文件已存在,它将覆盖现有文件。


read

从你的代码库中读取文件内容。

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"read": true
}
}

此工具读取文件并返回其内容。对于大型文件,它支持读取特定的行范围。


grep

使用正则表达式搜索文件内容。

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"grep": true
}
}

在你的代码库中进行快速内容搜索。支持完整的正则表达式语法和文件模式过滤。


glob

通过模式匹配查找文件。

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"glob": true
}
}

使用 glob 模式(如 **/*.jssrc/**/*.ts)搜索文件。返回按修改时间排序的匹配文件路径。


list

列出给定路径中的文件和目录。

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"list": true
}
}

此工具列出目录内容。它接受 glob 模式来过滤结果。


LSP (实验性)

与你配置的 LSP 服务器进行交互,以获取代码智能功能,如定义、引用、悬停信息和调用层次结构。

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"lsp": true
}
}

支持的操作包括 goToDefinitionfindReferenceshoverdocumentSymbolworkspaceSymbolgoToImplementationprepareCallHierarchyincomingCallsoutgoingCalls

要配置哪些 LSP 服务器可用于你的项目,请参阅 LSP 服务器


patch

向文件应用补丁。

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"patch": true
}
}

此工具将补丁文件应用到你的代码库中。对于应用来自各种来源的差异 (diffs) 和补丁非常有用。


skill

加载一个 技能 (skill) (SKILL.md 文件) 并在对话中返回其内容。

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"skill": true
}
}

你可以使用 permission.skill 通过 权限 (permissions) 来控制加载技能时的批准提示。


todowrite

在编码会话期间管理任务列表 (todo lists)。

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"todowrite": true
}
}

创建并更新任务列表,以在复杂操作期间跟踪进度。LLM 使用它来组织多步骤任务。


todoread

读取现有的任务列表。

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"todoread": true
}
}

读取当前任务列表状态。由 LLM 用于跟踪哪些任务处于待处理或已完成状态。


webfetch

获取网页内容。

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"webfetch": true
}
}

允许 LLM 获取并读取网页。对于查阅文档或研究在线资源非常有用。


自定义工具

自定义工具允许你定义 LLM 可以调用的自有函数。这些工具在你的配置文件中定义,可以执行任意代码。

了解更多 关于创建自定义工具的信息。


MCP 服务器

MCP (Model Context Protocol) 服务器允许你集成外部工具和服务。这包括数据库访问、API 集成和第三方服务。

了解更多 关于配置 MCP 服务器的信息。


内部原理

在内部,grepgloblist 等工具底层使用的是 ripgrep。默认情况下,ripgrep 会遵循 .gitignore 模式,这意味着 .gitignore 中列出的文件和目录将被排除在搜索和列表之外。


忽略模式

要包含通常会被忽略的文件,请在项目根目录下创建一个 .ignore 文件。此文件可以显式允许某些路径。

.ignore
!node_modules/
!dist/
!build/

例如,即使 node_modules/dist/build/ 目录列在 .gitignore 中,此 .ignore 文件也会允许 ripgrep 在这些目录中进行搜索。