内置工具参考
区分读取、修改、检索、联网与交互工具,并核对实验性工具及权限条件。
工具让模型读取上下文并执行动作。内置工具之外,还可以接入自定义工具与 MCP。工具存在、工具启用和某次调用获得权限是不同条件,默认例外见权限与工具。
文件与命令
| 工具 | 行为 | 主要权限 |
|---|---|---|
read | 读取文件,支持大文件行范围 | read |
edit | 精确字符串替换现有文件 | edit |
write | 新建文件,目标存在时可覆盖 | edit |
apply_patch | 应用补丁 | edit |
glob | 按模式找文件,结果按修改时间排序 | glob |
grep | 正则搜索内容并按文件模式过滤 | grep |
bash | 在项目环境执行 shell 命令 | bash |
带工作区外路径的操作还可能受到 external_directory 控制。允许 read 不代表允许编辑,拒绝 edit 也不自动阻止所有 shell 写入。
补丁工具与 Hooks
处理 tool.execute.before 或 tool.execute.after 时,工具名称应检查 input.tool === "apply_patch",不要使用 "patch"。
该工具的补丁在 output.args.patchText,不是 output.args.filePath。路径嵌在补丁标记中,如 *** Add File:、*** Update File:、*** Move to:、*** Delete File:,并相对项目根目录。编写路径检查时要考虑新增、修改、移动和删除,不能只寻找单一 filePath 字段。
LSP 查询
实验性 lsp 工具要求 OPENCODE_EXPERIMENTAL_LSP_TOOL=true 或 OPENCODE_EXPERIMENTAL=true,并需有适用的 LSP 配置与权限。它支持定义、引用、悬浮说明、文档/工作区符号、实现与调用层级查询。
官方列出的操作名包括 goToDefinition、findReferences、hover、documentSymbol、workspaceSymbol、goToImplementation、prepareCallHierarchy、incomingCalls、outgoingCalls。仅允许 permission.lsp 不能代替启用实验工具或配置服务器。
网络查询
webfetch 获取指定 URL;websearch 通过 Exa 或 Parallel 搜索,适合先发现资料。后者仅在使用 OpenCode/OpenCode Go 提供商,或设置 OPENCODE_ENABLE_EXA、OPENCODE_ENABLE_PARALLEL 中任一变量为 truthy 值时可用。
例如 OPENCODE_ENABLE_EXA=1 opencode 启用对应搜索入口。官方说明该搜索连接后端托管 MCP,无需另提供 API Key;这不代表所有模型请求或其他 MCP 服务都无需凭据。
任务与用户交互
skill 加载 SKILL.md 并把内容加入对话。todowrite 管理待办,默认对子智能体禁用。Task 调用由 task 权限按子智能体类型匹配,详见委派与深度。
question 在执行期间向用户询问偏好或需求,可包含标题、问题和选项,用户也能输入自定义答案。允许该工具不等于用户已经批准其他受限动作。
忽略文件与搜索结果
grep 和 glob 底层使用 ripgrep,默认遵守 .gitignore,因此忽略目录不会出现在普通搜索与列表中。
官方说明可以在项目根 .ignore 中使用反向规则重新包含路径,例如 !dist/。搜索忽略与文件读取权限不同,不能把 .gitignore 当成禁止代理访问敏感内容的安全措施。