deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
DeepSeek Harness 行情工具插件:为 Agent 注册 market_quote / market_kline 两个只读工具,用一个数据源覆盖 A股 / 港股 / 美股 的实时行情与历史日 / 周 / 月 K 线。无需额外 API:数据来自腾讯公开行情接口(免费、免 key、免注册)。专为机器使用:只返回结构化 OHLCV 数据,依赖 DSH 通用工具卡片渲染,不附带冗余的图形界面。
使用说明(含截图与实测示例):docs/USAGE.md | 设计记录:docs/design.md
简体中文 · English
600000 / 00700 / AAPL),前缀后缀自动补齐。fetch 与 GBK TextDecoder,无第三方运行时依赖。day 区间超过 640 根(会分页、等待变长)时,先询问用户是否继续;无 UI / headless 时自动放行。qt.gtimg.cn 返回 GBK 编码、~ 分隔的字段串,按字节解码(TextDecoder('gbk'))而非按 UTF-8 字符串;只读稳定核心字段([0..53]),容忍上游字段变体与未知尾部,解析不因尾字段变化而崩。day 周期因此向后翻页(每页最旧一根的前一日作为下一页终点),最后反转成最旧在前;week / month 640 根 ≈ 12 / 53 年,单请求覆盖;总返回量硬上限 2000 根。usAAPL.OQ 之类带后缀的代码,插件先从实时报价解析出权威代码再喂给 K 线接口,用户只传裸代码 AAPL。AbortController 超时(挂死请求快速失败)并接入工具调用的取消信号;只重试临时错误(HTTP 5xx、网络失败、超时),4xx(含 429「停」信号)绝不重试;指数退避 + 全抖动(1s→2s→4s)+ 最多 3 次;分页查询只重试失败的那一页、不重跑整段;每次重试先经全局限速器排队,绝不插队、不放大 QPS。maxConcurrency(默认 3)在途请求上限,极端并发下内存与上游负载也有硬边界,每次请求用后释放。day 区间会分页(count > 640)时,经可选 ctx.userQuestions 询问用户;无 provider / 非 live root 时静默放行,不阻塞。presentCall / presentResult,复用 DSH 通用工具卡片,减少前端耦合。| 工具 | 参数 | 说明 |
|---|---|---|
market_quote |
symbol、market(cn/hk/us) |
最新价、昨收、今开、最高、最低、涨跌额、涨跌幅、成交量、报价时间、是否延迟 |
market_kline |
symbol、market、period(day/week/month)、start/end、count |
历史日 / 周 / 月 K 线(开/收/高/低/量,最旧在前);不带区间返回最近 N 根,start=end 查单日 |
market:cn = A股、hk = 港股、us = 美股。symbol 用裸代码:A股 600000 / 000001、港股 00700、美股 AAPL。day 超 640 根自动分页;总返回上限 2000 根。使用示例(Web GUI 实测):


dsh plugin add(推荐)dsh plugin add dsh-market-quote # npm
dsh plugin add github:weopenfire-git/dsh-market-quote # GitHub
复制一份 standard 预设,在 agent.cordis.yml 末尾加一行(源码经 tsx 直接加载;或先 pnpm run build 后指向 lib/index.js):
- id: dsh-market-quote
name: 'file:///D:/path/to/dsh-market-quote/src/index.ts'
新建会话选该预设,即可看到两个工具。
Web 界面新建会话时,从预设下拉选择「行情模式」(前面四个是官方内置模式)即可加载本插件:

八个 tunable(maxRetries 为次数、非负;maxConcurrency、cacheMaxSize 为正整数;其余为毫秒、正整数),经插件 config 覆盖:
| 键 | 默认 | 说明 |
|---|---|---|
quoteTtlMs |
5000 | 实时报价缓存 TTL |
klineTtlMs |
300000 | K 线缓存 TTL(5 分钟) |
minRequestIntervalMs |
500 | 请求最小间隔(≤2 QPS) |
maxRetries |
3 | 单请求最大重试次数(0 关闭重试) |
retryBaseMs |
1000 | 退避基数(1s → 2s → 4s,全抖动) |
requestTimeoutMs |
5000 | 单次尝试的 fetch 超时 |
maxConcurrency |
3 | 并发在途请求上限 |
cacheMaxSize |
1000 | 缓存条目上限(最旧淘汰) |
非法值(maxRetries 为负、maxConcurrency/cacheMaxSize 非正、其余非正整数)在插件激活时抛错。注意:requestTimeoutMs 应小于工具 timeoutMs(30s),否则工具超时会先触发。
腾讯接口单请求上限 640 根、请求间隔 ≥500ms;超大 day 区间会分页(最多 2000 根 ≈ 4 页),等待变长、请求变多、更易触发限流。插件会在会话启动时(systemPrompt)注入同样的建议:
| 需求 | 推荐用法 | 请求数 |
|---|---|---|
| 最新价 | market_quote |
1 次 |
| 短期走势(≤约 2.5 年) | market_kline period=day、count ≤ 640 |
1 次 |
| 长期走势(跨年) | market_kline period=week(单请求约 12 年)或 period=month(约 53 年) |
1 次 |
day 区间(>640 根):会分页、等待变长、请求数变多。day 区间(count > 640)会在发出前弹确认,取消后可改用 week / month。GET https://qt.gtimg.cn/q=sh600000,hk00700,usAAPL(GBK,~ 分隔)。GET https://web.ifzq.gtimg.cn/appstock/app/fqkline/get?param=<code>,day,,,<count>,qfq(JSON)。边界:A股单请求 640 行;美股历史须带交易所后缀(插件自动处理);港股 / 美股无复权;美股延迟行情。数据源为腾讯公开接口,非官方授权,生产环境建议评估付费行情源(见已知限制)。
pnpm install
pnpm run typecheck && pnpm run test && pnpm run build # test OK then push
npm pack --dry-run # 发布前检查包内容
另有免 vitest 的运行时校验 node validate.mjs(26 项断言)与真实加载冒烟 node --import tsx/esm smoke.mjs。
dsh-market-quote/
├── src/ # index.ts / tencent.ts / cache.ts / service.ts
├── tests/ # vitest 用例
├── preset/ # 示例 preset 片段
├── docs/ # design.md(设计记录)/ USAGE.md(使用说明)/ screenshots/(本机截图,未提交)
├── validate.mjs # 免 vitest 运行时校验
├── smoke.mjs # 真实工具注册表冒烟
├── tsdown.config.ts
├── tsconfig.json
├── vitest.config.ts
├── package.json
├── CHANGELOG.md
├── LICENSE
└── README.md / README.en.md
Retry-After 头做自适应退避。dsh-plugin topic(可选 deepseek-harness),被官方 topic 页收录。vX.Y.Z ↔ npm X.Y.Z)。pnpm publish(prepare 自动 build;需 2FA)。scoped 包需先建 npm org。CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。