🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

交易图表控制台 godzillacode0000/tradersagent-plugin-dsh

DeepSeek Harness
godzillacode000033 天前有提交已提供中文文档扫描:未发现敏感能力

在对话旁打开K线图并让智能体直接读写指标

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add godzillacode0000/tradersagent-plugin-dsh
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么[目录]—
dsh 原生插件 · market
暂无时间戳·判据 →
装得上吗[实装验证]!
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
数据截至 2026/11/04·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 33 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

⚠︎ 实装验证未通过(unknown · 2026/11/4) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 6 处,展示前 6 条)
  • 发起网络请求
    console/frontend/app.js:403
    const res = await fetch(url);
  • 发起网络请求
    console/frontend/app.js:711
    const res = await fetch(`/api/bars?symbol=${encodeURIComponent(symbol)}&interval=${encodeURIComponent(interval)}&limit=500`);
  • 写入剪贴板
    console/frontend/app.js:1372
    await navigator.clipboard.writeText(source);
  • 发起网络请求
    console/frontend/chart-bridge.js:59
    const res = await fetch('/api/session', { cache: 'no-store' });
  • 发起网络请求
    console/frontend/chart-bridge.js:74
    const res = await fetch(path, body
  • 发起网络请求
    plugin/plugin.js:236
    const res = await fetch(CONSOLE_ORIGIN + 'api/chart/state', { cache: 'no-store' })
扫描于 2026/11/4(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 打开K线图
  • 智能体读写指标

面向 DeepSeek Harness 的交易智能体——把 Vela/LuxAlgo 图表控制台做成可安装的 DSH 插件包(mcp__traders-chart__* 工具)

README

由 DeepSeek 最新模型翻译生成
Hermes Desktop 插件,打开一个图表优先的交易控制台:Vela 渲染的 K 线,上面叠加 LuxAlgo Library。 这是 Trader's Agent 插件的 DeepSeek Harness 分支(tradersagent-plugin-dsh)。 Hermes Desktop 原版在 godzillacode0000/tradersagent-plugin;本分支保留同一个控制台,并加上 DSH 打包 —— 跳到下方 DeepSeek Harness。 侧边栏入口,把完整交易控制台停靠在你的对话旁边:Vela 渲染的 K 线,加上 LuxAlgo Library(800+ 概念与指标,由 LuxAlgo 自家 MCP 服务器实时提供),都在同一个本地 Web 应用里 —— 你的聊天会话原地不动。 - 图表优先是设计原则。 Vela 占满整个面板。Library 和条目详情面板是顶栏上的两个小开关,永远不会变成常驻列。 - 全部本地运行。 一个 Python 进程跑在 127.0.0.1:8787,代理 LuxAlgo 的 MCP 服务器,同时提供前端。不要账号,不要密钥,不要遥测。
展开完整文档(README 剩余 1 节)
Hermes Desktop 插件,打开一个图表优先的交易控制台:Vela 渲染的 K 线,上面叠加 LuxAlgo Library。

这是 Trader's Agent 插件的 DeepSeek Harness 分支(tradersagent-plugin-dsh)。
Hermes Desktop 原版在 godzillacode0000/tradersagent-plugin;本分支保留同一个控制台,并加上 DSH 打包 —— 跳到下方 DeepSeek Harness。

侧边栏入口,把完整交易控制台停靠在你的对话旁边:Vela 渲染的 K 线,加上 LuxAlgo Library(800+ 概念与指标,由 LuxAlgo 自家 MCP 服务器实时提供),都在同一个本地 Web 应用里 —— 你的聊天会话原地不动。

- 图表优先是设计原则。 Vela 占满整个面板。Library 和条目详情面板是顶栏上的两个小开关,永远不会变成常驻列。
- 全部本地运行。 一个 Python 进程跑在 127.0.0.1:8787,代理 LuxAlgo 的 MCP 服务器,同时提供前端。不要账号,不要密钥,不要遥测。图表引擎(Vela,Apache-2.0)和 Pine 运行时(pinets,AGPL-3.0 —— 打过补丁的构建)都内置在 console/frontend/vendor/ 下,从本机提供;运行时不会去拉取任何引擎代码(行情 K 线来自 Binance,Library 脚本来自 LuxAlgo 的 MCP —— 两者按设计走网络,控制台会说明是哪个服务商应答的)。补丁及其发布链路:THIRD-PARTY.md 和 console/frontend/vendor/pinets/PROVENANCE.md。
- 智能体可以驱动图表。 console/bin/trader-chart 读取图表当前显示的内容,并通过一个小型文件桥把指标脚本放上去,所以你直接给智能体写提示词,不用到处点鼠标。console/bin/library-indicator 按名称拉取指标的 Pine 源码。

非官方。 本项目与 LuxAlgo 无关联,未获其认可或赞助。它以描述性方式使用 LuxAlgo 名称(「兼容 LuxAlgo MCP」),不附带任何 LuxAlgo 标志。各部分的许可证与署名要求见 THIRD-PARTY.md。

DeepSeek Harness

同一个控制台也能跑在 DeepSeek Harness 下同样地,Hermes 面板之外,还有一个可安装的 DSH bundle(dsh/),它把控制台的 MCP 服务器挂载到配置档里,模型就能拿到整套图表工具,名字是 mcp__traders-chart__<tool>:

./install.sh --dsh # MCP runtime + launcher + desk skill + bundle registration
dsh web # restart once so the profile recomposes

然后直接跟它说话就行——「图表上有什么?」、「切到 SOLUSDT 1h」、「给它加条 EMA」、「截个图」——它会自己去调工具。完整对照表(哪些端口没变、为什么用 MCP 而不是原生工具、哪些是故意还没移植的)在 docs/DSH.md;bundle 自己的说明在 dsh/README.md。

环境要求

| Hermes Desktop | v0.21.3 或更新(插件用到 sidebar.nav + routes 贡献区) |
| Python | 3.11+,并装好 mcp 客户端:pip install mcp(用 venv 也行——把 PY= 指向它) |
| 网络 | 用于 LuxAlgo 的 MCP 端点和 Binance 数据源;服务商连不上时,图表会退回合成 K 线。图表引擎和 Pine 运行时在本地提供 |
| 预览缩放器 (可选) | libvips(或 ImageMagick,或 ffmpeg)——见目录预览。一个都没有时,控制台照样显示所有预览,只是按目录的原始尺寸 |
| 操作系统 | Linux——在 Omarchy(Arch + Hyprland)上构建并验证。macOS 和 Windows 不在范围内。 |

安装

git clone https://github.com/godzillacode0000/tradersagent-plugin-dsh
cd tradersagent-plugin-dsh

./console/start.sh # terminal 1 — the console on http://127.0.0.1:8787/ ./install.sh # the plugin -> ~/.hermes/desktop-plugins/traders-desk/ and the desk skill -> ~/.hermes/skills/trading/trader-desk/

然后在 Hermes Desktop 里:

1. Ctrl+K → Reload desktop plugins
2. Capabilities → Plugins → 启用 Trader's Agent
3. 点左侧边栏的 Trader's Agent——图表就停靠在对话旁边

第 2 步不是可选项,而且恰恰是最容易被跳过的一步。 Hermes Desktop 默认把每个桌面插件都禁用:装好的插件只会被登记,不贡献任何东西——没有侧边栏条目,没有面板,也不报错——直到你把它打开。启用与否是应用自己存的决定,所以 install.sh --doctor 看不到它。想直接问:

./bin/is-enabled.sh # files ok? decision on/off? what to do about it

如果面板已启用却还是没停靠,那是另一回事,属于应用侧的交互——两种失败模式并排对比见 docs/INSTALL-ENABLE.md。

浏览器构建产物已提交在 console/frontend/vendor/ 下——控制台从那里加载它们。./install.sh --vendor 会按锁定的 CDN 版本刷新这些文件(许可说明见 THIRD-PARTY.md)。

验证是否成功

curl -s localhost:8787/api/health # {"ok": true, "data": {"status": "ok", ...}}
node tools/verify-plugin.mjs plugin/plugin.js # OK — 7 contributions
console/bin/trader-chart state # symbol, timeframe, price, bars, indicators on

然后在应用里:左侧边栏有 Trader's Agent 这一行,控制台框架显示带 ▲ 标记的 Vela 柱,状态栏的小标签显示 Trader's Agent。如果框架一片空白,说明控制台进程没在跑——重新启动它。

把控制台当作服务运行(可选)

~/.config/systemd/user/traders-agent.service
[Unit]
Description=Trader's Agent console (LuxAlgo MCP proxy + Vela chart)
After=network-online.target

[Service]
ExecStart=%h/tradersagent-plugin/console/start.sh
Restart=always
WorkingDirectory=%h/tradersagent-plugin

[Install]
WantedBy=default.target

systemctl --user enable --now traders-agent.service

用法

| 位置 | 作用 |
| 左侧边栏 → Trader's Agent | 在聊天旁边展开图表窗格,然后把你送回原来的聊天——会话不会切换 |
| 状态栏 → Trader's Agent 小标签 | 同上,在应用任何位置都能用 |
| Ctrl+K → Trading: open Trader's Agent | 同上,从命令面板打开 |
| Ctrl+K → Trading: toggle chart reveal on launch | 让控制台不要在应用启动时自动打开 |
| 顶栏 → ☰ Library | Library 面板:搜索 800+ 概念和指标 |
| 顶栏 → ▤ Details | 选中项:说明文字、完整 Pine 源码、许可证徽章、Run PineTS |
| 图表顶栏 → Layout | Vela 自带的网格选择器——预设和自定义 g<cols>x<rows> 网格。控制台启动时是 2h(两个并排);同一个入口是 chart_set_layout / trader-chart layout |
| 图表顶栏 → ⌗ Indicators | 一个界面管两半:Favourites(你自己标的 ☆)、BUILT-INS(Vela 针对该市场的原生指标,从框架实时读取)和 LIBRARY(806 行的 LuxAlgo 目录)。每张 LIBRARY 卡片的名字上方都带着目录自带的图表预览——Details 窗格会全尺寸显示——所以「应用上去长什么样?」在运行任何东西之前就有答案。LIBRARY 进来时按家族分组(SMC / ICT 74、Trend 108、Volume & Flow 96……),左侧有一条导轨在各家族间跳转,每个家族展开后是自己的簇(「Moving-average lineage」「Candlestick catalog」);每张卡片都有一个 Reading 按钮,就地展开这个指标是什么、怎么读。把你常用的标星;点击内置指标会挂载它,点击 Library 行会打开 Details 窗格,里面有它的 Run PineTS / Add to chart。同一个入口是 chart_indicators / trader-chart indicators(--family trend --reading mlma --fold trend:on) |
| 图表顶栏 → ⛶ 全屏 | 让图表占满整个窗格——也占满整个屏幕:控制台的外框、面板和状态栏统统让位,页面向浏览器请求全屏。按 Esc(或浮动 ✕,或同一个按钮)即可返回。停靠在 Vela 自己的工具栏行上,紧挨 <> Script 和 ☰ catalogue;入口是 chart_fullscreen / trader-chart fullscreen [--off] |
| 图表自己的底栏 | Vela 的区间按钮、时区时钟和设置(不是我们的) |

图表就在对话旁边

图表是停靠在对话右侧的窗格(traders-desk:chart,620px,你不主动要就不展开——你说了算,9 月 19 日:它不随应用启动而打开),所以应用自己的输入框留在左边,图表在右边阅读——拖动分隔条重新分配宽度,或用应用自己的控件折叠窗格。点击侧边栏那一行会重新打开它(host.revealPane,应用为「发生了明确的用户操作」预留的入口),并且不会动你的会话:以前每次点击都会跳到专门的 desk 聊天,把你从手头的事情里拽出来。任何会话都能通过工具驱动图表——窗格是图表,不是对话。

那段聊天就是「连得上、看得见、读得懂」的部分,而且不需要专门的输入框:下面的工具通过控制台的推送通道应答,所以往返都在本地。

Run PineTS 用内置的、打过补丁的 Pine 运行时,在图表实时 K 线上执行脚本,并把它画成原生序列;脚本用到运行时不接受的东西时(import 就是其中之一),它会直接说明。Add to chart 询问 Vela 自己的 Pine 引擎,这里就是工作区的 PineEngine——同样构建在那个打过补丁的运行时之上。(vela-pinets 的 PineWorkerEngine 会运行它自己那份内联在 vela-pinets 里的副本,不带补丁;因此控制台不用它。)应用会如实报告实际发生了什么,而不是假装。(重脚本可以改用控制台 URL 上的 ?engine=worker,或 localStorage luxalgo-web:pine-engine = worker,跑在页面主线程之外——代价是运行 vela-pinets 那份副本,它不带补丁。)

让你的智能体驱动图表

两种接入方式,底层共用同一条路径。首选:MCP 服务器——Hermes(或任何 MCP 客户端)把图表当作真正的工具来用:

hermes mcp add traders-chart --command "$HOME/.hermes/bin/uvx" \
--args fastmcp run "$PWD/console/mcp/server.py" # run this from the repo root
hermes mcp test traders-chart # start a new session afterwards

| 工具 | 作用 |
| chart_views | 有视图挂上来可以推送吗?(0 = 控制台没打开) |
| chart_caps | 挂上来的页面实际会执行什么——画之前先读它 |
| chart_natives | Vela 能从自己这边往这张图表上放什么(这个市场的内置项) |
| chart_studies | 图上所有内容,每一行都标出是哪个读取器看到的 —— 在宣布图表干净之前先问这个 |
| chart_state | 交易品种、时间周期、最新价格、K 线数量、图上指标 |
| chart_shot | 图表的一张 PNG(以图片形式返回,同时给出路径) |
| chart_apply_pine | 在图表实时 K 线上运行 Pine,并绘制对应的原生指标 |
| chart_add_indicator | 添加 Vela 原生指标(ema、supertrend、donchian-channels……) |
| chart_remove_indicator | 把指标从图上移除 —— 按名称移除一个,或用 all 移除全部研究(报告图表移除前后的列表) |
| chart_set_market | 切换交易品种 / 时间周期 |
| chart_set_layout | 读取或设置工作区网格 —— 1、2h、2v、4、8,或 g<cols>x<rows>(不带参数则读取) |
| chart_indicators | Indicators 界面 —— 分区 favorites/builtins/library,q 对应搜索框,family 打开目录中的某一组,reading SLUG 展开卡片的解读,fold FAMILY[:on] 折叠一组,star/unstar KIND:ID,mount 挂载内置指标;返回它绘制的行、画出的分组,以及保持展开的解读 |
| chart_fullscreen | 让图表占满整个窗格 / 整个屏幕(on=False 则恢复)—— 隐藏控制台外框,并向浏览器请求全屏;返回结果会说明是占用了整个显示器,还是只占用了页面 |
| chart_reload | 重新挂载每个已连接的控制台(加载新的前端文件) |
| chart_palette | 图表当前使用的配色(try_apply 会断言控制台主题) |
| chart_theme | 读取或设置控制台主题 —— light / dark(不带参数则报告当前所用);控制台配色、Vela 外框和图表自身颜色一起变化,选择在重新加载后依然保留 |
| chart_browse | 在窗格中打开 Library 概念列表(可选 family) |
| chart_draw | 运行 Pine,并在图表叠加层上绘制它构建的方框/线条/标签 |
| chart_clear | 清除叠加层和绘制层添加的指标(然后报告剩余内容) |
| chart_batch | 在一次调用中按顺序执行多个图表操作([{"action": "market", …}, …]),除非另有说明,否则遇到第一个失败就停止 |
| chart_snapshot | 把图表的交易品种 + 指标记为还原点 |
| chart_undo | 把图表还原到该还原点,并报告图表自身的前后列表 |
| chart_watch | 观察一段时间,返回差异(发生了什么变化),而不是又一份快照 |
| chart_alert | 等待价格变动(按 move_pct,或任意变动)并报告这次变动 |
| library_search | 搜索 LuxAlgo Library |
| library_indicator | 某个指标的解读、许可证和 Pine 源码 |
| library_list | 用筛选和分页浏览指标(family、text、concept、tier、sort、page) |
| library_taxonomy | Library 自身的分组或概念 —— 筛选前先读,这样名称才是 Library 里的名称 |
| library_concept | 按 slug 查一个概念:它是什么意思,哪些指标实现了它 |
| library_source | 按精确 slug 取 Pine 源码 —— 不做名称解析,就不会解析错 |
| edge_presets | LuxAlgo 实测的 edge 预设及其分类 |
| edge_report | 某个预设、某个品种上的实测 edge |
| edge_symbols | edge 报告覆盖了哪些品种 |
| propfirms | 自营交易公司目录,可加筛选条件 |
| bt_run | 跑一次 vectorbt 均线交叉回测;返回指标 |
| bt_optimize | 一次性扫描多组均线参数,按收益排名 |
| bt_status | 读取已保存的回测结果(run_id 或最新一条) |
| bt_data_list | 列出操作者本地的 OHLC 文件 |
| propfirm_offers | 来自 LuxAlgo 自家追踪器的当前自营公司优惠 |

在 shell 里也是同一套接口:trader-chart remove MACD | --all、add ema、apply file.pine、 draw file.pine、shot、market SYMBOL TF、layout 2h、layout(读取网格)、state。这些命令里哪些在当前 Vela 构建中真能画出来,哪些调用会干净返回却什么也不做 —— 都记在 docs/vela-chart-api-notes.md 里,是在运行中的应用上实测出来的。

每个工具都带 MCP 注解(title、readOnlyHint、destructiveHint、openWorldHint),会改状态的工具返回的是调用之后图表长什么样 —— 请求被回显不等于面板画出来了。失败会以错误码加说明文字的形式返回
(NOT_RUNNABLE[while]、RUNTIME_CRASH[pinets-get_v]、TOO_FEW_BARS、ENGINE_UNAVAILABLE、TIMEOUT),
调用方可以直接分支处理,不用拿正则去匹配一句话。

或者用命令行,如果你更想 shell 出去:

console/bin/trader-chart state # symbol, timeframe, price, bars, indicators on
console/bin/trader-chart shot --out /tmp/chart.png # capture the chart for vision
console/bin/trader-chart apply script.pine # run Pine over the chart's bars and paint it
console/bin/library-indicator "killzone" # fetch an indicator's Pine source

两条路径都走控制台的推送通道(Server-Sent Events):图表页面保持一条长连接,所以命令几十毫秒就能落地,不用等轮询周期 —— 实测 add / market / apply 在链路上是 37-156 ms,截图约 65-80 ms,而旧的 2 秒轮询要等约 1.0 s。轮询仍然开着当兜底(流健康时每 15 s 一次,断了就 2 s 一次),文件桥也没动,所以旧版视图照样能用。文件桥仍然不是无头渲染器:没有视图挂上去时,命令会快速失败并说明原因。

截图

| in Hermes Desktop | chart-first |
| 在 Hermes Desktop 中 —— 侧边栏那一行把图表停在聊天旁边 | 图表优先 —— Vela 占满整个面板;其他面板按需开启 |
| Library open | detail panel |
| Library open — search across the LuxAlgo Library | Detail panel — write-up, licence badge, Run PineTS / Add to chart |

这些截图里的 Library 文本和 Pine 源码都归 LuxAlgo 所有 —— Source: LuxAlgo Library。

更新 / 卸载

cd tradersagent-plugin && git pull # update
./install.sh # redeploy the plugin (hot-reloads in ~3 s)
systemctl --user restart traders-agent.service # only if you run the console as a service

卸载:在 Hermes Desktop 里删掉 ~/.hermes/desktop-plugins/traders-desk/(Capabilities → Plugins),再移除控制台的服务(systemctl --user disable --now traders-agent.service)。仓库之外没有写入任何东西;console/agents/ 存放运行时状态,可以删掉。

仓库结构

plugin/ the Hermes Desktop plugin: plugin.js + its harness expectations
console/frontend/ the web app: Vela chart, Library panel, detail panel, PineTS paint layer
console/backend/ one stdlib HTTP server proxying LuxAlgo's MCP + the chart bridge + the push channel
console/mcp/ trader-chart-mcp — the chart as MCP tools (stdio, FastMCP) console/bin/ agent-side CLIs (trader-chart, library-indicator) tools/ verify-plugin.mjs — runs a plugin in Node against SDK stubs (used by CI) tools/ verify-plugin-hook.mjs — the resolve hook it registers; only the three allowed specifiers resolve tools/ verify-plugin-selftest.mjs — crafted-copy battery for the import gate (evasions fail, lookalikes pass) install.sh installs the plugin into $HERMES_HOME/desktop-plugins/

配置

| Env | Default | Meaning |
| PY | python3 | console/start.sh 用的解释器(必须带 mcp) |
| PORT | 8787 | 控制台端口 —— 插件的 frame 指向 http://127.0.0.1:8787/ |
| LUXALGO_AGENTS_DIR | console/agents | 运行时状态:chart bridge 文件、study 线程、截图 |
| HERMES_CLI | hermes on PATH | 应用内 study bridge 调用的命令行 |
| LUXALGO_CHART_INLINE_WAIT | 8 | 命令保持请求打开、等待图表推送答案的秒数 |
| TRADERS_AGENT_THUMB_WARM | 1 | 设为 0 可关闭启动时在后台预热目录预览图 |
| TRADERS_AGENT_THUMB_WARM_PAGES | 0 (all) | 预热多少页目录;按流量计费的网络请设小一点 |
| TRADERS_AGENT_THUMBS | ~/.local/share/traders-agent/thumbs | 缩略预览图的存放位置 |
| --mcp-url | https://mcp.luxalgo.com/mcp | 指向另一个(或本地)MCP 服务器 |

目录预览图留在你自己的机器上

Indicators 弹窗给每张卡片配一张图表预览,和 LuxAlgo 自家 library 的展示方式一样。这些图是 LuxAlgo S3 上的 1600×1000 PNG(每张约 29 KB),一张一张去取很慢 ——家庭网络下每张约 1–2 秒,而浏览器对每个主机只开六个连接,所以六十张卡片过去要眼睁睁看着它慢慢填。因此控制台只抓取每张图一次,缩到实际绘制的宽度(卡片 480 px,Details 面板 960 px),再从 http://127.0.0.1:8787/api/library/thumb 提供:热态约 5 ms,而不是约 2 s。

- 每台机器各留一份副本。 全新安装会在首次启动时于后台预热整个目录(806 行,约 5 MB)——慢速链路上要几分钟,期间你察觉不到——之后每次启动都发现文件已经在了。各次安装之间不共享任何东西,也不会重复下载。
- 缩放器是命令行工具,不是 Python 包:优先 vips,其次 ImageMagick,再次 ffmpeg。一个都没装时,控制台直接提供目录里的原始 PNG——更大,和上游一样慢,但绝不会出现破图或空白格。
- 替换过的图片永远不会过期:缓存键带上源 URL 的标签,响应是 immutable,所以新图就是新文件。
- curl localhost:8787/api/library/thumbs 会报告缓存了什么、预热器在做什么。TRADERS_AGENT_THUMB_WARM=0 完全关闭预热。

限制

- Pine 运行时只是 Pine 的子集。 import 直接拒绝;while 和 for…in 可以跑。更重的东西只能在 TradingView 自己的 Pine 引擎里运行。
- 「Add to chart」是实验性的。 它把脚本交给 Vela 的 Pine 引擎;有些脚本什么都画不出来。Run PineTS 才是可靠路径。
- 桥接不是无头渲染器。 trader-chart 和 MCP 工具只在图表视图挂载时生效(Hermes 面板或浏览器标签页);一个都没挂时它们会快速失败并报「no chart view attached」,而不是卡住。命令是推送式的,所以视图几十毫秒内就应答。
- 每台机器一个控制台,占一个端口。不下单、不登录账户、不持仓——只有只读行情数据加渲染。
- Library 是非商业的。 内容采用 CC BY-NC-SA 4.0——在这里阅读和引用没问题,转售或塞进付费产品里不行。
- 只支持 Linux,这是有意为之。 在 Omarchy(Arch + Hyprland)配 Hermes Desktop 上构建并验证。macOS 和 Windows 不在范围内,不只是没测过:这里的运维方案是一个 systemd 用户单元加一个 shell 脚本,而这张工作台为之打造的机器,正是运行它的那台。

开发

node tools/verify-plugin.mjs plugin/plugin.js # plugin harness (same check CI runs)
python3 -m unittest discover -s console/backend/tests -t console/backend/tests -v # the unit suite (no dependencies)
uv run --with fastmcp python -m unittest discover \
-s console/backend/tests -t console/backend/tests -p 'test_mcp_server.py' -v # the MCP tool layer
python3 console/backend/server.py --port 8899 --no-mcp # 不带 MCP 后端的控制台
python3 -m compileall console/backend # 语法检查

测试套件刻意只用标准库——研究存储、聊天桥、图表桥和推送通道都有覆盖,不需要浏览器、网络或应用本身;MCP 工具层则跑在一个桩控制台上。约 350 个测试;缺少 fastmcp 时,MCP 相关测试会自动跳过(CI 里设置了 TRADER_CHART_REQUIRE_MCP=1,所以它们不会在那边悄悄跳过)。

CI(.github/workflows/ci.yml)有三个 job:插件测试台(Node 20——先跑真实插件,再跑精心构造的副本测试集 verify-plugin-selftest.mjs)、后端(编译、启动,以及在 Python 3.11 上跑一次 /api/health 冒烟测试)、单元测试套件(MCP 那一步会安装 fastmcp)。改动时的工作流:改仓库,跑 ./install.sh 部署;plugin.js 变化后约 3 秒,应用会重新注册插件。只改控制台的部分需要重新挂载框架(切换会话再切回来)。

故障排查

- 侧边栏那一行点了没反应 / 面板显示旧布局。 框架保留的是它加载时的副本。切到另一个会话再切回来,或者重启应用。
- start.sh: 'python3' has no 'mcp' client。 执行 pip install mcp,或者 PY=/path/to/venv/bin/python ./console/start.sh。
- 插件一直不出现在 Capabilities → Plugins 里。 按 Ctrl+K → Reload desktop plugins;如果还是不显示,说明加载失败后文件夹被丢弃了——把 ~/.hermes/desktop-plugins/traders-desk 改名,并把 plugin.js 里的 id: 设成同样的新名字。
- 图表是空的,日志显示 provider: synthetic。 Binance 的数据服务商连不上;图表仍会渲染确定性的 K 线,所以页面不会一片空白。
- 端口 8787 被占用。 执行 PORT=9000 ./console/start.sh,然后把插件的 CONSOLE_ORIGIN 指向它。

许可与致谢

本项目自己的代码是 MIT(许可徽章就是这个意思——合并分发时,凡是重新分发了 PineTS 的部分按 AGPL 处理;见 THIRD-PARTY.md)——见 LICENSE。它建立在 LuxAlgo 的工作之上:Vela(Apache-2.0,有自己的署名要求——图表上的 ▲ 标记要保留)、vela-pinets 和 pinets(AGPL-3.0;pinets 在这里以打过补丁的构建形式内置,补丁发布在 fork 上,vela-pinets 则原样内置)、LuxAlgo MCP server(MIT,@luxalgo/mcp)以及 LuxAlgo Library(免费使用,需署名——Source: LuxAlgo Library — luxalgo.com/library/…)。完整细节、引用和链接见 THIRD-PARTY.md。

图表不构成财务建议;Library 是百科全书,不是信号服务。

已知的 Hermes Desktop 交互问题:折叠的面板可能一直隐藏

用 defaultCollapsed: true 贡献的面板会被并入一个布局组,该布局组带有 "minimized": true(持久化在 hermes.desktop.layoutTree.v2 下)。在 Hermes Desktop 0.17.0 上,
revealPane() —— 文档里给显式用户操作用的调用 —— 会显示窗格及其区域,
但不会清除那个分组标志,所以布局重置之后,侧边栏那一行可能落下来时窗格仍是隐藏的:路由页面于是自己在主区域渲染控制台,而不是把图表停靠在聊天旁边。

2026 年 9 月 19 日在 Omarchy + Hermes Desktop 0.17.0 上实测:执行 Layouts -> Reset 之后,那一行的 revealPane 调用在 store 里留下了 {"id":"g-...","panes":["traders-desk:chart"],"minimized":true},图表作为主页面打开。清除该标志并重新加载窗口后,窗格按预期停靠在聊天旁边。

插件已经尽力处理:页面请求接管并显示,稍后再重试一次(页面挂载时应用可能还在重建树),当窗格仍不可见时,它自己在一条简短说明下渲染控制台,说明里讲清原因 —— 旁边就有 Ask again 和 Open in a browser。只有当窗格 API 存在且报告窗格隐藏时,这条说明才会出现,所以没有窗格的构建只会得到普通控制台,不会被反复打扰。

用户遇到该问题时的恢复办法:在 hermes.desktop.layoutTree.v2 里取消最小化窗格所在的分组(DevTools / 在 --remote-debugging-port 上开 CDP 会话),或者选一个会重新接管贡献窗格的布局模板,然后重新加载窗口。插件会先请求文档里写的显示调用,自己无法清除该标志 —— 渲染器的布局原子拥有那份状态。
预览分享卡片长什么样 ↓godzillacode0000/tradersagent-plugin-dsh
分享 · DeepSeek Harness Hub
godzillacode0000/tradersagent-plugin-dsh

在对话旁打开K线图并让智能体直接读写指标

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部