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 。

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

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

小夜