3步打造专属AI编程助手:OpenCode插件实战完整指南
3步打造专属AI编程助手OpenCode插件实战完整指南【免费下载链接】opencodeThe open source coding agent.项目地址: https://gitcode.com/GitHub_Trending/openc/opencode想让AI改完代码后自动跑一遍测试套件OpenCode是开源的AI编程助手它的插件系统让你把自己的工具和逻辑挂进AI工作流的任意节点。本文按最短路径带你走一遍OpenCode插件开发从5分钟跑通第一个自定义工具到完整的自动测试场景。5分钟跑通第一个插件OpenCode会自动加载插件把.ts文件丢进项目的.opencode/plugins/目录即可全局生效则放~/.config/opencode/plugins/不用配置也不用构建。下面这个插件定义了一个名为hello的自定义工具存成文件就完事了// .opencode/plugins/hello.ts import { type Plugin, tool } from opencode-ai/plugin export const HelloPlugin: Plugin async () { return { tool: { hello: tool({ description: 返回问候语用于验证插件是否生效, args: { name: tool.schema.string().describe(名字), }, async execute(args) { return Hello ${args.name}! 插件已生效 }, }), }, } }重启 opencode在会话里说用 hello 工具问候我看到 Hello OpenCode! 插件已生效 就成了。如果插件发在 npm 上只需把包名写进opencode.json的plugin数组启动时会自动安装不用手动 install。它到底是怎么工作的插件就是一个函数接收上下文返回 Hooks 对象。export type Plugin (input: PluginInput) PromiseHooks启动时 OpenCode 按固定顺序加载插件全局配置、项目配置、全局插件目录、项目插件目录。所有钩子按加载顺序依次执行所以多个插件挂同一个事件时行为是确定、可预期的。上下文对象ctx带来一组现成能力client是 SDK 客户端可以查会话、写日志directory和worktree是项目路径$是 Bun 的 shell能直接跑命令。插件跑在 OpenCode 进程内部既能读状态也能改行为。钩子就是事件流上的拦截点chat.params在请求发往 LLM 前改参数tool.execute.before/after包住每次工具调用event接收session.idle、file.edited这类全局事件。tool()只是个包装函数——它拿 Zod schema 加一个 execute 函数把工具变成 AI 眼里和内置工具没有区别的自定义工具。一个完整场景走一遍hello 工具验证了链路现在解决真问题AI 改完代码立刻知道测试挂没挂。第一步注册新建.opencode/plugins/auto-test.ts。第二步挂钩子用tool.execute.after拦截文件编辑类工具顺手把测试跑掉。这个插件的核心就是一个钩子——文件编辑工具执行后跑一遍bun test把结果写进展示元数据// .opencode/plugins/auto-test.ts import { type Plugin } from opencode-ai/plugin export const AutoTestPlugin: Plugin async (ctx) { return { tool.execute.after: async (input, output) { if (input.tool ! edit input.tool ! write) return // 跳过只读工具 const result await ctx.$bun test --silent.nothrow() // nothrow 防止失败抛异常 output.title Tests ${result.exitCode 0 ? passed : failed} // TUI 直接可见 output.metadata.testPassed result.exitCode 0 }, } }第三步验证重启 opencode让 AI 改某个函数。 TUI 里 edit 工具调用下方的标题会变成 Tests passed 或 Tests failed不用切回终端。想拦截更危险的操作也一样简单在tool.execute.before里对.env路径直接throw new Error(...)before 钩子里抛异常就是合法的阻断手段。踩过的坑 提效技巧参数校验从严args里用 Zod 加.positive()、.enum()这类约束AI 传入脏数据时在入口就被拒掉而不是在运行时炸出莫名其妙的错。错误当文本处理execute里套 try/catch 并返回人能看懂的说明直接抛异常会让 AI 无法判断失败原因、只能盲目重试。⚠️别阻塞关键路径tool.execute.before在每次工具调用必经的路径上别在里面同步跑慢命令重逻辑放 after 钩子或event。资源要清理起了定时器或文件监听的插件实现dispose钩子释放长会话跑一天下来会漏。名字别撞车插件工具与内置工具同名时插件优先起名edit、read等于静默覆盖内置行为建议加业务前缀。继续往下挖官方插件文档 packages/web/src/content/docs/plugins.mdx全部钩子列表、事件类型表和 npm 插件安装方式写新钩子前先翻它。最小参考实现 packages/plugin/src/example.ts仓库里自带的十几行示例插件动手前值得过一遍。工具定义源码 packages/plugin/src/tool.ts看ToolContext里sessionID、abort、metadata()这些字段写复杂工具时会用到。把第二节的 hello.ts 拷进你项目的.opencode/plugins/目录重启一次你就有了第一个能跑的 OpenCode 插件。【免费下载链接】opencodeThe open source coding agent.项目地址: https://gitcode.com/GitHub_Trending/openc/opencode创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Coding Interview University 完整免费路线图:5分钟上手的软件工程师面试准备清单

Coding Interview University 完整免费路线图:5分钟上手的软件工程师面试准备清单

Coding Interview University 完整免费路线图:5分钟上手的软件工程师面试准备清单 【免费下载链接】coding-interview-university A complete computer science study plan to become a software engineer. 项目地址: https://gitcode.com/GitHub_Trending/co/cod…

2026/8/29 22:39:49 阅读更多 →
元递归自改进智能体:超越八类基准的自进化机制拆解

元递归自改进智能体:超越八类基准的自进化机制拆解

这次不聊某个具体开源项目的安装包,而是拆一个最近被反复提及的方向:元递归自改进智能体。标题里“超越八类基准”这句话,重点不在某一项分数高出多少,而在于背后那套“让 Agent 自己评估自己、自己改自己”的机制确实开始出效果了…

2026/8/29 22:38:49 阅读更多 →
开源大模型落地实战:从Kimi基座二次开发到推理部署全流程

开源大模型落地实战:从Kimi基座二次开发到推理部署全流程

开源大模型圈又热闹起来了,这次的主角是蚂蚁开源的一款新模型,而它被讨论得最多的一点,是“站在了 Kimi 的肩膀上”。对开发者来说,新闻热度是短暂的,真正有价值的是:当一个开源模型出现在 GitHub 仓库之后…

2026/8/29 22:38:49 阅读更多 →

最新新闻

STM32结合RFID图书管理系统:从硬件选型到云端联调全解析

STM32结合RFID图书管理系统:从硬件选型到云端联调全解析

简介:本资源是一套基于STM32平台的物联网图书管理系统毕业设计实战案例,面向高校电子、通信、自动化及物联网相关专业本科生,解决图书馆场景下图书借还、身份识别与数据管理等核心问题,适用于毕业设计选题、课程设计实践及嵌入式开…

2026/8/31 2:12:47 阅读更多 →
Python 批量图像处理实战:为活动返图打造肤色提亮与日系滤镜流水线

Python 批量图像处理实战:为活动返图打造肤色提亮与日系滤镜流水线

最近“异环日本线下活动”的一组返图在社交平台上的讨论度很高,尤其是菌烨小姐姐还原的“真红”,服装细节、妆面质感以及神态都相当到位。我们在欣赏这类高质量返图时,如果切换回开发视角,会发现线下活动返图其实是一个非常典型的…

2026/8/31 2:12:47 阅读更多 →
从虎扑评分看电竞社区数据产品:NIP vs WBG的赛后数据拆解

从虎扑评分看电竞社区数据产品:NIP vs WBG的赛后数据拆解

如果只看比分,你会觉得这只是一场普通的 BO3 常规赛:NIP 2-1 WBG,三局打满,赢家带走胜利,输家回去复盘。但如果你把视线移到赛场之外的虎扑评分区,会发现这场比赛的热度远远超出“2-1”这个数字本身。选手评…

2026/8/31 2:12:47 阅读更多 →
红外弱小目标检测与跟踪的Matlab实现:原理、代码与调参指南

红外弱小目标检测与跟踪的Matlab实现:原理、代码与调参指南

简介:本资源面向图像处理初学者与红外目标跟踪研究者,提供一套完整、可直接运行的弱小目标检测与跟踪MATLAB实现方案,聚焦于低信噪比红外图像中的目标识别与运动轨迹估计问题。压缩包共7个文件,含3个核心M函数(主程序m…

2026/8/31 2:12:47 阅读更多 →
C#调用GitHub API实现用户仓库批量下载与克隆

C#调用GitHub API实现用户仓库批量下载与克隆

如果你经常逛 GitHub,又用 C# 写工具,大概率有想过一个问题:能不能用程序把某个用户的所有公开项目一次性拉下来。我最近真写了这么一个小工具,用来备份、学习和分析开源作者的项目结构,整体效果还不错。这篇就把思路、…

2026/8/31 2:12:47 阅读更多 →
从比赛比分到用户评分:数据应用全流程开发实战

从比赛比分到用户评分:数据应用全流程开发实战

当看到 NIP 2-1 WBG 这个比分时,大多数观众只会记住胜负。但如果要把这个比分做成一个赛事应用页面,事情就没有这么简单:左边是 NIP,右边是 WBG,中间是 2:1 的比分,下方还要展示两队选手评分、比赛状态、赛…

2026/8/31 2:11:47 阅读更多 →

日新闻

MCU无DAC如何用定时器+DMA 2D输出高保真任意波形

MCU无DAC如何用定时器+DMA 2D输出高保真任意波形

接到一个仪表类项目,要在 LAT1189 上输出几种不同波形:正弦、三角、带可调死区的脉冲,频率和幅度都得能实时改。板子上没有 DAC,就一个定时器加几个 DMA 通道。我一开始觉得在定时器中断里改比较寄存器也能应付,后来把…

2026/8/31 0:00:05 阅读更多 →
Cortex-M3 Flash下载失败?从编程错误标志到供电瞬态排查

Cortex-M3 Flash下载失败?从编程错误标志到供电瞬态排查

前两周调试一块带着Cortex-M3内核的板子,IDE里下载固件时突然弹出一行刺眼的错误: error: flash download failed - cortex-m3 。这种报错在嵌入式开发里太常见了,常见到很多人第一反应就是换根数据线、重插一下调试器,但重启三…

2026/8/31 0:00:05 阅读更多 →
STM32 TouchGFX屏幕切换Transition优化:原理、配置与排障实战

STM32 TouchGFX屏幕切换Transition优化:原理、配置与排障实战

做STM32 GUI开发的朋友应该都有体会——界面搭得再漂亮,一旦屏幕切换卡成PPT,整个产品的档次瞬间就没了。早期我在LAT1212这个基于STM32的GUI工程上用TouchGFX做二次开发,最头疼的不是画界面,而是怎么让切换动画既流畅又自然。Tou…

2026/8/31 0:00:05 阅读更多 →

周新闻

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

2026/8/30 0:00:01 阅读更多 →
数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

2026/8/30 0:00:01 阅读更多 →
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

2026/8/30 0:00:01 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/30 21:10:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/30 18:07:21 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/30 21:10:44 阅读更多 →