DeepSeek Harness 插件

0xRabit/dsh-crypto-portfolio

Star 数 ★ 2 分类 工具与能力 收录于 2026-08-23

自托管加密资产仪表盘:BTC、EVM(DeBank 73 条链)、Solana、狗狗币、艾达币、Hyperliquid L1、五家交易所(Binance / Bybit / Backpack / OKX / Bitget)与代币化股票统一视图;多数据源自动切换、自定义资产类别标签、可调阈值的资产健康度报告、可分享的 PNG 卡片、每个数据源独立连通性测试、多 Profile 配置、定时刷新、零依赖图表(Python 标准库 + 原生 JS,无 CDN)。

安装

# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)

dsh plugin --profile web add github:0xRabit/dsh-crypto-portfolio

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。

README

English | 中文

免费、100% 自托管的 DeepSeek Harness(DSH)插件:把链上与 CEX 资产统一到一张自包含的 Web 仪表盘上。

依赖 dsh 0.1.1-rc.2(Node ^22.19 || >=24)· Python 3.9+ · pip3 install requests pynacl

dsh plugin --profile demo add dsh-crypto-portfolio   # npm
dsh --profile demo                                    # 仪表盘 http://127.0.0.1:8080

孪生项目。 这张仪表盘是 SmartFolio Chrome 扩展的孪生项目:扩展把同一批钱包放进浏览器工具栏,而这里是跑在你自己机器上的自托管、全链视图。同一个思路,两种外壳——仪表盘是一个 DSH 插件,遵循 DSH 插件规范,因此保留自己的名字。

仪表盘:总资产、钱包占比与健康度报告

代币明细与资产趋势

网络分布

非官方项目,由社区成员独立开发和维护,与 DeepSeek 官方无关。


为什么写它 / 痛点

我写它是因为痛点是真的疼。

一、我的钱散在七个地方,想看个总数要开六个页面

EVM 资产在 DeBank、SOL 和质押在 Solana 链上、BTC 在区块浏览器、还有 Binance / Bybit / Backpack / OKX / Bitget 五个交易所各一套 App。每次想看"我到底有多少钱",都得打开 DeBank 翻几个链、再去查质押、最后挨个登录三个交易所——手一抖还容易看漏钱包。

这个插件把这些全拼到一张图上。

二、链上浏览器看不到的"隐形资产"

有些钱是真的看不见:Solana 的原生质押账户(getParsedStakeAccounts 会漏)、Hyperliquid L1 的质押 HYPE 和现货、交易所的理财/资金账户——这些都不是普通 SPL/ERC20 代币,普通工具根本读不到。

这个插件专门把它们挖出来,全部计价进总资产——包括上面的账户里质押的 12.1 SOL、Hyperliquid 上质押的约 318 枚 HYPE。

三、空气币和钓鱼代币把数字搞得虚高

DeBank 会把一堆假代币也列出来,比如 ETHG 这种价格被操纵的钓鱼币,一个账户能虚报出 57 万美元。

一键拉黑:你点掉的每一笔都会从总额、趋势、历史快照里同步剔除。

四、我想知道"上周这时候我到底有多少钱"

没有历史就没有安全感。

每次刷新自动保存当天最后一次快照(SQLite,按天去重);日子久了,就长出一条属于你自己的资产趋势线:

每日快照如何变成趋势图


它做了什么

  • 一个 DSH 插件,拉起一个零依赖的 Web 仪表盘。 没有框架、没有 CDN,Python 标准库 + 原生 JS。
  • 覆盖 BTC / EVM / Solana / 狗狗币 / 艾达币 / Hyperliquid L1 / CEX。 DeBank 全 73 条链、BTC 双地址(P2SH + P2TR)、Solana 原生质押、狗狗币(BlockCypher)、艾达币(Koios,支持 stake 地址)、Hyperliquid 官方 API(质押 HYPE + 现货 + 永续权益 + 金库权益)、五个交易所只读 key(Binance / Bybit / Backpack / OKX / Bitget,命名 <交易所>_read);OKX 同时读交易账户与资金账户,Bitget 汇总现货与真实合约账户(跳过 S 开头的模拟盘,避免把「练习钱」算进总资产)。
  • 全局筛选。 分类(BTC / EVM / Solana / 狗狗币 / 艾达币 / CEX)、钱包、网络三个下拉作用于所有面板——总额、钱包占比饼图、趋势、网络分布、代币表一起联动。
  • 每个钱包最多 5 个区块浏览器。 钱包卡片底部是一排浏览器图标:排第一的是本程序实际取数的来源(DeBank · bitaps · Jupiter · Dogechain · Cardanoscan),后面按知名度依次是 Etherscan、mempool.space、Solscan、Blockchair、CExplorer 等。狗狗币只有 3 个、艾达币只有 4 个——这两个生态确实凑不满 5 个可信浏览器。交易所账户没有链上浏览器页面,因此只显示交易所图标。
  • 免费 + 付费数据源,显著区分。 EVM 走 DeBank 双 provider:付费 debank-pro(标注「付费」,带注册链接)与免费免 key 的 debank-public 兜底;CEX 五行(Binance/Bybit/Backpack/OKX/Bitget)常驻显示并带各家「获取 API key」链接(OKX、Bitget 还需填 passphrase);每个数据源显示最近一次成功时间。
  • 多 API 源自动切换。 每个数据源配了多个 provider(价格:CoinGecko → Binance → Coinbase → OKX;BTC:blockchain.info → mempool.space;Solana RPC 多节点;Hyperliquid 双端点),挂了自动切下一个,并记住最近能用的。
  • 定时每日刷新。 每个 Profile 可设置本地时间自动刷新(服务端守护线程,关闭网页不影响);设置页显示各数据源最后成功时间。
  • 多 Profile 配置隔离。 default Profile 内置公开模板钱包(vitalik.eth、创世 BTC、公开 SOL、公开 DOGE、公开 ADA)与空 key;你的私人钱包和 key 放在独立命名的 Profile 里,拥有各自的快照历史。每个 Profile 可重命名(快照随之迁移),并各自维护独立的每日定时刷新时间。
  • 资产健康度。 代币明细表上方一个面板用三张卡片给组合打分——波动性风险(稳定币 · 比特币 · 其他,按高波动占比评级)、集中度(最大钱包占比,画成带两条阈值刻度的量尺)、托管安全(冷 · 热 · 交易所)。每一行都同时给出余额和占比,未通过的项各配一句人话建议。三条阈值都能在设置页里改(按 Profile 保存、带校验,托管安全那对是反向的),数据取自同一份已过滤黑名单的快照,因此永远和上面的总额一致。在设置里把钱包标成「冷钱包」,托管安全那项立刻跟着变(冷热以当前钱包列表为准,快照里的值只作为已删除钱包的兜底)。
  • 分享卡片。 顶栏「分享」按钮(就在「刷新」旁边)弹出对话框,实时预览一张 1200×630 的 PNG——总额、日环比、按币种合并的前五大持仓、资产类别甜甜圈、三条健康度结论。可以直接下载、复制图片、复制文案,或一键跳转 X / Facebook / WhatsApp / Telegram。全部用 canvas 手绘:不引入 html2canvas、不依赖 CDN,图片里也不含任何钱包地址。
  • 作者链接 + 打赏。 设置页底部有作者的社交链接(X / Discord / GitHub)与「请我喝杯咖啡」弹窗,内含 tip.md 徽章和币安支付二维码;徽章已本地内置,页面不会发出任何第三方请求。
  • 可链接的页面。 #pageSettings 直达设置页,#pageSettings/secWallets 直达某个设置分区——刷新或收藏后回到原处。
  • 主题与多语言。 深/浅色主题切换、中英双语(默认英文)、全站链与交易所图标。

架构长这样——每个方框都是一条真实的数据管线:

架构图

与 DSH 的集成方式

不是套壳,是真插件:

  • 声明 dsh.bundle manifest(cordis.patch.yml),dsh plugin add 直接安装。
  • apply(ctx) 接入 Cordis 生命周期:首次运行用公开模板生成用户本地的 profiles/default,以子进程拉起仪表盘,ctx.on('dispose') 时优雅停掉。
  • 除 Web UI 外还暴露 JSON API(GET /api/refresh、/api/history、/api/tokens 等),agent 可直接调用。

隐私声明(重要)

本仓库不含任何私钥、私人钱包或余额——tracker/config.py 只有 WALLETS = [] 和空 key。所有私人配置都存放在本地 git-ignored 的 profiles/ 里。你可以放心 clone、放心 review、放心跑。

安装

依赖前提

  • dsh 0.1.1-rc.2(同一预发布线内的兼容版本)与 Node ^22.19.0 || >=24.0.0 —— 即 DSH 自身声明的区间。

  • Python 3.9+,并安装两个 pip 包:

    pip3 install requests pynacl
    

    两者都是普通运行时依赖,没有随包 vendored —— 这样 pip 才能按你的平台/版本挑到正确的构建。

从 npm 安装(推荐)

装的是预构建产物,不需要任何 build 授权:

dsh plugin --profile demo add dsh-crypto-portfolio
dsh --profile demo

从 tarball 安装(离线 / 内网)

pnpm pack                                    # 生成 dsh-crypto-portfolio-0.1.0.tgz
dsh plugin --profile demo add ./dsh-crypto-portfolio-0.1.0.tgz

从 GitHub 安装

dsh plugin --profile demo add github:0xRabit/dsh-crypto-portfolio#<commit-sha>

本包是纯 JavaScript + Python,没有任何构建步骤,prepare 是空操作,因此 pnpm 不需要你给 build 脚本放行 —— 这一点比那些以 TypeScript 源码分发的插件摩擦更小。不过仍建议 pin 一个 commit SHA,避免之后的推送悄悄改变你机器上执行的代码。

启动前先验证层是否生效

dsh --profile demo --dump-config      # 应能看到: # == dsh-crypto-portfolio

看不到这一行 = bundle 没有激活(包只被当成普通依赖装了进去)。重新 add 并留意它打印的警告。

覆盖端口

patch 会整体替换某一行的 config,所以必须把你需要的键全部写全。放到 $DSH_HOME/profiles/demo/cordis.patch.yml:

- id: portfolio-tracker
  name: dsh-crypto-portfolio
  config:
    port: 8199
    host: 127.0.0.1

也可以设环境变量 PORTFOLIO_PORT。

脱离 DSH 独立运行

python3 run.py --init-template --port 8080   # 用公开模板初始化 profiles/default

目录结构

profiles/default/   sources.json + wallets.json(公开模板,自动生成)
templates/          公开示例配置(无任何密钥)
tracker/            后端抓取器(debank/btc/solana/hyperliquid/cex/prices)
static/             Web 仪表盘(原生 JS,零外部依赖)
run.py / fetch.py   Web 服务 / 命令行快照

发布流程

维护者在工作区里只跑一条命令(发布脚本在工作区里,不随这个已发布包分发),流程刻意拆成两件事:

scripts/sync_public.sh --push                 # 只发布代码 —— 版本号不动
scripts/sync_public.sh --push --release       # 升版本 + 打 tag + 刷新全部市场条目
操作 版本号 CHANGELOG Tag 市场条目
--push 不变 不变 — 不动
--push --release 升一位 把 [Unreleased] 归档 vX.Y.Z 逐市场推送分支并准备 PR
  • 推送不等于发版。 发布代码时 package.json 原样不动,所以在你主动发版之前,已安装的用户不会看到更新。
  • 发版会刷新每一个市场。 各市场的文案都放在本仓库的 market/ 目录里,跟它描述的代码一起版本化,因此条目永远对应刚发布的这一版;某个市场的文案没变就直接跳过,不会产生空的 PR。
市场 收录方式 发版时做什么
awesome-dsh-plugin 每个插件一个 YAML 文件 market/awesome-dsh-plugin.yml → data/plugins/0xRabit__dsh-crypto-portfolio.yml
awesome-deepseek-harness 人工整理的双语表格 market/awesome-deepseek-harness.json → 中英两处 🧩 工具、工作流与预设 表格里的同一行
awesome-dsh-hub 每小时抓取 dsh-plugin 话题 无需提交 —— 发版只做核验,确认条目在库且是最新版本

许可证

MIT — 见 LICENSE。

内容来自项目 README(GitHub)↗

链接

同类插件

查看整个分类 →

社区评论

评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。