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。

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

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

小夜