dsh-trade-chart
Verified@ikonon/dsh-trade-chart · v0.1.1 · MIT · Web UI
在对话中直接渲染交易图表:trade_chart 工具 + 内联 SVG 图表卡片(K线/折线/柱状/面积,含成交量副图、MA 均线、波段与自由标注、滚轮缩放平移),数据来自行情技能(longbridge / hithink)。
Install
dsh plugin add @ikonon/dsh-trade-chart Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Published to npm without a public repository. Inspect the package contents before installing.
Tags
Creators
Readme
dsh-trade-chart
DeepSeek Harness 交易图表插件:模型调用 trade_chart 工具后,K线/折线/柱状/面积图直接渲染在对话流中——波段自动标注、自由标注、滚轮缩放、上下左右自由拖动。
纯自绘 SVG,零外部依赖(不加载 CDN、不引入图表库),数据来自会话中的行情技能(longbridge / hithink 等)。
功能
| 能力 | 说明 |
|---|---|
| K线图 | 蜡烛图(红涨绿跌)+ 成交量副图 + MA5/10/20 均线(可自定义周期) |
| 折线/柱状/面积 | 多序列对比、图例、悬浮提示、缩放 |
| 波段自动标注 | pivots: true 自动检测局部极值(红三角=高点 / 绿三角=低点 + 价格标签) |
| 自由标注 | annotations:pivot / hline / trendline / arrow / rect / note,支持自定义颜色/标签 |
| 鼠标缩放 | 滚轮缩放(以鼠标位置为锚点),缩放后 y 轴锁定显示范围(不再跳动) |
| 自由拖动 | ⌖ 模式按住拖动:左右=时间平移,上下=价格区间平移(缩放后可上下查看);双击或 ⟲ 复位 |
| 均线正确性 | MA 基于全量数据计算,缩放/平移后按索引映射,窗口边缘不缺历史 |
| 大数据量 | >800 根自动聚合显示(保形);>5000 根拒绝并提示改用大周期 |
安装
方式一:本地克隆(开发/尝鲜,推荐)
git clone https://github.com/ikomom/dsh-trade-chart.git
dsh plugin --profile web add link:D:/path/to/dsh-trade-chart
方式二:直接从 git 安装(无构建步骤,lib/ 已提交)
dsh plugin --profile web add git+https://github.com/ikomom/dsh-trade-chart.git
方式三:npm 安装(发布后可用)
dsh plugin --profile web add @ikonon/dsh-trade-chart
dsh plugin会把声明了dsh.bundle的依赖自动写进 profile 的 bundles 列表。
内部依赖:宿主端依赖 @deepseek-ai/dsh-tools,仅在 peerDependencies 声明,由 DSH 宿主组合提供;本地开发时该包以 junction 链接到 DSH 部署目录的 node_modules/@deepseek-ai/dsh-tools。
⚠️ 插件红线:
@deepseek-ai/dsh-*核心包禁止放进dependencies——否则 pnpm 会在宿主 profile 装出第二份 DSH 核心,导致既有会话全部无法恢复(曾发生,见 issue #1)。scripts/verify.mjs已内置该检查,推送前自动拦截。
验证与生效
node scripts/verify.mjs # 语法 + 宿主冒烟 + 客户端渲染冒烟 + 真实启动冒烟
dsh --profile web --dump-config | grep trade-chart
看到 trade-chart 行即挂载成功。重启 dsh 的 web 进程并刷新页面生效。
Windows PowerShell 下把
grep换成Select-String。
卸载
dsh plugin --profile web remove @ikonon/dsh-trade-chart
使用
在对话中直接说,例如:
- 「画一下贵州茅台的日K,标出波段高低点」
- 「在 07/19 的高点画一条趋势线到 07/26 的低点,标注压力位」
- 「对比 XX 和 YY 的收盘价走势」
- 「把最近 3 年的周线画出来」
图表卡片交互
- 滚轮:缩放(以鼠标位置为锚点);缩放后 Y 轴锁定,不再因窗口变化跳动
- ⌖ 查看模式拖动:左右平移时间、上下平移价格区间(缩放后)
- 双击 / ⟲ 按钮:复位视图(恢复全览与 Y 轴自适应)
trade_chart 工具参数
{
"chart": {
"type": "kline", // kline | line | bar | area
"title": "贵州茅台 日K",
"symbol": "600519.SH",
"period": "日K",
"unit": "元",
"ma": [5, 10, 20], // K线均线周期;传 [] 不画均线
"kline": [ // type=kline 时必填(OHLCV,按时间升序)
{ "time": "2026-07-19T16:00:00Z", "open": 1270, "high": 1329, "low": 1266, "close": 1327.5, "volume": 106151 }
],
"pivots": true, // K线:自动标注波段高低点
"pivotLookback": 3, // 波段检测窗口(左右各 N 根,2-30,默认 3)
"annotations": [ // K线:自由标注
{ "type": "pivot", "kind": "high", "time": "2026-07-19T16:00:00Z", "price": 1329, "label": "前高" },
{ "type": "hline", "price": 1400, "label": "整数关口" },
{ "type": "trendline", "from": { "time": "2026-02-23T16:00:00Z", "price": 1524 }, "to": { "time": "2026-04-15T16:00:00Z", "price": 1477 }, "label": "下降压力线" },
{ "type": "arrow", "from": { "i": 0, "price": 1151 }, "to": { "i": 59, "price": 1362 } },
{ "type": "rect", "from": { "time": "2026-03-22T16:00:00Z", "price": 1400 }, "to": { "time": "2026-04-22T16:00:00Z", "price": 1420 }, "label": "横盘区" },
{ "type": "note", "time": "2026-07-19T16:00:00Z", "price": 1327.5, "text": "放量突破" }
]
}
}
标注定位:time(须与 kline 数据中的 time 一致)或 i(K线下标,0 起)二选一;所有类型可选 color(hex)覆盖默认颜色。
数据量:单次建议 ≤800 根(直接渲染);800–5000 根自动聚合显示;超过 5000 根被拒绝。长时间范围请用周K/月K 或截取区间,避免占用过多模型上下文。
开发
node scripts/verify.mjs # 推送前验证:语法 + 宿主冒烟 + 客户端渲染冒烟 + 真实启动冒烟
仓库已配置 pre-push hook:推送前自动运行 verify.mjs,任一环节失败会阻止推送。
目录结构
dsh-trade-chart/
├── lib/
│ ├── index.js # 宿主端:trade_chart 工具注册、参数校验、波段检测、摘要
│ └── client.js # 客户端:SVG 图表卡片(渲染/标注/缩放/自由拖动)
├── scripts/
│ └── verify.mjs # 推送前验证脚本
├── cordis.patch.yml # profile 组合补丁(挂载插件行)
└── package.json
License
MIT