Preface¶
When creating conversational Agents in DeepSeek Harness (DSH), pure text responses often lack emotional depth. Common approaches include having the model directly output Unicode emojis, but these lack visual consistency across platforms; or inserting image links in prompts, which requires additional format agreements and parsing overhead.
dsh-emoji takes a different path: the model continues to output 42 allowed Unicode emojis (corresponding to 40 stable semantics) as per existing conventions, and the Host-side replaces them with inline images from the currently selected emoji pack at render time. Switching between built-in packs like Bilibili, Tieba, or Xiaohongshu, or uploading custom assets, requires no changes to the model invocation logic.
Below is an introduction to this DSH plugin maintained by hellodigua, currently at npm version 0.3.1 with approximately 39 GitHub stars.
What is This¶
dsh-emoji is a fun customization plugin for the DeepSeek Harness Web Profile. Its core responsibility is singular: to transcribe standardized Unicode emojis in Agent responses into inline images.
Maintainer: hellodigua
Directory Page: SkillHub - dsh-emoji
Source Code: github.com/hellodigua/dsh-emoji
Core Features¶
Semantic Protocol and Transcription Rules¶
The plugin does not guess emotions from the text, nor does it automatically add images. Transcription applies only to:
- 40 standardized Unicode emojis and their common aliases (e.g.,
😄/🙂) - Images generated by this plugin
Code, links, double-colon text, standard Markdown images, and other Unicode emojis remain unchanged. Multiple plugin emojis must be separated by valid text; the same emoji can be reused at different positions.
Built-in packs and user-uploaded packs share the same 40 stable semantic keys. They can be switched at any time and support four display sizes: small, normal, slightly large, and large.
Built-in Emoji Packs¶
The README showcases the default “Big Fat Fish” emoji pack, as well as the conversational effect after switching to Tieba or Bilibili emoji packs. The same semantic protocol can be applied to custom emoji packs for platforms like Xiaohongshu, Douyin, Weibo, and more.
Emoji Frequency Control¶
After installation and restarting the Web Host, adjust settings under “Settings → Plugins → Emoji (Whale Emoji)”:
Off: Disable emojisSmart: Use emojis only when they help convey meaning, up to 3 per turn (default)High Frequency: Add suitable emojis in all responses per turn, up to 4, placed after sentences or short paragraphs corresponding to the current emotion
You can also select the emoji pack, adjust the size, or fill in “Additional Prompt” to control selection, tone, and usage scenarios. Changes take effect from the next response after saving, without requiring a restart; the frequency strategy still relies on the model following the prompt.
Uploading Custom Emoji Packs¶
Click “Upload ZIP” in the same settings card. After a successful upload, select the new pack and save it. The next model invocation will immediately use the new pack.
Custom packs reuse the built-in 40 stable semantic keys; the AI still outputs the same set of allowed Unicode emojis, and the Host only replaces the images.
ZIP structure example:
my-whale.zip
├── pack.json
└── images/
├── happy.png
├── sad.png
├── thinking.png
├── celebrate.png
└── ...other standard keys
pack.json format:
{
"schemaVersion": 1,
"keySet": "dsh-emoji-core@1",
"id": "my-whale",
"name": "My Whale Emojis",
"version": "1.0.0"
}
The 40 filename keys are:
happy, sad, confused, watching, angry, speechless, doge, overloaded,
neutral, laughing, crying, sweating, thinking, okay, nodding, sleeping,
hurt, peeking, approve, heart, shy, star-eyes, laugh-cry, touched,
scared, facepalm, eye-roll, sigh, frustrated, playful, snickering,
sarcastic, cool, celebrate, cheer, thanks, sorry, hug, please, applause
Each key must have exactly one corresponding .png file. The id uses lowercase letters, numbers, and hyphens, and the version follows SemVer. The ZIP file size limit is 20 MiB, the uncompressed size limit is 80 MiB, the single file limit is 2 MiB, and both image width and height must not exceed 512 pixels.
User packs are stored in $DSH_HOME/emoji-packs/ (default ~/.dsh/emoji-packs/). For the precise meaning of each key, refer to EMOJI_KEYS.md in the repository.
Installation and Enabling¶
Add the plugin to the Web Profile using the DSH CLI, then restart the Web Host:
dsh plugin --profile web add dsh-emoji
To try a pre-release version, replace the package name with dsh-emoji@beta:
dsh plugin --profile web add dsh-emoji@beta
Note: A regular npm install dsh-emoji only adds the package to the current Node.js project and does not enable the DSH plugin.
The current version targets npm @deepseek-ai/dsh@0.1.0-rc.7, with DSH peers declared as ^0.1.0-rc.7.
Typical Usage¶
After installation and restarting, no changes to the Agent code are needed. The model outputs allowed Unicode emojis in its responses, such as 😊, and the plugin converts them to inline images from the current emoji pack on the Host side.
After following the steps above, switching to the Tieba or Bilibili emoji pack in the settings will cause both historical messages and new responses to render according to the new pack, with semantics unchanged but visuals switched.
To control emoji density, select Smart or High Frequency in the settings, and fill in the additional prompt if necessary, for example, to limit usage to casual conversations only.
To use your own assets, prepare a ZIP according to pack.json and the 40 keys, upload it, then select and save.
Applicable Scenarios and Notes¶
This plugin is suitable for developers who wish to retain community emoji styles in DSH conversations without modifying prompts or parsing logic for each asset set.
A few limitations from the README should be noted before use:
- The transcription scope is fixed and does not handle Unicode emojis outside the standardized set.
- The frequency strategy guides the model via settings and prompts, but does not guarantee that the maximum number of emojis will be used in every turn.
- Custom packs have size and dimension limits, with strict format validation.
The philosophy of the DSH ecosystem is “everything is a plugin.” Community directories like SkillHub are maintained by third parties and have no official affiliation with DeepSeek / High-Flyer. Plugins run with the permissions of the current DSH process; before installation, you should review the source code and license (the repository includes a LICENSE file).
Local development requires Node.js ^22.19.0 || >=24 and pnpm 11:
corepack pnpm install
corepack pnpm typecheck
corepack pnpm test
corepack pnpm build
Links¶
- Directory Page: https://www.skillhub.cn/plugins/hellodigua/dsh-emoji
- GitHub: https://github.com/hellodigua/dsh-emoji
- Plugin Index: dshfind.com
dsh-emoji has turned the process of “model writes Unicode, Host swaps images” into a standard, switchable, and uploadable workflow. If you are refining the conversational experience on DSH, it is worth a try.