前言¶
用 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与 CSSanimation实现;轨道由两份拷贝组成,位移到-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。