# ЁЯТ░ dsh-budget - **1024 рд╕реНрдЯреЛрд░ рдЪреИрдирд▓**: рдПрдХ рдмрд╛рд░ `npm i -g dsh1024`, рдлрд┐рд░ `dsh1024 plugin --profile web add dsh-budget` ([deepseek1024.com](https://deepseek1024.com) рдЗрдВрд╕реНрдЯреЙрд▓ рд░реИрдВрдХрд┐рдВрдЧ рдореЗрдВ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИ)ред **DeepSeek Harness рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧрдд рдкреНрд░рд╢рд╛рд╕рди: рдмрдЬрдЯ, рдХрд╛рд░реНрдмрди рдФрд░ рд▓реЗрдЯреЗрдВрд╕реА рдПрдХ рд╣реА рдкреИрдирд▓ рдореЗрдВред** *рд╣рд░ рд╕рддреНрд░ рдХреА рд▓рд╛рдЧрдд рдЬрд╛рдиреЗрдВ тАФ рдЙрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╡рд╣ рдЖрдк рдкрд░ рднрд╛рд░реА рдкрдбрд╝реЗред* [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE) [![Gitee](https://img.shields.io/badge/Gitee-mirror-c71d23?logo=gitee)](https://gitee.com/perrylink/dsh-budget) [![DSH plugin](https://img.shields.io/badge/dsh--plugin-тЬЕ-green)](https://github.com/topics/dsh-plugin) [![dsh-doctor](https://raw.githubusercontent.com/PerryLink/dsh-plugin-doctor/main/badges/PerryLink__dsh-budget.svg)](https://github.com/PerryLink/dsh-plugin-doctor#verified-х╛╜чла) [![DSH Market](https://raw.githubusercontent.com/2BingLing/dsh-market/master/assets/readme/badge-listed-en.svg)](https://dsh.market/) [![Node](https://img.shields.io/badge/node-%5E22.19%20%7C%7C%20%3E%3D24-brightgreen.svg)](#) [![CI](https://img.shields.io/github/actions/workflow/status/PerryLink/dsh-budget/ci.yml?branch=main&label=CI)](https://github.com/PerryLink/dsh-budget/actions) [![Version](https://img.shields.io/github/v/tag/PerryLink/dsh-budget?label=version)](https://github.com/PerryLink/dsh-budget/releases) [![npm version](https://img.shields.io/npm/v/dsh-budget)](https://www.npmjs.com/package/dsh-budget) [![npm downloads](https://img.shields.io/npm/dm/dsh-budget)](https://www.npmjs.com/package/dsh-budget) [![dshfind](https://dshfind.com/api/badge/PerryLink/dsh-budget?metric=downloads&lang=hi)](https://dshfind.com/hi/plugins/PerryLink/dsh-budget?ref=badge) [English](README.md) ┬╖ [чоАф╜Уф╕нцЦЗ](README-zh.md) ┬╖ [Espa├▒ol](README-es.md) ┬╖ [Portugu├кs](README-pt.md) ┬╖ [рд╣рд┐рдиреНрджреА](README-hi.md)
--- ## тнР хжВцЮЬхоГх╕охИ░ф║Жф╜а рдпрд╣ рдкреНрд▓рдЧрдЗрди [DSH рдкреНрд▓рдЧрдЗрди рдкрд░рд┐рд╡рд╛рд░](https://github.com/PerryLink) рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ (40+ рдкреНрд▓рдЧрдЗрди, рд╕рднреА Apache-2.0)ред рдЕрдЧрд░ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд▓рдЧреЗ, рддреЛ **рдПрдХ рд╕реНрдЯрд╛рд░ рджреЗрдВ** тАФ рдЗрд╕рд╕реЗ рдХреЛрдИ рд╕реБрд╡рд┐рдзрд╛ рдЕрдирд▓реЙрдХ рдирд╣реАрдВ рд╣реЛрддреА, рдкрд░ рдЕрдЧрд▓рд╛ рд╡реНрдпрдХреНрддрд┐ рдЗрд╕реЗ рдЦреЛрдЬ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд╛ рд▓реЗрддрд╛ рд╣реИред *English:* part of a 40+ plugin family for DeepSeek Harness. If it is useful, **a star helps the next person find it** тАФ nothing is gated behind it. ## рд╕рдВрдЧрддрддрд╛ | рд╕рддрд╣ | рд╕реНрдерд┐рддрд┐ | |---|---| | Harness | DeepSeek Harness `dsh-v0.1.7-rc.2` (GitHub tag, 2026-09-25 рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд; peer рд░реЗрдВрдЬ `>=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0`): alpha.2 рдХреИрдЯрд▓реЙрдЧ рдХреАрдорддреЗрдВ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реИрдВ рдФрд░ рдЕрдЬреНрдЮрд╛рдд рдореЙрдбрд▓ рдордирдЧрдврд╝рдВрдд рдЕрдиреБрдорд╛рди рдХреЗ рдмрдЬрд╛рдп "unpriced" рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрддреЗ рд╣реИрдВ; рдСрдбрд┐рдЯ рдЧреЗрдЯ `budget/alert`/`budget/block` appends рдХреЛ рджрдмрд╛рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ (fail-closed рд╕рддреНрд░ рдЗрд╡реЗрдВрдЯ рд╢рдмреНрджрд╛рд╡рд▓реА)ред 2026-09-25 рдХреЛ рджреЛ-рд░реВрд▓рд░ typecheck рд╢реНрд░реГрдВрдЦрд▓рд╛ рдФрд░ рдкреВрд░реНрдг рд╕реНрдерд╛рдиреАрдп рдЧреЗрдЯ рджреНрд╡рд╛рд░рд╛ рд╕рддреНрдпрд╛рдкрд┐рдд; рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреИрдирд▓ рдЖрдЗрдЯрдо ф║║х╖е┬╖цЬкц╡ЛхН│цЬкхоМцИР (рдЕрдиреБрд░рдХреНрд╖рдХ рдореИрдиреБрдЕрд▓ рдЪреЗрдХрд▓рд┐рд╕реНрдЯ) рд░рд╣рддреЗ рд╣реИрдВред | | рдСрдбрд┐рдЯ рдЗрд╡реЗрдВрдЯ | `0.1.2-rc.1` рд╕реЗ рдкрд╣рд▓реЗ рдХреЗ harness рдкрд░ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ; `0.1.2-rc.1` рдФрд░ рдмрд╛рдж рдореЗрдВ рджрдмрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдбрд┐рдЧреНрд░реЗрдбреЗрд╢рди рдХрд╛рд░рдг рд▓реЙрдЧ рд╣реЛрддрд╛ рд╣реИ (fail-closed рд╕рддреНрд░ рдЗрд╡реЗрдВрдЯ рд╢рдмреНрджрд╛рд╡рд▓реА, рдХреЛрдИ рдмрд╛рд╣рд░реА рдкрдВрдЬреАрдХрд░рдг рд╕рддрд╣ рдирд╣реАрдВ) || Node | `^22.19.0 \|\| >=24.0.0` | | рд╕рддрд╣реЗрдВ | Host + рд╡реЗрдм рдХреНрд▓рд╛рдЗрдВрдЯ (Settings рдореЗрдВ Budget рдЯреИрдм); `/budget` рдХрдорд╛рдВрдб | ## рдЖрдкрдХреЛ рдХреНрдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИ `dsh-budget` рд╕рддреНрд░ рдЗрд╡реЗрдВрдЯ рд╕реНрдЯреНрд░реАрдо рдХреЛ рдЪрд╛рд░-рдореЗрдВ-рдПрдХ рд▓рд╛рдЧрдд рдкреНрд░рд╢рд╛рд╕рди рд▓реВрдк рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ: - **рд╕рдордЧреНрд░ рдореАрдЯрд░рд┐рдВрдЧ** тАФ рдЯреЛрдХрди (рдмрд┐рдирд╛-рдХреИрд╢ рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ / рдХреИрд╢-рд░реАрдб / рдХреИрд╢-рд░рд╛рдЗрдЯ), рдЕрдиреБрдорд╛рдирд┐рдд USD рд▓рд╛рдЧрдд рдФрд░ рдХрд╛рд░реНрдмрди рдкрджрдЪрд┐рд╣реНрди рдкреНрд░рддрд┐ рдореЙрдбрд▓, рд╕рддреНрд░ рдФрд░ рджрд┐рди; рдмрд┐рд▓реНрдЯ-рдЗрди USD-рдкреНрд░рддрд┐-1M рддрд╛рд▓рд┐рдХрд╛ рдЖрдкрдХреЗ `config.prices` рд╕реЗ рдорд░реНрдЬ рд╣реЛрддреА рд╣реИред - **рдмрдЬрдЯ рдкреНрд░рд╢рд╛рд╕рди** тАФ рд╕рддреНрд░/рджреИрдирд┐рдХ/рдорд╛рд╕рд┐рдХ рд╕реАрдорд╛рдПрдБ; `warnRatio` рдереНрд░реЗрд╢реЛрд▓реНрдб рдЕрд▓рд░реНрдЯ (рд╡реЗрдмрд╣реБрдХ POST + рдбреЗрд╕реНрдХрдЯреЙрдк-рд╕реВрдЪрдирд╛ рдлрд╝реНрд▓реИрдЧ) рдФрд░ рд╕реАрдорд╛ рдкрд╛рд░ рд╣реЛрдиреЗ рдкрд░ рддреАрди рдиреАрддрд┐рдпрд╛рдБ: `alert` (рдХреЗрд╡рд▓ рд╕реВрдЪрд┐рдд), `block` (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЕрдирдмреНрд▓реЙрдХ рддрдХ рдирдП рдореЙрдбрд▓ рдЕрдиреБрд░реЛрдз рд░реЛрдХрдирд╛), `degrade` (рдЖрдкрдХреЗ `degradation` рдореИрдк рдХреЗ рд╕рд╕реНрддреЗ рдореЙрдбрд▓ рдХрд╛ рдирд╛рдо рд▓реЗрдХрд░ рд╕реБрдзрд╛рд░рд╛рддреНрдордХ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рд╕рд╣рд┐рдд рдмреНрд▓реЙрдХ)ред - **рдХрд╛рд░реНрдмрди рдФрд░ рд▓реЗрдЯреЗрдВрд╕реА** тАФ рдЯреЛрдХрдитЖТрдХрд╛рд░реНрдмрди рдкреБрд▓ (рдЯреЛрдХрди ├Ч kWh/рдЯреЛрдХрди ├Ч PUE ├Ч рдХреНрд╖реЗрддреНрд░реАрдп рдЧреНрд░рд┐рдб рддреАрд╡реНрд░рддрд╛, AI-Carbon-Footprint-Calculator рд╕реЗ рдкреЛрд░реНрдЯреЗрдб) рдФрд░ рдкреНрд░рддрд┐-рдореЙрдбрд▓ рд▓реЗрдЯреЗрдВрд╕реА рдкреНрд░рддрд┐рд╢рддрдХред - **рд╕рддрд╣реЗрдВ** тАФ Settings рдХрд╛ Budget рдЯреИрдм (рдЙрдкрдпреЛрдЧ рдмрд╛рд░, рджреИрдирд┐рдХ рдЙрдкрдпреЛрдЧ рд╡рдХреНрд░, рдореЙрдбрд▓ рд╡рд┐рд╡рд░рдг, рдЕрд▓рд░реНрдЯ, рд╕реАрдорд╛ рд╕рдВрдкрд╛рджрдХ, рдЕрдирдмреНрд▓реЙрдХ рдмрдЯрди) рдФрд░ `/budget` рдХрдорд╛рдВрдб (`/budget`, `/budget models`, `/budget unblock `)ред ## рддреНрд╡рд░рд┐рдд рд╢реБрд░реБрдЖрдд ```sh # 1. рдмрдВрдбрд▓ рдХреЛ рдЕрдкрдиреЗ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ dsh plugin --profile web add "github:PerryLink/dsh-budget#main" # рдпрд╛ npm рд╕реЗ (рдкреНрд░рдХрд╛рд╢рд┐рдд рд░рд┐рд▓реАрдЬрд╝) dsh plugin --profile web add dsh-budget # 2. рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░реЗрдВ рдФрд░ рдкрдВрдХреНрддрд┐ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ dsh --profile web --dump-config | grep -A2 'id: budget' ``` рдлрд┐рд░ рдПрдЬреЗрдВрдЯ рд╕реЗ рдХрд╣реЗрдВ: `/budget` тАФ рдФрд░ Settings рдЯреИрдм рдХреЛ рднрд░рддреЗ рджреЗрдЦреЗрдВред ## рдЗрдВрд╕реНрдЯреЙрд▓ рдФрд░ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ - **git рдЪреИрдирд▓** (рдирд╡реАрдирддрдо `main`): `dsh plugin --profile web add "github:PerryLink/dsh-budget#main"` тАФ `prepare` рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗрд╡рд▓ рдкреНрд░реЛрдбрдХреНрд╢рди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рд╕реЗ рдмрд┐рд▓реНрдб рдХрд░рддреА рд╣реИред - **npm рдЪреИрдирд▓** (рдкреНрд░рдХрд╛рд╢рд┐рдд рд░рд┐рд▓реАрдЬрд╝): `dsh plugin --profile web add dsh-budget`ред - **tarball рдЪреИрдирд▓**: рдЗрд╕ рд░реЗрдкреЛ рдореЗрдВ `pnpm pack`, рдлрд┐рд░ `dsh plugin --profile web add ./dsh-budget-.tgz`ред - **рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓**: `dsh plugin --profile web remove dsh-budget`ред > рдпрджрд┐ pnpm рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП `ERR_PNPM_IGNORED_BUILDS` рджрд┐рдЦрд╛рддрд╛ рд╣реИ (esbuild рдХрд╛ рд╣рд╛рдирд┐рд░рд╣рд┐рдд рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рдмрд╛рдЗрдирд░реА рд╕рддреНрдпрд╛рдкрди), рддреЛ рдЕрдкрдиреЗ `pnpm-workspace.yaml` рдореЗрдВ `allowBuilds: { esbuild: true }` рдЬреЛрдбрд╝реЗрдВ тАФ `dsh` CLI рд╕рдЯреАрдХ рд╕реНрдирд┐рдкреЗрдЯ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред ## рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рднреА рд╕рдорд╛рдпреЛрдЬрди Schemastery `Config` рдлрд╝реАрд▓реНрдб рд╣реИрдВ (cordis.yml рд╕реЗ рдмрджрд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ)ред `cordis.patch.yml` рд╣рд░ рдХреБрдВрдЬреА рдХреЛ рдЗрдирд▓рд╛рдЗрди рд╕рдордЭрд╛рддрд╛ рд╣реИред | рдХреБрдВрдЬреА | рдбрд┐рдлрд╝реЙрд▓реНрдЯ | рдЕрд░реНрде | |---|---|---| | `prices` | `{}` | рдкреНрд░рддрд┐ рдореЙрдбрд▓ USD рдкреНрд░рддрд┐ 1M рдЯреЛрдХрди, рдмрд┐рд▓реНрдЯ-рдЗрди рддрд╛рд▓рд┐рдХрд╛ рдкрд░ рдорд░реНрдЬ | | `defaultPrice` | unpriced рд╕рдВрдХреЗрдд (`priced: false`, рд╢реВрдиреНрдп рд╕рдВрдЦреНрдпрд╛рдПрдБ) | рджреЛрдиреЛрдВ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рд╕реЗ рдЕрдиреБрдкрд╕реНрдерд┐рдд рдореЙрдбрд▓реЛрдВ рдХрд╛ рдлрд╝реЙрд▓рдмреИрдХ: рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓реЗрдЦрд╛рдВрдХрди рдореЗрдВ 0 рдпреЛрдЧрджрд╛рди рджреЗрддрд╛ рд╣реИ рдФрд░ "unpriced" рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрддрд╛ рд╣реИ; рдЕрдЬреНрдЮрд╛рдд рдореЙрдбрд▓реЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдореВрд▓реНрдп рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП `priced: true` рдХреЗ рд╕рд╛рде рд╕рдВрдЦреНрдпрд╛рдПрдБ рд╕реЗрдЯ рдХрд░реЗрдВ | | `budgets.session` / `daily` / `monthly` | `10` / `50` / `500` | рдкреНрд░рддрд┐ рд╕реНрдХреЛрдк USD рдмрдЬрдЯ рд╕реАрдорд╛; рдЕрд╕реАрдорд┐рдд рдХреЗ рд▓рд┐рдП рд╣рдЯрд╛рдПрдБ | | `warnRatio` | `0.8` | рдЙрдкрдпреЛрдЧ рд╕реАрдорд╛ рдХреЗ рдЗрд╕ рдЕрдВрд╢ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдкрд░ рдЕрд▓рд░реНрдЯ (0..1) | | `overLimit` | `alert` | рд╕реАрдорд╛ рдкрд╛рд░ рд╣реЛрдиреЗ рдкрд░: `alert` / `block` / `degrade` | | `degradation` | `{}` | рдореЙрдбрд▓ id тЖТ рдЙрд╕реА рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд╕рд╕реНрддреЗ рдореЙрдбрд▓ id | | `webhookUrl` | *(рдХреЛрдИ рдирд╣реАрдВ)* | рдереНрд░реЗрд╢реЛрд▓реНрдб рдЕрд▓рд░реНрдЯ рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡реЗрдмрд╣реБрдХ URL (POST JSON) | | `webhookTimeoutMs` | `5000` | рд╡реЗрдмрд╣реБрдХ рдЕрдиреБрд░реЛрдз рдЯрд╛рдЗрдордЖрдЙрдЯ | | `alertsEnabled` | `true` | рдереНрд░реЗрд╢реЛрд▓реНрдб рдЕрд▓рд░реНрдЯ рдХрд╛ рдорд╛рд╕реНрдЯрд░ рд╕реНрд╡рд┐рдЪ | | `alertCooldownMs` | `3600000` | рдПрдХ рд╣реА рд╕реНрдХреЛрдк рдХреЗ рджреЛ рдЕрд▓рд░реНрдЯ рдХреЗ рдмреАрдЪ рдиреНрдпреВрдирддрдо ms | | `desktopNotifications` | `false` | рдЯреИрдм рдЦреБрд▓рд╛ рд╣реЛрдиреЗ рдкрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдбреЗрд╕реНрдХрдЯреЙрдк рд╕реВрдЪрдирд╛рдПрдБ | | `refreshIntervalMs` | `5000` | Settings рдЯреИрдм рдкреЛрд▓рд┐рдВрдЧ рдЕрдВрддрд░рд╛рд▓ | | `carbon.enabled` / `region` / `pue` / `energyKwhPerToken` | `true` / `global` / `1.58` / `0.000007` | рдХрд╛рд░реНрдмрди рдкреБрд▓ (рдХреНрд╖реЗрддреНрд░: global, us, eu, china, india, uk, france, iceland) | | `latency.enabled` / `windowSize` | `true` / `200` | рдкреНрд░рддрд┐-рдореЙрдбрд▓ рд▓реЗрдЯреЗрдВрд╕реА рдкреНрд░рддрд┐рд╢рддрдХ рдФрд░ рдЙрдирдХреА рд╡рд┐рдВрдбреЛ | | `currency` | `{code: USD, rate: 1.0, decimals: 2}` | рдкреНрд░рджрд░реНрд╢рди рдореБрджреНрд░рд╛ (рд▓рд╛рдЧрдд USD рдореЗрдВ рдЧрдгрд┐рдд) | | `outputLanguage` | `en` | `/budget` рдЖрдЙрдЯрдкреБрдЯ рднрд╛рд╖рд╛: `en` / `zh` | | `historyDays` | `30` | рд╕реНрдиреИрдкрд╢реЙрдЯ рдореЗрдВ рд░рдЦреЗ рдкреНрд░рддрд┐-рджрд┐рди рдЙрдкрдпреЛрдЧ рдЗрддрд┐рд╣рд╛рд╕ рдХреЗ рджрд┐рди | | `persistence.enabled` / `intervalMs` | `true` / `10000` | рдкреБрдирд░рд╛рд░рдВрдн рдХреЗ рдмреАрдЪ рдЯрд┐рдХрд╛рдК рджреИрдирд┐рдХ/рдорд╛рд╕рд┐рдХ рд╕рдВрдЧреНрд░рд╣рдг (рд╕реНрдЯреЛрд░реЗрдЬ рдбреЛрдореЗрди); рдбреЛрдореЗрди рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реЛрдиреЗ рдкрд░ рдЗрди-рдореЗрдореЛрд░реА рдореЗрдВ рдкрддрди | ## рдЯреВрд▓ рдФрд░ рд╕рддрд╣реЗрдВ | рд╕рддрд╣ | рдкреНрд░рдХрд╛рд░ | рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ | |---|---|---| | `/budget` | рдХрдорд╛рдВрдб | рдкреНрд░рддрд┐-рд╕реНрдХреЛрдк рдЕрд╡рд▓реЛрдХрди (рдЙрдкрдпреЛрдЧ, рдЕрдиреБрдкрд╛рдд, рдХрд╛рд░реНрдмрди, рдмреНрд▓реЙрдХ рд╕реНрдерд┐рддрд┐) | | `/budget models` | рдХрдорд╛рдВрдб | рд▓реЗрдЯреЗрдВрд╕реА рдкреНрд░рддрд┐рд╢рддрдХ рд╕рд╣рд┐рдд рдкреНрд░рддрд┐-рдореЙрдбрд▓ рд╡рд┐рд╡рд░рдг | | `/budget unblock ` | рдХрдорд╛рдВрдб | рдмреНрд▓реЙрдХ рдХрд┐рдП рдЧрдП рд╕реНрдХреЛрдк рдХреЛ рд╣рдЯрд╛рдирд╛ (`session` / `daily` / `monthly`) | | Settings тЖТ Plugins тЖТ Budget | Settings рдЯреИрдм | рдЙрдкрдпреЛрдЧ рдмрд╛рд░, рджреИрдирд┐рдХ рдЙрдкрдпреЛрдЧ рд╡рдХреНрд░, рдореЙрдбрд▓ рд╡рд┐рд╡рд░рдг, рдЕрд▓рд░реНрдЯ, рд╕реАрдорд╛ рд╕рдВрдкрд╛рджрдХ, рдЕрдирдмреНрд▓реЙрдХ рдмрдЯрди | | `budget/status`, `budget/setSettings`, `budget/unblock` | Typert Remote | рдХреНрд▓рд╛рдЗрдВрдЯ рдЪреИрдирд▓ (рдЯреИрдм рдЗрдиреНрд╣реЗрдВ рдЙрдкрднреЛрдЧ рдХрд░рддрд╛ рд╣реИ) | ## рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдФрд░ рдбреЗрдЯрд╛ - **рдЕрдиреБрдорддрд┐рдпрд╛рдБ**: `network:outbound` (рдХреЗрд╡рд▓ рд╡реИрдХрд▓реНрдкрд┐рдХ рдЕрд▓рд░реНрдЯ рд╡реЗрдмрд╣реБрдХ), `session:append` (рдСрдбрд┐рдЯ рдЗрд╡реЗрдВрдЯ), `native-code:none`ред - **рдбреЗрдЯрд╛**: рджрд┐рдЦрд╛рдИ рдЧрдИ рд╣рд░ рдЪреАрдЬрд╝ рд╕рддреНрд░ рдЗрд╡реЗрдВрдЯ рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдЖрддреА рд╣реИ; рд╣реЛрд╕реНрдЯ рдХреА рдПрдХрдорд╛рддреНрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХреЙрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╡реЗрдмрд╣реБрдХ рд╣реИ, рдЬрд┐рд╕рдХрд╛ URL рд▓реЛрдб рдкрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд▓реЙрдЧ рд╕реЗ рдкрд╣рд▓реЗ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓-рд░рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЛрдИ prompt рдпрд╛ payload рд╣реЛрд╕реНрдЯ рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдЬрд╛рддрд╛ред - **рд╕рддреНрд░ рд▓реЙрдЧ**: `budget/alert` рдФрд░ `budget/block` рдХреЗрд╡рд▓-рд▓реЙрдЧ рдСрдбрд┐рдЯ рдЗрд╡реЗрдВрдЯ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╕реНрдХреЛрдк рдирд╛рдо рдФрд░ USD рд░рд╛рд╢рд┐рдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВ (session-append рдкреБрдирд░реНрдкреНрд░рд╡реЗрд╢ рдЧрд╛рд░реНрдб рд╕реЗ рдмрдЪрдиреЗ рд╣реЗрддреБ рдорд╛рдЗрдХреНрд░реЛрдЯрд╛рд╕реНрдХ-рд╡рд┐рд▓рдВрдмрд┐рдд)ред `0.1.2-rc.1` рдФрд░ рдмрд╛рдж рдХреЗ harness рдкрд░ рдпреЗ рдирд╣реАрдВ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ тАФ fail-closed рдЗрд╡реЗрдВрдЯ рд╢рдмреНрджрд╛рд╡рд▓реА рдЕрдкрдВрдЬреАрдХреГрдд рдЗрд╡реЗрдВрдЯ рдкреНрд░рдХрд╛рд░ рд╡рд╛рд▓реЗ рд▓реЙрдЧ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИ рдФрд░ рдХреЛрдИ рдмрд╛рд╣рд░реА рдкрдВрдЬреАрдХрд░рдг рд╕рддрд╣ рдирд╣реАрдВ рджреЗрддреА тАФ рдЗрд╕рд▓рд┐рдП рдСрдбрд┐рдЯ рдЯреНрд░реЗрд▓ рдХреЗрд╡рд▓ рдмрдЬрдЯ рд▓реЙрдЧрд░ рдФрд░ webhook рддрдХ рд╕реАрдорд┐рдд рд░рд╣рддрд╛ рд╣реИред ## рд╕реБрд░рдХреНрд╖рд╛ рд╕реАрдорд╛рдПрдБ - **рдХреЛрдИ рдордирдЧрдврд╝рдВрдд рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ**: рдмрдЬрдЯ рдмреНрд▓реЙрдХ `llm/stream` рд╡реЙрдЯрд░рдлреЙрд▓ рдкрд░ рд╕реБрдзрд╛рд░рд╛рддреНрдордХ рддреНрд░реБрдЯрд┐ finish рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ тАФ рдкреНрд▓рдЧрдЗрди рдХрднреА рдореЙрдбрд▓ рдЖрдЙрдЯрдкреБрдЯ рдЧрдврд╝рддрд╛ рдирд╣реАрдВред - **рдЕрдиреБрд░реЛрдз рдкреБрдирд░реНрд▓реЗрдЦрди рдирд╣реАрдВ**: рд▓реВрдк-рдирд┐рд░реНрдорд┐рдд рдЕрдиреБрд░реЛрдз рдлрд╝реНрд░реАрдЬрд╝ рд╣реЛрддреЗ рд╣реИрдВ; `degrade` рдЕрдиреБрд░реЛрдз рдмрджрд▓рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕реБрдзрд╛рд░рд╛рддреНрдордХ рд╕рдВрджреЗрд╢ рдореЗрдВ рд▓рдХреНрд╖реНрдп рдореЙрдбрд▓ рдХрд╛ рдирд╛рдо рджреЗрддрд╛ рд╣реИред - **рддреЗрдЬрд╝ рд╡рд┐рдлрд▓рддрд╛**: рдЕрдорд╛рдиреНрдп рдХреАрдорддреЗрдВ, URL, рдЕрдиреБрдкрд╛рдд, рдХреНрд╖реЗрддреНрд░ рдФрд░ рд╕реАрдорд╛рдПрдБ рдорд╛рдЙрдВрдЯ рдкрд░ рд╡рд┐рдлрд▓ рд╣реЛрддреА рд╣реИрдВред - **рдИрдорд╛рдирджрд╛рд░ рджрд╛рдпрд░рд╛**: рдкреИрдирд▓ рдХреЗ рд░рдирдЯрд╛рдЗрдо рд╕рдВрдкрд╛рджрди рдХреЗрд╡рд▓ рд╕рддреНрд░-рд╕реНрддрд░реАрдп рд╣реИрдВ; рд░реАрд▓реЛрдб cordis.yml рдорд╛рди рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред ## рдЬреНрдЮрд╛рдд рд╕реАрдорд╛рдПрдБ - рдПрдЧреНрд░реАрдЧреЗрд╢рди рдкреНрд░реЛрд╕реЗрд╕-рд▓реЛрдХрд▓ рд╣реИ: рд╣рд╛рд░реНрдиреЗрд╕ рдкреБрдирдГ рдЖрд░рдВрдн рдкрд░ рдЙрдкрдпреЛрдЧ рд╢реВрдиреНрдп рд╣реЛрддрд╛ рд╣реИ (рджреИрдирд┐рдХ/рдорд╛рд╕рд┐рдХ рдмрдХреЗрдЯ рд╡рд░реНрддрдорд╛рди рд▓реЙрдЧ рджреГрд╢реНрдп рд╕реЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВ)ред - `block`/`degrade` `llm/stream` рд╡реЙрдЯрд░рдлреЙрд▓ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВ; рдЗрд╕ seam рдХреЗ рдмрд┐рдирд╛ рдмрд┐рд▓реНрдб рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рд░реЛрдХ рд╕рдХрддреЗ (рдЕрд▓рд░реНрдЯ рдлрд┐рд░ рднреА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ)ред - рдмрд┐рд▓реНрдЯ-рдЗрди рдХреАрдорддреЗрдВ рдкреБрд░рд╛рдиреА рдкрдбрд╝ рдЬрд╛рддреА рд╣реИрдВ; `config.prices` рд╕реЗ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВред ## рд╡рд┐рдХрд╛рд╕ ```sh pnpm install # node ^22.19 || >=24 pnpm run typecheck # tsc: src + tests рд╕реНрдерд╛рдиреАрдп рд╣рд╛рд░реНрдиреЗрд╕ рдЪреЗрдХрдЖрдЙрдЯ рдХреЗ рд╡рд┐рд░реБрджреНрдз pnpm run typecheck:ci # tsc рдкреНрд░рдХрд╛рд╢рд┐рдд 0.1.7-rc.2 рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╡рд┐рд░реБрджреНрдз (рдмрд┐рдирд╛ paths) pnpm test # vitest pnpm run build # tsc рдШреЛрд╖рдгрд╛рдПрдБ + tsdown рдмрдВрдбрд▓ (lib/) pnpm run verify:self-contained # рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдкреЗрдХ registry рд╕реЗ рд╣рд▓ рд╣реЛрддреА рд╣реИрдВ pnpm run verify:artifacts # ESM рдлрд╝реЗрд╕ + typert рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ + рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдВрдбрд▓ pnpm pack # рдкреНрд░рдХрд╛рд╢рд┐рдд tarball ``` ## Topics `dsh`, `dsh-plugin`, `deepseek-harness`, `deepseek`, `cordis`, `budget`, `cost-tracking`, `carbon-footprint`, `latency-benchmark`, `token-usage` ## Contributors - [@PerryLink](https://github.com/PerryLink) тАФ рдирд┐рд░реНрдорд╛рддрд╛ рдФрд░ рдореЗрдВрдЯреЗрдирд░: рдПрдЧреНрд░реАрдЧреЗрд╢рди, рдмрдЬрдЯ рдкреНрд░рд╢рд╛рд╕рди, рдХрд╛рд░реНрдмрди рдФрд░ рд▓реЗрдЯреЗрдВрд╕реА рдкреЛрд░реНрдЯ, Settings рдЯреИрдм рдФрд░ рдкрд╛рдБрдЪ-рднрд╛рд╖рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ред ## PerryLink DSH Plugin Family This project is one of the **45 DeepSeek Harness plugins** maintained by [PerryLink](https://github.com/PerryLink). If this one helps you, the others likely will too: | Plugin | One-liner | |---|---| | **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** | Second-model auto-review on the approval chain, fail-closed by default | | | **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | | | **[dsh-background-agents](https://github.com/PerryLink/dsh-background-agents)** | Durable background child agents with a Web UI sidebar, messaging and interrupt | | | **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | Cost governance for DeepSeek Harness: budgets, carbon, and latency in one panel. | | | **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | | | **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | | | **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | Claude Code /rewind-equivalent: snapshots, session forks, one-shot restore | | | **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | Migrate Claude Code sessions, memory, skills and CLAUDE.md into DSH | | | **[dsh-click](https://github.com/PerryLink/dsh-click)** | Cross-platform native desktop control for DeepSeek Harness тАФ Windows first. | | | **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | Terminal-style input history for the web composer: arrows, Ctrl+R search | | | **[dsh-data-quality](https://github.com/PerryLink/dsh-data-quality)** | Dataset quality checks and citation cross-checks (the optional numeric bridge consumed here) | | | **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | Prompt-injection, jailbreak, and secret-leak defense for DeepSeek Harness. | | | **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** | Engineering-discipline guard: requirements grill, test gates, adversary review | | | **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | Unified static-image generation routing for DeepSeek Harness. | | | **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | Read-only performance diagnostics for DeepSeek Harness. | | | **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | Deterministic research reports for Chinese public mutual funds | | | **[dsh-github](https://github.com/PerryLink/dsh-github)** | GitHub PR/issues integration for DSH, every write gated by approval | | | **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | Industry research orchestration that seals its deliverables through this plugin's `ctx.researchReport.assemble` | | | **[dsh-laya](https://github.com/PerryLink/dsh-laya)** | Laya typed decisions (`noul`/`choice`/`score`) as a first-class Cordis service and model-visible tools | | | **[dsh-library](https://github.com/PerryLink/dsh-library)** | Local document knowledge base for DeepSeek Harness. | | | **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | Local-model (Ollama) integration for DeepSeek Harness. | | | **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | LSP diagnostics, formatting, completion, code actions and rename over language servers | | | **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | PII masking middleware: anonymize at the model boundary, restore at the display layer | | | **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | Read-only MCP runtime panel: /mcp command + Settings tab with status, tools and errors | | | **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | Approval-gated cross-session memory: ctx.memory seam + SQLite + memory tool | | | **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | OpenTelemetry and Langfuse observability exporter for DeepSeek Harness. | | | **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | Claude Code outputStyles-equivalent runtime style switching | | | **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Claude Code-style declarative allow/deny/ask permission rules with audit | | | **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | | | **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | | | **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Plugin-development knowledge base as an on-demand agent skill | | | **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | | | **[dsh-plugin-upgrade](https://github.com/PerryLink/dsh-plugin-upgrade)** | One-package, one-corridor-index plugin upgrade skill: routes a repository to the matching closed corridor card | | | **[dsh-plugin-upgrade-015](https://github.com/PerryLink/dsh-plugin-upgrade-015)** | Merged `0.1.3-alpha.1` тЖТ `0.1.5-rc.1` upgrade corridor card plus a zero-dependency seam scanner | | | **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Multi-channel approval/question bridge: WeChat/Telegram/Feishu, session console | | | **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Verifiable research-report engine: content-addressed evidence ledger and sealed versions | | | **[dsh-score](https://github.com/PerryLink/dsh-score)** | Multi-dimensional quality scoring for DeepSeek Harness plugins. | | | **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | Pin sessions in the Web sidebar with durable ordering | | | **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | Cross-device session sync for DeepSeek Harness тАФ a dedicated git mirror of your session store. | | | **[dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security)** | Security-audit skill pack: secret scan, dependency and supply-chain review | | | **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | Voice-first session loop for DeepSeek Harness: talk to it, hear it answer. | | | **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | | | **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Isolated install-and-smoke test drives for DeepSeek Harness plugins. | | | **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 task bridge: session-header panel + 11 tools | | | **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Vendor parameter translation and deterministic JSON repair for DeepSeek Harness. | | ## License [Apache License 2.0](LICENSE) ┬й 2026 dsh-budget contributors ### DSH Desktop рдорд╛рд░реНрдХреЗрдЯ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ рд╕рднреА PerryLink рдкреНрд▓рдЧрдЗрди DSH Desktop рдХреЗ рдмрд┐рд▓реНрдЯ-рдЗрди рдорд╛рд░реНрдХреЗрдЯ рдореЗрдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ: **Market тЖТ Sources тЖТ add source тЖТ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ** `https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json` **тЖТ рдЪреБрдиреЗрдВ**ред рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдорд╛рд░реНрдХреЗрдЯ рдХреЗ npm-identity рд╕рддреНрдпрд╛рдкрди рдФрд░ рдЖрдкрдХреА рдкреБрд╖реНрдЯрд┐ рд╕реЗ рд╣реА рд╣реЛрддрд╛ рд╣реИред