Tools cho phép LLM thực hiện các hành động trong codebase của bạn. OpenCode đi kèm với một bộ công cụ tích hợp sẵn, nhưng bạn có thể mở rộng với custom tools hoặc MCP servers.

Mặc định, tất cả tools đều được bật và không cần quyền để chạy. Bạn có thể kiểm soát hành vi của tool thông qua permissions.


Cấu hình

Sử dụng trường permission để kiểm soát hành vi của tool. Bạn có thể cho phép, từ chối, hoặc yêu cầu phê duyệt cho từng tool.

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

Bạn cũng có thể sử dụng wildcard để kiểm soát nhiều tools cùng lúc. Ví dụ, để yêu cầu phê duyệt cho tất cả tools từ một MCP server:

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

Tìm hiểu thêm về cấu hình permissions.


Các công cụ tích hợp sẵn

Dưới đây là tất cả các tools tích hợp sẵn trong OpenCode.


bash

Thực thi các lệnh shell trong môi trường project của bạn.

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

Tool này cho phép LLM chạy các lệnh terminal như npm install, git status, hoặc bất kỳ lệnh shell nào khác.


edit

Chỉnh sửa các file hiện có bằng cách thay thế chuỗi chính xác.

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

Tool này thực hiện các chỉnh sửa chính xác vào file bằng cách thay thế các đoạn text khớp chính xác. Đây là cách chính để LLM chỉnh sửa code.


write

Tạo file mới hoặc ghi đè file hiện có.

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

Sử dụng tool này để cho phép LLM tạo file mới. Nó sẽ ghi đè file hiện có nếu đã tồn tại.

:::note Tool write được kiểm soát bởi permission edit, bao gồm tất cả các thao tác chỉnh sửa file (edit, write, patch, multiedit). :::


read

Đọc nội dung file từ codebase của bạn.

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

Tool này đọc file và trả về nội dung của chúng. Hỗ trợ đọc các khoảng dòng cụ thể cho file lớn.


grep

Tìm kiếm nội dung file bằng regular expressions.

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

Tìm kiếm nội dung nhanh trong toàn bộ codebase. Hỗ trợ cú pháp regex đầy đủ và lọc theo pattern file.


glob

Tìm file bằng pattern matching.

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

Tìm kiếm file sử dụng glob patterns như **/*.js hoặc src/**/*.ts. Trả về các đường dẫn file khớp, sắp xếp theo thời gian chỉnh sửa.


list

Liệt kê các file và thư mục trong một đường dẫn cho trước.

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

Tool này liệt kê nội dung thư mục. Nó chấp nhận glob patterns để lọc kết quả.


lsp (experimental)

Tương tác với các LSP servers đã cấu hình để có được các tính năng code intelligence như definitions, references, hover info, và call hierarchy.

:::note Tool này chỉ khả dụng khi OPENCODE_EXPERIMENTAL_LSP_TOOL=true (hoặc OPENCODE_EXPERIMENTAL=true). :::

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

Các operations được hỗ trợ bao gồm goToDefinition, findReferences, hover, documentSymbol, workspaceSymbol, goToImplementation, prepareCallHierarchy, incomingCalls, và outgoingCalls.

Để cấu hình LSP servers nào khả dụng cho project của bạn, xem LSP Servers.


patch

Áp dụng patches vào file.

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

Tool này áp dụng patch files vào codebase của bạn. Hữu ích để áp dụng diffs và patches từ nhiều nguồn khác nhau.

:::note Tool patch được kiểm soát bởi permission edit, bao gồm tất cả các thao tác chỉnh sửa file (edit, write, patch, multiedit). :::


skill

Load một skill (file SKILL.md) và trả về nội dung của nó trong cuộc hội thoại.

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

todowrite

Quản lý danh sách todo trong các phiên làm việc.

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

Tạo và cập nhật danh sách task để theo dõi tiến độ trong các thao tác phức tạp. LLM sử dụng tool này để tổ chức các task nhiều bước.

:::note Tool này bị tắt cho subagents theo mặc định, nhưng bạn có thể bật thủ công. Tìm hiểu thêm :::


todoread

Đọc danh sách todo hiện có.

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

Đọc trạng thái danh sách todo hiện tại. Được LLM sử dụng để theo dõi các task đang chờ xử lý hoặc đã hoàn thành.

:::note Tool này bị tắt cho subagents theo mặc định, nhưng bạn có thể bật thủ công. Tìm hiểu thêm :::


webfetch

Lấy nội dung web.

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

Cho phép LLM fetch và đọc các trang web. Hữu ích để tra cứu tài liệu hoặc nghiên cứu các tài nguyên online.


question

Hỏi người dùng các câu hỏi trong quá trình thực thi.

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

Tool này cho phép LLM hỏi người dùng các câu hỏi trong quá trình thực hiện task. Nó hữu ích để:

  • Thu thập preferences hoặc yêu cầu của người dùng
  • Làm rõ các hướng dẫn mơ hồ
  • Nhận quyết định về các lựa chọn implementation
  • Đưa ra các lựa chọn về hướng đi tiếp theo

Mỗi câu hỏi bao gồm tiêu đề, nội dung câu hỏi, và danh sách các options. Người dùng có thể chọn từ các options được cung cấp hoặc nhập câu trả lời tùy chỉnh. Khi có nhiều câu hỏi, người dùng có thể điều hướng giữa chúng trước khi gửi tất cả câu trả lời.


Custom tools

Custom tools cho phép bạn định nghĩa các functions của riêng mình mà LLM có thể gọi. Chúng được định nghĩa trong file config và có thể thực thi code tùy ý.

Tìm hiểu thêm về cách tạo custom tools.


MCP servers

MCP (Model Context Protocol) servers cho phép bạn tích hợp các tools và services bên ngoài. Điều này bao gồm truy cập database, tích hợp API, và các dịch vụ bên thứ ba.

Tìm hiểu thêm về cấu hình MCP servers.


Chi tiết nội bộ

Bên trong, các tools như grep, glob, và list sử dụng ripgrep. Mặc định, ripgrep tuân theo các patterns trong .gitignore, nghĩa là các file và thư mục được liệt kê trong .gitignore của bạn sẽ bị loại khỏi các tìm kiếm và liệt kê.


Ignore patterns

Để bao gồm các file thường bị ignore, tạo file .ignore trong thư mục gốc project. File này có thể cho phép rõ ràng một số đường dẫn nhất định.

!node_modules/
!dist/
!build/

Ví dụ, file .ignore này cho phép ripgrep tìm kiếm trong các thư mục node_modules/, dist/, và build/ ngay cả khi chúng được liệt kê trong .gitignore.