工具
管理 LLM 可以使用的工具。
工具允许 LLM 在你的代码库中执行操作。OpenCode 自带一组内置工具,但你可以通过自定义工具或 MCP 服务器进行扩展。
默认情况下,所有工具都是启用的,无需权限即可运行。你可以通过权限控制工具行为。
配置
使用 permission 字段控制工具行为。你可以为每个工具设置允许、拒绝或需要审批。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "deny",
"bash": "ask",
"webfetch": "allow"
}
}你还可以使用通配符一次控制多个工具。例如,要求 MCP 服务器的所有工具都需要审批:
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"mymcp_*": "ask"
}
}了解更多关于配置权限的信息。
内置工具
以下是 OpenCode 中所有可用的内置工具。
bash
在项目环境中执行 shell 命令。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"bash": "allow"
}
}此工具允许 LLM 运行终端命令,如 npm install、git status 或任何其他 shell 命令。
edit
使用精确字符串替换修改现有文件。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}此工具通过替换精确的文本匹配来对文件进行精确编辑。这是 LLM 修改代码的主要方式。
write
创建新文件或覆盖现有文件。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}使用此工具允许 LLM 创建新文件。如果文件已存在,将会覆盖。
注意:
write工具由edit权限控制,该权限涵盖所有文件修改操作(edit、write、patch、multiedit)。
read
从代码库中读取文件内容。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"read": "allow"
}
}此工具读取文件并返回其内容。支持读取大文件的特定行范围。
grep
使用正则表达式搜索文件内容。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"grep": "allow"
}
}在代码库中进行快速内容搜索。支持完整的正则表达式语法和文件模式过滤。
glob
通过模式匹配查找文件。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"glob": "allow"
}
}使用 glob 模式搜索文件,如 **/*.js 或 src/**/*.ts。返回按修改时间排序的匹配文件路径。
list
列出给定路径中的文件和目录。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"list": "allow"
}
}此工具列出目录内容。接受 glob 模式来过滤结果。
lsp(实验性)
与配置的 LSP 服务器交互,获取代码智能功能,如定义、引用、悬停信息和调用层次结构。
注意: 此工具仅在
OPENCODE_EXPERIMENTAL_LSP_TOOL=true(或OPENCODE_EXPERIMENTAL=true)时可用。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"lsp": "allow"
}
}支持的操作包括 goToDefinition、findReferences、hover、documentSymbol、workspaceSymbol、goToImplementation、prepareCallHierarchy、incomingCalls 和 outgoingCalls。
要配置项目可用的 LSP 服务器,请参阅 LSP 服务器。
patch
将补丁应用到文件。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}此工具将补丁文件应用到你的代码库。适用于应用来自各种来源的 diff 和补丁。
注意:
patch工具由edit权限控制,该权限涵盖所有文件修改操作(edit、write、patch、multiedit)。
skill
加载一个技能(SKILL.md 文件)并在对话中返回其内容。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"skill": "allow"
}
}todowrite
在编码会话期间管理待办事项列表。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"todowrite": "allow"
}
}创建和更新任务列表以跟踪复杂操作期间的进度。LLM 使用此工具来组织多步骤任务。
注意: 此工具默认对子代理禁用,但你可以手动启用。了解更多
todoread
读取现有的待办事项列表。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"todoread": "allow"
}
}读取当前待办事项列表状态。LLM 使用此工具来跟踪哪些任务待处理或已完成。
注意: 此工具默认对子代理禁用,但你可以手动启用。了解更多
webfetch
获取网页内容。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"webfetch": "allow"
}
}允许 LLM 获取和读取网页。适用于查阅文档或研究在线资源。
question
在执行过程中向用户提问。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"question": "allow"
}
}此工具允许 LLM 在任务执行期间向用户提问。适用于:
- 收集用户偏好或需求
- 澄清模糊的指令
- 获取实现选择的决定
- 提供方向选择
每个问题包括标题、问题文本和选项列表。用户可以从提供的选项中选择或输入自定义答案。当有多个问题时,用户可以在提交所有答案之前在问题之间导航。
自定义工具
自定义工具允许你定义 LLM 可以调用的自己的函数。这些在配置文件中定义,可以执行任意代码。
了解更多关于创建自定义工具的信息。
MCP 服务器
MCP(模型上下文协议)服务器允许你集成外部工具和服务。包括数据库访问、API 集成和第三方服务。
了解更多关于配置 MCP 服务器的信息。
内部实现
在内部,grep、glob 和 list 等工具底层使用 ripgrep (opens in a new tab)。默认情况下,ripgrep 遵循 .gitignore 模式,这意味着 .gitignore 中列出的文件和目录将从搜索和列表中排除。
忽略模式
要包含通常会被忽略的文件,请在项目根目录创建 .ignore 文件。此文件可以显式允许某些路径。
!node_modules/
!dist/
!build/例如,此 .ignore 文件允许 ripgrep 在 node_modules/、dist/ 和 build/ 目录中搜索,即使它们在 .gitignore 中列出。