在 DSH Web 右上角添加 A 股自选股盯盘弹窗:实时行情、分时/K 线、买卖目标价提醒,并集成扇形 AI 入口一键生成研究与复盘对话。
$ dsh plugin --profile web add github:Awu12277/dsh-stock-watchRun the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial
在 DSH Web 界面的右上角提供可折叠、可拖动的 A 股自选股盯盘弹窗,实时展示自选股涨跌、目标价触发、分时与日/周/月 K 线,并把"一键投资研究""每日复盘/行情分析/涨停分析"等 AI 入口就地接入到 DSH 对话。
3↑0↓),展开后列出名称/代码、现价、涨跌幅、迷你分时折线与目标价触发标记(买入/卖出/等待)+ 按名称/代码检索全 A 股池(约 5549 只);分组配置持久化在浏览器 localStorage,首次启动从 ~/.stocking/settings.json 一次性迁移+/−/重置 缩放,MA 显隐可切换index.js + client.js 两个源文件)node:os、node:fs/promises、node:fs、node:url 内置模块与 Node 原生 fetch);Client 端通过 __ModuleLoader__.require("react") 复用宿主 React;图表层懒加载 CDN:lightweight-charts@4.2.3(unpkg / jsdelivr 双源)与 gsap@3.12.5,CDN 不可用时自动降级为自绘 SVG 蜡烛与折线ctx.inject(['webServer']) 注册 5 条 /dsh-stock-watch/* 路由(config / stocks / quotes / kline / minute),并在 apply 启动时通过 ensureUserSkills() 把随包 investment-research 与 frontend-design 两个技能复制到 ~/.agents/skills/(目标已存在则跳过),随后通过 ctx.get('systemPrompt') 注入两条 order=200 / 201 的条件式 system prompt section;Client half 通过 ctx.slots.inject("shell.overlay", ...) 在 DSH Web 右上角嵌入可拖动 React 弹窗,依赖宿主的 slots、connection、sessions 服务index.js(apply / name = 'dsh-stock-watch',inject = ['webServer']);Client 入口 client.js(inject = ['slots']);挂载声明 cordis.patch.yml(在 web profile 插入 1 行 Loader)+ package.json#dsh.bundle.patch + package.json#dsh.client.platform = 'web'在 DSH Web 工作流中写作或对话的 A 股投资者,希望在不离开聊天界面的前提下随时看到自选股涨跌与达到目标价的提示,并把临时冒出的"今天看好哪只、为什么""盘后复盘""涨停分析"等问题一键转交给 DSH 对话获得投研回答或盘后复盘。
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DeepSeek Harness (DSH) | 未声明 | package.json 未声明 engines 或 dshhub.compatibility.dsh;通过 dsh plugin --profile web add 安装,依赖 webServer / slots 两个宿主服务 |
| Node.js | 未声明 | package.json 未声明 engines;源码使用 Node 原生 fetch、AbortSignal.timeout(12000)、node:fs/promises、fileURLToPath,建议 Node ≥18(fetch 与 timeout 稳定版本) |
| 平台 | 跨平台 | 纯 JS + 内置 Node 模块,无原生依赖;Host 端在启动时联网腾讯财经 web.ifzq.gtimg.cn,Client 端可选访问 unpkg.com / cdn.jsdelivr.net |
| 原生模块 | 无 | 不引入 node-gyp 模块,全部依赖为 JS 或纯浏览器脚本 |
dsh plugin --profile web add github:Awu12277/dsh-stock-watch
本插件没有宿主端的 Schema 配置;自选股、买卖目标价、面板位置、面板尺寸与 MA 均线显隐均在浏览器 localStorage 中通过面板 UI 管理。Host 端提供两个可选环境变量:
| 配置 | 类型 | 说明 | 默认值 |
|---|---|---|---|
DSH_STOCK_WATCH_NO_SKILLS | 环境变量 | 设置为 1 后禁用首次启动时把随包技能复制到用户技能目录的逻辑 | 未设置(启用注入) |
DSH_STOCK_WATCH_SKILLS_DIR | 环境变量 | 自定义技能注入目标目录,覆盖默认的 ~/.agents/skills | ~/.agents/skills |
Q: 安装后右上角没有出现📈自选股药丸怎么办?
A: 确认安装命令带了 --profile web 并且安装后重启了 dsh web。package.json#dsh.client.platform 固定为 web,只有 web profile 会在启动时扫描这个 bundle;仅刷新浏览器不会重新装载宿主页与客户端模块。
Q: 行情数据从哪里来?和官方接口一样吗?
A: Host 端使用 Node 原生 fetch 直连腾讯财经公开接口 web.ifzq.gtimg.cn(minute/query 与 fqkline/get),与上游 CLI 项目 stocking 的 market.ts 同源。即使 DSH 部署未挂载 web fetch provider 或沙箱封锁了部分网络,本插件仍能取到行情。
Q: 自选股怎么添加?数据存在哪里?怎么彻底清除?
A: 在面板顶部按 + 进入添加视图,按名称或代码检索全 A 股池(约 5549 只),回车即加入当前分组。所有用户配置(分组、代码、买卖目标价、面板位置、面板尺寸、MA 显隐)都持久化在浏览器的 localStorage,key 分别为 stocking.config.v1 / stocking.pos.v1 / stocking.size.v1 / stocking.ma.v1。首次安装时若检测到 ~/.stocking/settings.json 会自动迁移,之后 localStorage 为唯一来源;浏览器控制台执行 localStorage.removeItem('stocking.config.v1') 后刷新即可恢复默认分组(上证指数、沪深 300、紫金矿业)。
Q: 右上角的"一键投资研究"和扇形菜单是怎么工作的?会泄露我的设置吗?
A: 它们都不会把提示词正文暴露在消息里。"投资研究"按钮发送的是简短消息 分析{公司名}(代码),扇形菜单发送的是"每日复盘 / 行情分析 / 涨停分析"三个关键词。完整提示词由 host 端通过 ctx.get('systemPrompt').section() 注入两条条件式 system prompt section,仅当用户消息匹配"分析某家上市公司"或对应关键词时按框架展开,避免污染日常对话。注意「每日复盘」只在 15:00 至次日 09:00 之间可点击,交易时段会被置灰并提示"还未收盘"。
Q: 目标价触发后怎么提醒?需要打开页面吗?
A: 详情页点 "买入目标" / "卖出目标" 进入数字输入(两位小数、留空清除、回车确认、Esc 取消),保存后回写 localStorage 并即时重算。当前价 ≥ 卖出价标记 卖出,≤ 买入价标记 买入,反之为 等待,在列表与详情以胶囊颜色显示。插件不会发送系统级推送通知,需要保持 DSH Web 页面打开。
Q: K 线、扇形动画需要联网吗?网不好会怎么样?
A: K 线默认从 unpkg.com 与 cdn.jsdelivr.net 加载 lightweight-charts@4.2.3,扇形菜单加载 gsap@3.12.5,两个 CDN 依次尝试。CDN 不可达时会自动降级为自绘 SVG(蜡烛与折线仍可见),但缩放交互动画、GSAP 扇形展开等细节可能不完整。
Q: 卸载之后还要清理什么?
A: 执行 dsh plugin --profile web remove dsh-stock-watch 后重启 dsh web,客户端弹窗与宿主路由会被一并移除。本插件首次启动时复制的 ~/.agents/skills/investment-research 与 ~/.agents/skills/frontend-design 因为是文件级复制,会按普通文件保留(如不再需要可手动 rm -rf 清理);用户已有的同名技能不会被覆盖。
Q: 哪些时段能看到实时行情?非交易时段的数据是昨天的吗?
A: 数据来自腾讯财经分钟接口。A 股交易时段(北京时间 09:30–11:30 / 13:00–15:00)提供分钟级折线;非交易时段返回的是收盘后的快照,列表每 10 秒刷新一次。分时视图的时间轴会按交易日时段标注,午间 11:30–13:00 留白。
入门 — 一条 dsh plugin --profile web add + 重启 dsh web,刷新页面即可看到右上角药丸,初次自选股配置都通过面板内 + 与分组 tab 完成,无需编辑配置文件。
dsh web:客户端 bundle 与 cordis 插件行均在启动时扫描,仅刷新浏览器不会重新装载(README.md:26)web.ifzq.gtimg.cn:连接失败时列表行显示"行情获取失败,请稍后重试",插件不缓存上次价格,刷新即重新请求(client.js:1660 / index.js:387)[date, open, close, high, low, volume] 为基准:插件对最后一根 K 线以"现价 vs 最近价"做自校正保险,若接口列序再次变动需要相应调整(index.js:329-342)unpkg.com / cdn.jsdelivr.net:不可达时自动降级为自绘 SVG,K 线缩放(+/−/重置)与 GSAP 扇形动画等细节可能不完整(client.js:225-300)localStorage:跨浏览器、跨设备或无痕模式不会同步自选股;多设备共用需自行导出/导入 stocking.config.v1(client.js:810-837)