当前位置: 首页 > article >正文

OpenCode 的工具体系:给大模型装上操控代码库的“手”与“眼

要在代码库里真正帮上忙光有聪明的脑子还不够大语言模型LLM还需要能够执行具体操作的“工具”。OpenCode 把这些工具视为模型与项目环境之间的纽带——读取文件、修改代码、运行命令、查文档甚至主动上网搜索靠的全是它们。这套工具系统既包含一批开箱即用的内置工具也保留了充分的扩展空间。默认情况下所有工具都是直接可用的调用前不需要向使用者确认。对高度信任的自动化流程来说这很方便但如果希望在某些操作上多加一道保险也完全可以做到。权限管理该放就放该收就收所有工具的权限都通过项目根目录的opencode.json配置文件集中管理。permission字段可以对每一个工具单独设置策略值只有三种allow—— 直接允许无需询问deny—— 直接拒绝压根不调用ask—— 每次调用前弹出确认比如想让模型可以运行终端命令但每次都要点头同意就这么写{$schema:https://opencode.ai/config.json,permission:{bash:ask}}批量控制也不在话下。用通配符就能一次性给某个 MCP 服务器带来的所有工具加上审批例如mymcp_*: ask会让所有以mymcp_开头的工具都变成“需要确认才执行”。内置工具全家福OpenCode 内置了十几个工具几乎覆盖了开发过程中方方面面的操作。下面逐个看看它们的本事和对应的权限键。bash —— 执行终端命令让模型在项目环境中运行 Shell 指令像npm install、git status等。权限键bash。edit —— 精确修改文件通过精确的字符串替换来编辑文件内容这是 LLM 改动代码最主要的方式比整文件重写更安全。权限键edit。write —— 创建或覆盖文件用来生成新文件或者用新内容直接覆盖已有文件。值得留意的是这个工具的权限并不叫write而是被统一归到edit下面。换句话说控制了edit权限就同时管住了edit、write以及接下来要提到的apply_patch这三种文件修改行为。read —— 读取文件内容把文件内容返回给模型。对大文件可以指定行范围避免上下文一下子被塞得太满。权限键read。grep —— 基于正则的内容搜索在代码库里高速检索文本背后驱动的是 ripgrep。完全支持正则表达式还能按文件类型过滤。权限键grep。glob —— 按文件名模式查找用**/*.js或src/**/*.ts这样的 glob 模式匹配文件返回的路径默认按修改时间排序。找出某一类文件时特别有用。权限键glob。lsp实验性 —— 代码智能查询这个工具能让 LLM 直接跟配置好的语言服务器LSP对话获取诸如定义跳转、引用查找、悬停类型信息、文档符号、调用层级等 IDE 才有的能力。因为它还处于实验阶段必须通过环境变量OPENCODE_EXPERIMENTAL_LSP_TOOLtrue或直接打开全局实验开关OPENCODE_EXPERIMENTALtrue才会激活。支持的操作很多goToDefinition、findReferences、hover、documentSymbol、workspaceSymbol、goToImplementation、prepareCallHierarchy、incomingCalls和outgoingCalls。权限键lsp。apply_patch —— 应用补丁可以直接在代码库中打 patch。补丁内容通过patchText参数传递其中内嵌的标记行比如*** Add File: src/new-file.ts已经包含了文件路径这些路径都是相对于项目根目录的。权限设置上它也归edit管辖。编写tool.execute.before或tool.execute.after这类钩子时需要注意用input.tool apply_patch来判断並且数据在output.args.patchText里而不是output.args.filePath。skill —— 加载技能文件让模型主动读取项目中的SKILL.md把里面写好的指导内容纳入对话适合存放项目约定和领域知识。权限键skill。todowrite —— 任务列表管理在复杂、多步骤的任务中帮助 LLM 创建和维护待办事项清单让执行过程更有条理。默认情况下该工具对子代理subagent是关闭的有需要可以手动开启。权限键todowrite。webfetch —— 获取网页内容允许模型直接抓取指定 URL 的页面很适合查阅线上文档或资源。权限键webfetch。websearch —— 网页搜索利用 Exa AI 进行网络搜索弥补训练数据的时间断层。这个工具只在连接 OpenCode 官方服务端或者手动设了环境变量OPENCODE_ENABLE_EXAtrue或1时才可见。好处是不需要额外申请 API 密钥直连 Exa AI 托管的 MCP 服务免认证。权限键websearch。一个小提示需要“发现信息”时用websearch拿到目标网址后想“提取内容”时用webfetch两者配合效果最好。question —— 向使用者提问执行过程中摸不准的时候模型可以通过这个工具主动发问搜集偏好、澄清需求、让使用者做选择。每个提问都带有标题、正文和一组选项也支持多问题一起呈现使用者可以在提交前导航切换并修改回答。权限键question。不止内置自定义工具和 MCP 集成如果内置工具无法满足需求还有两条宽敞的扩展路。一是自定义工具。开发者可以在配置文件中定义自己的函数LLM 能像调用内置工具一样调用它们执行任意的自定义逻辑。二是MCP 服务器。通过 Model Context Protocol 接入外部服务像数据库操作、第三方 API 等把更多外部能力直接交到模型手上。内部机制搜索那些看不见的文件最后再挖一挖底层细节。grep和glob都依赖 ripgrep而 ripgrep 默认会尊重.gitignore里的忽略规则。也就是说一般被 git 排除在外的目录比如node_modules在搜索和文件匹配时会被自动跳过。如果确实有需要在这些被忽略的路径里查找可以在项目根目录创建一个.ignore文件用感叹号显式放行!node_modules/ !dist/ !build/这样一来哪怕node_modules写进了.gitignoreOpenCode 的搜索工具依然会进去翻找。整个工具体系从细粒度的权限控制到覆盖日常开发的丰富内置能力再到灵活的自定义和第三方接入给大模型在真实项目中动手做事搭起了一套安全又强大的基础。理解了它也就基本掌握了驾驭 OpenCode 的关键。

相关文章:

OpenCode 的工具体系:给大模型装上操控代码库的“手”与“眼

要在代码库里真正帮上忙,光有聪明的脑子还不够,大语言模型(LLM)还需要能够执行具体操作的“工具”。OpenCode 把这些工具视为模型与项目环境之间的纽带——读取文件、修改代码、运行命令、查文档,甚至主动上网搜索&…...

ARM TRCCNTCTLR寄存器详解与调试技巧

1. ARM Trace Counter控制寄存器TRCCNTCTLR深度解析在嵌入式系统调试和性能分析领域,硬件计数器是不可或缺的关键工具。作为ARM架构调试系统的重要组成部分,Trace Counter Control Register(TRCCNTCTLR)系列寄存器为开发者提供了精…...

JSCJ-ELEC长电长晶原厂一级代理分销经销

JSCJ-ELEC长晶长电原厂一级代理分销经销 品牌 元件类别 型号 描述 包装 数量 CJ 二极管 RB160M-30 SOD-123 3000 45,000...

C#循环入门指南:从0到1掌握循环逻辑

一、for循环:已知循环次数,首选它for循环是最常用、最规范的循环,适合已知循环次数的场景(比如打印10遍文字、计算1到100的和)。它的结构很固定,就像一个“固定流程的重复机器”,一步都不会乱。…...

【大模型服务治理实战指南】:奇点智能大会首发的7大避坑法则与3套可落地架构模板

更多请点击: https://intelliparadigm.com 第一章:大模型服务治理:奇点智能大会 在2024年奇点智能大会上,大模型服务治理成为核心议题。随着LLM推理服务规模化部署,企业面临模型版本混乱、流量调度失衡、资源隔离缺失…...

专业指南:如何用Legacy-iOS-Kit一站式管理老旧苹果设备

专业指南:如何用Legacy-iOS-Kit一站式管理老旧苹果设备 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit …...

SMU5.4-5.10补题

牛客Round142 A-E题vj A,B,C,D,F...

QMCDecode:解锁QQ音乐加密文件,三步实现音乐格式自由转换

QMCDecode:解锁QQ音乐加密文件,三步实现音乐格式自由转换 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录&am…...

英雄联盟智能辅助工具Seraphine:三步快速上手的终极指南

英雄联盟智能辅助工具Seraphine:三步快速上手的终极指南 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 你是否厌倦了在英雄联盟排位赛中手忙脚乱地查询对手战绩?是否希望有一个智能助…...

Spring MVC 的核心知识点梳理

MVC 是什么 MVC 不是 Spring 发明的,而是一种设计模式,目的是“解耦”。 M(Model,模型):数据 业务逻辑。比如 Teacher 类,TeacherService。V(View,视图)&…...

IP第一次作业

...

HCIA前三章综合实验报告

实验要求按照图示配置IP地址完成路由器之间的协议配置构建需求的环境,配置MGRE,GRE测试全网通实验配置(1)配置IP地址[R1-GigabitEthernet0/0/0]ip address 192.168.1.2 24[R1-Serial4/0/0]ip address 15.1.1.1 24[R2-GigabitEther…...

如何让Windows任务栏变透明:TranslucentTB终极美化指南

如何让Windows任务栏变透明:TranslucentTB终极美化指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 想让你的Windows桌面焕…...

微信网页版终极解决方案:三步实现浏览器端微信完整使用指南

微信网页版终极解决方案:三步实现浏览器端微信完整使用指南 【免费下载链接】wechat-need-web 让微信网页版可用 / Allow the use of WeChat via webpage access 项目地址: https://gitcode.com/gh_mirrors/we/wechat-need-web 还在为繁琐的微信安装流程而烦…...

Android虚拟定位终极指南:无需Root的应用级位置伪装解决方案

Android虚拟定位终极指南:无需Root的应用级位置伪装解决方案 【免费下载链接】FakeLocation Xposed module to mock locations per app. 项目地址: https://gitcode.com/gh_mirrors/fak/FakeLocation 你是否遇到过这样的困扰:想在游戏中签到获取限…...

GetQzonehistory:三步轻松备份QQ空间历史说说,永久保存青春记忆

GetQzonehistory:三步轻松备份QQ空间历史说说,永久保存青春记忆 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否担心QQ空间里的青春记忆会随着时间流逝而消…...

SpringBoot项目里用Sharding-JDBC做分库分表,这5个配置项最容易踩坑

SpringBoot整合Sharding-JDBC分库分表:五大高频配置陷阱与实战解决方案 当数据库单表数据量突破千万级大关时,分库分表几乎是每个Java开发者必须面对的课题。作为Apache ShardingSphere的核心模块,Sharding-JDBC以其轻量级、低侵入的特性成为…...

FGA自动化助手:告别FGO重复刷本,每天节省3小时游戏时间

FGA自动化助手:告别FGO重复刷本,每天节省3小时游戏时间 【免费下载链接】FGA Auto-battle app for F/GO Android 项目地址: https://gitcode.com/gh_mirrors/fg/FGA 你是否厌倦了在《命运/冠位指定》(FGO)中重复点击刷素材…...

Hotkey Detective:Windows热键冲突终极解决方案与实战指南

Hotkey Detective:Windows热键冲突终极解决方案与实战指南 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是…...

企业级AI低代码平台kweaver-dip:架构解析与工作流实战

1. 项目概述:一个面向企业级AI应用开发的低代码平台 最近在和一些做企业数字化转型的朋友聊天,大家普遍提到一个痛点:AI能力很强,但想把它真正用起来,门槛实在太高了。不是每个团队都有能力养一支算法工程师队伍&#…...

从蛋白质分类到社交网络:Graph Pooling在实际项目里到底怎么用?

从蛋白质分类到社交网络:Graph Pooling实战选型指南 在生物信息实验室里,研究员小李正盯着屏幕上错综复杂的蛋白质相互作用网络发愁——如何将这个包含数千个原子的三维结构转化为机器学习模型可处理的表征?与此同时,某社交平台算…...

基于WebAssembly的高效SQLite数据库在线解析方案

基于WebAssembly的高效SQLite数据库在线解析方案 【免费下载链接】sqlite-viewer View SQLite file online 项目地址: https://gitcode.com/gh_mirrors/sq/sqlite-viewer SQLite Viewer是一款采用纯前端技术的SQLite数据库在线查看工具,通过WebAssembly技术实…...

GOCI数据爬虫失效了?别慌!手把手教你用Python搞定新版韩国官网批量下载(附完整代码)

GOCI数据爬虫失效了?别慌!手把手教你用Python搞定新版韩国官网批量下载 最近不少同行反馈,之前运行的GOCI数据爬虫脚本突然失效了。作为长期处理海洋遥感数据的老手,我第一时间测试了韩国官网的新版页面结构,发现他们确…...

【冷链配送】遗传算法求解低碳冷链物流车辆路径问题(目标函数固定成本 运输成本 制冷成本 惩罚成本 总碳排放成本)【含Matlab源码 15428期】

💥💥💥💥💥💥💥💥💞💞💞💞💞💞💞💞💞Matlab领域博客之家💞&…...

智算解构像素 实景生长孪生:摒弃人工建模冗余流程,开辟视频孪生快速规模化落地路径

智算解构像素 实景生长孪生副标题:摒弃人工建模冗余流程,开辟视频孪生快速规模化落地路径前言传统数字孪生落地始终深陷人工建模周期长、成本高、流程冗余、更新滞后的固化瓶颈。依赖外业测绘、人工描模、素材拼接、后期修模,环节繁琐、交付周…...

环境配置与基础教程:保姆级教程:VS Code DevContainer 一键构建可复现的 YOLO 训练开发容器

摘要 你是否还在为YOLO训练环境的搭建而焦头烂额?CUDA版本不匹配、Python依赖冲突、团队协作时“在我机器上能跑”的经典难题——这些问题浪费了无数开发者的宝贵时间。本文将带你通过VS Code DevContainer技术,一键构建完全可复现的YOLO训练开发容器,彻底告别环境配置噩梦…...

LaTeX2Word-Equation:三步实现网页公式到Word的精准转换

LaTeX2Word-Equation:三步实现网页公式到Word的精准转换 【免费下载链接】LaTeX2Word-Equation Copy LaTeX Equations as Word Equations, a Chrome Extension 项目地址: https://gitcode.com/gh_mirrors/la/LaTeX2Word-Equation 在学术写作和文档编辑过程中…...

2026英文论文降AI实战SOP:保留原格式,4招把AIGC率从97%压到8%

大家最近都在为英文降aigc率发愁吧,作为研三党,我太懂这种痛了,之前我自己写英文初稿,写完直接拿去查重,结果turnitin检测ai率飙到了89%,当时看着报告整个人都懵了。 怎么给英文降ai?对于非母语…...

Pandas数据合并:concat vs append,选哪个?用真实‘幸福指数’数据集测给你看

Pandas数据合并实战:concat与append深度性能对比 在数据分析工作中,数据合并是最基础也最频繁的操作之一。Pandas提供了多种合并数据的方法,其中concat和append是最常用的两种纵向合并方式。但很多开发者并不清楚它们在实际项目中的性能差异和…...

一本通题解——从递推公式到状态转移:破解“位数问题”中的数字计数

1. 从具体问题到通用模型:理解数字计数的本质 遇到"统计N位数中偶数个3的个数"这类问题时,很多初学者会陷入暴力枚举的思维陷阱。我刚开始刷题时也犯过这个错误——试图手动列出所有两位数来验证样例。这种方法的局限性在N1000时就会暴露无遗…...