Adds standard Unicode emoji to dsh replies at the point that best matches the content, and keeps emoji out of any sentence that already carries a kaomoji.
Install
# from npm (prebuilt)
dsh plugin --profile web add tdsh-emoji
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:TianJie52009/Tdsh-emoji
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
Add standard Unicode emoji to DeepSeek Harness (dsh) replies, designed to coexist with dsh-kaomoji.
🤖 Pure Codex generation — the code and docs in this repository were generated entirely by OpenAI Codex and have not been human-reviewed.
Tdsh-emoji injects a “mood → emoji” whitelist into the system prompt, so the
model places a standard emoji right where the content it matches appears —
possibly inside a sentence — instead of always appending it after the sentence.
The library only uses emoji that ship with iOS, Windows and Android; no
skin-tone modifiers, no exotic sequences.
Features
- Content-matching placement — at the point that best matches the content (inside a sentence is fine, default), or at the end of the reply (
end). - Up to 10 per reply —
maxPerTurn1–10, default 3;frequentspreads them across sentences. - Coexists with dsh-kaomoji — both place decorations after sentences, so this plugin also forbids emoji and kaomoji in the same sentence or line; the model picks different sentences. Both settings cards live next to each other under Settings → General.
- Visual settings card — mode, placement, limit and extra guidance; saved live, no restart.
- Official transport — Web and Desktop use Harness
remote.settings; remote pages follow the Host's authentication and trust settings. - Native settings — official Harness Config schemas,
systemPrompt,settingsand Node built-ins; no plugin-ownedwebServerroutes.
How it works
- Registers the prompt section
tdsh-emoji:guidance(order177; dsh-kaomoji uses176). - Each assembly contributes mode/placement rules, the per-reply cap, the emoji whitelist, and the “never share a sentence with a kaomoji” rule.
- The settings card uses official Harness
remote.settingsto edit the active profile's native configuration. Live Config updates apply to the next reply. Legacy JSON is imported once and preserved.
Install
cd "$env:USERPROFILE\.dsh\profiles\web"
# npm (recommended)
dsh plugin --profile web add tdsh-emoji
# or straight from GitHub
dsh plugin --profile web add github:TianJie52009/Tdsh-emoji
Restart the Host and reload the Web or Desktop client; the “Emoji (tdsh-emoji)” card appears under Settings → General, right next to the dsh-kaomoji card.
Configuration
Defaults: mode: auto, placement: inline, maxPerTurn: 3. Deployment defaults can be overridden in the profile’s cordis.patch.yml:
- id: tdsh-emoji
config:
mode: frequent # off | auto | frequent
placement: inline # inline | end
maxPerTurn: 5 # 1-10
customPrompt: "Keep it professional; prefer encourage/thanks emoji"
| Key | Type | Default | Description |
|---|---|---|---|
mode |
'off' | 'auto' | 'frequent' |
'auto' |
off disables; auto decorates conversational replies; frequent decorates every conversational reply (code-only/formal excluded) |
placement |
'inline' | 'end' |
'inline' |
At the point that best matches the content (inside a sentence is fine), or at the reply end |
maxPerTurn |
number (1–10) |
3 |
Emoji cap per reply; frequent spreads them across sentences |
customPrompt |
string |
'' |
Extra style/scene guidance |
settingsFile |
string |
'' (auto-discover legacy file) |
(advanced) legacy JSON import path; future writes use Harness native configuration |
Legacy configuration migration
On first load, import schemaVersion 1 tdsh-emoji.json from the Host data directory, a legacy nested DSH_HOME/.dsh path, or settingsFile. Existing native user fields win. Preserve the source JSON and commit migrationVersion with the import. Reset retains this marker, preventing reimport. Failed imports log a warning and retry after restart. Settings are per profile after migration.
Coexistence with dsh-kaomoji
| Plugin | Inserts | Position | Conflict handling |
|---|---|---|---|
| dsh-kaomoji | Japanese kaomoji (´∀`) |
after the matching sentence | emoji side forbids sharing a sentence/line |
| Tdsh-emoji | Standard emoji 😊 | at the point matching the content | Never place an emoji in the same sentence or line as a kaomoji |
Both cards live under Settings → General (order 30 / 31).
Compatibility
Supports exactly the nine published Harness releases from 0.2.0-rc.2 through 0.2.1-rc.3, including alpha.1–alpha.5 and rc.1–rc.3. Later releases require separate validation.
Host services: systemPrompt, settings, profileContext. The client uses slots, locale, remote.settings and reconnect notifications. No plugin-owned HTTP routes or webServer dependency. See validation evidence.
Development
npm ci --legacy-peer-deps
npm test # node:test (guidance rules + native settings/migration + client loading)
npm run test:compat # isolated official-runtime compatibility matrix
npm pack # verify the publish payload
.\publish.cmd # one-click publish to npm (current version)
.\publish.cmd minor # bump the version, then publish
Market synchronization
The repository is already listed; the upstream catalog periodically probes npm versions. Maintainer handoff and market synchronization scripts live in the local parent directory shared by the two projects, outside this package. The per-project entry points are HANDOFF-Tdsh-emoji.md and sync-market-Tdsh-emoji.cmd.
License
Links
More in this category
PC2005-cloud/dsh-pet#dsh-pet★ 5347
Desktop pet for the DSH Web UI on Windows, macOS and Linux: 106 transparent animations in the browser overlay or a transparent always-on-top desktop window, throw-and-bounce drag physics with squash and particle scoring, a work-status bubble driven by live session events, self-talk and chat with persistent memory, balance display, meme-image bubbles, multiple pets on screen, and drop-in custom animations and pet packs.
Alterssss/dsh-bili-whale★ 862
A Bilibili companion that keeps its own schedule. A 60-second tick in the plugin host wakes a dedicated agent session at a random moment inside the configured time windows (opting out of a day is a configurable chance), then hands it a bundled CLI of 38 subcommands — feed, subtitles, danmaku, comments, ffmpeg frame grabs, and two diaries. Shares at most N items a day by commenting on them and @-mentioning the owner (default 3, enforced from a written quota log, and it stops on rate-limit or captcha signals). Also polls comment replies, direct messages and live-room danmaku; replies to anyone but the owner are queued for approval in Settings. Settings → 养鱼 writes ~/.dsh/bili-whale.config.json; cookies live separately in ~/.bili-ai/credentials.json and are never echoed back. The HTTP routes are loopback-only behind DSH's trust fence. Needs Node 18+ and ffmpeg on PATH for frame extraction.
Nagi-ovo/dsh-ads★ 707
Parody ads in 2005-Chinese-web style: sidebar banners, in-chat feeds, corner popups, and a close button whose hit area is smaller than it looks. All fictional.
yyh-001/dsh-meme★ 488
Chat meme stickers: text-only send, mood auto-send, QQ/WeChat-style picker, auto-learn, custom packs.
vlln/whale-girl★ 400
Desktop pet (QQ-pet style): floats in the corner, draggable, feedable, playable.
a86582751/dsh-nexttavern★ 218
NextTavern is a long-form roleplay plugin for DeepSeek Harness 0.1.7-rc.2 Web, with character-card import and creation, worldlines, worldbooks, layered long-term memory, keyword/semantic/hybrid retrieval, character agents, and card or novel export. SillyTavern character-card import is supported; v0.2.9 fixes distribution and installation.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.