A 股 / 港股 / 美股与板块自选面板,带分时迷你走势图,并向 agent 提供 stock_quote 工具。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:AhaCrazy/dsh-stock-quotes
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
中文 | English
一个 DeepSeek Harness 插件:在侧边栏数据面板里显示自选股实时行情,同时注册 stock_quote 工具,让 Agent 能在对话里直接回答"茅台现在多少钱"这类问题。
- 面板:A 股 / 港股 / 美股自选股一张表 —— 最新价、涨跌额、涨跌幅、今开 / 最高 / 最低、成交额;15 秒自动刷新;右键菜单、拖拽排序、多选批量操作。
- 工具:
stock_quote一次批量取回一只或多只行情(不带参数时用配置里的默认自选股)。 - 外观中性:侧边栏默认叫「数据」、图标是普通表格样式,显示名称可配置 —— 看起来像通用数据视图,而不是行情软件。
行情来自公开接口的延时/快照数据,仅供查看,不构成任何投资建议,不用于交易决策。
环境要求
- DeepSeek Harness(0.2.x,需要
plugin_manager工具) - 无需 API key,无需安装额外依赖;Host 半不 import 包外任何模块
安装
git clone https://github.com/AhaCrazy/dsh-stock-quotes.git
然后在 DSH 会话里按绝对路径安装这个 bundle:
plugin_manager action: install_bundle target: <path-to>/dsh-stock-quotes
客户端模块加载后侧边栏会出现图标;没出现就刷新一次页面。stock_quote 会在下一次请求的工具清单里出现。
卸载:
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 |
三点须知:
- 同花顺的板块代码(
88xxxx,例如881121)是同花顺私有编码,公开接口没有映射,加不进去 —— 把它换成名称或东财代码即可:881121就是「半导体」,输入半导体或BK1036。 - 两家的板块成分股与权重不同,点位和涨跌幅会有差异(同一时刻实测:东财半导体
+3.47%,同花顺+3.25%)。要跟同花顺完全一致是做不到的。 - 名称解析只在面板里做;
stock_quote工具请直接传BK1036。
搜索(按名称添加)
不确定代码也没关系——在输入框里打字就会弹出建议(名称 + 规范代码),点一下即可加入自选:
| 输入 | 建议 |
|---|---|
茅台 |
贵州茅台 sh600519 |
半导体 |
半导体 BK1036(另有 半导体材料 BK1325 等) |
BK13 |
半导体材料 BK1325 |
600519 |
直接添加(精确代码优先,不需要点选) |
排序规则:完全同名 → 名称前缀 → 名称包含 → 代码前缀。
建议数据来自仓库里的 data/securities.json(约 1.1 万条:A 股、指数、港股、行业/概念板块),面板从 jsDelivr / 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 |
插件管理器卡片的标题与描述 |
改代码前值得知道的两条设计约束:
- Host 半不能写裸
@deepseek-ai/...import。 工作区里的 bundle 是 link 进 profile 的,这些裸模块名解析不到,整行会failed to import。所以它直接用原生ToolDefinition。 - 浏览器半不 import 任何 Harness 客户端包。 控件全部自己写、只用主题 token(
--dsw-alias-*),这样跨 Harness 版本更稳。
测试
npm test
tests/quotes.test.mjs:代码解析、批量取数、格式化、取消;确定性的部分不联网,联网段不可达时自动跳过。tests/render.test.mjs:工具定义与它渲染的文本——两位小数、正负号、缺失字段显示为「—」、退化输入不抛错。tests/client.test.mjs:模拟模块加载器 / 语言服务 / slot 注册表 / React,断言注册了什么、组件渲染出什么,以及排序、移动和搜索打分的纯函数;另外逐条比对浏览器端与 Host 端的代码解析器,防止两份实现漂移。
Host 半的完整契约校验需要 DSH 安装目录里的包,因此没有放进本仓库。
tests/meta.test.mjs:发布一致性——版本号与代码里锁定的索引版本一致、CHANGELOG有对应条目、files覆盖必需产物、无运行时依赖、索引结构完整。
稳定性、数据来源与免责声明
- 行情来自东方财富对外的公开接口(
push2/push2his),非官方、未授权、无 SLA:接口可能限流、改字段或停止服务。插件对 HTTP 错误做了退避与降级,但不能保证一直可用。 - 搜索索引是仓库里生成的快照(
data/securities.json),通过 CDN 按版本标签固定获取;新股上市后需要重新运行node scripts/build-index.mjs并发布。 - 数据可能延迟、可能不准确。本插件仅供查看,不构成任何投资建议,不得用于交易决策。因使用本插件产生的任何损失由使用者自行承担。
- 插件不收集、不上报任何数据;自选股与设置只存在浏览器
localStorage。
许可证
MIT —— 见 LICENSE。
链接
同类插件
zhu1090093659/dsh-web#packages/dsh-task-board★ 9262
侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。
zhu1090093659/dsh-web#packages/dsh-web-all★ 9262
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。
MeteorNOX/DeepSeek-Balance-Whale-Widget★ 5677
右下角常驻的小鲸鱼挂件:余额、今日已用与每轮对话消耗(含峰谷价),余额预警与今日预算的泡泡内容都可编辑;泡泡点击序列模块化自定义,支持并列加权 A/B、随机台词与随机图片;内置 30+ 厂商模板(OpenAI / OpenRouter / Kimi / 硅基流动 / 方舟 / 智谱 / MiniMax 等),按模型查余额与订阅额度;另有任务结束音效、导入音频、自定义角色与资源管理。数据全在本机,无遥测。
ccch1mneyyy/dsh-TUI★ 5125
Claude Code 风格全屏终端 UI:像素鲸鱼顶栏、实时工作状态行、思考流式展开。
omdsh-dev/DSH-better-sidebar★ 4413
侧边栏完整工作台:内置文件渲染编辑、终端、Git 与子代理,支持三方插件注册新 Tab。
Devin-AXIS/deepseek-design#deepseek-idesign★ 1491
可视化设计工作室,支持网站、App 原型、海报、信息卡、报告和杂志的模板创建、元素编辑、选区级 AI 草稿衔接与导出。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。