夜雨聆风学习资料网

ARTICLE · 1342961

OpenCode 插件开发教程:一段提示词做出 A股行情插件

OpenCode 插件开发教程:一段提示词做出 A股行情插件

想给 OpenCode 写插件,大多数教程的第一步是「先学 API」。这篇反过来:一行代码不写,只写一段提示词,让 OpenCode 自己做出一个 A 股实时行情插件——桌面端右侧多一个「A股行情」页签,终端侧边栏多一块行情列表,红涨绿跌,交易时段每 3 秒刷新。

插件全景之前那篇《OpenCode 插件详解》盘过,这里不重复。这篇只立一个统一的基础:把想要的说清楚,看它干活,对着结果检查。行得通的原因很简单——V2 的 80 多个内部功能本身就是用插件 API 写的,这套 API 是系统的「母语」,agent 写起来没有额外门槛。

提示词,以及它为什么这么写

提示词就是这篇唯一的「代码」。一个插件是一个包,Server、TUI、GUI、RPC 四个部分各管一摊,这个插件三摊都用上了。下面这段话直接抄:

# A股实时行情插件 · 复刻提示词帮我在 OpenCode 里做一个 A 股实时行情插件:1. 插件是一个 npm 包,分 server、TUI、桌面 GUI 三部分;用本地目录加载(配置里声明项目目录,不要指向单个文件);2. 桌面端:在会话右侧折叠栏(Panel, region: "side")挂一个「A股行情」页签,红涨绿跌显示最新价和涨跌幅,不要放 footer;用侧栏 "+" 菜单和 /quotes 斜杠命令开关;3. TUI 端:在侧边栏(sidebar.content 挂载点)显示带区块标题的行情列表,样式和自带的 Context / MCP 区块一致;4. 数据用腾讯免费行情接口 qt.gtimg.cn(免 key,GBK 编码),只在 server 端请求,客户端通过 RPC 取数;交易时段 3 秒刷新、收盘 60 秒、失败退避,网络失败只提示不崩溃,卸载时清理定时器和插槽;5. 自选股列表和刷新间隔写在插件 options 里;写完简要说明每个文件的职责,方便我验收。写之前先读这三篇文档:- https://opencode.ai/docs/build/plugins/- https://opencode.ai/docs/build/plugins/cli/- https://opencode.ai/docs/build/plugins/gui/

写一段好用的提示词,秘密不在文笔,在信息给全了。拆开看几处关键:

  • 放哪儿、显示在哪儿、数据从哪来、多久刷一次、要什么命令——这五个问题答清楚,这段话就合格了。上面的提示词还多给了两样更值钱的东西:文档和分工。
  • 让它先读官方文档。末尾附了三篇文档链接,agent 动手前先对齐最新 API,比凭记忆写靠谱得多——这是整段话里最省返工的一条。
  • 位置点名到具体。桌面端写到「会话右侧折叠栏、region: side」,终端写到「sidebar.content 挂载点」。不知道点位名也没关系,说「桌面端右侧栏」「终端侧边栏」,它也能找对地方。
  • 数据只在 server 端请求。腾讯接口是 GBK 编码,界面端直接拉容易踩编码的坑;收口到 server 一处请求、解析、缓存,TUI 和 GUI 通过 RPC 取数,逻辑只写一遍。
  • 刷新节奏写进要求。交易时段 3 秒、收盘 60 秒、失败退避——不写这条,agent 很可能给你无脑高频轮询。
  • 能改的配置进 options。自选股列表、刷新间隔都从代码里拎出来,谁拿去用改配置就行,不用动代码。
  • 最后一条让它解释每个文件的职责,是给你检查用的。

效果实拍

回车之后,agent 会先去读那三篇文档,再规划文件、逐个部分实现、保存。目录自动热重载,不用重启。打开桌面端和终端,插件已经长在界面里了。

桌面端:会话右侧折叠栏多出一个「A股行情」页签,红涨绿跌,交易时段每 3 秒跳一次;侧栏「+」菜单和 /quotes 命令都能开关它。

终端里也不缺:侧边栏多出带区块标题的行情列表,样式和自带的 Context、MCP 区块一致,看代码的时候顺手就能瞟一眼盘面。

效果不满意?接着用大白话说就行——加两只自选股、把刷新间隔改成 10 秒,都是一句话的事。

插件架构:它是怎么跑起来的

看懂这张图,你就看懂了这个插件:

核心是一条分工原则:界面和数据的活儿彻底分开。

  • server 部分是全插件唯一接触腾讯接口的地方:按交易时段控制刷新节奏(交易时段 3 秒、收盘 60 秒、失败退避),把 GBK 编码解析成干净的数据,缓存一份最新行情;
  • TUI 和 GUI 部分只管显示:终端渲染侧边栏列表,桌面端渲染右侧页签,需要数据时通过 RPC 向 server 取。三个界面连的本来就是同一个后台服务,数据只有一份,界面随便开;
  • options 把自选股和刷新间隔从代码里拎出来,做成插件配置。

为什么这么分?接口请求收口在一处,编码解析只写一遍;限频、退避这些「别把人家接口惹毛」的规矩有统一的地方做;将来想换数据源,只改 server 部分,两个界面一行不用动。

注意事项

不看代码,不等于不用对结果负责。这个插件会在你每次打开界面时跑,几个点值得让它自己检查一遍:

检查一下这个插件:定时器和插槽在插件卸载/重载时有没有正确清理?行情接口拉不到数据会不会影响界面本身?面板和页签的名字有没有加插件前缀,避免和其他插件冲突?把风险点列给我,有问题直接修。

这几个问题对应插件最常见的三类翻车:定时器泄漏(每次重载叠一个,越跑越卡)、网络异常没兜底(接口一挂把界面搞挂)、命名撞车(面板里渲染出别人插件的内容)。agent 改完,重开一次确认就行。

另外三件事记一下:

  • 版本:1.x 的旧插件在 V2 里跑不起来;不过你是让 agent 现写的,生成的天然就是 V2 代码,不用操心迁移。
  • 行情源:qt.gtimg.cn 是免 key 的公开接口,不属于官方对外承诺的服务,偶发挂掉别意外——提示词里已经要求了「失败只提示不崩溃」。
  • 数据:行情涉及交易决策,别只信一个来源。

写在最后

这个插件本身不大,真正的产出是那套固定打法:把想要的东西整理成一段带编号的要求,附上官方文档,看 agent 干活,对着截图检查,不满意就继续用大白话让它改。盯盘只是第一个样本——往后想挂日历、盯 CI 状态、接排队提醒,都是在同一段话里改几个词,让 agent 再跑一趟。

基础立住了,剩下的都是往上面叠东西:一段话说明白,几分钟确认,让你手里的工具长在你干活的地方。

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料