跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

内置工具参考

区分读取、修改、检索、联网与交互工具,并核对实验性工具及权限条件。

工具让模型读取上下文并执行动作。内置工具之外,还可以接入自定义工具与 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 当成禁止代理访问敏感内容的安全措施。