dsh-stock-quotes

uinpmMIT

Watchlist panel for A-share, Hong Kong and US quotes plus Eastmoney boards, with intraday sparklines and an agent stock_quote tool.

下载量 / Downloads
397

Install

dsh plugin --profile web add dsh-stock-quotes

Sandbox test

This plugin has not been tested yet. Submit a test →

README

dsh-stock-quotes

中文 | [English](README.en.md)

一个 DeepSeek Harness 插件:在侧边栏数据面板里显示自选股实时行情,同时注册 stock_quote 工具,让 Agent 能在对话里直接回答"茅台现在多少钱"这类问题。

  • 面板:A 股 / 港股 / 美股自选股一张表 —— 最新价、涨跌额、涨跌幅、今开 / 最高 / 最低、成交额;15 秒自动刷新;右键菜单、拖拽排序、多选批量操作。
  • 工具:stock_quote 一次批量取回一只或多只行情(不带参数时用配置里的默认自选股)。
  • 外观中性:侧边栏默认叫「数据」、图标是普通表格样式,显示名称可配置 —— 看起来像通用数据视图,而不是行情软件。
行情来自公开接口的延时/快照数据,仅供查看,不构成任何投资建议,不用于交易决策。

环境要求

  • DeepSeek Harness(0.2.x,需要 plugin_manager 工具)
  • 无需 API key,无需安装额外依赖;Host 半不 import 包外任何模块

安装

插件已发布到 npm,在 DSH 会话里直接按包名安装就行:

plugin_manager  action: install_bundle  target: dsh-stock-quotes

要固定版本就把版本写进 spec(例如 dsh-stock-quotes@2.0.2)。Web 侧边栏的插件页也是同一套操作,在安装框里填包名即可 —— 底层是 plugin_manager 服务用 pnpm 从 registry 拉包,不需要提前 clone 仓库。

plugin_manager 的写操作要求 danger-full-access 权限或单次批准;安装后的 Host 代码在宿主进程里运行。

只想确认包内容、不用 DSH 安装:

npm pack dsh-stock-quotes --dry-run   # 看会装进 profile 的文件清单

客户端模块加载后侧边栏会出现图标;没出现就刷新一次页面。stock_quote 会在下一次请求的工具清单里出现。

从源码安装(改代码或离线时用):

git clone https://github.com/AhaCrazy/dsh-stock-quotes.git
plugin_manager  action: install_bundle  target: <path-to>/dsh-stock-quotes

卸载:

plugin_manager  action: remove_bundle  target: dsh-stock-quotes

面板操作

操作 · 怎么做

添加 · 顶部输入代码或板块名 → 回车 / 点「添加」

删除 · 在任意一行上右键 → 菜单里选「删除」(没有每行右侧的 ✕ 按钮)

排序 · 拖行首的 ⠿ 手柄上下拖拽,落点会显示品牌色指示线;也可以用右键菜单的「上移 / 下移 / 置顶 / 置底」

多选 · 勾选每行最左侧复选框;表头复选框是全选 / 清空

批量操作 · 选中 ≥1 项后表格上方出现操作条:删除所选 / 置顶 / 置底 / 取消选择

右键菜单其余项 · 复制代码(多选时按行拼接)、全选、清除选择

曲线 · 工具栏「曲线」按钮开关每行的分时走势

右键菜单是感知选择范围的:右键的那一行若已在多选里,删除 / 移动 / 复制会作用于整个选中集合,菜单标题会带数量;否则只作用于该行。

自选股顺序与成员保存在浏览器 localStorage(键 dsh-stock-quotes/watchlist)。表格始终按自选股顺序渲染、行情按代码映射进对应行,所以拖动排序不会让"代码 ↔ 报价"错位。

曲线图

工具栏的「曲线」按钮控制每行是否显示当天的分时走势(迷你折线),状态存在 localStorage(dsh-stock-quotes/prefs 的 chart 字段),默认开启。

  • 数据来自东财分时接口,A 股 / 港股 / 美股 / 板块都支持;美股显示最近一个交易时段
  • 横轴是整个交易时段,不是把已有数据拉伸铺满:A 股 / 北交所 / 板块 240 分钟(09:30–11:30、13:00–15:00),港股 330 分钟(09:30–12:00、13:00–16:00),美股 390 分钟(北京时间 21:30–04:00)。所以 11:30 看盘时折线只画到一半,右边空白正是还没交易的部分;收盘后才会铺满整条
  • 每 60 秒刷新一次(不跟 15 秒的报价刷新同步,避免请求风暴)
  • 颜色跟随当日涨跌:红涨绿跌,平盘用中性色,和数值列一致
  • 关掉后不发起任何分时请求,只保留数值
  • 走势还没取到时该格留空,行内列不会错位
  • 悬停小图即可读数:鼠标移到某行的迷你线上会出现十字线,同时该行的「最新价 / 涨跌额 / 涨跌幅」临时变成指针所指那一分钟的值,第二行代码处显示该时刻(如 sh600519 · 11:30),移开即恢复

大图(点击行展开)

迷你线只够看趋势。点任意一行,表格上方会展开这个标的的大图;再点该行或点右上角 × 收起。

  • 左右两侧 Y 轴刻度 + 网格线 + 昨收虚线
  • 时间轴按各自的交易时段:A 股 09:30 / 10:30 / 11:30·13:00 / 14:00 / 15:00;港股、美股同理会标注自己的时段
  • 悬停十字线:竖线 + 圆点定位到最近的一分钟,图下方一行读出「时间 · 价格 · 相对昨收 ±% · 均价 · 成交量」
  • 顶部显示名称、当前价、当日最高 / 最低
  • 1日 / 5日 切换:5 日模式按交易日分段、横轴标日期,不画均价线
  • 1 日模式额外画一条均价线(灰色虚线)

设置

全部在 设置 → 插件 → 「数据面板」 这一张卡片里,改完立即生效:

设置 · 说明

显示名称 · 侧边栏文案、面板标题、提示信息共用一个名称,默认「数据」。自动去首尾空白、忽略多余空格、限 24 字

刷新间隔 · 5 / 10 / 15 / 30 / 60 秒;连续失败时自动退避(最长 2 分钟),成功后恢复

涨跌配色 · 红涨绿跌(A 股习惯)或绿涨红跌(国际习惯),数值与曲线一起切换

显示的列 · 开盘 / 最高 / 最低 / 成交额可关掉;名称、最新价、涨跌额、涨跌幅、走势列常驻

异动提醒阈值 · 当日涨跌幅绝对值超过该百分比时,面板顶部提示;0 = 关闭

自选股导入 / 导出 · 文本框里的 JSON({"version":1,"symbols":[...]} 或纯字符串数组),可跨机器搬运

设置存在 localStorage(键 dsh-stock-quotes/prefs)。

排序:点「名称 / 最新价 / 涨跌额 / 涨跌幅 / 成交额」表头可排序(降序 → 升序 → 取消)。排序是只读视图,拖动排序前需先取消排序(会提示)。

键盘:Tab 聚焦到某行,Enter / 空格 展开大图,Esc 收起。

支持的代码写法

市场 · 写法 · 例子

上交所 · 6 位代码、sh 前缀、.SH/.SS 后缀 · 600519、sh600519、600519.SH、688981、900901

深交所 · 6 位代码、sz 前缀、.SZ 后缀 · 000001、sz000001、000001.SZ、300750

北交所 · 6 位代码、bj 前缀、.BJ 后缀 · 430047、830799、920001

港股 · 1–5 位数字、hk 前缀、.HK 后缀 · 00700、700、hk00700、00700.HK

美股 · 字母代码、us 前缀、.US/.O/.N 后缀 · AAPL、usAAPL、AAPL.US、BRK.B(自动在 NASDAQ / NYSE / AMEX 之间匹配)

原始 secid · 市场.代码 · 1.600519、116.00700

裸 6 位代码有歧义时:两个市场都会试,先命中的胜出。所以 000300(沪深300,只有沪市有)会自动落到 1.000300;而 000001 两个市场都有,默认按深市(平安银行)解析 —— 想要上证指数就写 sh000001 或 000001.SH。显式写了前缀/后缀就不再回退,写错市场会如实报「未找到」。

板块(行业 / 概念)

东财板块走同一个行情接口,面板里可以直接加:

写法 · 例子

东财板块码 · BK1036(半导体)、BK0891(国产芯片)

板块名称(仅面板) · 直接输入 半导体、白酒、存储芯片,按东财板块名精确匹配,否则唯一包含匹配

原始 secid · 90.BK1036

三点须知:

1. 同花顺的板块代码(88xxxx,例如 881121)是同花顺私有编码,公开接口没有映射,加不进去 —— 把它换成名称或东财代码即可:881121 就是「半导体」,输入 半导体 或 BK1036。

2. 两家的板块成分股与权重不同,点位和涨跌幅会有差异(同一时刻实测:东财半导体 +3.47%,同花顺 +3.25%)。要跟同花顺完全一致是做不到的。

3. 名称解析只在面板里做;stock_quote 工具请直接传 BK1036。

搜索(按名称添加)

不确定代码也没关系——在输入框里打字就会弹出建议(名称 + 规范代码),点一下即可加入自选:

输入 · 建议

茅台 · 贵州茅台 sh600519

半导体 · 半导体 BK1036(另有 半导体材料 BK1325 等)

BK13 · 半导体材料 BK1325

600519 · 直接添加(精确代码优先,不需要点选)

排序规则:完全同名 → 名称前缀 → 名称包含 → 代码前缀。

建议数据来自仓库里的 data/securities.json(约 1.1 万条:A 股、指数、港股、行业/概念板块),面板从 jsDelivr(npm 包版本优先,其次 git tag)/ raw.githubusercontent 拉取一次并缓存一天。索引由脚本生成:

node scripts/build-index.mjs   # 需要能访问 push2.eastmoney.com

新股上市后重跑一次并提交即可。索引拉不到(离线、被墙)时,代码和板块名的添加方式仍然可用。

覆盖范围

数据源是东方财富的公开行情接口,能加什么取决于它的覆盖:

  • ✅ A 股、北交所、港股、美股、指数、ETF / LOF、可转债、B 股、板块(BKxxxx)
  • ❌ 已退市 / 已摘牌的代码(例如 110043)、场外基金净值、期货、期权、外汇
  • ❌ 中文个股名称搜索:暂时不支持(公开搜索接口没有 CORS 头,浏览器端拿不到),请用代码;板块名称是例外,见上

如果某个代码你在同花顺能看到却加不进去,可以带完整后缀试一次(600519.SH);还不行就是数据源没有这只票。

配置

cordis.patch.yml 里的 config.defaultSymbols 是 stock_quote 不带参数时使用的默认自选股:

- insert:
    - id: stock-quotes
      name: 'dsh-stock-quotes'
      config:
        defaultSymbols:
          - sh000001
          - sh600519
          - sz300750
          - hk00700
          - usAAPL

注意:面板自己的自选股存在浏览器里,与这份配置相互独立 —— 配置是给 Agent 查的,面板是给自己看的。

实现说明

文件 · 作用

package.json · bundle 清单:dsh.bundle.patch 插入 Host 行,dsh.client 让 Web 端加载浏览器半

cordis.patch.yml · Loader 补丁:插入 stock-quotes 行并给出默认自选股

index.js · Host 半:以原生 ToolDefinition 注册 stock_quote(包外零依赖)

quotes.js · 纯数据层:代码解析、批量取数、格式化

client.js · 浏览器半:main 面板、plugins.bundle.config 设置卡、sidebar.panellist 图标

locale/{zh,en}.json · 插件管理器卡片的标题与描述

改代码前值得知

…(truncated)

Rendered from the README published on npm. Formatted only, not edited.

Versions

Published on npm::2,最后更新 2026-11-02

Links

GitHub · Homepage · npm

Same category