dsh-stock-ticker:在 DSH Web 界面顶部加一条滚动行情条

前言

用 DSH 的 Web 界面跑智能体时,界面里没有行情展示位。要看自选股只能另开一个行情页面,在对话和行情之间来回切。kfat77 维护的 dsh-stock-ticker 插件就是把行情条直接挂到 DSH 页面顶部:自选股、刷新频率、涨跌提醒阈值都能在界面上改,改完写入 profile 长期保存。

下面介绍这个插件的功能、安装方式和配置写法。

这是什么

dsh-stock-ticker 是一个 DSH 插件,由 kfat77 维护,分类属于联网工具,当前版本 0.2.0,许可为 MIT。它定位很窄:在 Web UI 顶部加一条交易所跑马灯样式的行情条,支持指数与 A 股、港股、美股混排,行情由 host 半边批量抓取后转发给浏览器半边。数据源是腾讯行情接口,浏览器不直连上游。

核心功能

  • 顶部整宽行情条,内容从右向左循环滚动;鼠标悬停暂停,移开继续。
  • 涨跌用颜色区分:上涨绿色、下跌红色、平盘灰色,同时带 ▲ / ▼ 标记。
  • 支持指数与 A 股、港股、美股混排,一次请求批量获取;默认自带上证指数、深证成指、纳斯达克。
  • 点击任意条目弹出详情卡,显示今开、最高、最低、昨收、行情时间;按 Esc 或点击别处关闭。
  • 涨跌幅超过阈值(默认 3%)的条目轻微闪烁提醒;阈值可在设置里改,填 0 表示关闭。
  • 行情条右侧的齿轮按钮打开设置面板,改完保存立即生效,并写入 profile 的 cordis.patch.yml,重启后保持。
  • 行情条预留自身高度,把下方三栏整体下移,不遮挡界面内容;Windows 桌面端的原生标题栏按钮始终可见。

安装与启用

README 给出的安装命令是从本地目录安装,属于开发场景:

dsh plugin install /path/to/dsh-stock-ticker

这一步把插件装进当前 DSH 环境,安装后行情条立即出现在页面顶部,不需要修改 document.body 或替换应用根节点。

也可以在 agent 里调用 plugin_manager install_bundle,target 传本地目录或 GitHub 仓库地址。插件清单由 package.json 驱动:dsh.bundle.patch 指向 patch 文件,dsh.client 声明浏览器半边入口,cordis.patch.yml 负责把插件行插进 profile。

股票代码写法

设置面板里的股票代码列支持下列写法:

写法 市场 示例
字母代码 美股 / 美股指数 AAPL、TSLA、usIXIC(纳斯达克)、usDJI(道琼斯)
数字代码 + 后缀 A 股 / A 股指数 600519.SH、000001.SZ、430047.BJ、000001.SH(上证指数)
数字或字母 + 后缀 港股 / 港股指数 00700.HK、HSI.HK(恒生指数)
原生前缀 任意 sh600519、sz000001、hk00700、usAAPL、hkHSI
纯数字 按规则推断 6 位数字:5/6/9 开头为沪市,4/8 开头为北交所,其余深市;4–5 位补足 5 位后为港股

无法识别的代码会被忽略,行情条右侧会给出提示。

配置

界面上的设置面板调用 configEditor 写入 profile 层,等价于在 cordis.patch.yml 里写:

- id: stock-ticker
  name: dsh-stock-ticker
  config:
    symbols:
      - sh000001
      - sz399001
      - usIXIC
      - AAPL
      - 600519.SH
      - 00700.HK
    refreshSeconds: 15
    flashPercent: 3

三个字段分别对应股票代码列表、刷新频率(秒)和涨跌提醒阈值(%)。保存后插件会校验并返回最新快照。

数据来源与路由

host 半边(lib/index.js)向 https://qt.gtimg.cn/q= 批量请求行情,GBK 解码后解析出名称、现价、涨跌额、涨跌幅、今开、高低、昨收与时间。浏览器只访问插件的同源路由,不直接连上游,因此不受 CORS 限制。同一批代码的结果会缓存半个刷新周期,上游失败时继续展示上一次的数据。

host 路由有两个:

  • GET /api/dsh-stock-ticker/quotes — 当前自选股的行情快照。
  • POST /api/dsh-stock-ticker/config — 校验并保存自选股、刷新频率与提醒阈值,返回最新快照。

两个路由都先经过 connection.requestRejection(),与其它 Web API 共享同一套来源校验。

实现要点

  • 浏览器半边注册到 shell.overlay(整框浮层)。组件挂载后沿 DOM 向上找到 [data-shell-overlay] 的父元素,读取它当前的 padding-top(Windows 桌面端等于原生标题栏高度,浏览器里为 0),把行情条定位在该高度之下,并把这个高度加上 32px 写回 padding-top,从而为行情条预留空间。
  • 跑马灯用 translate3d 与 CSS animation 实现;轨道由两份拷贝组成,位移到 -50% 时正好接上,形成无缝循环。自选股太少时会把这一遍循环重复若干份直到铺满视口,避免出现空白段。
  • 轮询用 setInterval,随 refreshSeconds 重建;页面重新可见时立即刷新一次。
  • 提醒与详情卡都尊重 prefers-reduced-motion:减少动态效果时不闪烁,跑马灯改为可横向滚动。
  • 所有定时器、监听器与注入的 <style> 都通过 ctx.effect 注册清理函数,组件卸载后不残留。

适用场景与注意

适合想在 DSH Web 界面常驻观察自选股、又不想切窗口的开发者和智能体使用者。设置面板的边界是:股票代码最多 40 个,刷新频率 5–300 秒(默认 15 秒),提醒阈值 0–20(默认 3)。

需要注意两点:插件以当前 dsh 进程权限运行,安装前应先检查源码和许可证(MIT);行情数据来自公开第三方接口,且仓库星标数为 0,使用前自行评估上游稳定性。

小结

dsh-stock-ticker 把一个很轻的需求做完整了:顶部跑马灯、多市场自选股、阈值提醒、详情卡和 profile 持久化。它不改变 DSH 本体结构,通过 patch 注入 profile,安装路径和配置字段都集中在 README 里。目录页在 https://www.skillhub.cn/plugins/kfat77/dsh-stock-ticker,源码在 https://github.com/kfat77/dsh-stock-ticker。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜