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
}
}

此工具将补丁文件应用到你的代码库。适用于应用来自不同来源的差异和补丁。


skill

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

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

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

todowrite

在编码会话期间管理待办事项列表。

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(模型上下文协议)服务器允许您集成外部工具和服务。这包括数据库访问、API 集成和第三方服务。

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


内部实现

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


忽略模式

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

.ignore
!node_modules/
!dist/
!build/

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