Bob-Bo1 / dsh-stock-watch

Listed

DeepSeek Harness (DSH) plugin for local A-share portfolio tracking. Reads a local holdings.json and shows quotes and P&L in the sidebar.

mainOther View source

Installation

npx -y @deepseek-ai/dsh plugin --profile web add github:Bob-Bo1/dsh-stock-watch

This installation command is an unverified starting point generated from the GitHub repository address.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit 6b152b8Synced Aug 17, 2026

stock-watch:DSH 股票观察站

一个面向 DeepSeek Harness(DSH)的客户端插件。它在 DSH 左侧边栏底部提供一个 📈 入口,用来查看自己的 A 股持仓、实时行情和盈亏估算。

先看安全说明

  • 持仓数据只从你自己电脑上的一个 JSON 文件读取。
  • 插件只把代码、名称、数量和成本价传给当前 DSH 页面,不会上传到本项目作者的服务器。
  • 行情请求发送到腾讯行情接口时只包含股票代码,不包含你的数量、成本价或 API Key。
  • 仓库里的 holdings.example.json 只有假数据。请不要把真实的 holdings.json、截图、账号信息或 API Key 提交到 GitHub。
  • 默认情况下,DSH Web 服务只监听本机地址。如果你主动把 DSH 暴露到局域网或公网,能访问 DSH 的人也可能读取这个本地插件路由返回的持仓摘要,请不要这样配置。
  • 插件只保留允许的字段:codenamequantitycostPrice。其他字段会被丢弃。

安装

从 GitHub 安装

dsh plugin --profile web add github:Bob-Bo1/dsh-stock-watch

然后在 DSH Web profile 的 cordis.patch.yml 中确认有这段注册配置:

- insert:
    - id: stock-watch
      name: stock-watch

重启 DSH Web:

dsh web

如果你使用的是 dsh.cmd,把上面的 dsh 换成 dsh.cmd 即可。

本地开发安装

git clone https://github.com/Bob-Bo1/dsh-stock-watch.git D:\Tools\stock-watch
dsh plugin --profile web add link:D:\Tools\stock-watch

本地路径可以替换成你实际保存插件的目录。安装后同样需要确认 cordis.patch.yml 已注册插件,再重启 DSH。

关联自己的股票数据

推荐把持仓文件放在 DSH workspace 根目录:

你的 DSH workspace\holdings.json

最简单的做法:

  1. 复制仓库里的 holdings.example.json
  2. 将副本改名为 holdings.json
  3. 把示例股票替换成自己的数据。
  4. 将文件放到 DSH workspace 根目录。
  5. 打开 DSH 左下角的 📈 按钮查看结果。

DSH workspace 通常就是启动 dsh web 时所在的目录。你也可以用环境变量指定一个本机文件:

$env:DSH_STOCK_HOLDINGS = 'D:\Private\stocks\holdings.json'
dsh web

相对路径会按 DSH workspace 解析。环境变量优先级高于默认的 workspace\holdings.json

文件格式

{
  "refreshSeconds": 5,
  "holdings": [
    {
      "code": "sz000001",
      "name": "示例股票",
      "quantity": 100,
      "costPrice": 10.5
    }
  ]
}

字段说明:

字段必填说明
codeshszbj 加 5~6 位数字,例如 sz000001
name自定义名称;不填时使用行情接口返回的名称
quantity持仓数量,必须大于 0
costPrice成本价,必须大于 0
refreshSeconds行情刷新间隔,支持 1~3600 秒,默认 5 秒

文件保存后,插件会自动重新读取。页面可见时按设置的间隔刷新行情,页面不可见时会暂停行情请求。

数据和计算范围

  • 行情来自腾讯公开行情接口,网络异常时会保留上一组成功数据。
  • 涨跌颜色按 A 股习惯显示:红色上涨,绿色下跌。
  • 盈亏按“现价 - 成本价”乘以数量计算。
  • 当前版本没有计入手续费、印花税、分红和融资成本。
  • 这是本机观察工具,不构成投资建议,也不会执行买卖操作。

常见问题

左下角没有 📈 按钮

确认三点:

  1. 已通过 dsh plugin --profile web add ... 安装插件。
  2. cordis.patch.yml 中存在 id: stock-watch 的注册项。
  3. 已完全重启 DSH Web,而不是只刷新浏览器页面。

显示“暂无持仓”

检查:

  • 文件名是否为 holdings.json
  • 文件是否放在 DSH workspace 根目录。
  • 是否设置了 DSH_STOCK_HOLDINGS,且路径确实存在。
  • JSON 是否能正常解析,代码是否带 shszbj 前缀。

如何避免误提交真实持仓

真实文件名请使用 holdings.json,仓库已通过 .gitignore 忽略它。提交前仍建议检查:

git status --short
git diff --cached

确认提交内容中只有 holdings.example.json,没有自己的股票代码、数量和成本价。

开发检查

npm run check
npm pack --dry-run

npm pack --dry-run 应只显示插件代码、README、示例数据、许可证和 package.json,不应包含真实持仓文件或 node_modules

插件结构

stock-watch/
├─ lib/index.js          # DSH Host 侧:读取并筛选本地持仓文件
├─ lib/client.js         # DSH Client 侧:左下角按钮和观察面板
├─ holdings.example.json # 假数据示例,公开安全
├─ package.json          # npm 与 DSH 插件清单
├─ LICENSE
└─ README.md

许可证

MIT License,详见 LICENSE

Repository information

Language
JavaScript
License
MIT
Last updated
Aug 17, 2026, 8:47 AM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.