mengmenghao/dsh-stock-quote:在 DSH 裏看 A 股、港股、美股行情

前言

DSH 的理念是「一切皆插件」,行情這種高頻、結構化、強時效的數據,是插件很適合做的一類事。已有做法大多是裝一個單獨的行情客戶端,或者讓 Agent 在會話裏憑記憶報數字——前者跟 DSH 的會話和頁面是割裂的,後者沒有穩定數據源,容易給出過時甚至錯誤的價格。

下面介紹 mengmenghao/dsh-stock-quote。它同時補了兩條路徑:一是在 DSH 裏提供股票行情面板和個股詳情,二是給 Agent 兩個工具,讓會話裏能直接查實時行情和 K 線。插件走公開接口,不需要 API key,裝完零依賴直接跑。

這是什麼

@liaomenghao/dsh-stock-quote,倉庫 mengmenghao/dsh-stock-quote,維護者 mengmenghao(package.json 裏 author 爲 liaomenghao)。分類爲「聯網工具」。解決的問題是:在 DSH 界面內統一查看自選股行情、瀏覽個股 K 線,並把行情能力作爲工具交給 Agent 調用,避免頁面和工具各說一套數據。

要求 DSH ≥ 0.2.0、Node.js ≥ 20。插件零運行時依賴。

核心功能

插件分三部分:

  1. 「股票行情」頁面:側邊欄入口 + 主區面板,維護自選列表(添加、刪除、手動/自動刷新),A 股、港股、美股同屏。
  2. 個股詳情:點列表裏的名稱進入,日 K 線(蠟燭圖 + 成交量 + MA5/MA20,60/120/240 日可切換),另有今日分時視圖。
  3. AI 分析:詳情頁寫下分析要求,用當前 profile 的默認模型生成結論。
  4. Agent 工具:stock_quote 與 stock_search(另有 stock_kline),會話裏直接問「茅臺現在多少」。

自選列表存在瀏覽器 localStorage(鍵 dsh-stock-quote.watchlist),默認 sh000001、600519、00700.HK、AAPL。頁面每 30 秒自動刷新一次,可關閉;右上角「刷新」立即取一次。表格展示名稱/代碼、現價、漲跌、漲跌幅、成交量、換手率、行情時間,漲紅跌綠。

個股詳情頁默認是今日分時:逐分鐘價格線、均價線、昨收虛線基線、成交量柱。日 K 線爲前復權日線,蠟燭圖、上下影線、MA5/MA20 折線、成交量柱、右側價格刻度、最新價虛線,週期可切 60 / 120 / 240 日。

AI 分析有「趨勢走向 / 支撐壓力 / 風險點」三個快捷填充,點「開始分析」後答案顯示在輸入框下方,不跳轉。同一只股票可以連續追問,每輪問答排在下方對話線程裏,最多帶最近 6 輪給模型,頁面上最多保留 20 輪,最多記住 30 只股票;記錄按股票存在 localStorage(鍵 dsh-stock-quote.analyses),退出詳情、切換股票、刷新頁面都還在。「清空對話」只清掉當前這隻股票的記錄。

安裝與啓用

npx @deepseek-ai/dsh plugin --profile <profile> add @liaomenghao/dsh-stock-quote

裝完重啓 Harness,側邊欄出現「股票行情」入口。package.json 顯示當前版本爲 1.5.2,許可證 MIT。安裝前建議先打開倉庫覈對源碼與許可證,插件以當前 dsh 進程權限運行。

典型用法

裝好後,在會話裏直接問行情即可。Agent 側有三個工具:

工具 參數 返回
stock_quote symbols:代碼數組,單次最多 20 個 現價、漲跌額、漲跌幅、昨收、開盤、最高、最低、成交量、成交額、換手率、市盈率、總市值,以及該筆行情的交易所時間戳
stock_kline symbol;days:20–250,默認 60 前復權日線(日期/開/高/低/收/量,由舊到新)+ 當前報價
stock_search keyword:名稱 / 代碼 / 拼音首字母;limit:1–20,默認 8 候選列表,每項帶 symbol,可直接傳給 stock_quote

支持的代碼寫法:600519、sh600519、600519.SH、430047(北交所)、00700、0700.HK、AAPL、BRK.B、usBRK.B。只給公司名時先用 stock_search。

免安裝方式(方法與 DeepSeek Harness 一致):打開社區目錄頁 https://www.skillhub.cn/plugins/mengmenghao/dsh-stock-quote ,按頁面指引安裝,或直接使用上面的命令。社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係。

數據來源與內部實現

  • 實時行情:騰訊 qt.gtimg.cn,GBK 編碼,單次請求可批量取多隻。
  • 日 K 線:東方財富 push2his.eastmoney.com,前復權日線;美股按 105/106/107 市場段探測後緩存。
  • 代碼搜索:東方財富 suggest 接口。

插件不寫緩存、不落盤(美股市場段除外,僅進程內緩存),每次調用都實時請求上游。頁面通過同源接口取數,與工具共用同一套解析,避免頁面和工具各說一套。路由包括 GET /stock-quote/quotes、/stock-quote/search、/stock-quote/kline、/stock-quote/intraday。「在會話中分析」不經過 HTTP,客戶端用 ctx.sessions.create 建會話、prompt 投遞首條消息,再 uiWorkspace.openSession 切過去。

主要文件:index.js(Host 半:兩個工具、四個面板路由、分析請求組裝)、quote.js(代碼歸一化、行情/K 線/搜索解析、格式化)、client.js(Client 半:側邊欄圖標、自選面板、詳情頁與 K 線圖)、cordis.patch.yml(bundle patch,插入 stock-quote 行)。

配置

cordis.patch.yml 裏該行的 config 支持:

鍵 默認 含義
timeoutMs 8000 單次上游行情/K 線請求超時,範圍 1000–20000 毫秒

驗收

npm test

跑的是 test/accept-analyze.mjs:用一個最小 React 實現(支持 state、effect、useCallback 記憶化和元素 key 重掛載)把 client.js 真正掛載起來,然後用樁數據驅動界面,逐條斷言「分析」按鈕的行爲,包括列表進詳情並恢復歷史、輸入爲空時禁用、點擊只發一次請求且 body 帶新問題和歷史、結果就地呈現、結果寫入 localStorage 且清空只刪當前股票、切股票不串記錄。npm test 通過 18 項。

它不覆蓋真實瀏覽器渲染、CSS 效果、皮膚/寵物等第三方浮層對點擊的遮擋,這些只能在實際界面裏看。

適用場景與注意

適合需要在 DSH 里長期盯自選股、或希望 Agent 能可靠回答行情的開發者。使用時需要注意:

  • 行情時間戳是交易所當地時間(A 股 Asia/Shanghai、港股 Asia/Hong_Kong、美股 America/New_York)。非交易時段返回的是最近一個交易時段的快照,判斷「是否實時」要看這個時間戳,而不是頁面上的「更新於」。
  • 分時圖在非交易日展示的是上一個交易日的完整走勢,左上角標註的日期會告訴你數據屬於哪一天。
  • A 股成交量的上游單位是「手」、成交額是「萬元」,插件已換算爲股和元;港股與美股上游本身就是股與當地貨幣。
  • 只有一個實時行情上游。上游不可達時,工具會把失敗原因放進結果的 unresolved,頁面會顯示錯誤條,都不會返回舊值或猜測值。
  • AI 分析消耗模型額度,按次調用;10 分鐘內同一問題的重複點擊會命中頁面內緩存。
  • 若界面頂部的皮膚裝飾層蓋住了頁面標題,那是所啓用皮膚(如 maid-atelier)在非會話頁的固定裝飾,宿主的「任務看板」同樣如此;頁頭已按該裝飾的高度留白。

結尾

這個插件的價值在於把行情數據接進了 DSH:面板負責看,工具負責讓 Agent 用,兩者共用同一套解析,數據口徑不至於打架。適合做自選股盯盤和帶行情的問答。目錄頁:https://www.skillhub.cn/plugins/mengmenghao/dsh-stock-quote ;源碼:https://github.com/mengmenghao/dsh-stock-quote 。

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

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

小夜