前言¶
在 DeepSeek Harness(DSH)裏做智能體或日常工作時,側邊欄、對話區和工具面板往往已經佔滿視線。若還想盯 A 股盤面——漲停家數、炸板率、連板高度、熱門題材——要麼反覆切到瀏覽器裏的行情頁,要麼自己寫腳本定時刷接口。前者打斷工作流,後者還要處理瀏覽器跨域、混合內容,以及桌面端 dsh-app:// 下相對地址打不開外鏈等問題。
dsh-limitup-widget(維護者 LusJourney,分類爲客戶端)把一張深色小卡片掛在 DSH 的 frame 級浮動層(shell.overlay)上:數據經 Host 同源前綴 /limitup-widget 反代到本機 Python 看板後端,卡片可拖動、收起、關閉後從側欄恢復。下面介紹它的組成、能力與安裝配置要點。
插件定位¶
本插件對應倉庫 LusJourney/dsh-limitup-widget,npm 包名 dsh-limitup-widget(當前資料版本 0.2.1,許可證 MIT)。安裝一個包即同時啓用兩半:
| 半 | 職責 |
|---|---|
Client(lib/client.js) |
瀏覽器端模塊,在 shell.overlay 註冊 limitup-widget,輪詢並渲染卡片 |
Host(lib/index.js) |
在 DSH webServer 上掛 /limitup-widget 路由,反代本地後端;可選探活與自動拉起 Python 進程 |
後端(倉庫 dashboard/,不隨 npm 包分發) |
Flask + akshare,默認 http://127.0.0.1:8000 |
插件本體不採集、不上傳用戶數據:瀏覽器只請求同源 /limitup-widget/api/*,Host 只訪問配置的 backendUrl 與本機 Python 進程。
環境要求(資料原文):DSH >=0.2.0-rc.2 <0.3.0(桌面或 Web profile),Node.js ≥ 20;後端需 Python ≥ 3.9(推薦 3.10+)及可訪問東方財富數據源的網絡(akshare 免費接口,無需 API key)。
核心功能¶
浮動卡片展示¶
- 狀態:盤中 / 午休 / 收盤等狀態點與文案,數據日
MM-DD;非當前交易日可顯示「回退」標籤。 - 三大數字:漲停、炸板、跌停家數;次級指標含炸板率、連板高度、昨日漲停均溢價。
- 熱門題材 Top5:題材名 × 漲停家數、最早首封時間;概念映射未完成時後端可按「所屬行業」兜底並標註「行業」。
- 自選股:名稱、代碼、最新價、漲跌幅;漲停顯示紅色「漲停」徽章。
- 頁腳:最後刷新時間、刷新、跳轉完整看板、收起。
交互與持久化¶
拖動位置寫入 localStorage 的 limitup.widget.pos;收起爲小膠囊(limitup.widget.collapsed)。關閉整卡後浮層無殘留,左側邊欄底部「漲停」可恢復;關閉狀態僅在當前頁面生命週期內有效,刷新或重啓 DSH 後卡片會重新出現。自選股代碼(逗號或空格分隔的 6 位代碼)保存在 limitup.watchlist,與看板頁面共用同一 key。
輪詢間隔由 Host 的 /limitup-widget/api/config 下發,默認交易時段 60s、其餘 300s;頁面隱藏時暫停,回到前臺立即補拉。頁腳「刷新」觸發 GET /api/refresh,後端強制刷新一次(資料註明可能耗時約 30s)。
Host 同源代理¶
瀏覽器只認 /limitup-widget 前綴,避免 CORS。常用路由包括:/limitup-widget/api/config、/limitup-widget/api/snapshot(12s 超時)、/limitup-widget/api/refresh(45s 超時)、/limitup-widget/api/health(6s 超時);根路徑 /limitup-widget/ 可 302 到完整看板。後端不可達時返回 502 並限頻重試。
可選 後端自動拉起:加載時探活 backendUrl/api/health;若失敗且 autostart 爲 true 且 script 非空,則用 pythonBin 執行 script 拉起後端(環境含 HOST=127.0.0.1、PORT 取自 backendUrl、TZ=Asia/Shanghai)。插件僅在自己拉起的進程上於卸載時終止;已在運行的後端不會被殺掉。
安裝與啓用¶
安裝插件¶
桌面版 profile 建議通過 設置 → 插件 搜索 dsh-limitup-widget 安裝;也可用 CLI(資料原文):
dsh plugin add dsh-limitup-widget
dsh plugin --profile web add dsh-limitup-widget
npm 不可用時,資料還提供:
dsh plugin --profile web add github:LusJourney/dsh-limitup-widget
DSH 0.2.1+ 可在 插件 → Discover → Index sources 添加
https://cdn.jsdelivr.net/npm/dsh-plugin-catalog/index.json 後搜索安裝。
安裝後重啓 DSH,右下角應出現「漲停直播」卡片;Host 日誌可見 [limitup-widget] host plugin loaded。
準備後端¶
後端源碼在 GitHub 倉庫的 dashboard/,需單獨準備。資料推薦先手動跑通:
cd dsh-limitup-widget/dashboard
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python app.py
默認監聽 http://127.0.0.1:8000。驗證:
curl -s http://127.0.0.1:8000/api/health
期望 {"ok":true,...}。
若希望 DSH 啓動時自動拉起後端,在 profile 的 cordis.patch.yml 中覆蓋同 id 配置(須寫全量 config 字段),將 pythonBin 指向 venv 內 Python 絕對路徑,script 指向 dashboard/app.py 絕對路徑;默認包內 script 爲空時只探活、不拉起。
典型配置¶
在 profile 的 cordis.patch.yml 追加(示例來自 README,路徑請改爲本機絕對路徑):
- id: limitup-widget
name: dsh-limitup-widget
config:
backendUrl: http://127.0.0.1:8000
autostart: true
pythonBin: /absolute/path/to/dashboard/.venv/bin/python
script: /absolute/path/to/dashboard/app.py
startupTimeoutMs: 45000
pollTradingMs: 60000
pollIdleMs: 300000
| 字段 | 默認 | 說明 |
|---|---|---|
backendUrl |
http://127.0.0.1:8000 |
後端根地址;自動拉起時 PORT 取自 URL 端口 |
autostart |
true |
探活失敗且 script 非空時是否拉起 |
pythonBin |
python3 |
拉起後端用的解釋器(建議 venv 絕對路徑) |
script |
'' |
app.py 絕對路徑;空則只探活 |
startupTimeoutMs |
45000 |
拉起後等待健康的超時(毫秒) |
pollTradingMs |
60000 |
交易時段客戶端輪詢間隔 |
pollIdleMs |
300000 |
非交易時段輪詢間隔 |
卡片內可輸入自選股代碼並保存;「完整看板」用絕對 http 地址在系統瀏覽器打開後端頁面(桌面端相對地址會被靜默拒絕,彈窗被攔時會複製地址並提示)。
適用場景與注意¶
適合在 DSH 桌面或 Web UI 中需要不離開工作區即可掃一眼漲停生態的開發者或盯盤用戶:家數、炸板率、題材與自選同屏,完整看板仍可在瀏覽器打開。
注意事項:
- 插件以當前 DSH 進程權限運行,安裝與啓用前宜閱讀倉庫源碼與 MIT 許可證,確認同源代理與可選子進程拉起行爲可接受。
npm pack產物不含dashboard/,後端需從 GitHub 獲取並自行維護依賴與網絡可達性。- 社區目錄 SkillHub 插件頁 與 GitHub 爲獨立索引,與 DeepSeek / 幻方無官方從屬關係;DSH 生態奉行「一切皆插件」,本件歸類爲客戶端(含 Web 端 Host 代理)。
常見故障:卡片不出現則確認 profile 已安裝並重啓;「後端未連接」則檢查 curl 健康檢查與 pythonBin/script 路徑;關閉後從側欄底部「漲停」恢復。
結尾¶
經過上面的步驟,你可以在 Harness 浮動層常駐 A 股漲停直播卡片,由 Host 同源轉發銜接本機 akshare 看板,並按需選手動或自動拉起後端。