🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

雪球行情面板 wanderer-yk/dsh-xueqiu

DeepSeek Harnessv1.25.0
wanderer-yk12 天前有提交已提供中文文档扫描:未发现敏感能力需联网

雪球 mini 行情面板 — DeepSeek Harness 免登录…

37.3/100
综合分
8
GitHub 星标
1,057
npm 周下载
—/5
用户评分

数据截至 2026/10/25 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-xueqiu
npm 源 · dsh-xueqiu 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · other
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/11/01·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/03·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 12 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-xueqiu @ 1.25.0
✓Node 引擎要求 >=18 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/1 16:39:30

安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

发起外部网络请求
查看扫描证据(共 14 处,展示前 12 条)
  • 发起网络请求
    src/client/index.js:265
    res = await fetch('/xq-rpc', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ action: action, args: args || {
  • 发起网络请求
    src/client/index.js:274
    fetch('/xq-rpc', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ action: action, args: args || {} }) }),
  • 发起网络请求
    src/client/index.js:420
    function fetch() {
  • 发起网络请求
    src/client/index.js:432
    fetch()
  • 发起网络请求
    src/client/index.js:435
    if (!hidden() && st.subs.size && now() - st.at > 5000) fetch()
  • 发起网络请求
    src/client/index.js:442
    if (!st.at || now() - st.at > 20000) fetch()
  • 发起网络请求
    dynamic/client.js:243
    res = await fetch('/xq-rpc', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ action: action, args: args || {
  • 发起网络请求
    dynamic/client.js:252
    fetch('/xq-rpc', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ action: action, args: args || {} }) }),
  • 发起网络请求
    dynamic/client.js:398
    function fetch() {
  • 发起网络请求
    dynamic/client.js:410
    fetch()
  • 发起网络请求
    dynamic/client.js:413
    if (!hidden() && st.subs.size && now() - st.at > 5000) fetch()
  • 发起网络请求
    dynamic/client.js:420
    if (!st.at || now() - st.at > 20000) fetch()
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

⚠ 该插件运行需访问外部网络 / 远程 API,部署在国内无外网环境时可能无法正常使用。

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

界面预览

6 张 · 点击查看大图

功能亮点

  • 免登录查看行情
  • A股港美股K线
  • 热榜与快讯
展开完整介绍(80 字)↓

雪球 mini 行情面板 — DeepSeek Harness 免登录 A股/港美股实时行情、K线、分时、热榜、7x24快讯。可拖拽悬浮面板,交易时段智能刷新。

v1.25.02026-10-23
· 匿名链路冷启动加固(当日实测事故驱动) 部分网络 IP 被雪球边缘节点(TencentEdgeOne)拦截后,种子 URL 全候选 HTTP 5xx 且不发 set-cookie——活进程靠内存 cookie 存活、冷启动即死板。三层加固: · 匿名 cookie 落盘复用:播种成功后持久化到 $DSH_HOME/dsh-xueqiu/.xueqiu-anon.json,进程重启/新会话免播种直接出数;失效自动重播种自愈并覆盖 · 播种指纹硬化:种子请求补浏览器导航头 + --compressed,单种子超时 12s→8s(不再撞穿 30s 看门狗) · seed_blocked 快速失败:播种被拦 + 上游 400016 时不再空转 3 轮,直接给出可操作指引(面板右上登录粘贴 Cookie 解锁);debug RPC 新增 50 条环形事件流 · 架构与测试 · 传输接缝替代文本 codegen:client 传输/样式注入改运行时判定(typeof host / typeof styles),gen-static.py 撤销全部文本替换;接缝守卫防同名全局函数误入动态分支 · 测试 455→517 断言(11 套件):新增 client-pure(61:纯逻辑 + makeIndexPoll/makeUiStore 工厂注入)、cache(16:时钟注入直测 TTL 过期/FIFO/24h 清扫)、client-bundle(13:生成物伪浏览器求值 + 接缝三环境路由) · CI 门禁适配 dsh 0.2.x(token 单次消费/合并式资源服务) · smoke:token 双路径就绪探测、cookie-jar 取页面/资源、boot 清单 manifest url 为权威 bundle 路径、数据关卡分级 SMOKE_LIVE=strict|warn(数据中心 IP 恒被上游拦截,真实数据验证回归发版人本地) · e2e:E2E_TOKEN 传递接线补齐、rpc 改页内同源 fetch(借浏览器 cookie)、agent-browser 锁定 0.2.x 验证过的版本 + 全调用 60s(-k) 超时、boot 改 env 文件产物 + bash -x trace + 300s 硬超时、setsid→nohup · 新增每日 seed-probe 观测 job(播种链路纵向取证);CI 真连雪球 live 步骤移至每日定时 · 其它 · watchlist.pull 消除双倍上游请求;xqIso(null) 不再渲染 1970-01-01;fmtFullDay/pad2 重复合并;契约测试 UA 单一真源;test:offline 聚合脚本 + engines 字段;FAQ 状态文件路径修正 · 全量验证:11 离线套件 517 断言 + tag CI 三关全绿(含真实 Chromium 浏览器 e2e)+ dsh 0.2.1 本地全流程彩排
v1.22.132026-08-26
· 修复 · A股成交量显示虚高 100 倍 + 港/美单位错 雪球 volume 字段全市场均为股(实证 amount/volume ≈ price,quote/kline/minute 三接口、A/港/美/ETF/指数一致),而前端一律按"手"格式化:茅台 145 万股显示成 "145.05万手"(实为 1.45 万手)。现按市场感知: · A股(SH/SZ/BJ 前缀,含 ETF/指数/北交所)÷100 换算成手 · 港/美维持股(万股/亿股) · 自选"死条目"凭空消失 批量行情会整只丢弃无效/退市代码——添加 SH999999 提示成功,但列表里永远看不到,无任何反馈。现在补占位行(现价/涨跌全 --、名称回退显示代码、仍可删除/查详情),价格闪烁逻辑对 null 现价免疫。 · kline 垃圾周期静默空数据 上游对未知 period(如模型手滑传 1h)返回 200 + 0 根,无任何错误。host 侧加白名单兜底为 day。 · CI 午休/午后时段必红(v1.22.11 修复的延伸) live 分时点数下限按"9:30 至今分钟数"线性外推,但 A 股午休(11:30-13:00)分时停在 ~121 点、午后从 13:00 重新累计——11:44 触发的 CI 实际 121 点 vs 下限 132 必红。改为两段交易时段感知(早盘线性 / 午休恒 118 / 午后 121+线性封顶 238 / 盘外 200),全天 1440 分钟边界模拟通过。 · 其他 工具描述补充 volume 单位为股(A股 1手=100股),防模型侧误读换算。 · 测试 新增 qa/vol-units.mjs 26 例(从 client 源码提取 fmtVol 独立求值 + host 周期白名单),并入 check:fast(现 92 例离线秒级)。全套:edge 254 / unit 39 / fence 18 / regress 21 / persist 16 / state-paths 11 / vol-units 26 / live 51。 注意:host 与 client 改动均需重启 dsh web 后生效。
v1.22.122026-08-26
· 修复 1. 状态文件跟启动目录漂移:自选/登录/界面状态原先落在 dsh web 启动目录——换目录启动就换一套状态。现在优先写 $DSH_HOME/dsh-xueqiu/(自动建目录);沙箱拒绝工作区外写入时透明回退旧行为;存量数据在首次保存时无缝迁移。新增 qa/state-paths.mjs(11 例)覆盖稳定/迁移/回退/首启四种模式。 2. K线提示文案方向写反(v1.22.0 起):"左拖加载更早"实为右拖(klinecharts 内容跟手)。client 6 处 + README 3 处已正。 3. ::1 裸 IPv6 回环白名单死代码:端口剥离正则误剥 :1,已修,fence xfail 转正。 · 新增 · K线/分时拖拽光标反馈:悬停小手、按住抓手、松手复位。 注意:host 侧改动需重启 dsh web 生效;状态迁移发生在重启后首次写入。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
dsh-xueqiu · 雪球 mini 行情面板 DeepSeek Harness 上的雪球行情面板:免登录查看 A股/港股/美股实时行情、K线、分时、热榜、搜索、7×24 快讯与热议用户。面板嵌入输入框上方,不遮挡对话;常驻行情区域显示四大指数与自选股涨跌;交易时段智能刷新。 功能 · 截图 · 安装 · 使用 · 稳定性 · 质量与测试 · FAQ · 更新日志 🆚 与同类行情插件 | 能力 | dsh-xueqiu | 股票皮肤类插件 | | 面板形态 | 嵌入输入框上方,不遮挡对话 | 全局换肤/状态栏 | | K线/分时 | KLineChart 引擎蜡烛图/分时面积图+均线+十字光标,7 档周期 | 部分有 | | 热榜/快讯/KOL | 全有 | 多数无 | | 数据源 | 雪球(社区数据:帖子/热议用户独有) | 腾讯/Yahoo 等 | | 请求防护 | 闸门+看门狗+缓存+自愈+隐藏暂停 | 一般仅缓存 | | 常驻行情区域 | 四大指数+12 自选两列平铺,⤡ 调宽 | 多为纯状态栏 | | 主题 | 跟随 DSH 明暗 | 需整体换肤 | ✨ 功能 | 功能 | 说明 | | 📊 实时行情 | 大盘指数(上证/深证/创业板/科创50)+ 自选股列表,涨红跌绿,表头点击排序 |
展开完整文档(README 剩余 1 节)
dsh-xueqiu · 雪球 mini 行情面板

DeepSeek Harness 上的雪球行情面板:免登录查看 A股/港股/美股实时行情、K线、分时、热榜、搜索、7×24 快讯与热议用户。面板嵌入输入框上方,不遮挡对话;常驻行情区域显示四大指数与自选股涨跌;交易时段智能刷新。

功能 · 截图 · 安装 · 使用 · 稳定性 · 质量与测试 · FAQ · 更新日志

🆚 与同类行情插件

| 能力 | dsh-xueqiu | 股票皮肤类插件 |
| 面板形态 | 嵌入输入框上方,不遮挡对话 | 全局换肤/状态栏 |
| K线/分时 | KLineChart 引擎蜡烛图/分时面积图+均线+十字光标,7 档周期 | 部分有 |
| 热榜/快讯/KOL | 全有 | 多数无 |
| 数据源 | 雪球(社区数据:帖子/热议用户独有) | 腾讯/Yahoo 等 |
| 请求防护 | 闸门+看门狗+缓存+自愈+隐藏暂停 | 一般仅缓存 |
| 常驻行情区域 | 四大指数+12 自选两列平铺,⤡ 调宽 | 多为纯状态栏 |
| 主题 | 跟随 DSH 明暗 | 需整体换肤 |

✨ 功能

| 功能 | 说明 |
| 📊 实时行情 | 大盘指数(上证/深证/创业板/科创50)+ 自选股列表,涨红跌绿,表头点击排序 |
| 🕯️ K线图 | 基于 KLineChart v10 引擎(canvas 渲染,内置主题适配):蜡烛图 + 独立成交量窗格 + MA 均线 + 十字光标 legend,5分/15分/30分/60分/日K/周K/月K 7 档切换;滚轮缩放 + 拖拽平移,右拖触底自动加载更早历史(500 根/次,已实测连续加载至 3400+ 根) |
| ⏱️ 分时图 | 面积价格线(涨跌色)+ 均价线 + 昨收基准虚线,十字光标 tooltip 查任意分钟 价/均价/涨跌 |
| 🔥 热榜 | 雪球热门榜,A股/美股/港股/全球 切换 |
| 🔍 搜索 | 搜股票(一键加自选/看详情)、搜帖子 |
| 📰 快讯 | 7×24 实时快讯,重要新闻高亮 |
| 👥 热议用户 | 个股热门 KOL(粉丝数/认证标识) |
| 💼 自选股 | 本地持久化,增删随点随改;可选登录后直接使用雪球云端自选股 |
| 👤 可选登录 | 粘贴浏览器 Cookie 即可登录(借鉴 xueqiu-cli 手动模式):登录后自动拉取云端自选股,加/删自选尽力同步到云端;Cookie 仅存本机 ~/.dsh 工作区文件,不上传任何第三方 |
| 🧲 嵌入式面板 | 完整面板停靠在输入框上方(官方 conversation.input.dock 槽位),随页面布局流动,不遮挡对话记录 |
| 🏷️ 行情区域 | 常驻悬浮区域:头部一行 logo/盘中状态,四大指数两列(上证/深证/创业/科创50)+ 自选前 12 只两列平铺;点击开合面板,拖动调整位置(记忆),右下角 ⤡ 手柄调宽度 120–480px(双击复位 320),宽度/位置持久化 |
| 📏 面板高度可调 | 拖动面板底边调整高度(160px–85% 视口,双击复位),高度持久化记忆 |
| ⌨️ Esc 收起 | Esc 先关个股详情,再收起面板;点行情区域或底部指数条重新展开 |
| 🛡️ 请求防护 | 并发 2 + 100ms 最小间隔对齐网页端行为;30s 看门狗强制释放悬挂请求防管线冻结;Cookie 失效/风控自动重播种重试;限频指数退避;页面隐藏自动暂停全部轮询(回前台立即恢复) |
| 🗂️ 渐进详情 | 个股详情报价+K线先上屏,分时/财务/KOL 到达后增量合并,不用等齐 |
| ⏱️ 智能刷新 | 盘中 20s 刷新行情,收盘自动放慢,降低被风控概率 |
| 🕐 交易时段 | 面板头常驻显示 A 股/港股/美股 盘中·午休·盘前·休市(本地时区推算,不含节假日),行情区域显示精确 A 股时段 |
| 🌗 主题自适应 | 跟随 DSH 明暗主题 |
| 🤖 Agent 工具 | 对话内直接问行情:xueqiu_quote(实时行情)、xueqiu_kline(K线)、xueqiu_search(搜股票)、xueqiu_hot(热榜)、xueqiu_news(7×24 快讯)、xueqiu_kol(个股热议大V)——模型直接调用,无需翻网页 |
| 🃏 工具调用卡片 | xueqiu_quote 渲染为红涨绿跌行情表、xueqiu_kline 为迷你蜡烛图、xueqiu_hot 为热榜排名列表、xueqiu_news 为快讯时间线(重要快讯高亮),对话流内直接看结果 |

所有数据来自雪球公开接口(访问首页获取匿名 cookie + 浏览器 UA/Referer),无需登录。

📸 截图

嵌入式主面板:停靠在输入框上方,指数卡 + 自选股行情 + 四个功能页签:主面板

个股详情:16 项行情数据 + K 线蜡烛图(成交量柱 / MA5-10-20 均线 / 十字光标)+ 财务指标 + 热议用户:

个股详情

迷你行情区域:四大指数 + 自选 12 只两列平铺,⤡ 手柄调宽度,点击开合面板,可拖动:

迷你行情区域

智能体工具调用卡片(对话内直接问行情,结果渲染为专属卡片而非 JSON):

| xueqiu_quote 行情表 | xueqiu_kline 蜡烛图 |
| quote | kline |

| xueqiu_hot 热榜 | xueqiu_news 快讯时间线 |
| hot | news |

📦 安装

方式一:标准 bundle 插件(推荐)

npm 包
dsh plugin --profile web add dsh-xueqiu

或 GitHub 源(git 安装会直接从源码构建)
dsh plugin --profile web add github:wanderer-yk/dsh-xueqiu

或本地目录
dsh plugin --profile web add ./dsh-xueqiu

添加后重启一次 dsh web(插件行发现按启动缓存),之后刷新页面即可看到面板。

方式二:动态插件(已实测)

本仓库 dynamic/ 目录提供已实测可用的动态 Cordis 插件源码(host.js + client.js)。在任意 DSH 会话中让智能体加载即可:

请读取本仓库 dynamic/host.js 与 dynamic/client.js 两个文件,用 cordis_define(kind: new)定义插件: code.host 填入 host.js 的内容,code.client 填入 client.js 的内容,然后 cordis_run 启动它。

🎛️ 使用

- 面板停靠在输入框上方:与对话同列流动,不遮挡任何消息;收起 — 或 Esc 收起。
- 右下角行情区域常驻显示四大指数 + 自选前 12 只(两列平铺);点击开合面板,拖动调整位置(记忆位置),⤡ 手柄横向调宽(120–480px,双击复位)。
- 输入框下方的指数条点击也可展开面板。
- 点击自选股、指数卡或热榜行 → 个股详情:16 项行情数据 + K 线/分时切换(悬停图表看十字光标详情)+ 财务指标(ROE/毛利率/净利同比等)+ 热议用户。
- 面板高度:拖动面板底边的手柄上下调整(160px ~ 85% 视口高度),双击手柄复位;高度会被记忆。
- 登录雪球(可选):点面板右上「👤 登录」,按提示从浏览器复制 Cookie 整行粘贴即可。登录后自选股切换为你的雪球云端自选股(云端为准,10 分钟自动同步);「同步云端自选」可随时手动拉取;加/删自选双端同步(portfolio/stock/add.json / cancel.json)。Cookie 只保存在本机,退出登录即清除。
- 刷新频率:盘中行情 20s、内容 60s;收盘后自动降为 60s / 3min。

🔧 稳定性设计

数据层内置多层防护,长时间挂机也不会卡死:

- 请求闸门:并发上限 2、请求间最小间隔 100ms,模拟网页端节奏,降低风控概率。
- 30s 看门狗:单个请求悬挂超 30s 即强制释放调度槽并报错,不会冻结后续所有请求。
- TTL 缓存 + in-flight 去重:相同 URL 短时间窗内直接命中缓存,并发重复请求共享同一 Promise。
- 匿名 Cookie 落盘复用:播种成功的匿名 token 持久化到 $DSH_HOME/dsh-xueqiu/,进程重启/新会话免播种直接复用(2026-10 实测部分网络 IP 被雪球边缘节点拦截、播种拿不到 token——活进程靠内存 cookie 存活而冷启动即死的教训);文件 cookie 失效时自动重播种自愈。
- Cookie 自愈:匿名 cookie 失效(错误码 400016)或被风控返回空响应时,自动重新访问雪球播种新 cookie 再重试(种子请求带浏览器导航头收窄指纹差异)。
- seed_blocked 快速失败:播种链被边缘拦截且上游明确拒绝(400016)时不再空转重试,直接报出可操作指引(粘贴浏览器 Cookie 登录解锁),debug RPC 的环形事件流(最近 50 条播种/重试/落盘事件)可一键看现场。
- 限频退避:遇到"请求频繁"按 2s→4s 指数退避后重试。
- 渐进渲染:详情页报价 + K 线先行上屏,分时/财务/KOL 异步到达后增量合并。

🧪 质量与测试

平台要求:macOS / Linux / Windows。macOS/Linux 走 POSIX shell curl;Windows 走 DSH 的 PowerShell 层显式调用 curl.exe(Win10+ 自带),引号语义天然兼容,已在 GitHub Actions windows-latest 上真连雪球全量验证(含匿名 Cookie 播种链路)。
三套互补的自动化测试,每次发版前全部通过(最近一次实测 2026-08-20,macOS + dsh web 3080 端口):

| 套件 | 覆盖 | 实测结果 |
| scripts/static-smoke.sh | 静态安装 7 道门禁(tarball 解包 → cordis 组合 → bundle 注册 → RPC 起活) | ✅ 7/7 |
| scripts/feature-matrix.py | 20 个 RPC 动作 × 正常/边界/非法/降级 × 未登录/已登录/Cookie过期 三环境 | ✅ 54–56 项断言全过 / 每环境 |
| scripts/browser-interact.sh | 真实鼠标交互:徽章拖动/⤡调宽/双击复位/面板开合/四个页签数据/越界恢复钳制 | ✅ 全过 |

热缓存性能实测(数据已在 TTL 窗口内,即用户连续操作时的体验):

kline 日K 120 根 1–12 ms quote 3 只行情批量 1 ms quoteDetail 个股详情 1 ms search 搜索"茅台" 2 ms finance 财务指标 2 ms

首次冷请求(需访问雪球取数)典型耗时 100–700ms,全部经请求闸门(并发 2)排队。复现方式:装好插件后 python3 scripts/feature-matrix.py --base http://127.0.0.1:3080 --mode logged。

📁 目录结构

dsh-xueqiu/
├── src/
│ ├── index.js # Host 插件(curl 数据层 + connection RPC) │ └── client/index.js # Client 插件(嵌入式面板 + 常驻行情区域 UI) ├── dynamic/ │ ├── host.js # 动态插件版 Host(已实测) │ └── client.js # 动态插件版 Client(已实测) ├── package.json # bundle 声明(dsh.bundle / dsh.client) └── cordis.patch.yml # bundle 层插入

❓ FAQ

Q: 安装后面板不出现? 按安装说明重启一次 dsh web(插件行按启动缓存发现),再硬刷新页面(Ctrl/Cmd+Shift+R)。仍无面板时看右下角有无行情区域——区域在则点它展开。

Q: 行情数据突然全空/报错? 雪球匿名 cookie 偶发被风控(错误码 400016 或空响应)。插件会自动重播种 cookie 并重试;播种成功的 cookie 会落盘,重启后免播种复用。若报 [seed_blocked] 匿名 Cookie 获取失败(雪球边缘风控拦截或网络不可达),说明当前出口 IP 被雪球边缘节点拦截(不是插件故障)——等 1–2 分钟再试,或在面板右上「登录」粘贴浏览器 Cookie 直接解锁全部数据。debug RPC 的 events 字段(最近 50 条播种/重试事件)可供排障。

Q: K线周期里分时下为什么没有周期按钮? 分时模式只展示当日分钟线,K线模式才有 7 档周期,属设计行为。

Q: 交易时段提示节假日准吗? 不准。时段按每周一至周五的固定钟点本地推算,不含法定节假日调休,仅供参考。

Q: 自选股和面板设置存在哪? 宿主本地稳定目录 $DSH_HOME/dsh-xueqiu/(默认 ~/.dsh/dsh-xueqiu/)下的 .xueqiu-watchlist.json / .xueqiu-ui-state.json / .xueqiu-login.json(登录)与 .xueqiu-anon.json(匿名 cookie 缓存,1.25.0 起),各带 .bak 损坏兜底;沙箱拒绝时透明回退工作区目录。与浏览器 localStorage 无关,换浏览器不丢,也不随 dsh web 启动目录漂移(v1.22.12 起的稳定目录行为)。

Q: 会不会影响 DSH 本体? 插件 UI 全部挂在官方槽位(conversation.input.dock / shell.overlay / conversation.composer.dock),卸载即完全消失,不改 DSH 源码。

⚠️ 免责声明

- 本项目非雪球官方产品,与雪球网/雪球公司无关;"雪球"为雪球公司商标,此处仅作数据来源描述。
- 数据来自雪球公开 Web 接口,仅供学习与研究,不构成任何投资建议;请勿高频请求,遵守目标网站条款。
- 接口可能随时变更导致功能失效,欢迎提 Issue / PR。

📋 更新日志

- 1.25.0(2026-10-23)
- 修复:匿名链路对冷启动的脆弱性(当日实测事故)——部分网络 IP 上两个种子 URL 均被雪球边缘节点(TencentEdgeOne)拦截(HTTP 5xx 不发 set-cookie),活进程靠内存 cookie 存活、重启即死板。三层加固:① 播种成功的匿名 cookie 落盘 $DSH_HOME/dsh-xueqiu/.xueqiu-anon.json,冷启动先读文件免播种(失效自动重播种自愈并覆盖);② 种子请求补浏览器导航头(Accept/Accept-Language/sec-fetch 系)+ --compressed 收窄指纹差异,单种子超时 12s→8s(最坏 2×10s+12s 不再撞穿 30s 看门狗);③ 播种失败 + 上游 400016 时快速失败为 [seed_blocked],文案直接引导"面板右上登录粘贴 Cookie",不再空转 3 轮上游请求循环报错。
- 新增:qa/probe-seed.mjs 播种探针(候选 URL × 头组合实测 set-cookie 返回,扩容播种链的决策工具,不进 CI)。
- 重构:client 传输层与样式注入改运行时接缝(typeof host / typeof styles 判定),gen-static.py 不再做 DYNAMIC_CALL/STATIC_CALL 整函数文本替换——每次改 call() 从此不必同步改生成器(锚点漂移即失败的一整类维护负担消失)。
- 新增:client 纯逻辑层单测(qa/client-pure.mjs,61 断言)——格式化/交易时段/K线归一化 + makeIndexPoll/makeUiStore 工厂化(依赖全注入:in-flight 去重、订阅回放、隐藏门、5s 节流、open 即时落盘全可测);host 缓存工厂 makeCache 时钟注入(qa/cache.mjs,16 断言:TTL 过期/FIFO 淘汰/24h 清扫——unit.mjs 曾自认「伪造时间不好做」的盲区);传输接缝路由回归(qa/client-bundle.mjs,13 断言:生成物伪浏览器求值防 TDZ + 动态门面/普通函数/无 host 三环境分支路由——后者源自复审发现的接缝守卫缺陷:typeof host.call 对任何同名全局函数都为真,已加 !== Function.prototype.call 收紧)。三套件全部接入本地与 CI 关卡。
- 加固:debug RPC 增加最近 50 条环形事件流(播种成败/重试类型/落盘失败,不含 cookie 值);watchlist.pull 复用同步结果消除双倍上游请求;冒烟数据关卡分级 SMOKE_LIVE=strict|warn(PR 路径上游拦截降级警告,结构关卡仍全 FAIL),CI 真连雪球的 live 步骤移至每日定时;xqIso(null) 不再渲染 1970-01-01;fmtFullDay/pad2 重复定义合并;契约测试 UA 改从 host.js 单一真源提取(曾 Chrome/126 vs /120 漂移);新增 test:offline 聚合脚本与 engines 字段;修复 static-smoke/browser-interact 对新版 dsh token 鉴权的适配缺口(CI 9 月起未跑 push 路径、dsh 升级引入 token 后,smoke 就绪探测裸 poll / 得 401 误报「实例未启动」——现对齐 e2e-boot 的双路径探测并全程携带鉴权;e2e 徽章检查由单次 sleep 8 改 6×5s 轮询 + 失败分层诊断)。
- 1.24.1(2026-10-22)
- 修复:面板关闭时拖动徽章的位置不落盘——onUp 提交 badgePos 后未调 saveUi,而落盘订阅者(DockPanel)仅在面板打开时挂载;徽章交互常态恰发生在面板关闭时,刷新后位置回退(对照:调宽手柄 onGripUp 一直有显式落盘)。现为拖拽松手后显式 saveUi()。
- 修复:越屏位置的钳制修正不落盘——hydrate 钳制后的 ui.set 同样无人落盘,host 里永久残留越屏值(如 99999),每次加载重复钳制。现钳制确有修正时立即 saveUi()。
- 两个 bug 均由浏览器 e2e 加强断言暴露(旧断言只查「badgePos 是对象」,被 rpc 预设值骗过)。
- 1.24.0(2026-10-22)
- 功能:详情页盘中活性——详情打开期间不再是一次性快照:标的所属市场开市时报价每 20s、分时每 60s 增量刷新(只合并 quote/minute,不动 K线/财务/KOL)。A股标的开市状态取共享指数层的真实 market status(节假日感知,法定假日不空转);港美股退回本地时区推算。页面隐藏暂停、回前台立即补刷(5s 节流);跨开/收市边界自愈;轮询失败静默(面板级轮询已在报错,双写只会刷屏)。
- 功能:K线最后一根 bar 盘中滚动——图表 loader 挂 subscribeBar 订阅(v10 原生流式通道:_addData(t,'update'),末根值演进 replace、新 bar 到点 push,不重置视图、保持拖拽/缩放位置,MA/VOL 自动重算)。20s 拉最新 5 根走 begin=now 零缓存路径(无 begin 的 kline 缓存 TTL 高达 5min,常规请求拿不到进行中的 bar);以图表缓冲末根为准值有变化才触发;开市门/隐藏暂停同详情活性。图表容器留 __xqLastBar/__xqTickInfo 诊断钩子(e2e/排障用,画布内容无法从 DOM 断言)。
- 功能:分时图原地热更新——新数据经「改写 barsRef + chart.resetData()」走既有 loader 重新 init 加载(vendored v10 无 applyNewData/updateData,resetData 内部即 _processDataLoad("init")),不重建图表实例;涨跌色随最新价重算、笔数增长仍铺满宽度;签名守卫(笔数+末笔时间+昨收)防重复应用。
- 1.23.1(2026-10-22)
- 重构:XueqiuPanel 拆分——680 行巨石组件收敛为 ~160 行组合层,状态与取数按领域拆为 4 个 hook(useLogin / useWatchlistData / useHotNewsData / useDetailData),六个内联渲染函数(登录框/行情/详情/热榜/搜索/快讯)提升为真正的组件(稳定组件身份,经 el() 渲染);所有状态、竞态守卫与注释原样搬移,行为不变(8 套件 415 断言 + 浏览器 e2e 全绿)。
- 修复:K线「加载更早」的 10 页配额此前不随换标/切周期重置——在一只标的上前插满 10 页后,切换其它标的/周期的前插会被永久卡死(配额计数现随 view/period effect 归零,与图表 remount 语义对齐)。
- 1.23.0(2026-10-21)
- 性能:指数轮询三合一——面板(20s)/徽章(30s)/指数条(30s) 对同一组 4 指数的独立轮询合并为单请求流(模块级共享层:20s 单定时器 + 订阅回放 + in-flight 去重 + 隐藏暂停/回前台 5s 节流刷新)。上游指数请求量降 2/3,多组件同屏时尤为明显;指数数据恒取最新缓存,慢响应覆盖竞态随之消失(mktSeq 只需守护自选链)。
- 1.22.17(2026-10-21)
- 加固:登录凭证文件写盘后自动 chmod 600(fs 无权限原语,借 shell 执行,失败不阻塞);actQuote 超量截断显式返回 truncated 计数。
- 修复:fmtTime 兼容字符串时间戳、无效输入显示 --:--:--(此前 NaN:NaN:NaN);稳定目录探测失败不再永久缓存回退路径(磁盘满恢复后自动回到稳定目录);探针文件不再留时间戳数据。
- 性能:四张工具卡(Quote/Kline/Hot/News)的 xqParseResult 用 useMemo 包住,流式更新重渲染时跳过重复 JSON.parse。
- 测试:CI 离线矩阵扩到全部 8 套件(此前 edge/fence/regress 等 346 条断言只在本地跑);新增 chmod/truncated 用例(unit 61)。
- 1.22.16(2026-10-21)
- 修复:适配新版 DSH shell API(shell.run 被移除,导致所有请求报 shell.run is not a function、自选股不展示)。新增 runShell 兼容层:旧版走 run,新版走 execute+result()。
- 修复:curl 命令注入防御——URL 里的单引号统一转义为 %27(encodeURIComponent 不转义 ');kline symbol 剥掉非白名单字符,剥完为空就立即返回空结果。
- 修复:WAF 挑战页自愈——HTML 响应从致命的 [parse] 改为可重试的 [waf]:只在首轮且匿名路径时触发重播种(带 5s 冷却窗);播种成功的判据收紧为拿到 xq_a_token,失败不再缓存废 cookie。
- 修复:K 线历史翻页步长——begin 按周期回退一个安全步长(实测上游是 inclusive 语义;month 取 20 天,当月未收线 bar 与上一根的 gap 可小到 21 天),防止 forward:false 永久截断。
- 修复:client RPC 15s 超时——静态版用 AbortSignal.timeout + 老 WebView race 兜底 + res.ok/JSON 防护;动态版给 host.call race 加看门狗。
- 修复:RPC dispatch 原型键绕过(action='constructor' 会命中原型上的真值函数,改为 hasOwnProperty 白名单);登录/自选加载竞态(迟到的文件内容不再覆盖并发的 logout/save/add);触屏 pointercancel 误触发面板开合;行情轮询竞态(mktSeq 三道守卫,含 catch)。
- 变更:gen-static 生成器升级为 call() 函数级替换(旧的单行替换会让静态版看门狗失效)。
- 安全:登录 Cookie 不再进进程 argv——经 stdin 以 -H @- 注入(ps 看不到、不落盘),值里剥掉换行防 header 注入。
- 安全:状态文件 .bak 兜底——主文件写成功后写伴生 .bak,半截 JSON 损坏时读取侧自动回退,最坏只丢「最后一次写」而不是整份自选。
- 修复:登录/注销时清空行情缓存(缓存 key 不含登录维度,旧数据在 24h TTL 内不再跨身份泄漏);自选 200 上限前置拦截(不再静默截断丢尾巴);RPC actQuote symbols 钳制到 50。
- 修复(长运行):工具卡 K 线图离屏休眠(IntersectionObserver,回到视口自动恢复)——会话消息不卸载,此前每张卡 ~3.4MB canvas 永久累积;K 线历史前插封顶 5000 根 + 前插结果不进缓存(零复用);news 文本 200 字截断 + 翻页 500 条上限;云同步失败也推进节流(cookie 过期后不再每天 ~1.3 万次无效请求);注销落盘竞态哨兵(旧文件读回已注销身份)。
- 修复(测试保真):mock shell 对齐真实 DSH v24.16 的 execute+result() 形态(生产必经分支此前零单测);login.status.path 在真实 fs(resolve 返回对象)下统一为可读字符串;补身份切换缓存失效三连/login.save 成功链路(含 .bak)/登录态 WAF 不播种/stdin+POST 形状共 9 条盲区测试。
- 1.22.15(2026-09-03)
- 变更:元数据脱敏补丁。更新日志措辞去掉旧账号字样;npm 维护者信息刷新。功能零变更。
- 1.22.14(2026-09-03)
- 变更:仓库迁移至 wanderer-yk。GitHub 账号更名后全量同步:README / README.en / package.json / LICENSE 中的仓库链接、徽章、图片外链、安装命令全部更新为 wanderer-yk/dsh-xueqiu;git 全部历史提交与标签署名经 git filter-repo 重写为 noreply 身份,历史文件内容同步清洗。
- 修复:static-smoke.sh 查找 dsh 二进制时硬编码了机器特定的绝对路径,改为 $HOME 展开(可移植性 + 去隐私泄露)。
- 功能零变更;发布本版主要目的是刷新 npm 侧的 homepage / 仓库地址 / readme 元数据。
- 1.22.13(2026-08-26)
- 修复:A 股成交量显示虚高 100 倍 + 港/美单位错。雪球 volume 字段全市场都是股(实证 amount/volume ≈ price,quote/kline/minute 三接口、A/港/美/ETF/指数一致),而 fmtVol 一律按「手」格式化:茅台 145 万股显示成「145.05万手」(实为 1.45 万手)。现按市场感知:A 股(SH/SZ/BJ 前缀,含 ETF/指数/北交所)÷100 换算成手,港/美维持股。qa/vol-units.mjs 26 例(从 client 源码提取 fmtVol 独立求值 + host 周期白名单)。
- 修复:自选「死条目」凭空消失。批量行情会整只丢弃无效/退市代码——添加 SH999999 提示成功,但列表里永远看不到,无任何反馈。现在补占位行(现价/涨跌全 --,名称回退显示代码,仍可删除/查详情),价格闪烁逻辑对 null 现价免疫。
- 修复:kline 垃圾周期静默空数据。上游对未知 period(如模型手滑传 1h)返回 200+0 根;host 侧加白名单兜底为 day。
- 修复:CI 午休/午后时段必红(v1.22.11 修复的延伸)。live 分时点数下限按「9:30 至今分钟数」线性外推,但 A 股午休(11:30-13:00)分时停在 ~121 点、午后累计从 13:00 重算——11:44 触发的 CI 实际 121 点 vs 下限 132 必红。改为两段交易时段感知(早盘线性 / 午休恒 118 / 午后 121+线性封顶 238 / 盘外 200),全天 1440 分钟边界模拟通过。
- 工具描述补充 volume 单位为股(A股 1手=100股),防止模型侧误读换算。
- 1.22.12(2026-08-26)
- 修复:状态文件跟启动目录漂移。自选/登录/界面状态原先落在 dsh web 的启动目录(cwd=工作区根)——换目录启动就「换一套状态」。现在优先写 $DSH_HOME/dsh-xueqiu/(稳定目录,writeText 自动建目录);沙箱策略拒绝工作区外绝对路径写入时探测失败,透明回退旧工作区行为(零回归);读取时稳定文件缺失则回读旧工作区文件,存量数据无缝迁移(首次保存落到稳定目录,旧文件不删)。qa/state-paths.mjs 11 例覆盖四种模式(稳定/迁移/回退/首启)。注意:host 侧改动需重启 dsh web 生效,迁移发生在重启后首次写入。
- 修复:K线交互提示文案方向写反(v1.22.0 起)。「左拖加载更早」实为右拖——klinecharts 源码 scroll(拖拽位移) 内容跟手:右拖=左缘涌出更早历史+触底自动加载;左拖是回最新方向、右边留白。用户指出后核对引擎源码确认,client 6 处 + README 3 处已正。
- 新增:K线/分时拖拽光标反馈(用户建议)。悬停小手 grab、按住抓手 grabbing、松手复位(松手点在图外时 window mouseup 兜底);监听统一在 klcSetup 随 dispose 清理。
- 修复:::1 裸 IPv6 回环白名单死代码。端口剥离正则 /:\d+$/ 会把裸 ::1 末尾 :1 误剥,改 /^(.*[^:]):\d+$/;fence.mjs 原 xfail 用例转正(两形态均 200)。
- 1.22.11(2026-08-26)
- 修复:打开面板的 open=true 从未落盘——刷新必丢(1.22.10 的姊妹问题)。ui.set({open:true}) 发生在面板组件订阅建立之前(订阅挂载后才生效),无人续触发时 saveUi 永不执行。open 翻转现在在 ui.set 内直接触发落盘。闭环实测:开面板 → host open:true → 刷新 → 面板自动恢复。
- 修复:CI 时区炸弹。live 测试分时点数断言硬编码 >30,北京时间 9:30~10:01 触发的 CI 必红(开盘仅十几个点)。改按盘中时间自适应下限。
- 1.22.10(2026-08-25)
- 修复:刷新后面板开合状态不恢复(1.22.8 引入的回归)。ui.get 里 open: s.open !== false 被上一行的行尾注释吞掉,客户端 hydrate 永远拿不到该字段。254 例边界套件捕获(qa/edge.mjs 保持红用例直至修复)。
- 修复:切 K 线周期闪整屏 + 连点丢按钮。周期在详情 effect 依赖里,切一次周期会把整个详情(报价/分时/财务/KOL)清空重拉 5 个接口——周期丸整排消失 100-300ms,真人节奏(300ms)连点会丢击。现在周期切换只清图表数据、只发 1 个 kline 请求,报价与周期丸全程可点(实测 300ms 全序列 11/11 命中、130ms 机枪档终态正确)。
- 修复:浅色主题图表文字几乎不可读。cssVarColor 在 上读主题令牌,而 GUI 把令牌定义在 <body>——两主题都渲染硬编码回退 #8a8f98,白底对比度仅 ~1.8:1(WCAG AA 要 4.5:1)。改为先读 body:浅色下图例/轴文字用真实令牌 #61666b(~5.8:1)。
- 修复:主题切换图表不跟着换色。GUI 跟随系统配色时 DOM 属性不变,MutationObserver 永不触发;补 matchMedia('(prefers-color-scheme)') change 监听,主题翻转即时重设图表样式。
- 修复:页面刚加载就点开面板会被迟到的持久化打回。hydrate 回填 open/tab 前先检查用户是否已交互(touched 标记),水合不再覆盖用户刚做的选择。
- 加固:KlineChart 空 rows 不建图(hasRows 门控,与分时 hasData 同款),配合周期切换的「先清后到」数据流。
- 测试:新增 4 套离线资产并入 scripts——qa/edge.mjs(254 例黑盒边界)、qa/fence.mjs(同源栅栏 18 例,含 1 例 ::1 死代码 xfail 标记)、qa/regress-v1228.mjs(21 例)、qa/persist-upgrade.mjs(16 例,含真实状态文件升级演练)。check:fast 保持秒级(1.8s)。
- 1.22.9(2026-08-25)
- 新增:K线 OHLC 图例常显。showRule follow_cross → always:进详情即见最新一根 开高低收量,悬停时跟随十字光标那根(MA 彩色行仍悬停显示)。v1.22.3 改悬停触发是因为当时英文两行图例压蜡烛;v1.22.5 起已是紧凑中文单行(字号10),实测图例带 0 蜡烛像素、无遮挡。
- 1.22.8(2026-08-25)
- 修复:综合测试暴露的 4 类缺陷 + 6 项低危加固——/xq-rpc 同源栅栏收紧(Origin 必须存在且同源,浏览器同源 POST 必带 Origin,无 Origin 的 curl/跨进程直调一律 403);ui.get tab 白名单(损坏状态文件的非法 tab 回退 market);curl 失败错误不再回显 stderr(信息泄漏);空云结果也推进同步节流时间戳;云增删失败静默兜底;工具 execute 参数空值兜底 args || {};快讯无效 created_at 不再渲染 NaN 月NaN 日。
- 1.22.7(2026-08-26)
- 修复:切换股票后分时图压成直线(如看完茅台再看宁德时代)。registerIndicator('xq-minute') 全局只注册一次,其 calc 闭包捕获的是首次挂载实例的 baseRef——第二只股票的分时图复用了旧 calc,昨收基准仍是前一只股票的(宁德挂上茅台昨收 1304.66,y 轴被撑到 404~1229,而分时价格只在 378~388,曲线压成直线)。修复:每次挂载分时图用 overrideIndicator 重绑当前实例 baseRef 的新 calc。实测三股连环切换(茅台 1304.66 → 宁德 387.89 → 京东方 5.75),昨收均正确、价格波动 span 130~180px 饱满。
- 1.22.6(2026-08-26)
- 修复:分时悬停信息双份叠加(1.22.5 排查发现)。分时面积图「开=高=低=收」同值,canvas OHLC 图例纯冗余,且 xq-minute 指标图例(昨收/均价)与自定义 .xq-tip 重复显示两遍。分时模式现在彻底关闭 canvas 图例(蜡烛+指标),悬停只保留 .xq-tip。
- 新增:K线悬停显示 MA 数值(1.22.0 以来 MA 值无处可看的补课)。指标图例改 follow_cross:悬停时蜡烛行(开高低收量)下方第二行彩色显示 MA5/10/30/60 数值(实测茅台 MA 行单行占宽 70%,不折行),与雪球一致。
- 1.22.5(2026-08-26)
- 修复:悬停 OHLC 图例折成两行压图(1.22.3 遗留)。follow_cross 后默认英文 time/open/high/low/close/volume 标题过长,悬停时图例在窄面板折两行盖住蜡烛。改为紧凑中文单行(开 高 低 收 量,字号 10)+ 隐藏 ticker 标题——实测悬停图例单行 10px 高、占宽 45%,不再折行。
- 1.22.4(2026-08-26)
- 修复:切分时整个面板崩溃消失(1.22.3 回归)。双击回最新的清理函数里用了 boxRef.current.removeEventListener,但 React 卸载组件时先清 ref 再跑 effect 清理,此时 boxRef.current 已是 null → 抛 TypeError → conversation.input.dock 槽位整体崩溃,只剩自选股小徽章且无法重开。改为 effect 内闭包捕获节点。回归:K线↔分时来回 4 轮 + 收起/徽章重开/再进详情,0 报错。
- 1.22.3(2026-08-26)
- 修复:K线 OHLC 图例常驻压蜡烛。KLineChart v10 默认 candle.tooltip.showRule: 'always' 把 time/open/high/low/close/volume 永久画在蜡烛区左上角(像素级实测 1394 个文字像素自 y=23 起覆盖蜡烛)。改为 follow_cross(十字光标悬停才显示,与雪球一致),此前只关了指标 tooltip 漏了蜡烛自身的。
- 修复:「双击回最新」标签承诺无实现。图表下方文案写了「双击回最新」但代码没有 dblclick 处理(实测右拖加载 999 根后双击无反应)。现监听容器 dblclick → chart.scrollToRealTime()(实测可视区 132→430-500 回到最新)。
- 细节:K线日期标签补年份(500 根日K时「08-26 ~ 08-24」像时间倒流,实际跨两年;现显示「2024-08-02 ~ 2026-08-25」);详情页 hero 现价/涨跌额按现价实际小数位显示(港股 00700 此前 440.40 → 440.4)。
- 1.22.2(2026-08-24)
- 修复:K线均线 / 分时均价误落附图。KLineChart v10 的 createIndicator('MA') 默认给指标新开 pane——均线不在蜡烛主图上(主图被挤到 72px),分时均价/昨收也在独立附图。须传 { name, paneId: 'candle_pane' } 显式叠加到主图(pane id 从引擎源码确认)。修复后:K线主图 173px 蜡烛+MA5/10/30/60 叠加、附图仅成交量;分时只剩一张主图(分时曲线+均价+昨收全部叠加),与雪球布局一致。
- 样式:详情页参考雪球重排版——顶部行情主标题(大号红/绿现价 + 涨跌额 + 涨跌幅,如 1304.66 +31.83 +2.50%);16 格 stat 卡片更轻盈(浅底/圆角/等宽数字/标签次要色);卡片标题左侧主题色强调条;K线/分时与周期按钮选中态改主题色 tint 填充;K线画布 264→300px;MA 均线和谐四色(蓝/橙/紫/青);关闭最高/最低点重复标注(消除窄图顶部杂乱数字)。
- 1.22.1(2026-08-24)
- chore:移除 peerDependencies 避免安装警告;静态冒烟脚本自动兜底本地 npx dsh(prepublishOnly 下找不到 dsh 命令)。
- 1.22.0(2026-08-24)
- 新增:K线/分时切换 KLineChart v10 引擎(canvas 渲染、内置明暗主题适配):蜡烛图 + 成交量 + MA 均线 + 十字光标,5分/15分/30分/60分/日K/周K/月K 7 档;滚轮缩放、拖拽平移、右拖触底自动加载更早历史(500 根/次);分时面积图(涨跌色)+ 均价线 + 昨收虚线。
- 1.21.7(2025-08-24)
- 修复:越屏钳制改为逐渲染执行。1.21.6 的「effect 依赖 badgePos + ResizeObserver」方案在 CI 慢环境仍漏过「渲染后才长高」的时序(数据异步到达→徽章长高→无重触发钳制)。现在 useLayoutEffect 每次渲染后钳制(数据到达必伴随重渲染,无时序死角;ui.set 仅在有变更时触发下一轮,收敛不循环)。CI 实测踩坑修复。
- 新增:浏览器 E2E 进 CI(browser-e2e job)。此前这层(唯一抓到过钳制死代码真 bug 的测试)只在本机手动跑。scripts/e2e-ci-boot.sh 合成「已完成引导」的隔离 DSH 实例(settings 跳过 onboarding + workspace 表 + 含完整一轮对话的逐行 zstd 会话日志——踩坑记录:DSH 逐记录写日志,每 zstd 帧恰好一行;slug 规则 cwd 去首 /、余 /→-、两端包 --),agent-browser 跑全部 18 项断言。E2E 脚本兜底:全新实例无活动对话时先展开会话分组再点开一个会话(conversation.input.dock 槽需要对话视图)。
- 1.21.6(2025-08-24)
- 修复:徽章越屏钳制是死代码。挂载后的实测钳制 useEffect 依赖为 [],只在首帧跑一次——而 hydrate 异步恢复 badgePos 发生在其后,钳制永远空跑;DockGate 恢复时的估算宽度(badgeW 空时按 320)又偏小,实测 346px。后果:恢复越屏坐标后徽章右/下缘出屏,真实鼠标点击落空,面板打不开(热榜/快讯/搜索随之全空)。修复:effect 依赖加 badgePos(hydrate 后按实测尺寸再钳一次)+ ResizeObserver 监听徽章自身长高长宽再钳。浏览器回归连跑 3 轮 18 项全绿。
- 测试:浏览器回归脚本修两处不稳定——① agent-browser dblclick 的两次点击间隔超出系统双击判定阈值(页面 dblclick 监听计数为 0),改派发 dblclick 事件;② 交互步骤前 rpc 固定徽章到视口中部再刷新,消除「上一轮遗留位置导致真实鼠标命中失败」的漂移。
- 1.21.5(2025-08-24)
- 测试:写失败契约 + cache stampede 冒烟(qa/contract.mjs 新增 C3:add 无效代码被拒或静默忽略且列表不变、cancel 不存在代码幂等零副作用、坏 Cookie 写被 400016 拒绝零副作用;qa/unit.mjs 新增 5 URL × 3 并发回源恰 5 次的 stampede 冒烟)。实测发现:上游对无效代码 add 返回 {data:true} 但列表不变(静默忽略)。
- 修复:登录文件错位排障盲区。登录文件位置由运行时 workspaceRoot 决定(随会话变化),此前 login.status 不暴露路径,排障只能猜(曾误查 ~/. 而插件实际写入会话工作区)。现在 login.status 返回真实 path 与 savedAt;契约测试多候选探测(env → ~/. → cwd → 父目录)并打印命中的文件路径;Cookie 过期(400016)时哨兵直接提示「重新登录更新 XQ_COOKIE」而非误报接口变更。另:实测登录 Cookie 约 3 天过期,过期后需重跑插件登录并更新 secret。
- 1.21.0(2025-08-21)
- 新增:Windows 支持。DSH 在 Windows 上的 shell 层是 PowerShell(pwsh -Command),单引号字面量语义与 POSIX 一致——原先「cmd 引号不兼容」的障碍实际不存在。三处适配:① 显式调用 curl.exe(绕开 PS 5.1 中 curl = Invoke-WebRequest 别名,Win10+ 自带 curl.exe);② Cookie 播种的 -o /dev/null 在 Windows 换成 NUL;③ Cookie 请求头剥离引号字符防注入。测试桩 realShell 平台对齐(win32 走 pwsh,同 DSH win32 层)。CI 新增 windows-latest 任务:单测 + cookie 测试 + live.mjs 真连雪球(51 断言,含匿名播种链路)全绿。README 平台要求同步更正为 macOS / Linux / Windows。
- 1.20.6(2025-08-21)
- 测试:雪球云端自选接口契约测试进 CI(qa/contract.mjs,7 断言)——直连真实端点验证 portfolio/list.json / portfolio/stock/list.json / add.json / cancel.json 契约(含真实 add→cancel 往返后还原)。每日定时(UTC 21:00)用 XQ_COOKIE secret 真跑,雪球改接口时这里最先失败,防止 watch.json 类「虚构端点」事故重演;无 secret 时(push/PR)自动 skip,同一定时任务顺带跑 live.mjs(51 断言)。需在仓库 Settings → Secrets 配置 XQ_COOKIE(浏览器完整 Cookie 请求头,含 xq_a_token)。
- 1.20.5(2025-08-21)
- 修复:云端自选双写从未生效——此前调用的 watch.json 是不存在的端点(WAF 对未知路径统一 403,曾误判为「雪球封禁第三方写入」)。真实端点是 portfolio/stock/add.json / cancel.json(POST form,symbols 参数)。已修正并经真实账号完整往返验证:插件加自选 → 云端 116 只 ✓ → 插件移除 → 云端还原 115 只 ✓。本地加/删自选恢复真正的双端同步,账号面板与 README 文案同步更正。
- 1.20.4(2025-08-21)
- 修复:host 内存缓存无淘汰——K 线 begin 参数按分钟取整使缓存 key 持续增长,长开实例会无界泄漏;现在写入时清理过期条目并设 200 条容量上限(写入即清,无后台任务)。
- 修正:云端自选写入已被雪球风控封禁(读接口正常、写接口 openresty 403)——账号面板与 README 文案如实说明「云端为准:本地加/删会在下次同步时被云端覆盖,改自选请去雪球网页/App」。
- 测试:看门狗 30s 超时路径单测(挂起请求精确 30s 释放、槽位归零);缓存淘汰单测(230 条→钳 200);云端同步真实往返 E2E;agent 工具真实会话 E2E(自然语言→选工具→卡片渲染→结构化回复,数据与直连一致)。
- 1.20.3(2025-08-21)
- 修复:徽标位置视口钳制——窗口缩小/分辨率变化后徽标不再滞留屏幕外;挂载时按真实渲染尺寸(含边框)钳制,resize 实时重钳制(浏览器实测 375px/320px 视口均不溢出)。
- 加固:/xq-rpc 请求体 1MB 上限(超出 413),防失控本地进程 OOM。
- 声明:README 明确平台要求 macOS / Linux(POSIX shell curl,Windows 暂不支持)。
- 测试:完成浏览器级 UI 走查(徽标/面板 4 tab/搜索/详情/K线十字光标/登录三档错误路径)与动态分支协议验证,登录态备份-恢复全程无损。
- 1.20.2(2025-08-21)
- 修复:完整 QA 测试轮发现的 3 个缺陷——① login.status 在登录文件缺 uid/screenName 字段时不再返回空,回退到 JWT 解码值;② K 线查询无效代码的错误文案不再误导为「cookie 不完整」,明确提示检查代码格式;③ xueqiu_news 的 count 参数现在真正生效(上游固定每页 ~10 条并忽略 count,工具层用 max_id 自动翻页补足,最多 3 页)。
- 新增:离线单测套件 qa/(mock shell,不发网络)并接入 GitHub Actions——覆盖调度节流/TTL 缓存/重试链/云端同步语义/cookie 双 URL 回退/命令注入防护等 40 项断言;另有本地 live 套件 qa/live.mjs 对真实 API 做 51 项数据正确性验证。
- 1.20.1(2025-08-20)
- 打磨:重写 6 个智能体工具描述——每个工具的 description 扩展为结构化说明(何时使用 / 输入格式与示例 / 输出字段),并写明工具间的协作关系(不确定代码先 xueqiu_search、只要最新价别拉 K 线、热榜≠涨幅榜等边界)。纯文案改动,直接提升智能体选工具与传参的准确率(对标 dsh-us-stocks 的描述深度)。
- 1.20.0(2025-08-20)
- 新增:登录态自选股自动同步(云端为准的双端统一)——打开面板/行情刷新时自动检查,距上次同步超过 10 分钟即在后台拉取云端自选并镜像到本地;你在雪球网页/App 上加删自选,插件端 10 分钟内自动跟随。节流时间戳持久化,多实例不重复拉取;接口异常静默失败不影响行情;云端返回空列表时不镜像(防误清空)。「同步云端自选」按钮保留,点击强制立即同步。
- 1.19.1(2025-08-20)
- 修复:匿名 cookie 播种改为双 URL 兜底链——优先 xueqiu.com/hq(无 WAF 挑战,直接发全套匿名 token),失败再回退首页。部分地区首页被阿里云 WAF JS 挑战接管后只发 acw_tc,导致匿名请求报 400016,此修复使播种不再依赖单一入口(感谢 @Lambenthan PR#2 的定位与验证)。
- 1.19.0(2025-08-20)
- 新增:K线滚轮缩放 + 拖拽平移——详情页K线默认显示尾部 120 根(缓冲 500 根),滚轮以鼠标位置为锚点缩放(20~全部),水平拖动平移看历史;拖到缓冲头部自动追加拉取更早 500 根(按时间戳去重合并,上限 3000 根);双击复位。图底标注 窗口/总数 根 与操作提示。
- host:kline RPC 新增 begin 参数(毫秒时间戳),返回该根往前的历史,供平移分页(分钟取整保证缓存 key 稳定)。
- 1.18.2(2025-08-20)
- 修复:Agent 工具的时间戳用了 UTC(toISOString),快讯/K线时间比本地早 8 小时(18:14 显示成 10:14)。现按本地时区格式化。
- 1.18.1(2025-08-20)
- 新增:xueqiu_hot 热榜卡片(排名+名称+热度升降+现价涨跌)与 xueqiu_news 快讯卡片(时间线、mark=1 重要快讯高亮、列表内滚动)。
- 1.18.0(2025-08-20)
- 新增:Agent 工具调用卡片——xueqiu_quote 结果渲染为红涨绿跌行情表,xueqiu_kline 渲染为迷你蜡烛图(复用面板图表组件,头部含周期/根数/区间/区间涨跌),对话流内直接看图,不再是一坨 JSON。
- 1.17.0(2025-08-20)
- 新增:Agent 工具(一期 6 个)——模型在对话中直接调用雪球数据,不必再让 agent 爬网页:xueqiu_quote(实时行情,一次 20 只)、xueqiu_kline(7 档周期 OHLCV)、xueqiu_search(代码/中文名/拼音搜索)、xueqiu_hot(热榜)、xueqiu_news(7×24 快讯,可翻页)、xueqiu_kol(个股热议大V,雪球社区数据独有)。复用既有请求闸门/缓存/Cookie 自愈,数据层零新增请求路径。
- 1.16.1(2025-08-20)
- 修复:双击 ⤡ 复位徽章宽度时,badgeW:null 被 host 侧 Number(null)=0 钳制为下限 120px 落盘——刷新后徽章变成 120px 窄条(dockH 同理被钳为 160)。现 null 按显式复位处理。
- 修复:恢复徽章位置时的视口钳制按实际宽度计算(原先固定 -140,区域模式宽达 480px 时右缘出屏)。
- 新增:scripts/browser-interact.sh 浏览器交互回归(真实鼠标事件:拖拽/调宽/双击复位/面板四 tab/越屏恢复)。
- 1.16.0(2025-08-20)
- 修复:登录 Cookie 过期后,公开行情接口(报价/K线/分时/热榜等)被一并毒化全部报错 —— 现自动降级为匿名请求继续工作,仅云端自选等功能提示重新登录。
- 新增:scripts/feature-matrix.py 功能矩阵回归测试(155 项断言 × 未登录/已登录/Cookie过期 三环境)。
- 1.15.2(2025-08-19)
- package.json 补齐 repository/bugs/homepage 字段——将 npm 包与 GitHub 仓库关联,供插件市场自动采集下载量。
- 1.15.1(2025-08-19)
- 徽章升级为常驻行情区域:四大指数(上证/深证/创业板/科创50)两列 + 自选前 12 只两列平铺,静态展示不再轮动。
- ⤡ 手柄调宽度 120–480px(双击复位 320px),宽度/位置持久化;恢复位置时钳制到视口内,永不丢失。
- 底部指数条与面板市场页:沪深300 → 科创50。
- 修复:云端自选对真实账号永远拉不到——默认自选在 stocks 系统分类(pid=-1 全部)而非 portfolios 字段;自选上限 50 → 200。
- 修复:区域模式 const 重新赋值导致徽章槽位崩溃;徽章头部三元素竖排散架。
- 移除:悬停弹层(搜索/速览已被区域模式取代)。
- 1.10.0(2025-08-19)
- 新增:可选登录雪球——面板右上「👤 登录」,粘贴浏览器 Cookie 整行即可(借鉴 xueqiu-cli 手动登录模式)。
- 登录后自动拉取并使用雪球云端自选股;加/删自选尽力同步云端(尽力而为,失败静默回退本地);「同步云端自选」随时手动拉取。
- 安全细节:本地解析 xq_id_token(JWT)预检过期;远端调组合接口二次校验(400016 拒绝无效 Cookie,实测验证);Cookie 仅存本机 .xueqiu-login.json,退出即清除;不登录则完全保持原匿名模式。
- 1.9.0(2025-08-19)
- 微交互:tab/详情切换淡入动画、刷新按钮旋转 loading 态。
- 快讯时间轴:左侧竖线 + 「今天/昨天/X月X日」分组锚点,长列表快速定位时间。
- 徽章悬停预览:悬停 300ms 弹出自选速览(名称/现价/涨跌幅 chip,30s 缓存),点击展开面板,拖拽不误触。
- K 线/分时十字光标轴标签:光标价位(右侧)+ 日期/时间(底部)底色读数块。
- 1.8.0(2025-08-19)
- 专业感升级三件套:全界面等宽数字(tabular-nums,价格跳动不抖列);涨跌幅色块 chip(红涨/绿跌半透明底,扫一眼定位);自选行价格变动闪烁动画(涨红闪/跌绿闪,0.8s 渐隐)。
- 1.7.2(2025-08-19)
- 新增:快讯 tab 翻页——滚动到底或点「加载更早」自动加载历史快讯(max_id 游标,自动去重),「刷新」重置回最新一页。
- 1.7.1(2025-08-19)
- 修复:dsh plugin add 静态安装后 dsh web 启动即崩(harness is not defined)——静态安装改走 webServer 前缀路由 /xq-rpc(带回环 + 同源双重栅栏),动态运行时仍走 harness.handle,双模式自动切换。
- 修复:静态安装的浏览器端 bundle 格式(__ModuleLoader__ CJS 工厂)与网络通道(同源 fetch 替代 host.call),面板/徽章/指数条在静态模式下完整可用。
- 1.7.0(2025-08-19)
- 新增:页面隐藏时自动暂停面板/徽章/指数条全部轮询,回到前台立即刷新——切走不浪费请求,显著降低雪球风控触发概率。
- 新增:A 股/港股/美股三市场交易时段提示(盘中·午休·盘前·休市,本地 Intl 时区推算,不含节假日),面板头常驻显示,徽章显示精确 A 股时段,每分钟自动刷新。
- 1.6.1(2025-08-18)
- 修复:请求管线死锁——悬挂请求永久占用调度槽导致面板整体冻结,现由 30s 看门狗强制释放。
- 修复:详情页内点「行情/热榜/搜索/快讯」标签无响应(view 优先级遮蔽 tab)。
- 修复:徽章位置持久化后恢复时 badgePos.y 被误当函数调用导致位置重置失败。
- 新增:debug RPC(running/waiters/inflight/cache/cookie 实时观测)。
- 1.6.0 — 面板高度拖拽调节(丝滑零重渲染、双击复位、持久化)。
- 1.5.x — 请求调度与缓存优化(并发 2 + 100ms 间隔、TTL 缓存、错误分类重试)。
- 1.4.x — 详情提速:渐进渲染、全 K 线周期、十字光标。

📄 License

MIT
预览分享卡片长什么样 ↓wanderer-yk/dsh-xueqiu
分享 · DeepSeek Harness Hub
wanderer-yk/dsh-xueqiu

雪球 mini 行情面板 — DeepSeek Harness 免登录…

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部