工具命令
📋 概述
工具命令用于管理 OpenCode 的工具系统,包括查看可用工具、工具详情、工具状态等。
OpenCode 提供了 40+ 种内置工具,涵盖文件操作、代码搜索、网络请求等多个领域。
📋 查看工具列表
列出所有可用的工具
输出信息:
- 工具名称
- 工具描述
- 工具分类
- 工具状态
工具分类:
文件操作工具
read: 读取文件内容write: 写入文件edit: 编辑文件glob: 文件搜索grep: 内容搜索
开发工具
bash: 执行 shell 命令npm: NPM 包管理git: Git 版本控制
网络工具
webfetch: 获取网页内容websearch: 网络搜索http: HTTP 请求
数据工具
json: JSON 处理yaml: YAML 处理xml: XML 处理
AI 工具
task: 子任务代理skill: 技能调用
🔍 查看工具详情
查看特定工具的详细信息
输出内容:
- 工具功能描述
- 使用参数
- 参数类型说明
- 返回值说明
- 使用示例
- 注意事项
查看示例:
opencode tool info read
opencode tool info bash
opencode tool info webfetch
⚙️ 工具配置
启用/禁用工具
控制特定工具的可用性
# 启用工具
opencode config set tools.read.enabled true
# 禁用工具
opencode config set tools.websearch.enabled false
使用场景:
- 安全限制:禁用某些危险工具
- 环境适配:禁用不适用于当前环境的工具
- 性能优化:减少不必要的工具加载
工具参数配置
配置工具的默认参数
# 配置 Bash 工具超时时间
opencode config set tools.bash.timeout 30000
# 配置 Read 工具默认读取行数
opencode config set tools.read.default_lines 100
# 配置 Webfetch 工具超时时间
opencode config set tools.webfetch.timeout 10000
🛠️ 常用工具详解
Read 工具
读取文件内容
功能特点:
- 支持部分读取(指定行数)
- 支持大文件流式读取
- 自动检测文件编码
使用场景:
- 查看代码文件
- 检查配置文件
- 读取日志文件
Write 工具
写入文件内容
功能特点:
- 自动创建目录
- 支持追加模式
- 文件存在确认
使用场景:
- 创建新文件
- 生成代码
- 写入配置
Edit 工具
编辑文件内容
功能特点:
- 精确替换
- 多处替换
- 差异预览
使用场景:
- 修改代码
- 更新配置
- 批量替换
Bash 工具
执行 shell 命令
功能特点:
- 跨平台支持
- 实时输出
- 错误捕获
使用场景:
- 运行构建命令
- 执行测试
- 系统管理
Glob 工具
文件路径模式匹配
功能特点:
- 支持 glob 模式
- 递归搜索
- 快速匹配
使用场景:
- 查找特定文件
- 批量文件处理
- 项目结构分析
Grep 工具
文件内容搜索
功能特点:
- 正则表达式支持
- 多文件搜索
- 高性能匹配
使用场景:
- 查找代码片段
- 搜索特定文本
- 代码审查
Webfetch 工具
获取网页内容
功能特点:
- 支持 Markdown 转换
- 自动超时
- 错误处理
使用场景:
- 获取文档
- 读取网页
- API 调用
Task 工具
创建子任务代理
功能特点:
- 独立会话
- 结果返回
- 并行执行
使用场景:
- 并行处理任务
- 拆分复杂任务
- 专项代理
🔧 工具使用技巧
组合使用工具
将多个工具组合使用完成复杂任务
示例流程:
- 使用 Glob 查找文件
- 使用 Grep 搜索内容
- 使用 Read 读取匹配文件
- 使用 Edit 修改内容
工具权限管理
为不同场景配置不同的工具权限
权限策略:
- 开发环境:启用所有工具
- 生产环境:限制危险工具
- 审查模式:禁用写操作
📊 工具使用统计
查看工具使用情况
统计信息:
- 工具调用次数
- 成功/失败率
- 平均执行时间
- 常用工具排行
🚀 自定义工具
创建自定义工具扩展 OpenCode 功能
开发步骤:
- 定义工具接口
- 实现工具逻辑
- 注册工具
- 测试工具
支持语言:
- TypeScript
- JavaScript
📝 常见问题
Q: 如何知道 AI 会使用哪个工具?
A: AI 会根据你的描述和任务需求自动选择合适的工具,你可以在对话中指定使用特定工具。
Q: 工具执行失败怎么办?
A: 查看错误信息,检查工具配置和权限,可以使用 tool info 查看工具详情。
Q: 可以限制某些工具的使用吗?
A: 可以,通过配置禁用特定工具,或者设置权限规则。