---
title: 工具
description: 管理 LLM 可以使用的工具。
---

Tools allow the LLM to perform actions in your codebase. OpenCode comes with a set of built-in tools, but you can extend it with [custom tools](/docs/custom-tools) or [MCP servers](/docs/mcp-servers).

默认情况下，所有工具都是**启用**并且不需要执行权限。您可以交叉[permissions](/docs/permissions) 控制工具行为。

---

## 配置

使用 `permission` 栏位控制工具行为。您可以允许、拒绝或要求批准每个工具。

```json title="opencode.json"
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "edit": "deny",
    "bash": "ask",
    "webfetch": "allow"
  }
}
```

您还可以使用万用字元同时控制多个工具。例如，要求 MCP 服务器批准所有工具：

```json title="opencode.json"
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "mymcp_*": "ask"
  }
}
```

[了解更多](/docs/permissions)关于配置许可权。

---

## 內建

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

---

### 巴什

在专案环境中执行shell命令。

```json title="opencode.json" {4}
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "bash": "allow"
  }
}
```

This tool allows the LLM to run terminal commands like `npm install`, `git status`, or any other shell command.

---

### 編輯

使用精確的字串替換修改現有檔案。

```json title="opencode.json" {4}
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "edit": "allow"
  }
}
```

该工具取消替换精确的文字来匹配对文件执行精确编辑。这是 LLM 修改程序代码的主要方式。

---

### 寫

建立新檔案或覆蓋現有檔案。

```json title="opencode.json" {4}
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "edit": "allow"
  }
}
```

使用它允许 LLM 创建新文件。如果现有文件已经存在，将会覆盖它们。

:::note
`write`工具由`edit`许可权控制，该许可权主题所有文件修改（`edit`、`write`、`patch`、`multiedit`）。
:::

---

### 讀

從程式碼庫中讀取檔案內容。

```json title="opencode.json" {4}
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "read": "allow"
  }
}
```

該工具讀取檔案並返回其內容。它支援讀取大檔案的特定行範圍。

---

### grep

使用正規表示式搜尋檔案內容。

```json title="opencode.json" {4}
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "grep": "allow"
  }
}
```

在您的程式碼庫中快速進行內容搜尋。支援完整的正規表示式語法和檔案模式過濾。

---

### 全域性

透過模式匹配查詢檔案。

```json title="opencode.json" {4}
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "glob": "allow"
  }
}
```

使用 `**/*.js` 或 `src/**/*.ts` 等全域性模式搜索档案。返回按时间排序的匹配档案路径修改。

---

### 列表

列出給定路徑中的檔案和目錄。

```json title="opencode.json" {4}
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "list": "allow"
  }
}
```

該工具列出目錄內容。它接受全域性模式來過濾結果。

---

### lsp（实验性）

与您配置的LSP服务器交互，通知计划码智慧功能，例如定义、引用、悬停资讯和呼叫层次结构。

:::note
This tool is only available when `OPENCODE_EXPERIMENTAL_LSP_TOOL=true` (or `OPENCODE_EXPERIMENTAL=true`).
:::

```json title="opencode.json" {4}
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "lsp": "allow"
  }
}
```

支援的操作包括 `goToDefinition`、`findReferences`、`hover`、`documentSymbol`、`workspaceSymbol`、`goToImplementation`、`prepareCallHierarchy`、`incomingCalls` 和 `outgoingCalls`。

To configure which LSP servers are available for your project, see [LSP Servers](/docs/lsp).

---

### 修補

對檔案應用補丁。

```json title="opencode.json" {4}
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "edit": "allow"
  }
}
```

該工具將補丁檔案應用到您的程式碼庫。對於應用來自各種來源的差異和補丁很有用。

:::note
`patch`工具由`edit`许可权控制，该许可权主题所有文件修改（`edit`、`write`、`patch`、`multiedit`）。
:::

---

### 技能

加载[skill](/docs/skills)（`SKILL.md` 档案）并在对话中返回其内容。

```json title="opencode.json" {4}
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "skill": "allow"
  }
}
```

---

### 待辦寫入

在編碼會話期間管理待辦事項列表。

```json title="opencode.json" {4}
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "todowrite": "allow"
  }
}
```

建立和更新任务列表以跟踪复杂操作期间的详细信息。LLM 使用它来组织多步骤任务。

:::note
默认情况下，子代理取消此工具，但您可以手动启用它。 [了解更多](/docs/agents/#permissions)
:::

---

### 託多雷德

閱讀現有的待辦事項列表。

```json title="opencode.json" {4}
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "todoread": "allow"
  }
}
```

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

:::note
默认情况下，子代理取消此工具，但您可以手动启用它。 [了解更多](/docs/agents/#permissions)
:::

---

### 網頁抓取

獲取網頁內容。

```json title="opencode.json" {4}
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "webfetch": "allow"
  }
}
```

允许 LLM 获取和读取网页。对于查询文件或研究线上资源很有用。

---

### 網路搜尋

在網路上搜尋資訊。

:::note
仅当使用 OpenCode 提供或 `OPENCODE_ENABLE_EXA` 程序环境变量设置为任何真值（例如 `true` 或 `1`）时，此工具才可用。

要在启动 OpenCode 时启用：

```bash
OPENCODE_ENABLE_EXA=1 opencode
```

:::

```json title="opencode.json" {4}
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "websearch": "allow"
  }
}
```

使用 Exa AI 执行网路搜索以线上查询相关资讯。对于研究主题、查询时事或收集训练超出数据范围的资讯很有用。

不需要 API 金钥匙 — 该工具消耗身份验证即可直接连线到 Exa AI 的托管 MCP 服务。

:::tip
当您需要查询资讯（发现）时，请使用 `websearch`；当您需要从特定 URL 检索内容（搜索）时，请使用 `webfetch`。
:::

---

### 問題

在執行過程中詢問使用者問題。

```json title="opencode.json" {4}
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "question": "allow"
  }
}
```

该工具允许 LLM 在任务期间询问用户问题。它适用于：

- 收集使用者偏好或要求
- 澄清不明確的指令
- 就實施選擇做出決策
- 提供選擇方向

每個問題都包含標題、問題文字和選項列表。使用者可以從提供的選項中進行選擇或輸入自定義答案。當存在多個問題時，使用者可以在提交所有答案之前在這些問題之間導航。

---

## 定製工具

自定义工具可以让您定义LLM可以调用自己的函式。这些是在您的配置文件中定义的并且可以执行任何程序代码。

[了解更多](/docs/custom-tools)关于创建自定义工具。

---

## MCP 伺服器

MCP（模型上下文协议）服务器允许您集成外部工具和服务。这包括数据库访问、API 集成和第三方服务。

[了解更多](/docs/mcp-servers)关于配置MCP服务器。

---

## 內部結構

Internally, tools like `grep`, `glob`, and `list` use [ripgrep](https://github.com/BurntSushi/ripgrep) under the hood. By default, ripgrep respects `.gitignore` patterns, which means files and directories listed in your `.gitignore` will be excluded from searches and listings.

---

### 忽略模式

要包含通常会被忽略的文件，请在专案根目录中建立 `.ignore` 文件。该文件可以明确允许某些路径。

```text title=".ignore"
!node_modules/
!dist/
!build/
```

例如，此 `.ignore` 档案允许 ripgrep 在 `node_modules/`、`dist/` 和 `build/` 目录中搜索，即使它们列在 `.gitignore` 中。
