给 dsh 回复按情绪添加日文颜文字,词库精选自颜文字屋(kaomojiya.org),可在「设置 → 通用设置」中调整。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-kaomoji
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:TianJie52009/dsh-kaomoji
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
给 DeepSeek Harness(dsh)的回复自动添加日式颜文字(kaomoji)。
🤖 纯 Codex 生成:本仓库的代码与文档均由 OpenAI Codex 自动生成,未经人工逐行审查。使用前请自行阅读并测试。
dsh-kaomoji 是一个使用 Harness 官方包与 Node 标准库的 dsh 插件:它在模型生成前向系统提示词注入一段「情绪 → 颜文字」白名单规则,让模型按回复情绪原样复制一个真实、可读的颜文字。精选词库来自日本最大的颜文字站之一 顔文字屋 kaomojiya.org。
English | 简体中文
特性
- 纯提示词方案:不截断、不改写模型流,也不额外调用模型,稳定且对 KV 缓存友好。
- 白名单防乱码:模型只会从词库中逐字符复制颜文字,不会凭印象拼出坏字符。
- 情绪分桶:内置 12 个情绪分类(开心 / 心动 / 难过 / 大哭 / 生气 / 惊讶 / 困惑 / 害羞 / 俏皮 / 鼓励 / 感谢 / 道歉),并随规则给出可用样例。
- 三种频率模式:
auto(智能:寒暄/闲聊/推荐建议/共情回复都会带一个,默认)/frequent(每条对话回复都带)/off(关闭)。 - 放置位置可选:贴在情绪最贴切的句子后(
inline,默认)或固定在回复末尾(end)。 - 可视化配置卡片:卡片位于「设置 → 通用设置」,保存即生效、无需重启。
- 原生设置接口:使用 Harness 的
systemPrompt、settings、官方 Config schema 与 Node 标准库,不注册插件自己的 HTTP 路由。
工作原理
- 插件启动时通过
ctx.systemPrompt.section()注册一段名为dsh-kaomoji:guidance、顺序号为176的提示词段。 - 每次组装模型提示词时,该段会把下面的内容交给模型:
- 当前模式与放置规则(如「每条回复一个」「不要放进代码块」);
- 按情绪分类的颜文字白名单;
- 用户附加的
customPrompt(可选)。
- 模型生成时在合适位置直接输出列表内的颜文字——因为它只是普通文本,聊天界面无需任何自定义渲染即可显示。
设置部分使用 Harness 官方的 remote.settings 接口:
- 「设置 → 通用设置」的卡片读写当前 profile 的原生配置;
- Host 更新动态 Config 字段并通知提示词变化,下一次回复就生效,不需要重启;
- 首次升级会导入原来的 JSON 配置,源文件保留,见下文「旧配置自动迁移」。
选择提示词注入而不是「流后处理追加」的原因:
- 不需要解析流式输出、判断句子边界或猜测情绪,规避追加错位的风险;
- 由模型在上下文里选择最贴切的情绪桶,而不是按关键词硬猜;
- 与 dsh-emoji 等既有插件保持同一套机制,行为可预期。
效果示例
frequent + end 模式下的回复结尾:
当然可以,我帮你把正则改成忽略大小写再跑一次测试。
测试已经全绿了 (๑•̀ㅂ•́)و✧
安装
环境要求
- dsh(DeepSeek Harness)
0.2.0-rc.2~0.2.1-rc.3的 Web 或桌面 profile,内置系统提示词与原生设置服务 - Node.js
^22.19.0 || >=24.0.0 - pnpm 11(dsh 默认使用 pnpm)
方式一:从 npm 安装(推荐)
包已发布到 npm,直接安装即可,dsh CLI 会自动把插件加入 dsh.profile.bundles:
cd "$env:USERPROFILE\.dsh\profiles\web"
dsh plugin --profile web add dsh-kaomoji
包刚发布的 24 小时内,如果对方的 pnpm 开启了「新包安全期」,裸名安装可能暂时解析不到;这种情况可先用下面的 GitHub 方式安装。
方式二:从 GitHub 直装(无需等 npm)
无需等 npm 发布,dsh CLI 支持直接装 GitHub 仓库:
dsh plugin --profile web add github:TianJie52009/dsh-kaomoji
等价的 pnpm 写法:
cd "$env:USERPROFILE\.dsh\profiles\web"
pnpm add github:TianJie52009/dsh-kaomoji
方式三:本地开发版
# 先把仓库 clone/解压到本地,再把路径换成该目录
pnpm add file:C:\path\to\dsh-kaomoji
用 pnpm 手动安装时,请确认
package.json的dsh.profile.bundles已包含"dsh-kaomoji",否则插件不会加载。
装好后重启 Host 并刷新客户端(或由兼容的热加载插件完成挂载)。Host 端开始注入提示词;Web 与桌面端在「设置 → 通用设置」底部会出现「颜文字(dsh-kaomoji)」配置卡片。
配置
默认配置即开即用(mode: auto)。有两层设置:
- 部署默认值:在 profile 的
cordis.patch.yml中以id: dsh-kaomoji覆盖config(适合管理员/装机默认); - 用户设置:通用设置卡片里修改,由 Harness 持久化到当前 profile 的原生配置,优先级高于部署默认值;点「恢复默认」回到继承的部署默认值,并保留迁移标记。
cordis.patch.yml 示例:
- id: dsh-kaomoji
config:
mode: frequent # off | auto | frequent
placement: end # inline | end
maxPerTurn: 2
customPrompt: "正式场景克制一点,优先使用「感谢 / 鼓励」类颜文字"
配置项
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
mode |
'off' | 'auto' | 'frequent' |
'auto' |
off 关闭;auto 寒暄/闲聊/推荐建议/共情回复都会带一个;frequent 每条对话回复都带一个(两者都跳过纯代码 / 正式技术交付) |
placement |
'inline' | 'end' |
'inline' |
放在情绪最贴切的句子/短段后,或固定在回复末尾 |
maxPerTurn |
number(1–5) |
1 |
每条回复的颜文字数量上限;frequent 会按这个数量分散放在不同句子后,回复太短时自动减少 |
customPrompt |
string |
'' |
附加风格/场景说明;不能改变模式、白名单或数量上限 |
settingsFile |
string |
''(自动查找旧文件) |
(进阶)旧 JSON 配置的导入路径;以后保存由 Harness 原生配置负责 |
卡片里的修改即时写入 Harness 原生配置并热生效;migrationVersion 是内部迁移标记,手工编辑时保持当前值。 |
远程访问(Tailscale / 局域网)
- 设置通过 Harness 的
remote.settings通信,不再使用插件自己的 HTTP 路由,也不保存在浏览器本地。 - 远程访问遵循 Host 自身的认证和来源信任设置;读取或保存失败时,卡片会显示错误,可点「重试」重新读取。
旧配置自动迁移
首次加载后,从旧 dsh-kaomoji.json(schemaVersion 1)导入到当前 profile 的 Harness 原生配置;新配置里已有的用户字段优先,旧值只补缺失项。
- 优先读取当前 Harness 数据目录,兼容旧的
DSH_HOME/.dsh/嵌套路径。 - 原来的
settingsFile自定义路径继续作为导入源;以后保存使用 Harness 配置。 - 原 JSON 保留不删;写入成功后同一笔提交保存
migrationVersion: 1,升级或重启不会重复覆盖。 - 恢复默认使用 Harness 的继承配置,并保留迁移标记,防止旧值回来。
- 文件损坏、无写权限或冲突会记录警告,不标记成功;修复后重启可重试。
- 迁移按 profile 进行;换电脑或更换整个数据目录时,需把原配置文件或 profile 一起带过去。
词库来源与许可
内置词库见 data/catalog.json,每个分类都标注了 kaomojiya.org 对应的来源页:
| 情绪 | 来源页 |
|---|---|
| happy(开心/高兴) | happy-kaomoji |
| love(喜欢/心动) | love-kaomoji |
| sad(难过/低落) | sad-kaomoji |
| cry(大哭/泪目) | cry-kaomoji |
| angry(生气/不满) | angry-kaomoji |
| surprised(惊讶/震惊) | odoroiteru-kaomoji |
| confused(困惑/困扰) | komaru-kaomoji |
| shy(害羞) | shy-kaomoji |
| playful(俏皮/卖萌) | shy-kaomoji(てへぺろ 系) |
| encourage(鼓励/加油) | hagemasu-kaomoji |
| thanks(感谢) | thanks-kaomoji |
| sorry(道歉) | sorry-kaomoji |
顔文字屋的页面声明可免费使用(无需注册,商用・非商用均可)。本插件仅收录其人工精选子集,并在 catalog.json 中保留来源标注。本插件本体以 MIT 协议发布。
想扩充词库时,请同步修改:
data/catalog.json——完整词库(含来源标注);lib/index.js的CATALOG——真正注入提示词的白名单。
本地开发
目录结构
dsh-kaomoji/
├── lib/
│ ├── index.js # 插件入口:config 归一化、规则生成、systemPrompt 段注册
│ ├── client.js # Web 端:设置 → 通用设置 的配置卡片(ModuleLoader 格式)
│ └── index.d.ts # TypeScript 声明
├── data/
│ └── catalog.json # 情绪 -> 颜文字 精选词库(含来源标注)
├── test/
│ └── plugin.test.mjs# node:test 单元测试
├── cordis.patch.yml # dsh bundle 挂载补丁
├── package.json
├── README.md / README.en.md
├── CHANGELOG.md
└── LICENSE
常用命令
npm ci --legacy-peer-deps # 安装开发依赖
npm test # 运行 node:test 单元测试
npm run test:compat # 逐版本隔离验证官方运行时
npm pack # 打包验证发布内容(会先跑 prepack: npm test)
快速查看注入后的提示词规则:
node -e "import('./lib/index.js').then((m) => console.log(m.buildGuidance({ mode: 'frequent', placement: 'end' })))"
发布到 npm(维护者)
dsh plugin --profile web add dsh-kaomoji 这种裸包名安装依赖 npm 上的正式发布。
仓库根目录有一键发布脚本 publish.cmd(双击,或在终端里执行):
.\publish.cmd # 用 package.json 里的当前版本号直接发布
.\publish.cmd patch # 先 npm version patch(minor / major 同理),再发布
脚本依次做四件事:npm test → 检查 npm 登录(未登录会提示先执行
npm login --registry https://registry.npmjs.org)→ 可选地 bump 版本号 →
npm publish --registry https://registry.npmjs.org(prepack 会再跑一遍测试)。
发布完成后记得把版本号改动 commit + push 回 GitHub。
package.json 已声明 publishConfig.registry = https://registry.npmjs.org/,
发布后其他人即可直接使用上面的「方式一」。
兼容性
仅支持 Harness 0.2.0-rc.2 ~ 0.2.1-rc.3 已发布的 9 个版本(含 alpha.1–alpha.5、rc.1–rc.3)。新旧范围外版本不在本次支持承诺内;清单使用精确版本集合,避免预发布 semver 范围漏选。
界面通过官方 remote.settings 编辑 Host 配置;插件不注册 HTTP 路由,不依赖 webServer,也不把配置存在浏览器。Web 与桌面复用 Harness 自己的通信载体和认证。
Host 使用
systemPrompt、settings、profileContext,客户端使用slots、locale、remote.settings和重连通知。与 dsh-emoji 可共存:提示词段名/排序不同(
dsh-emoji:guidance@175 vsdsh-kaomoji:guidance@176),设置命名空间、卡片槽位(插件页 vs 通用设置)均无冲突;颜文字是纯文本,dsh-emoji 的流转写只处理规范 Unicode emoji,不会互相改写。
FAQ
回答里没有颜文字?
按顺序检查:
Host 半是否真的挂载了:
dsh plugin --profile web add dsh-kaomoji会把插件同时写进dependencies和dsh.profile.bundles;如果只用pnpm add手动装,client 卡片会出现但 Host 不会注入提示词。重新用 dsh CLI 安装一次,或在 profile 的cordis.patch.yml里补:- insert: - id: dsh-kaomoji name: dsh-kaomoji然后重启 dsh,确认 Loader 中的
dsh-kaomoji条目正常挂载。确认模式:默认
auto只在友好/闲聊/共情等场景使用;想要每条对话回复都带,在通用设置卡片切到「高频」,或在cordis.patch.yml写mode: frequent。看设置卡片状态:读取或保存失败时,先检查 Host 挂载、连接和配置写权限,再点「重试」;设置页通信错误本身不等于提示词一定没有注入。
为什么模型偶尔没有加颜文字?
auto 模式本来就不要求每回合使用;只有 frequent 才要求「对话回复都带一个」。如果 frequent 下仍经常漏掉,多半是回复被模型判为纯代码/正式交付,或上下文里其它 persona 指令更强势——可用 customPrompt 再强调一次。
我想用白名单之外的颜文字怎么办?
在 customPrompt 中给出精确字符串,例如「这次回复结尾用 (=^・ω・^=) 猫猫颜文字」。规则允许用户显式指定的内容例外;若你希望长期使用,建议把它加入 CATALOG 与 catalog.json。
会污染代码回复吗?
不会。规则明确禁止把颜文字放进代码块、行内代码、链接、表格和工具输出,且代码型回复不适用 frequent 的「每条都带」要求。
设置卡片在哪里?
在「设置 → 通用设置」底部(主题、语言、回车行为等行之后)。卡片里可切换模式、放置位置、数量上限和附加提示词;保存即生效,也可以在卡片里一键恢复默认。
和 dsh-emoji 一起用会冲突吗?
不会产生技术冲突(见「兼容性」)。唯一要注意的是使用节奏:如果两个插件都开 frequent,同一条回复可能既带 😊 又带 (´∀`)。建议只让其中一个保持 frequent,另一个用 auto(或在对应设置页关掉),观感会更好。
dsh-market 新版本同步
仓库已经收录,新版本由市场目录的定时任务重新抓取 npm 元数据,不需要重复提交插件条目。
维护者本地交接文档与 market 同步脚本位于两个项目共同的父目录:HANDOFF-dsh-kaomoji.md、sync-market-dsh-kaomoji.cmd,不随插件分发。脚本默认只读检查,显式加 --request-refresh 才会在满 24 小时且目录仍旧时请求上游重抓;需要 GH_TOKEN 或 GITHUB_TOKEN。
License
词库字符来源:顔文字屋 kaomojiya.org(页面声明免费使用,商用・非商用均可)。
链接
同类插件
PC2005-cloud/dsh-pet#dsh-pet★ 3496
DSH Web UI 桌面宠物,Windows / macOS / Linux 三端可用:浏览器浮层或透明置顶桌面窗口,106 个透明动画、带挤压与粒子的甩抛反弹物理、随会话事件实时联动的工作状态气泡、碎碎念与带持久记忆的对话、余额展示、表情包配图、多开同屏,并支持直接放入的自定义动画与宠物种类(pet pack)。
Nagi-ovo/dsh-ads★ 682
2005 年中文站点风格的整活广告插件:侧栏广告/信息流/角落弹窗 + 假关闭叉,素材全虚构。
vlln/whale-girl★ 375
桌面宠物(QQ 宠物形态):右下角悬浮、可拖拽/投喂/玩耍。
yyh-001/dsh-meme★ 295
聊天表情包:纯文本斗图、情绪主动发图、像 QQ/微信 一样发图、AI 自动学图、自定义表情包。
a86582751/dsh-nexttavern★ 191
NextTavern 是面向 DeepSeek Harness 0.1.7-rc.2 Web 的长篇角色扮演插件,支持角色卡导入与创作、世界线、世界书、分层长期记忆、关键词/语义/混合检索、角色 Agent,以及角色卡或小说导出;支持 SillyTavern 角色卡导入,v0.2.9 修复分发与安装问题。
Sutera-Diffusus/dsh-whale-musume★ 156
鲸鱼娘桌宠:45 项成就、每日任务与周签到、三个小游戏、92 张立绘、620 条台词、成长日记、天气与节日反应、按工具类型切换工作姿态、跨端存档导出/导入(JSON 文件或迁移码)、无障碍模式,以及可选的 MiMo TTS 台词播报。数据只存放在宿主 localStorage,无遥测;已在 DSH 桌面端 0.2.0-rc.2 验收,兼容 0.2.1-rc.1/rc.2 与旧版 0.1.x Web。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。