DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
C

dsh-chatgpt-price

Chatgpt Price

DeepSeek Harness 的 ChatGPT 分国家订阅价格表:每天从各国 App Store 读取 Plus/Go/Pro 价格,按实时 USD 汇率换算为 CNY,并提供 Settings 页面和可选的侧边栏标签页。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:chaolee111/dsh-chatgpt-price#b765492b42f1071f16e7823af386f5fe24ea3d72
README兼容性版本
ChatGPT prices by country

兼容性与来源证明

Chatgpt Price 以 dsh-chatgpt-price 发布,当前版本为 0.4.1。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/23

版本

0.4.1stable
2026/10/23
0.4.0stable
2026/10/22
0.3.0stable
2026/10/22
查看其余 1 个版本收起版本
0.1.0stable
2026/10/20

相关插件

正在加载相关插件…

最新版
0.4.1
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 1
周下载
0
最近提交
2026/10/30
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 models-usage 分类下经过校验的插件。

Whale Widgetdsh-whale-widgetDSH Web 界面右下角的 DeepSeek 余额小鲸鱼挂件:余额/今日已用/峰谷定价、自定义泡泡点击序列(文本/余额/今日/峰谷/图片/随机语句与并列加权选择)、逐行样式与字体、悬浮快捷编辑、音效与每轮消耗、自定义角色/动图/音效、吸附与翻转自定义Our Free Model@ebony-vinyl/dsh-our-free-modelOur Free Model — 在 dsh 里装上这个插件即可,无需登录、注册或填 API Key,就能使用包括 DeepSeek V4.1 Flash、Kimi K3 在内的前沿模型,桌面端另有 EAC 协付渠道;2.0 起接入 LobsterAI、Qoder、TRAE、Cline、Loomy、Raccoon、MiniMax、ZCode、Gemini 十个账号渠道(原有匿名免费通道保留)(登录、账号池、积分领取、本地 OpenAI 网关与局域网转发、数据看板与运行日志),六页毛玻璃界面统一呈现。Usage@linxin666/dsh-usage用于 dsh Web GUI 的使用统计插件:检测各提供商的余额和编程套餐配额,并实时记录令牌使用情况;侧边栏 Settings 行上方显示紧凑的价格概览卡片Connect Workbuddydsh-connect-workbuddy把本机登录的 WorkBuddy 模型(国内版与国际版)接入 DeepSeek Harness:每次刷新按上游目录自动读取每个模型的积分倍率,支持逐模型图片输入开关、多账号切换与账号池自动换号,并提供每日签到、卡片与输入框里的胶囊积分读数等只读积分概览。

README

dsh-chatgpt-price

ChatGPT 各国订阅价格看板 — a DeepSeek Harness plugin that keeps a daily-refreshed table of what ChatGPT costs in each country's App Store (Go / Plus / Pro 100 / Pro 200 / Pro 500), converted to CNY at the live USD/CNY rate fetched on every refresh, with a day-over-day change mark, plan selection and per-plan sorting.

ChatGPT prices by country

What it does

Sourceapps.apple.com/{storefront}/app/chatgpt/id6448311069 — public, fast, tax-inclusive in-app prices
PlansGo · Plus · Pro 100 · Pro 200 · Pro 500 (consumables such as N Credits are dropped)
Regions33 storefronts by default, including PH / PK / VN / ID / EG / AR / CO / CL / NG / UA; HK / CN report "not sold there" instead of a fake price
Conversionlocal → USD (per-currency rate) → CNY at the live USD/CNY rate of that same refresh
Refreshonce a day at refreshHour in timeZone, plus a boot refresh when the cache is older than 20 h
UIa Settings page, plus an optional dsh-better-sidebar tab
Agent toolschatgpt_price_board, refresh_chatgpt_prices

界面用法

  • 顶部档位按钮(Go / Plus / Pro 100 / Pro 200 / Pro 500)就是「当前档位」选择器: 摘要行的最低/最高/价差、相对美国列以及所有排序都按选中档位计算;再点一次已选 档位即回到「全部档位」,列出所有列。
  • 「排序」下拉:默认顺序 / 价格从低到高 / 价格从高到低 / 相对美国从低到高。没取到 价格的地区始终排在最后,选择会被记住。
  • 当前档位里最便宜的一格标「最便宜」,行首 # 是当前排序下的名次。

Why the App Store and not chatgpt.com

chatgpt.com/pricing renders its price numbers client-side: the server HTML contains plan cards with an empty price span, and the page is byte-identical for every ?country=. /backend-api/payments/checkout/prices answers 404. The App Store product page, in contrast, is public, fast and embeds every in-app purchase as a leadingText / trailingText pair ("ChatGPT Plus" → "¥3,000"). Two caveats the parser handles:

  • consumable rows (100 Credits …) are not plans and are dropped;
  • the list contains a duplicate ChatGPT Plus row carrying the Pro-200 price, so duplicates are resolved to the lowest amount.

Hong Kong and mainland China storefronts return 404 (the app is not sold there); those regions are reported as unavailable instead of being silently missing.

Install

The bundle is a normal file package; install the directory, not a tarball:

git clone https://github.com/chaolee111/dsh-chatgpt-price.git
dsh plugin --profile desktop add ./dsh-chatgpt-price

or from the Harness UI: Settings → Plugins → install bundle, choosing this folder. The bundle patch inserts one host row (id: chatgpt-price). Restart the app to mount it.

Config

Override the row in the profile's cordis.patch.yml (a patch replaces the whole config, so restate every key you keep):

- id: chatgpt-price
  config:
    regions: [US, JP, TW, SG, IN, GB, DE, BR, TR, AU]
    refreshHour: 9
    timeZone: Asia/Shanghai
keydefaultmeaning
regions33 storefrontsApp Store storefront codes to track
timeZone / refreshHourAsia/Shanghai / 9when the daily refresh happens
rateSourcesopen.er-api → exchangerate-api → frankfurterFX providers, tried in order on every refresh
requestTimeoutMs20000per-request timeout
concurrency / requestsPerSecond4 / 6politeness limits
retries2per-region retries after a failed page (404 is never retried)
retryDelayMs800retry backoff base; attempt N waits N × this
retryMinutes5re-run the whole refresh this long after a failed/partial run (0 disables)
autoRefreshOnBoottruerefresh at startup when the snapshot is older than 20 h
maxHistoryDays90days of history kept in the snapshot

Architecture

lib/index.js    host half: schedule tick, routes, agent tools, config schema
lib/board.js    snapshot store: scrape → convert → persist (tmp + rename) → history
lib/scrape.js   App Store page → { plan, amount, currency } pairs
lib/money.js    price parsing (comma/space decimals, ISO codes) + FX conversion
lib/shared.js   route names, plan ids, record shapes
lib/client.js   browser half: Settings page + optional sidebar tab
locale/         display strings for plugin search (zh / en)
  • Host half does one scrape per day for every tracked region, refetches the live FX table on the same run, writes an atomic JSON file, and exposes two routes and two agent tools. Every open window reads the cache, so ten windows cost zero extra requests.
  • Browser half only reads the cached snapshot from the host and renders it with theme tokens (--dsw-alias-*), so light and dark follow the shell.

Routes and tools

kindnamepurpose
GET/plugins/dsh-chatgpt-price/snapshotthe cached snapshot (loopback only)
POST/plugins/dsh-chatgpt-price/refreshforce a refresh, returns the new snapshot (loopback only)
toolchatgpt_price_boardread rows, filter by region / plan
toolrefresh_chatgpt_pricesforce a refresh and summarise the result

The snapshot file is chatgpt-price.json in the DSH data directory.

Notes on the numbers

App Store in-app purchase list prices include local tax outside the US, while the web checkout may show a different figure for the same plan — the checkout page wins.

The ¥ column is a real-cost estimate, not a sticker conversion. Every refresh refetches the USD rate table and multiplies by the live USD/CNY rate, so the number tracks the market. Two things it cannot know:

  • OpenAI's displayed 1 USD = 7.2 CNY is not a settlement rate. It is the figure OpenAI shows on its pricing pages; your card issuer still converts at the live rate.
  • Card-side fees (a 1%–1.5% foreign-transaction fee on many Chinese cards) are not included, so the true bill can be a few percent above this column.

If every rate provider fails, the CNY column is left empty for that refresh rather than falling back to a fixed 7.2 — a made-up rate would look authoritative and be wrong.

Failure handling

The storefront requests leave through a proxy, and a proxy can answer one request with the wrong page (a bland shell with no product markup) while the next request for the same URL is fine. The board therefore never treats one bad answer as a fact:

  • Per-region retry — a failed page is retried up to retries times with linear backoff. A 404 is a verdict ("not sold in this storefront") and is not retried.
  • Carry-forward — a region that still fails keeps its previous amounts, each marked stale: true, so one bad page cannot blank a column.
  • Whole-run retry — a run that reads nothing, or only some regions, becomes due again after retryMinutes instead of waiting for tomorrow's slot. The scheduler wakes every minute to check, and the snapshot message says how many regions recovered on retry.
  • Atomic write — the snapshot is written to a temp file and renamed, so a crash mid-write cannot leave truncated JSON behind.

The screenshot is regenerated from a real snapshot, with no hand-edited numbers:

python docs/make_screenshot.py "$env:USERPROFILE\.dsh\chatgpt-price.json" docs/screenshot.png

The script needs only Pillow. It re-applies the table's own ordering rules (plan selection, cheapest-first sort, vs-US ratio), so the picture matches what the plugin renders for the same data.

License

MIT