Skip to main content

dsh-emoji

31Stars2Forks0Issues1Watchers

Adds switchable and uploadable custom inline emojis to DeepSeek Harness Web conversation replies, with 40 built-in semantic keys.

Evidence5/5methodologySourceInstallMaintenanceDSH versionSecurity scan
Machine-auditedInstall commandRepo verifieddsh-plugin topicLicenseREADMEAI wiki
Language
TypeScript
License
MIT
Branch
main
deepseek-harnessdshdsh-plugin

Install

cmdweb profile
$ dsh plugin --profile web add dsh-emoji

Run the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial

Install via your agent

Install the DeepSeek Harness plugin hellodigua/dsh-emoji for me: review the repository at https://github.com/hellodigua/dsh-emoji first, then run the install command and verify the plugin loads successfully.

Paste this instruction to the DSH Web GUI assistant — it will install and verify for you.

One-Sentence Description

Adds a switchable, customizable set of inline emojis to DeepSeek Harness Web chat replies. The AI selects semantics directly from 42 controlled Unicode emojis, and the Host rewrites them to local PNGs during streaming responses, rendering as inline images in the browser without additional model calls.

Core Capabilities

  • Built-in "Blue Whale Emoji Pack" covering 40 stable semantic keys (e.g., happy, thinking, doge), ready to use out of the box
  • AI selects semantics from 42 controlled Unicode emojis, and the Host automatically rewrites them to inline PNGs of the current emoji pack during LLM streaming
  • Supports three usage frequency levels in "Settings → Plugins → Emoji (Whale Emoji)": off, auto, and frequent. Smart mode allows max 3 per turn, frequent mode allows max 4
  • Four display size options (small/normal/large/xlarge: 1.25em / 1.5em / 2em / 2.5em), with support for controlling selection, tone, and scenarios via custom附加提示词
  • Allows users to upload custom ZIP emoji packs; AI still uses the same set of controlled Unicode characters, only replacing image assets, no Host restart required
  • User packs are immutably installed by id@version; deduplicated via SHA-256; upload/removal automatically bumps internal revision for immediate browser awareness

Technical Implementation

  • Language: TypeScript (with React 18 client card)
  • Key Dependencies: @deepseek-ai/cordis (plugin container), @deepseek-ai/dsh-system-prompt (emoji strategy injection), fflate (ZIP extraction), pngjs (PNG validation), plus dsh-llm streaming bridge and dsh-host-webserver static asset routing
  • Architecture Pattern: Host + Web Client dual halves. Host side injects Cordis via dsh.bundle.patch, listens to llm/stream, system-prompt/change, registers webServer route /api/dsh-emoji/assets/; Web Client half injects into settings.plugin.item slot to render settings card, injects styles based on displaySize
  • Entry Files: src/index.ts (Host apply) + src/client/index.ts (Web apply)

Use Cases

For regular users who want to add some emotional flair to DSH Web chat without repeatedly training AI emoji behavior. Use frequent mode if you want AI to include a suitable emoji in every reply by default; use the default auto mode for occasional, restrained usage. If you have original or community emoji packs you want to replace the default Blue Whale with, you can upload a custom ZIP conforming to the 40 semantic keys and switch directly.

Prerequisites & Compatibility

DependencyMin VersionDescription
DeepSeek Harness^0.1.0-rc.7Declared by package.json peerDependencies; cordis.patch.yml injected into Host
Node.js^22.19.0 || >=24.0.0Declared by package.json#engines
React^18.2.0Required by Web Client settings card
OSCross-platformNo native modules, only depends on Node.js runtime and browser

Installation

dsh plugin --profile web add github:hellodigua/dsh-emoji

Configuration

ConfigTypeDescriptionDefault
modeenum off/auto/frequentAI usage frequency strategy for inline emojis; off=don't use, auto=smart=up to 3 per turn default, frequent=up to 4 per turnauto
displaySizeenum small/normal/large/xlargeDisplay size of inline emojis in browser, affects stylesheetnormal
customPromptstring (≤4000 chars)User prompt appended to emoji strategy prompt; can control selection, tone, and usage scenarios, but cannot change mode/allowed Unicode/upper limit""
activePackstring id@versionEmoji pack used for current replies; takes effect on next model call after user upload/switchdeepseek@8
packRevisionnatural numberInternal version number, auto-incremented only when emoji pack directory changes; used to invalidate asset URLs for client and Host0

FAQ

Q: When will AI use emojis? Will it automatically add images?

A: AI actively selects from 42 controlled Unicode emojis; the plugin does not guess emotions from body text; the model is allowed to not use emojis in auto mode, while in frequent mode it's required to insert an emotion-matching emoji in chat replies. Multiple emojis in the same reply must be separated by valid body text, and plugin emojis won't appear in code or links.

Q: What's the difference between the three frequency levels?

A: Off = don't use any plugin emojis; Auto (default) = only use when it can improve friendliness, encouragement, or playful tone, max 3 per turn; Frequent = include a suitable emoji in all chat replies, max 4 per turn. Frequency change takes effect on next model call.

Q: Can I upload my own emoji pack? Any restrictions?

A: Yes. When uploading ZIP, the plugin auto-validates: must include pack.json (declaring schemaVersion=1, keySet='dsh-emoji-core@1', id, name, version) and PNG files for each semantic key in images/ directory with matching names; ZIP limit 20 MiB, extracted limit 80 MiB, single file ≤2 MiB, image dimensions ≤512 pixels; non-compliant formats, missing keys, unknown keySet, fake validation, or version conflict with existing will all be rejected.

Q: Where are user emoji packs saved? Will they be cleaned up together?

A: User packs are saved in $DSH_HOME/emoji-packs/ (default ~/.dsh/emoji-packs/), immutably installed by id/version/. "Remove" in settings card only hides from selection list, preserving immutable asset bytes so historical messages with that version's URLs can still replay; to fully clean up, manually delete that directory.

Q: Do I need to restart after switching emoji packs or adjusting frequency?

A: No. Next model call will use new settings; if only adjusting display size, browser will immediately reflect changes via style hot-update.

Q: Can I still view emojis in historical messages after uninstalling the plugin?

A: The plugin's main registration info will be removed, but asset URLs already persisted in messages still point to original files; as long as user emoji pack bytes still exist under ~/.dsh/emoji-packs/, URLs can continue replaying; built-in Blue Whale pack comes with plugin, restore by reinstalling.

Q: Can custom附加提示词 expand AI's emoji selection range?

A: No. Prompt only affects tone, style, and usage scenarios; runtime non-editable constraints always fix mode, allowed 42 Unicode characters, and quantity upper limit; custom prompts cannot bypass these.

Q: Will uninstalling this plugin affect other plugins' images?

A: No. This plugin's stylesheet and routes only match img[src*="/api/dsh-emoji/assets/"], won't change normal Markdown images or other plugins' image rendering.

Difficulty Level

Beginner — Default installation is ready to use; default auto mode provides emotional flair; custom emoji pack upload requires preparing 40 conforming PNGs, which has higher requirements for regular users but is not mandatory.

Known Issues & Limitations

  • Legacy v0.1 persisted /api/dsh-emoji/assets/deepseek/ds_XX.png resource paths in historical messages still replay normally, resolved by resolveLegacyAsset fallback at packs.ts:411
  • User emoji packs' custom id must not use deepseek; built-in pack id is reserved (packs.ts:114)
  • Built-in Blue Whale pack cannot be removed; currently active emoji pack cannot be removed either; must switch first then remove (packs.ts:494-495)
  • When DSH Host's webServer service is not yet registered, Host side will actively throw dsh-emoji: webServer service missing while resolving emoji URL; need to confirm Web Profile is correctly enabled (src/index.ts:64)
  • Custom prompt allows empty string, max 4000 chars, but can only affect selection/tone/scenario, cannot change mode, Unicode whitelist, or upper limit (src/index.ts:42-48)
  • Current 40 standard Unicode mappings defined at reaction-emoji.ts:11-52; new keys won't enter historical mappings; incompatible extensions will be released via new keySet major version (EMOJI_KEYS.md:28)

Read the usage guide →

Install steps, key points, FAQ and compatibility for this plugin — auto-derived from indexed fields.

Listing badge

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/hellodigua/dsh-emoji)

Paste this markdown into your GitHub README to link back to this listing. The badge only states the listing — not a security endorsement.

← Back to plugin directory