为 DSH Web 界面换上炒股终端外观:红涨绿跌标题栏、A/港/美/加密/外汇滚动跑马灯、市场时段状态栏,可联动 dsh-fun-ticker 自选股与 dsh-longbridge 港美股行情。
$ dsh plugin --profile web add github:ningbainb/deepseek-harness-desktop/packages/skins/tradingRun 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 GUI 换上炒股终端外观:在页面顶部加入带 K 线图标的标题栏与实时行情快签,在中部跑 A 股 / 港股 / 美股 / 指数 / 加密 / 外汇滚动跑马灯,在底部展示市场时段、长桥指数、工作区计数和连接状态。它只动浏览器 DOM 和 CSS,不参与模型请求,适合想换外观、营造盯盘氛围的普通用户。
workspace.list)和「就绪 / 已连接 / 在线」连接状态格data-dsh-trading body 属性的样式表调整浅色与深色两套交易终端色板,并注入品牌红 K 线 favicon@deepseek-ai/cordis(ctx.effect 生命周期)、@deepseek-ai/dsh-client-connection(客户端 RPC 句柄上的 workspace.list)、@deepseek-ai/cordis、lightningcss(样式编译)、tsdown(生成 bundle)、vitest(挂载/清理验证)cordis.patch.yml)将 ui-skin-trading 插入 Web 插件清单;host 侧 apply() 为空占位(运行在 host 进程,皮肤不参与宿主逻辑),浏览器侧 apply(ctx) 在 cordis fiber 生命周期内挂载 DOM/CSS 并注册 disposer;样式表随 bundle 的 CSS Modules 自动注入,由 loader 随条目移除packages/skins/trading/src/index.ts(host 空入口,4 行);packages/skins/trading/src/client/index.ts(浏览器侧核心入口,370 行);packages/skins/trading/src/client/quotes.ts(505 行三级数据源与解析器);packages/skins/trading/src/client/session.ts(91 行市场时段纯函数);packages/skins/trading/src/client/refresh-scheduler.ts(66 行单定时器多节奏调度);packages/skins/trading/src/client/trading.module.css(692 行主题样式)对炒股氛围感兴趣、写代码也想盯盘的普通用户,在 DSH Web 界面切到「交易终端」皮肤后,标题栏与跑马灯会持续显示 A 股、港股、美股、加密和外汇的实时报价与红绿涨跌,状态栏展示三个市场的盘中状态、当前的工作区数与连接状态。皮肤完全不动模型调用链,适合只想把工作台换成交易终端观感、不改变对话体验的用户;同时也是 dsh-fun-ticker 和 dsh-longbridge 两个数据插件的视觉载体,装上后会把跑马灯替换为用户的自选列表与真实的港美股指数。
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DSH | 未声明 | 包内未声明 DSH 版本或 dsh.compatibility;通过 bundle patch (cordis.patch.yml) 接入客户端机制 |
| Node.js | `^22.19.0 | |
| 平台 | 跨平台 | package.json 将客户端标记为 platform: "web",未声明 os 或 cpu 限制;接口数据在浏览器侧取,没有平台分支 |
| 原生模块 | 无 | 无运行时原生模块依赖;DOM 变更、行情解析、时段计算全部在浏览器 TypeScript 完成 |
dsh plugin --profile web add github:ningbainb/deepseek-harness-desktop/packages/skins/trading
本插件无需额外配置。源码中未发现用户配置读取逻辑或 Schema 字段;皮肤启用由皮肤管理流程(dsh-skin use trading)负责,启用后由客户端生命周期自动管理 DOM/CSS 的挂载与清理。
Q: 这个皮肤影响模型请求或对话吗?
A: 不会。包内明确说明它只改变浏览器 DOM 与 CSS,不组装或发送任何 provider 请求,也不订阅任何模型事件;皮肤对模型调用链零侵入。
Q: 跑马灯的报价数据从哪里来?必须装 fun-ticker 吗?
A: 不必须。皮肤内置三级数据源:装了 dsh-fun-ticker 时跑马灯直接跟随自选列表(走同源代理 /plugins/dsh-ticker/api,宿主端转 Binance / Frankfurter / eastmoney / Sina 源);装了 dsh-longbridge 时状态栏指数格走券商快照(loopback RPC /longbridge panel/snapshot);两个都没装时回退到公共端点,浏览器直接拉腾讯 qt.gtimg.cn(A/港/美股 script-tag)、Binance 24h ticker、Frankfurter ECB 汇率。任一层失败都会安全降级为 -- 单元格。
Q: 安装后界面没有变化怎么办?
A: 安装皮肤包不等于已经选中该皮肤。需要在仓库根目录运行 dsh-skin use trading 切换;同一时刻只启用一个皮肤,互斥由 profile 层 cordis.patch.yml 的 disabled: true 行负责,切换走 HMR 热重载,无需重启。
Q: 状态栏的指数是实时行情吗?
A: 装 dsh-longbridge 时是它的券商快照;未装时是公共指数,每 30 秒刷新一次;两个插件都没装、且公共端点不可达时,所有指数格回退到 --。
Q: 「工作区 --」是正常的吗?
A: 正常。该格依赖客户端连接句柄上的 workspace.list RPC;连接句柄不可用或 RPC 失败时安全降级为 --,不影响其他单元格的渲染。
Q: 网络屏蔽公共行情站点时会怎么样?
A: 终端 chrome 仍然正常显示,跑马灯 / 状态栏 / 工作区格全部回退为 --。所有 fetch 路径都有 5-8 秒超时与 try/catch 保护,皮肤不会抛出错误,也不会让 dsh 主界面崩溃。
Q: 市场时段(盘中 / 午休 / 盘前 / 休市)准吗?
A: 准到星期与小时级别:A 股 09:30-11:30 与 13:00-15:00(午休 11:30-13:00),港股 09:30-12:00 与 13:00-16:00,美股 04:00-09:30 盘前 + 09:30-16:00 盘中。文档已明确交易所节假日仍按开市处理,是预期限制而非 bug。
Q: 关闭或切换皮肤后会留下页面痕迹吗?
A: 不会。客户端注册的生命周期清理器会移除 body 属性、标题栏、跑马灯、状态栏和 favicon;如果文档标题仍等于皮肤写入的字符串则恢复原标题,被会话标题覆盖时不会被一并回滚。测试覆盖了挂载、清理与「不清掉会话标题」三类场景。
入门 — 装包加一条 dsh-skin use trading 即可生效,没有配置项和命令行参数;默认皮肤功能完整,唯一可选的高级操作是把跑马灯换成自选股(装 dsh-fun-ticker 并配置)或把指数换成券商快照(装 dsh-longbridge 并登录)。
data-ds-dark-theme 两种状态都钉住自己的调色板;切换 Appearance 得到的是亮/暗两套终端配色,而不是非皮肤外观DEFAULT_TAPE)约 13 个条目,未装 dsh-fun-ticker 时跑马灯固定使用这组