用 dsh-emoji 给 DeepSeek Harness 的回复加上可切换行内表情

前言

DeepSeek Harness(dsh)是 DeepSeek AI 开源的智能体框架,目前仍处于开发者预览阶段。它的核心理念是「一切皆插件」:工具、界面、主题、工作流都可以按层装进当前 profile。社区里已经出现了不少独立目录来收录这些插件,其中 DeepSeek Harness 插件库 是一个社区站点,与 DeepSeek / 幻方没有官方从属关系。

日常用 Web UI 看智能体回复时,正文往往是纯 Markdown。模型偶尔会打出 Unicode emoji,但那只是字符,换不了画风,也没法统一成一套社区表情。dsh-emoji 要做的事情更具体:让模型按固定语义标记输出表情,再由 Host 端转成当前表情包里的行内图片。

下面按仓库 README、package.json、更新日志和插件目录页核对后的信息,说明它是什么、怎么装、怎么用。

dsh-emoji 是什么

dsh-emoji 是一款面向 DeepSeek Harness 的趣味插件,由 hellodigua 维护,代码采用 MIT 许可证。GitHub 仓库为 hellodigua/dsh-emoji,主要语言是 TypeScript,仓库 topic 含 dsh-plugin。截至 2026-08-17,GitHub 显示 23 颗星;社区目录页同期记录为 17 颗星,星标以仓库页面为准。

一句话定位:为 DSH 的回复加入可切换、可自定义的行内表情。插件目录页的简介是「让 AI 回复加入自定义表情,支持 Bilibili、小红书、贴吧、知乎等多平台表情包,或自定义表情」。对照仓库文档后可以更准确地说:运行时目前内置的是 40 张蓝鲸(大肥鱼)表情;贴吧、B 站等画风通过同一套语义协议切换或上传 ZIP 实现,并不等于这些平台的表情都打进了发布包。

当前 npm 包版本是 0.2.2-beta.1(2026-08-15)。更新日志写明:0.2.1 是推荐安装版本,0.2.2-beta.1 的运行时行为与 0.2.1 / 0.1.0 保持一致。兼容性声明面向 @deepseek-ai/dsh@0.1.0-rc.6,peer 范围为 ^0.1.0-rc.6package.json 里客户端平台标为 web,需要加到 Web Profile 后重启 Web Host。

工作方式与核心能力

表情不是模型另外画一张图,也不走一次新的模型调用。内置协议要求模型在需要情绪或装饰时输出 ::happy:: 这类语义标记;插件在 Host 端把标记替换成当前表情包对应的行内图片。

内置包和用户上传包共用 40 个稳定语义 key,契约标识为 dsh-emoji-core@1。key 是机器协议,不翻译、不改名。当前 40 个文件名 key 是:

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

每个 key 对应一张同名 PNG。相近语义在契约里有边界,例如 happy 是温和愉快,明显大笑留给 laughing,笑到流泪才用 laugh-cry。完整含义和绘制建议见仓库的 EMOJI_KEYS.md

仓库 README 还写了几条转写边界,实际使用时值得记住:

  • 只处理插件 marker 和插件图片,普通正文里的 Unicode emoji、代码、链接、未知标记以及其他 Markdown 图片不会被改写。
  • 同一条回复里可以出现多张插件表情,但必须由有效正文隔开;同一个 key 允许在不同位置重复使用。
  • 显示尺寸有四档:小、正常、偏大、大。
  • 默认内置素材是蓝鲸表情。README 展示了切换贴吧表情包、上传 B 站表情包后的对话效果,并说明同一协议也可用于小红书、抖音、微博等自定义包。
  • 仓库 ASSETS.md 写明:assets/emoji/bilibili/ 只作开发参考,不进入当前运行时 catalog,也不在 package.json#files 的发布白名单里。因此不能把「支持 B 站表情」理解成安装后自带完整 B 站包。

代码是 MIT,素材不一定是。ASSETS.md 明确:代码许可证不声明鲸鱼形象或二创表情素材的所有权;40 张运行时图可以随 npm 包公开分发,但不纳入 MIT,也不授予脱离本项目单独复制、改编或再分发素材的权利。

安装与启用

社区目录页给出的安装命令如下,在 DeepSeek Harness 终端中运行即可:

dsh plugin add github:hellodigua/dsh-emoji

如需可复现安装,目录页建议固定 commit 哈希:

dsh plugin add github:hellodigua/dsh-emoji#commit

#commit 换成仓库里实际的提交哈希,不要留这个占位符。

仓库 README 给出的是 npm 包名、并指定 Web Profile 的写法,装完后需要重启 Web Host:

dsh plugin --profile web add dsh-emoji

更新日志里推荐的稳定版本是 dsh-emoji@0.2.1。若要体验预发布版本,把包名换成 dsh-emoji@beta。不要只用 npm install dsh-emoji:那只会把包装进当前 Node.js 项目,不会启用 DSH 插件。

目录页有一条安全提示,安装前应读完:插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前请检查源代码仓库和许可证。GitHub 安装还可能在本地跑构建脚本,只安装自己审查过的来源。

调整表情频率与显示

安装并重启 Web Host 之后,打开「设置 → 插件 → 表情(Whale Emoji)」:

  • 关闭:不使用表情。
  • 智能:仅在表情确实有助于表达时自然使用,每回合最多 3 张,这是默认选项。
  • 高频:更积极地考虑使用,但不强制每次出现,也不追求多张;每回合最多 4 张。

同一张设置卡片里还可以选择表情包、调整显示尺寸,或填写「附加提示词」来约束选择、语气和使用场景。保存后从下一次回复生效,不必再重启 Host。是否真正插入表情仍由模型决定,插件不会在每句话后面强行贴图。

上传自己的表情包

自定义包复用同一套 40 个 key,因此模型仍然输出 ::happy:: 等 marker,只替换最终图片,不需要为每套素材重新教模型认图。

在上述设置卡片中点击「上传 ZIP」。上传成功后选中新包并保存,下一次模型调用就会用它。ZIP 可以直接包含下列文件,也可以再包一层同名目录:

my-whale.zip
├── pack.json
└── images/
    ├── happy.png
    ├── sad.png
    ├── thinking.png
    ├── celebrate.png
    └── ...其余标准 key

pack.json 格式如下,当前上传包必须声明 keySetdsh-emoji-core@1

{
  "schemaVersion": 1,
  "keySet": "dsh-emoji-core@1",
  "id": "my-whale",
  "name": "我的鲸鱼表情",
  "version": "1.0.0"
}

schemaVersion 表示 ZIP 技术格式,keySet 表示图片实现的语义集合。每个 key 必须且只能提供一个同名 .pngid 使用小写字母、数字和连字符,version 使用 SemVer。同一个 id@version 的内容不可覆盖,更新素材时必须提升版本。

仓库给出的硬限制是:ZIP 上限 20 MiB,解压后上限 80 MiB,单文件上限 2 MiB,图片宽高均不得超过 512 像素。路径逃逸、额外文件、缺失 key、未知 keySet、伪造格式和同版本冲突都会被拒绝。

用户包保存在 $DSH_HOME/emoji-packs/(默认 ~/.dsh/emoji-packs/),设置项只保存当前 id@version。从选择列表里「移除」不会物理删除素材字节,这样历史消息里的版本化 URL 仍能回放;重新上传完全相同的 ZIP 可以恢复该版本。

自己做包时,素材权利也要单独处理:契约要求投稿者拥有原创权或可再分发授权。不要把内置蓝鲸图拆出来当自己的包发布。

适用场景与注意事项

比较适合这些情况:

  • 已经在用 DSH Web UI,希望回复里出现统一画风的行内表情,而不是零散的 Unicode 符号。
  • 想把对话语气从「文档腔」换成社区表情风格,例如贴吧、B 站或自制角色,但不想改模型本身。
  • 需要给团队或个人做一个固定 40 语义的表情包,并在多套素材之间切换。

需要注意的限制同样明确:

  • 当前版本面向 Web Profile 和 @deepseek-ai/dsh@0.1.0-rc.6。DSH 仍在开发者预览,后续可能出现破坏兼容性的变更。
  • 本地开发环境要求 Node.js ^22.19.0 || >=24 与 pnpm 11;这是开发该插件时的要求,不等于终端用户必须从源码编译。
  • 表情是否出现由模型决定。设成「智能」或「高频」只改变提示策略和每回合上限,不能保证每条回复都带图。
  • 插件以当前 dsh 进程权限运行。安装前应阅读源码、许可证和 ASSETS.md 里的素材说明;生产环境建议固定 commit。
  • 社区插件目录不是 DeepSeek 官方应用商店,收录不代表官方背书。

小结

dsh-emoji 把「AI 想表达某种情绪」收成 40 个稳定 key,再在 Host 端渲染成当前表情包的行内图。默认是蓝鲸表情,频率和尺寸可在设置里改,也可以按契约上传自己的 ZIP。它不增加额外模型调用,也不改写普通正文里的 emoji 和代码。

目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-emoji/

GitHub:https://github.com/hellodigua/dsh-emoji

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜