๐Ÿค dsh-ikun-pet

August 15, 2026 ยท View on GitHub

DSH Plugin License Stars npm Downloads

๐Ÿ“– ไธญๆ–‡ๆ–‡ๆกฃ๏ผšREADME.zh.md

demo

A DeepSeek Harness (DSH) plugin that fills the full row under the "Deep diving..." status line with an ikun pet during every reply: a 0% โ†’ 100% progress bar, a new animation and text every 20%, and a jump celebration with a system-level "ไฝ ๅนฒๅ˜›~ๅ“Žๅ“Ÿ" voice cue at completion ๐Ÿ€

โœจ Features

  • Only fills the deep-dive dock: registered at conversation.input.dock โ€” the full row directly below DSH's "Deep diving..." status line, between the conversation and the composer. Visible only while a session is running (deep diving); completely invisible the rest of the time.
  • The pet walks the progress bar: the ikun pet walks from 3% to 97%, playing frame-by-frame on top of the progress bar (8 columns ร— 9 rows sprite-sheet contract).
  • A new stage every 20%: six stages at 0/20/40/60/80/100, each switching both the animation and the text (see docs/PROGRESS-STAGES.md).
  • Universal adaptive progress: a layered estimation model โ€” real anchors (0% start / 100% done) + real goal-round progress + self-calibration from this session's turn durations + activity pacing for tools/streaming/approval-waiting + a shrinking reserve. Short tasks run fast, long tasks run slow, waiting for your approval slows it down honestly, and it never fakes 100% (details in docs/PROGRESS-STAGES.md).
  • Completion heard system-wide: at 100% the host process plays "ไฝ ๅนฒๅ˜›~ๅ“Žๅ“Ÿ" (assets/voice.mp3) with a system command โ€” audible from any window and any session, independent of browser mute (tested on macOS).
  • Permanent plugin form: written into the DSH composition (cordis.patch.yml) and auto-loaded on every DSH start โ€” install once, works in every session. Dynamic-plugin sources (src/) are kept as an alternative for session-level installs.

๐Ÿš€ Install

Option A: clone (for tinkerers)

git clone https://github.com/eric-song-dev/dsh-ikun-pet && cd dsh-ikun-pet
dsh plugin add "$PWD" --profile web

Option B: remote one-liner (for users)

dsh plugin add github:eric-song-dev/dsh-ikun-pet --profile web
# or: dsh plugin add https://github.com/eric-song-dev/dsh-ikun-pet.git --profile web

Option C: npm (prebuilt โ€” installs without the allowBuilds build-approval step)

dsh plugin add dsh-ikun-pet --profile web

๐Ÿ’ก If your profile isn't named web, swap --profile web for your own profile name in the commands above.

Then restart dsh web and refresh the browser. Verify:

curl -sI http://127.0.0.1:3080/ikun-pet/spritesheet.webp   # sprite route (should be image/webp)
curl -s  http://127.0.0.1:3080/plugins/dsh-ikun-pet/client.js   # client bundle (should return JS)

๐ŸŽฌ Stage โ†’ animation โ†’ text

ProgressAnimationText
0% โ€“ 20%waitingๆทฑๆฝœๅฏๅŠจ๏ผๅ‡†ๅค‡ๅ‡บๅ‘โ€ฆ
20% โ€“ 40%runRightๆญฃๅœจๆ”ถ้›†็บฟ็ดขโ€ฆ
40% โ€“ 60%workingๅŸ‹ๅคด่‹ฆๅนฒไธญโ€ฆ
60% โ€“ 80%review่ฎค็œŸๆ€่€ƒไธญโ€ฆ
80% โ€“ 100%waveๅฟซๅฅฝๅ•ฆ๏ผ้ฉฌไธŠ่ง็ป“ๆžœ~
100% (done)jumpๅฎŒๆˆๅ•ฆ๏ผไฝ ๅนฒๅ˜›~ๅ“Žๅ“Ÿ ๐Ÿ”‰ (host plays the voice cue)

โš™๏ธ Configuration (optional)

Everything lives in the plugin line's config inside the bundled cordis.patch.yml: spritePath / voicePath / playVoiceAtDone / playCommand (assets default to the bundled assets/).

  • Disable: remove the # in front of # disabled: true, restart dsh web (put it back to re-enable)
  • Mute the voice: config.playVoiceAtDone: false (the animated bar is unaffected)
  • Voice on Windows/Linux: swap playCommand to PowerShell / ffplay (examples in the comments; macOS defaults to afplay, tested)

๐Ÿ—‘ Uninstall / ๐Ÿ”„ Update

dsh plugin remove dsh-ikun-pet --profile web     # uninstall (bundles are reconciled automatically), then restart dsh web
# update: cd <repo dir> && git pull && dsh plugin add "$PWD" --profile web

๐Ÿงช Session-level install (dynamic plugin)

node scripts/build-package.mjs     # produces the ikun.package.json install payload

Hand the payload to your Agent to install via cordis_define + cordis_run โ€” current session only. โš ๏ธ Don't run it alongside the permanent plugin (their sprite routes conflict).

๐Ÿ–ฅ Platform support

PartmacOSWindows / Linux
Animated UI + progress bar (pure Web)โœ… testedโš ๏ธ should work, untested
Completion voice (system command)โœ… tested (afplay)โš ๏ธ commands provided, untested

๐Ÿ›Ÿ Troubleshooting

SymptomFix
Plugin line fails on restartnode -e "require('dsh-ikun-pet')" in the profile dir should succeed; reinstall if it doesn't
Dock not showing but routes workhard refresh (Cmd+Shift+R); make sure the dynamic plugin isn't enabled at the same time
No voicecheck config.playVoiceAtDone; macOS uses afplay, other OSes need a different playCommand
Don't want it to loadadd disabled: true to the plugin line and restart

๐Ÿ“„ License

MIT