Back to home@susirial

dsh-traebao

Conversation-aware TRAE Bao digital pet for DeepSeek Harness Desktop

Stars
0
Language
TypeScript
Created
Aug 23, 2026
Updated
Aug 23, 2026

Introduction

TRAE Bao animated desktop pet

TRAE Bao for DeepSeek Harness

A conversation-aware digital pet that lives inside DSH Desktop.

TRAE 宝不是循环播放的 GIF。它会跟随 Agent 的思考、工具调用、完成与失败状态实时行动。

简体中文 · Quick start · Watch the trailer

CI MIT code license Node.js version DeepSeek Harness plugin TypeScript

TRAE Bao reacting inside a DeepSeek Harness conversation

Click the screenshot to play the trailer. This is an independent community plugin and is not an official TRAE or DeepSeek product.

Why TRAE Bao?

Coding agents already have a lifecycle. TRAE Bao makes it visible:

  • Conversation-aware — nine animations follow new sessions, queued prompts, reasoning, tool execution, success, and failure.
  • Native to DSH Desktop — uses the official shell.overlay and settings.section slots without replacing the product layout.
  • Made to be yours — replace every action with a WebP and map built-in or custom sounds to all nine states plus left- and right-click.
  • Safe local storage — user assets stay under $DSH_HOME/pet-assets/dsh-juan-pet/; imports are size-, extension-, MIME-, and magic-byte checked.
  • Desktop-quality file picking — the Host owns the native dialog, including a macOS sheet that avoids the white flash caused by renderer file inputs.
  • Headless-safe engineering — strict TypeScript, 44 unit tests, and a Loader/export/assets smoke test.

See it in action

Conversation companionConfigure every state
TRAE Bao in chatTRAE Bao settings
Replace one actionChoose built-in or custom audio
Replace a TRAE Bao actionConfigure TRAE Bao sounds

Quick start

Requirements

  • DSH Desktop with an active desktop profile
  • Node.js ^22.19.0 or >=24.0.0

The pet runs inside DSH Desktop. Installing, updating, and removing it uses Desktop's own dsh CLI, not a second app. Desktop does not put dsh on your system PATH, so open the tray command Open DSH Terminal first. That launches a system terminal with a private, profile-aware dsh for the current Desktop profile.

Install from GitHub

  1. From the DSH Desktop tray, choose Open DSH Terminal.
  2. In that terminal, run:
dsh plugin --profile desktop add github:susirial/dsh-traebao
  1. Quit DSH Desktop from the tray and reopen it. Closing only the window does not restart the Host or reload the Client bundle.

Open Settings → TRAE 宝 to enable, position, resize, mute, preview, or customize your companion.

Install from a local checkout

git clone https://github.com/susirial/dsh-traebao.git
cd dsh-traebao
corepack pnpm install --frozen-lockfile
corepack pnpm run check

# Run in the tray-opened Desktop terminal; "." is anchored to this checkout.
dsh plugin --profile desktop add .

The GitHub repository keeps verified lib/ artifacts checked in, so direct GitHub installation does not need to execute an install-time build script.

Update, verify, or remove

# Update the Git dependency
dsh plugin --profile desktop update dsh-plugin-juan-pet

# Confirm the bundle is present in the composed profile
dsh --profile desktop --dump-config

# Remove it
dsh plugin --profile desktop remove dsh-plugin-juan-pet

Restart Desktop after update or removal.

What if dsh is not on PATH?

This is expected in a normal terminal. From the Desktop tray, choose Open DSH Terminal; it adds a profile-aware dsh only to that terminal session.

If you have a DSH Desktop source checkout, you can also call its pinned CLI directly:

/path/to/su-dsh-desktop/dsh-plugin-desktop/node_modules/.bin/dsh \
  plugin --profile desktop add github:susirial/dsh-traebao

As a last resort, npx -y --package @deepseek-ai/dsh dsh ... works, but it may fetch a CLI version different from your Desktop installation.

Agent lifecycle → pet behavior

DSH activityTRAE Bao state
New conversationwaving
Prompt queued / turn startsjumping
Tool runningwaiting
Reasoning or partial outputreview
Turn completes successfullyhappy
New tool or turn errorfailed
Drag left / rightrunning-left / running-right
Everything elseidle

Edge-triggered states have priorities and hold times, so a repeated snapshot does not restart the same reaction. Errors outrank success, and active tools outrank ordinary reasoning.

Customize TRAE Bao

In Settings → TRAE 宝 you can:

  • turn the pet, bubble, or audio on and off;
  • choose a size from 64–320 px and set its saved position;
  • preview any state;
  • choose a sound for each state and mouse interaction;
  • replace one action image, restore its default, or batch import all actions;
  • import and delete MP3, WAV, OGG, or M4A sounds.

For batch image import, use these case-insensitive filenames:

idle.webp
waving.webp
running-left.webp
running-right.webp
waiting.webp
review.webp
jumping.webp
happy.webp
failed.webp

You can select files through the system picker, drag them onto the target row, or paste them. WebP files are limited to 10 MB; audio files are limited to 20 MB.

Architecture

TRAE Bao is one installable package with two independently built halves:

cordis.patch.yml
       │
       ├── Host (ESM / Node)
       │   ├── SettingsScope source
       │   ├── static and user-asset routes
       │   ├── validated asset store under $DSH_HOME
       │   └── optional Electron-native file picker
       │
       └── Client (CJS / browser Loader row)
           ├── shell.overlay → draggable animated pet
           ├── settings.section → preview and asset library
           └── CurrentConversation → PetStateController

The overlay is additive and supports both Desktop compatibility and advanced shells. In browser-only DSH deployments, the Electron picker is absent and the UI falls back to drag-and-drop or paste.

Development

corepack pnpm install --frozen-lockfile
corepack pnpm run build
corepack pnpm run typecheck
corepack pnpm run test
corepack pnpm run verify:loader

# Build + typecheck + all tests + Loader smoke
corepack pnpm run check

The source of truth is src/; lib/ is committed because DSH installs Git-hosted plugins as ready-to-load packages.

Compatibility and limitations

  • Tested against the DSH 0.1.1-rc.2 package family and Cordis 4.0.1.
  • Audio starts only after the first user gesture because browser autoplay policies still apply.
  • Position is stored in window pixels and is not automatically rewritten when the window shrinks.
  • The bundled character is TRAE Bao; character selection is intentionally out of scope.
  • The Desktop profile must provide WebServer, settings, slots, sessions, and SettingsScope.

Security and privacy

TRAE Bao has no telemetry and sends no pet data to an external service. Mutation routes require same-origin requests. Static routes reject traversal, uploaded data is magic-byte checked, and user files are atomically written with private permissions. See SECURITY.md for reporting.

Contributing

Bug reports, platform verification, new tests, and carefully licensed pet assets are welcome. Read CONTRIBUTING.md before opening a pull request.

License and credits

The plugin code is available under the MIT License. Bundled visual and audio media have separate provenance and are not automatically covered by the code license; read ASSETS.md before redistributing them.

TRAE, DeepSeek, and related marks belong to their respective owners. This community project is not endorsed by or affiliated with those owners.