Skip to content
dsh.fish
Bundle

dsh-peak-avoidance

DeepSeek Harness 高峰期模型自动切换插件:高峰前自动切到指定替代模型,高峰后切回官方模型。· Auto-switch to an alternate model before DeepSeek peak hours and back to the official model afterwards. · 本插件由 AI 全权开发,作者无编程经验,请自行测试安全性;安装说明可能含 AI 幻觉。· Developed by AI; test at your own risk; install docs may contain AI hallucinations.

Source
yuzuki-natsumi
License
MIT
Updated
Updated 3 days ago

Readme

# dsh-peak-avoidance

Auto-switch to an alternate model before DeepSeek peak hours and back to the official model afterwards — avoiding official peak-hour pricing.

[![npm version](https://img.shields.io/npm/v/dsh-peak-avoidance)](https://www.npmjs.com/package/dsh-peak-avoidance)
[![npm downloads](https://img.shields.io/npm/dm/dsh-peak-avoidance)](https://www.npmjs.com/package/dsh-peak-avoidance)
[![License: MIT](https://img.shields.io/npm/l/dsh-peak-avoidance)](LICENSE)
[![Node](https://img.shields.io/node/v/dsh-peak-avoidance)](package.json)

**Maintainer: 柚木夏实 · Code written by AI (DeepSeek Harness)**

## Disclaimer

> This plugin was **developed entirely by DSH (AI)**. The author has **no programming experience**, and the code has not been professionally reviewed.
> Users must **test it themselves** and judge its safety, stability, and correctness before use.
> The installation instructions in this repository may contain **AI hallucinations** (inaccurate or nonexistent steps, package names, or paths) — verify everything before executing.
> The author accepts **no liability** for any consequences of using this plugin.

## Features

- **Scheduled switching**: enter avoidance at `window start − leadMinutes` (default 30), restore at `window end`.
- **Both routes**: `agentDefaultModel` (default route) + `apiProxy.sessions.selectModel` (live sessions, takes effect next turn).
- **Multiple windows**, cross-midnight supported (e.g. `22:00-02:00`).
- **Reasoning effort** per model (`high`, …), dropdown populated from the live model catalog.
- **Provider/model dropdowns** fetched live from the `llm` service.
- **Switch toast**: frame-wide banner on enter/exit (toggleable; polling stops when off).
- **Manual control**: card buttons plus model tools `peak_avoidance_status` / `peak_avoidance_control`.
- **Safe**: sessions manually reverted during peak are never forced back; originals are restored on stop (`restoreOnStop`).

## Install

**Option 1 — npm (recommended for DSH users)**:

```bash
npm install dsh-peak-avoidance
```

> The `@deepseek-ai` runtime deps are **peerDependencies**, provided by DSH itself — nothing extra to install. Installing outside DSH requires providing the peers (`@deepseek-ai/dsh-settings`, `@deepseek-ai/dsh-tools`, `@deepseek-ai/cordis`) yourself.

**Option 2 — from source**: clone this repo and place `lib/` + `package.json` into a DSH-resolvable directory (e.g. `$DSH_HOME/profiles/node_modules/dsh-peak-avoidance/`).

Both options then require appending to `$DSH_HOME/cordis.patch.yml`:

```yaml
- insert:
    - id: peak-avoidance
      name: 'dsh-peak-avoidance'
```

and restarting DSH.

## Usage

- Settings → Plugins → Configurable → **Peak Avoidance** card: status, config, manual enter/restore.
- Config lives in DSH settings (`peak-avoidance` section of `settings.yaml`); changes apply immediately.
- Required: `peakModel` (avoidance target) and `normalModel` (official model; copy the current default on first run).

## Privacy & security

- No API keys are read, stored, or emitted; only model selections and its own config.
- The client bridge accepts loopback requests only.
- All catalog/model/effort data comes live from the DSH `llm` service — no deployment-specific hardcoding.

## Development

- No build step: `lib/index.js` (host, Cordis plugin module) + `lib/client.js` (browser, module-loader format).
- Deps: `@deepseek-ai/dsh-settings`, `@deepseek-ai/dsh-tools`, `@deepseek-ai/schemastery`.

## License

MIT

Install

dsh plugin --profile web add github:yuzuki-natsumi/dsh-peak-avoidance

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source