前言¶
用 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。