Introduction

DeepSeek API pricing is segmented by time slots: Beijing Time 9:00–12:00 and 14:00–18:00 are peak hours, while the rest are idle times (half price). It is easy to forget to check the time when busy with tasks; I only realized it had been running in peak hours for an afternoon after I was busy, and this kind of thing isn’t uncommon for people tweaking APIs. Existing solutions involve setting alarms or running cron scripts in the terminal, but they don’t follow your working interface.

dsh-liangwengu turned this into a DSH (DeepSeek Harness) plugin: it pops up cartoon popups, sends system notifications, and plays sound effects at the right time, directly telling you “The Peak is coming, run! The Peak is gone, start harvesting.” Below is an introduction to its announcement mechanism, UI capabilities, and installation method.

What is this

dsh-liangwengu is a DSH/Cordis bundle plugin that announces at peak/idle times based on DeepSeek API pricing. The name comes from a meme: Liang Wenfeng = Peak = Peak hours; Liang Wengu = Valley = Idle (half price).

For pricing reference, see the DeepSeek official documentation: https://api-docs.deepseek.com/zh-cn/quick_start/pricing. The current version is 0.7.1, license MIT (clearly stated in the License section of the README and package.json). The code repository is at https://github.com/mozhuanzuojing/dsh-liangwengu.

All announcement times are fixed to the Asia/Shanghai timezone, independent of the machine’s local timezone; changing machines or system timezones does not affect the judgment.

Announcement Schedule

The plugin announces at these times during the day (Beijing Time):

Time Announcement Content
08:30 / 08:40 / 08:50 Peak Countdown: 30 / 20 / 10 minutes until 09:00
08:55 Liang Wenfeng is coming, run away!
12:00 Folks, Liang Wenfeng has left!! You can come out! + Liang Wengu starts~~~
13:30 / 13:40 / 13:50 Peak Countdown: 30 / 20 / 10 minutes until 14:00
13:55 Liang Wenfeng is coming, run away!
18:00 Folks, Liang Wenfeng has left!! You can come out! + Liang Wengu starts~~~

In other words, each peak period (starting at 09:00 and 14:00) has a countdown and a pre-peak reminder, and each peak exit point (12:00 and 18:00) has a valley opening announcement.

Three Forms of Reminders

At the appointed time, the plugin reminds you through three channels, all using the same cartoon character (assets/cartoon.jpg, which also serves as the notification icon):

  1. Cartoon Popup: Bounces into the bottom right corner, speech bubble plus cartoon image, auto-dismisses after 8 seconds, click to close.
  2. Browser System Notification: Requests permission on the first trigger; after authorization, system notifications pop up at the scheduled time with a cartoon icon.
  3. Sound Effects: Based on Web Audio synthesis. Peak arrival is a rapid downward tone; valley opening is an upward tone. May be muted due to browser autoplay policies.

Gamified HUD

Capsule and Detail Panel

There is a permanent capsule in the top right corner: icon + stage name + HP bar + countdown to the next event. It is draggable, and position is saved in localStorage; click to expand the detail panel, which contains the current stage card, daily schedule, HP rules, and today’s announcement records.

The theme switches automatically based on Beijing Time: 06:00–18:00 is the Daylight Light Blue capsule, 18:00–06:00 is the Moonlight Deep Blue capsule; switching completes within 1 second, and the detail panel shares the same theme (v0.2.1).

HP = Safety Margin

The plugin uses a health bar to represent “how safe you are until the peak”: 100 HP in the valley, drops as distance decreases (30m before peak -> 70 / 20m -> 40 / 10m -> 10), recovers during the peak, and reaches 100 HP at 18:00.

Starting from v0.5.1, the bar itself is “water”: width equals HP, color and bubble represent water temperature (countdown phase water turns blue to white, bubbles increase as HP drops). At the exact moment the valley starts, steam bursts from the bar accompanied by a bubbling sound; if the HP number drops below 20, it turns red to indicate danger.

Cultivation Levels

v0.4.0 added the Nine Realms of A Mortal’s Journey to Immortality: Qi Refining -> Foundation Establishment -> Golden Core -> Nascent Soul -> Spirit Transformation -> Void Integration -> Divine Union -> Mahayana -> True Immortal. Cultivation progress doubles with each level. There are two sources of cultivation progress:

  • Tribulation: +1 if online at the settlement points of 12:00 / 18:00, with a daily cap of 2 times.
  • Seclusion: +1 per hour online during valley hours.

When breaking through, there is a golden light animation, lines of dialogue, and an upgrade sound; reaching True Immortal triggers a full-screen Ascension easter egg. The capsule displays the realm badge, and the detail panel has the cultivation card.

Easter Eggs and Blood Fog

Two details added in v0.3.0:

  • Hidden Easter Egg: At the instant HP hits zero (i.e., 09:00 / 14:00), the cartoon zooms and bounces + random meme lines + screen shake, limited to 2 times a day.
  • Blood Fog Atmosphere: A red vignette around the screen fades in as HP drops, becoming thickest at the peak. Pure CSS implementation, non-intrusive.

Distraction Balancing and Missed Compensation

If it popped up at every time point, you wouldn’t be able to use it all day. The plugin balances this:

  • Popups occur only 6 times a day: 4 main triggers (08:55 / 12:00 / 13:55 / 18:00) + 2 easter eggs, all in loud mode (notification + sound).
  • The 6 countdowns no longer pop up; instead, they are handled by the capsule bar dropping and the real-time “Time to next event” countdown (v0.3.0 / v0.4.3).

Regarding missed compensation: If the page is open within 15 minutes of the nearest main trigger point, it replays that slogan (expired countdowns are not replayed to avoid stale information); otherwise, it plays a one-time current phase announcement: “Liang Wenfeng is still guarding” during peak hours, and “Liang Wengu is in progress” during idle hours.

Installation and Activation

Installation commands are as follows, replacing <name> with your profile name:

# Local directory
dsh plugin --profile <name> add ./dsh-liangwengu

# npm package
dsh plugin --profile <name> add dsh-liangwengu

# tarball (example filename in README)
dsh plugin --profile <name> add ./dsh-liangwengu-0.1.1.tgz

Note that the dsh-liangwengu-0.1.1.tgz in the tarball line is a README example; the package.json current version is 0.7.1, so the actual filename depends on your pnpm pack output.

Restart the profile after installation. Allow “Notifications” permission when the browser first pops up, so you can receive system notifications later.

For debugging, execute the following command in the browser devtools console to manually trigger a popup:

window.__lwgTest('warn' | 'good' | 'cd' | 'phase')

Package Structure and DSH Adaptation

For those who want to reference this to write DSH plugins, the structure of this package is worth a look. It is pure JS, zero dependencies (only peer @deepseek-ai/cordis ^4.0.2), and no allowBuilds is needed for installs from git/npm:

dsh-liangwengu/
├── package.json        # dsh.bundle.patch → cordis.patch.yml; dsh.client → Browser half
├── cordis.patch.yml    # Plugin entry: - insert: id liangwengu / name dsh-liangwengu
├── src/index.js        # Host half: reads assets/cartoon.jpg, mounts /liangwengu/cartoon.jpg route for images
├── lib/client.js       # Browser half: scheduler + popup + notification + sound (ModuleLoader bundle)
└── assets/cartoon.jpg  # Cartoon character (popup avatar + notification icon)

v0.7.1 is adapted for DSH 0.1.2-rc.1: the client capsule is moved to registration in shell.overlay slot slots.inject, and inject: ['slots'] is added to the client plugin to avoid ctx.get('slots') returning undefined due to timing issues and causing the capsule not to render; cordis is upgraded to ^4.0.2. This version has been tested and works normally for both capsule and popup mounting under DSH 0.1.2-rc.1.

Use Cases and Notes

Suitable for: People who frequently tweak DeepSeek API in browsers, want to move batch tasks to off-peak hours, and don’t want to remember the schedule themselves. It solves the problem of relying on memory for peak/valley switching.

Pre-use notes:

  • System notifications require browser authorization and will be requested on the first trigger; sound effects may be muted by browser autoplay policies.
  • Time period judgment is fixed to Asia/Shanghai; machine timezone does not affect it, but if you are not on the Beijing time work rhythm at all, the announcements have limited meaning for you.
  • The plugin runs with the permissions of the current dsh process; it is recommended to read the repository source code and confirm the license before installing (this plugin is MIT).

Summary

dsh-liangwengu uses cartoon popups, system notifications, sound effects, and a health bar that drops, turning DeepSeek API peak/valley times into visible information, so cost control reminders no longer rely on self-discipline. Repository address: https://github.com/mozhuanzuojing/dsh-liangwengu; Community directory listing: https://www.skillhub.cn/plugins/mozhuanzuojing/dsh-liangwengu.