DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

Retirement Calc — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
R

@dsh-plugin/retirement-calc

Retirement Calc

DeepSeek Harness 的退休规划工具:根据中国 2025 年渐进式延迟法定退休年龄改革,提供实时倒计时和预计月养老金,并以工具、侧边栏面板和嵌入式技能的形式提供

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

npx -y @deepseek-ai/dsh plugin --profile web add github:Smallballoons01/retirement-calc#bff106f0684a9084c44ebe373a3b1c0e8856848d
README兼容性版本

兼容性与来源证明

Retirement Calc 以 @dsh-plugin/retirement-calc 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

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

版本

0.1.0stable
2026/9/21

相关插件

正在加载相关插件…

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

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理Client Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。Web All@linxin666/dsh-web-allDSH Web UI 全家桶聚合插件:一键安装全部功能插件(task-board / git-graph / pet / remote-web-ui / web-ui-settings / skin-center / community-plugins / compat shim)。compat 桥接层已并入本包(src/client),无需独立 compat npm 包。Codex Ui@michengai/dsh-codex-uiDSH Codex UI — 为 DeepSeek Harness Web 提供 Codex 风格侧栏、工作区会话树、全局搜索和轮次导航

README

retirement-calc

Two answers: how many days until you can retire, and how much you get per month afterwards.

China began phasing in a higher statutory retirement age on 1 January 2025. The rules are exact — the delay schedule and the contribution-year ramp are published as tables and steps — yet most people (and most third-party calculators) answer from impression and land years off. This project encodes the rules once and reuses them in three places.

Born Jan 1990 · male employee · Guangdong
→ retires Jan 2053 at 63 (36 months of delay), 9,599 days away
→ projected ¥7,673.48 / month (¥4,925.86 basic + ¥2,747.63 individual account)

Three shapes

ShapeForHow
Single-file web pageanyoneOpen dist/retirement-calculator.html, type on the left, watch the right update live
DSH pluginDeepSeek HarnessA "days to retirement" button in the sidebar, plus three tools for the agent
Agent skillother coding agentsSymlink skills/retirement-planner/ into ~/.agents/skills or similar

All three share one core.js, so the page and the agent can never disagree.

The rules

Every number traces to a published document.

Statutory retirement age (NPC Standing Committee, 13 Sep 2024)

From 2025-01-01, by original statutory age:

GroupWasDelayCeiling
Male employee601 month per 4 months63 (+36 months)
Female, managerial/technical551 month per 4 months58 (+36 months)
Female, worker501 month per 2 months55 (+60 months)

Positioning works off the date you would have retired under the old age, measured from 2025-01. The result matches the official table month by month: retiring Jan–Apr 2025 means one month's delay, May–Aug means two, Sep–Dec means three, and so on.

The common trap. A man born March 1978 does retire in March 2041 at 63. A woman born the same month does not. In the worker category she retires Nov 2029 at 51 years 8 months (20 months' delay); in the managerial category, April 2035 at 57 years 1 month (25 months). Some calculators apply the male delay schedule to women and overshoot by years — sex and job category are the two inputs you must never guess.

Minimum contribution years

  • Retiring 2029 or earlier: 15 years
  • From 2030, +6 months each year
  • 2039 and later: 20 years

Annuity divisor (计发月数)

Taken at the whole-year age on the retirement date (Annex to Guofa〔2005〕38). Retiring at 50 years 11 months uses the age-50 figure of 195, not 51's. Common values: 50→195, 55→170, 60→139, 63→117.

Contribution base: a figure, or a tier

The contribution index is base ÷ social average for that year. The pension formula consumes the index, but most people only know their base ("it's 10,000 now"), and the two are not interchangeable:

  • Always contributing at the same tier → the base rises along with the social average, so the index stays put.
  • A frozen base → the social average keeps climbing, so the index slides every year and drags the average down.

So the tool accepts either. In by contribution base mode you enter your current monthly base and choose whether it tracks the social average or stays fixed — only the latter reflects what "just keep paying this amount" really costs. At the same 10,000, a frozen base comes out about 15% lower.

Supporting rules:

  • The base is bounded by 60%–300% of the social average, so the derived index is clamped to [0.6, 3.0].
  • The individual account is credited at 8% of the real base, not back-solved from "social average × index".
  • If the planned contribution months exceed the months actually remaining until retirement, only the real ones count.

Conversely, if all you have is the average index printed on your social-insurance statement, entering the index directly is simpler — that number already is the average of "base ÷ social average" over the years.

Pension composition

Basic          = (base × (1 + average index) ÷ 2) × contribution years × 1%
Individual     = account balance at retirement ÷ annuity divisor
Transitional   = base × deemed index × transition rate × deemed years

Guangdong and a few other provinces apply an extra haircut when the average index falls below 0.6 (a = index ÷ 0.6); this tool enables it per province.

Flexible retirement

Reaching the minimum contribution years permits voluntary early retirement up to 3 years, but never below the original statutory age. Agreement with the employer permits delay up to 3 years. The two are mutually exclusive.

Quick start

Web page

node scripts/build-web.mjs
open dist/retirement-calculator.html

The output is self-contained — send the file to anyone, no install needed.

DSH plugin

# 1. Point the package at the harness's peer dependencies
mkdir -p retirement_calc/node_modules/@deepseek-ai
for p in cordis dsh-llm dsh-settings dsh-skill dsh-system-prompt dsh-tools schemastery; do
  ln -sfn "$HOME/.dsh/profiles/node_modules/@deepseek-ai/$p" "retirement_calc/node_modules/@deepseek-ai/$p"
done

# 2. Install into a profile (this edits the profile's package.json and cordis.patch.yml — back them up first)
dsh plugin --profile web add link:/path/to/retirement_calc

# 3. Confirm the composition picked it up
dsh --profile web --dump-config | grep retirement-calc

A "🕐 retirement in N days" button appears at the bottom of the sidebar. If the profile already has a retirement-calc row, delete it first: two rows would each register the /retire/api prefix route, and the duplicate makes the plugin tree fail to boot.

Cross-tool skill

ln -s /path/to/retirement_calc/skills/retirement-planner ~/.agents/skills/retirement-planner

The skill carries the rules and the phrasing, not the numbers — install the plugin for live computation.

Tools

ToolPurpose
retirement_planDate, age, days remaining, monthly pension and its three parts
retirement_profileget / set / clear the stored particulars and assumptions
retirement_compareWhat-if: contribute more years, raise the index, retire later

The profile lives at $DSH_HOME/retirement-calc.json. Panel edits go through preview (compute only); nothing is written until you press save.

Configuration

- insert:
    - id: retirement-calc
      name: '@dsh-plugin/retirement-calc'
      config:
        promptSection: true
        skill: true
        # stateFile: /absolute/path/retirement-calc.json

Calculation parameters — base-amount growth, account interest rate, transition coefficient — live in the profile, editable from the panel or the tools, not here. One place to change a number is the point.

Development

npm test              # 52 tests: 23 core formula + 15 plugin behaviour + 7 real cordis composition + 7 client structure
npm run verify        # drive the built page in a headless browser: rendering and live recompute
npm run verify:plugin # mount on a real WebServer, hit /retire/api over HTTP (touches no profile)
npm run audit         # secret scan: credentials, home paths, private IPs, emails
npm run check         # all of the above plus skill/artifact drift checks
npm run web           # rebuild the single-file page

npm test needs no install step: the package has no runtime dependencies. The harness-dependent layers (plugin behaviour, real composition, live routes) skip themselves with a stated reason rather than failing when the peer packages are absent — so a clean clone gets a green, lower-coverage run.

Several tests are deliberate anchors that fire the moment a formula drifts:

  • Published worked examples — the two problems in Jiangxi Xinyu's bureau article "Can you compute your pension?", whose answers are 955.29 and 3967.89; the engine reproduces both to the cent.
  • Delay table — month-by-month spot checks plus each group's ceiling age.
  • Minimum years — the 2030 / 2038 / 2039 / 2041 steps.
  • Annuity divisor — whole-year lookup (50y11m uses the age-50 value).

npm run verify:plugin deserves a note of its own: it mounts the plugin on a real cordis composition in a temp directory, brings up an actual WebServer, and drives every /retire/api route over HTTP — including the cross-site guard and teardown. It reads and writes no profile at all, and the process leaves nothing behind. Run it when you want to know whether the plugin will work inside Harness without touching your live environment.

Security and privacy

  • Zero runtime dependencies, zero outbound requests, zero telemetry. The package opens no external connection and reports nothing anywhere. The single-file page is the same — open it with the network unplugged and every feature still works.
  • One file on disk. $DSH_HOME/retirement-calc.json, written atomically. It holds a birth month, a province and a contribution history; it does not leave the machine.
  • The HTTP routes have a same-origin fence. /retire/api is registered directly on the harness's web server and is not behind its /api browser-trust fence, while profile updates arrive as simple cross-origin POSTs (a text/plain body is parsed just the same). Every route therefore checks that Origin and Host agree — otherwise any page the user happened to visit could read or rewrite their profile.
  • No dynamic evaluation: no eval, no child processes, no template engine. innerHTML only ever receives self-generated numbers and hard-coded labels, and the form offers nothing but number, range and select controls.
  • Caller-supplied field maps are read with Object.hasOwn, so a __proto__ key cannot reach Object.prototype through the lookup table.

The full threat model, scope boundaries and hardening list are in SECURITY.md. Secret scanning runs as npm run audit and is wired into CI on every push.

Limits

  • This is an estimate, not a promise. Base amounts, interest rates and contribution caps are republished yearly by each province; the growth rates here are assumptions. Your actual benefit is whatever the social insurance office determines.
  • The built-in provincial base table carries a year and a status: published (official), reference (carried over from the prior year), manual (not collected — a generic fallback is used and the panel says so). Henan, Shaanxi and Gansu are manual.
  • Transitional pensions vary widely by province (coefficients 1.0%–1.4%, different rules for deemed-contribution indices). Where deemed years are involved, defer to the local office.
  • No investment advice, no commercial annuity product recommendations.

License

MIT