DeepSeek Harness Hub
← 返回列表

行情监控JohnXu22786/market-watch

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

实时盯盘自选股,阈值提醒并绘制走势图

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/20 · 已提供中文文档

面向 DeepSeek Harness(dsh bundle)的金融市场监控工具:实时行情、本地自选列表、阈值提醒、定时轮询、面向 A 股股票、指数和加密货币的 ASCII/mermaid 图表。

综合分
28
GitHub 分
28
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add JohnXu22786/market-watch
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-tools
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-market-watch

English · 简体中文

基于 DeepSeek Harness(dsh)的金融行情监控插件:
实时报价、本地自选列表、阈值提醒、定时轮询,以及在会话内的 ASCII/mermaid 图表渲染,
覆盖 A 股股票/指数与加密货币——仅使用免费公共数据源。这是 dsh 生态中的首个行情/金融数据插件。

- 报价 — 股票、指数、加密货币的实时报价,免费数据源(A 股用腾讯 qt.gtimg.cn,加密货币用 CoinGecko)。
- 自选列表 — 本地持久化的自选标的(代码 / 名称 / 市场 / 类型),插件与 CLI 共用同一份数据。
- 异动提醒 — 阈值规则(changePercent / price,gt/gte/lt/lte),每次轮询时评估,带规则级冷却时间。
投递方式:类型化事件 market-watch/alert + 可选的活跃 agent 会话内注入。
- 定时轮询 — 定时器驱动的全量自选刷新(并发 tick 自动去重,对免费源限流友好)。
- 会话内图表 — ASCII 柱状图、sparkline 迷你走势、mermaid xychart-beta 代码块。
- 双入口 — 六个 dsh 工具(quote、list、watch、unwatch、alert、chart)+ 独立 CLI(dsh-market-watch),共享同一套数据。

数据源与延迟说明

| 市场 | 数据源 | 说明 |
| --- | --- | --- |
| 沪深京股票与指数 | 腾讯 qt.gtimg.cn、web.ifzq.gtimg.cn | 免费接口;报价可能有数秒至数分钟的延迟。日线对股票使用前复权(qfq),指数使用原始数据。 |
| 加密货币 | CoinGecko 公开 API | 免费档有限流(调用间通过 coingeckoDelayMs 间隔,并遵循 Retry-After);market_chart 数据按 UTC 交易日聚合 OHLC。 |

每条报价都附带数据源延迟声明(delayNote)。本插件不构成任何投资建议;请勿仅凭延迟的免费数据做交易决策。

环境要求

- Node.js ^22.19 || >=24
- dsh >=0.1.0-rc.6(web 或 headless profile)

以 bundle 方式接入 dsh

Bundle 是基于 npm 包的可安装配置层:package.json 声明 dsh.bundle.patch
(本包自带 cordis.patch.yml 与编译产物 lib/)。两种典型接入方式:

1. 本地目录接入:
pnpm build                # 或 npm run build
dsh plugin --profile web add .   # 指向本目录的路径

2. Git 安装会在安装时运行 prepare 脚本;pnpm >= 10 默认拦截构建脚本,
需在 profile 的 pnpm-workspace.yaml 中白名单放行:
allowBuilds:
dsh-market-watch: true
然后执行:
dsh plugin --profile web add github:some-owner/dsh-market-watch

因为包声明了 dsh.bundle,dsh plugin 会自动把它加入 profile 的
dsh.profile.bundles;补丁插入 market-watch 行,重启后六个工具即出现在
agent 的提示词中。

验证接入是否成功:

dsh config dump | grep market-watch   # 应能看到该行

配置项

所有配置均有默认值,bundle 行默认不带 config 段。如需调整,在 profile 的
cordis.patch.yml 中按 id 覆盖——注意补丁会整体替换该行的 config(不做深合并),
所以要保留的字段必须全部重写(参考 examples/cordis.patch.example.yml):

| 键 | 默认值 | 含义 |
| --- | --- | --- |
| enabled | true | 插件总开关。 |
| pollIntervalSeconds | 60 | 轮询周期(schema 限制 5..86400)。 |
| dataDir | $DSH_HOME/market-watch | watchlist.json 所在目录。 |
| timeoutMs | 10000 | 单次请求网络超时。 |
| maxRetries | 2 | 首次尝试之后的额外重试次数。 |
| retryBackoffBaseMs | 500 | 指数退避基数。 |
| vsCurrency | usd | 加密货币报价货币(CoinGecko id)。 |
| coingeckoDelayMs | 1200 | CoinGecko 调用最小间隔。 |
| agentNotify | true | 提醒是否投递到活跃的 dsh agent 会话。 |
| agentWakeup | false | 提醒时唤醒空闲 agent(followup)而非静默注入(inject)。 |

工具(ctx.tools)

工具注册在 ctx.tools 上,schema 会自动进入系统提示词。

| 工具 | 用途 |
| --- | --- |
| quote | 查看 codes 的最新报价,例如 ["sh600000","000001","bitcoin"];可选 days 参数为每个标的追加 sparkline(每个标的多一次历史请求)。 |
| list | 查看本地自选列表。 |
| watch | 添加自选:codes(数组),可选 market(cn/crypto)、kind(stock/index/crypto)、name。 |
| unwatch | 按代码删除一条自选。 |
| alert | 管理提醒规则:action = list \| add \| remove。add 需要 code、field(changePercent/price)、op(gt/gte/lt/lte)、value,可选 cooldownSeconds(默认 300)与 note;remove 需要 list 输出的规则 id。 |
| chart | 绘制历史走势:code,可选 days(默认 30)、format(ascii/mermaid)、width、height。 |

A 股代码支持多种写法:sh600000、600000.sh、600000.ss、裸码 600000
(按首位数字推断交易所);000001 配合 kind: index 表示上证指数。其余输入
一律按 CoinGecko id 处理(bitcoin、ethereum 等)。

工具对可预期的失败不会抛异常,而是返回 {ok:false, error},让模型可以基于
报错信息继续处理。

提醒(Alerts)

规则与自选列表存于同一文件,每次轮询时评估。比较成立且距上次触发超过冷却时间
才会触发(lastTriggeredAt 持久化)。投递通道(均为尽力而为,失败互不影响):

1. Harness 事件:ctx.emit('market-watch/alert', alert)。任何扩展都可以监听:

ctx.on('market-watch/alert', (alert) => { /* alert.message / alert.quote / alert.rule */ })

2. Agent 会话:当 ctx.agents 存在时,提醒会以插件来源的 user/message
注入每个活跃 agent——默认在下一步之前做静默上下文注入(agent.inject),
配置 agentWakeup: true 后才走完整跟进回合(followup)。

CLI

dsh-market-watch 与插件共用同一数据目录,命令行操作的就是插件轮询的同一份状态。

dsh-market-watch quote sh600000 bitcoin --days 5
dsh-market-watch watch sh600000 bitcoin --name "BTC"
dsh-market-watch list
dsh-market-watch unwatch sh600000
dsh-market-watch alert list
dsh-market-watch alert add bitcoin --field price --op gte --value 70000 --cooldown 600
dsh-market-watch chart sh600000 --days 30 --format mermaid
dsh-market-watch poll --once          # 单次轮询(适合 cron 调用)
dsh-market-watch poll --interval 300  # 持续轮询,每 5 分钟一次

全局参数:--data-dir (或环境变量 MARKET_WATCH_DATA_DIR)、--help、
--version。退出码:0 成功、1 运行错误、2 用法错误。

数据文件

/watchlist.json — JSON 文档 {version, items, rules}。写入采用原子写
(临时文件 + 重命名),所有变更通过 promise 链串行化;遇到损坏文件会隔离为
watchlist.json.corrupt- 并重新开始,而不是卡死插件。由于插件与 CLI 共用同一
文件,引擎在每次轮询/查询时都会重新读取,第二个进程写入的变更无需重启即可生效。

开发

npm install
npm run typecheck   # tsc --noEmit
npm test            # vitest(所有网络路径均用 mock)
npm run build       # tsc -> lib/
npm run check       # typecheck + test + build

目录结构:src/core/ 为纯领域层(类型、代码规范化、格式化、HTTP 客户端、JSON 存储、
图表渲染、行情源、引擎),不依赖 dsh,供 CLI 与测试复用;src/dsh/ 将其适配为
Cordis 插件(工具、轮询器、通知器、入口);src/cli/ 为独立可执行文件。

许可证

MIT — 见 LICENSE。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群