Skip to content

dsh-shlr-emoji

Verified

dsh-shlr-emoji · v1.0.0 · MIT

QQ 表情包箱:按情景主动发表情包、自动分类入库、频率硬控(不发太频也不至于总不发)。DeepSeek Harness (DSH) 插件。

Install

dsh plugin add dsh-shlr-emoji

Confirm the layer applied with dsh --profile default --dump-config — see the install guide.

Source

Published to npm without a public repository. Inspect the package contents before installing.

Tags

Creators

Readme

dsh-shlr-emoji

给 DeepSeek Harness(DSH)用的表情包箱插件:让聊天机器人按情景主动发表情包,同时把频率摁在"不发太频、也不至于总不发"的区间里。

专为 QQ / IM 场景设计:插件只负责挑图并返回绝对路径,实际发送交给聊天插件(如 @tencent-connect/dsh-qqbot 的 qqbot_send_file),这样在任何 IM 通道里都能发成原生图片消息。

功能

  • 按情景主动发:轻松回合(打招呼、接梗、被夸、被调侃、聊吃的、吐槽、道晚安)就该配一张。
  • 频率硬控(不是靠模型自觉):
    • 距上次发图不足 minGapTurns 轮 → 直接返回 ok:false,让模型改用文字;
    • 两次发图间隔小于 cooldownMs → 拒绝(防连发);
    • 超过 nudgeTurns 轮没发 → 返回 nudge:true,提醒"该发一张了";
    • 用户明确要表情包时可传 force:true 绕过。
  • 自动分类入库:每收一张图,按六个情绪归类(happy / angry / sad / shy / confused / daily)。
  • 三个添加渠道:模型看图后入库、丢文件到 inbox、命令行工具。
  • 不会重复发同一张:优先挑用得少的。

安装

dsh plugin --profile <你的profile> add dsh-shlr-emoji

包内自带 bundle patch,装完重启即可(dsh plugin 会把它加进 profile 的 dsh.profile.bundles)。

配置

在 profile 的 cordis.patch.yml(或机器级 ~/.dsh/cordis.patch.yml)里:

- id: sticker-box
  config:
    rootDir: '~/.dsh/sticker-box'   # 表情包目录(默认)
    minGapTurns: 3                  # 距上次发图不足 3 轮就拒绝(默认 3)
    cooldownMs: 20000               # 两次发图最小间隔毫秒(默认 20000)
    nudgeTurns: 6                   # 超过 6 轮没发就提示该发了(默认 6)
    limit: 1                        # 每次返回几张候选(默认 1)

调的直觉:minGapTurns 调大 = 更少发;nudgeTurns 调小 = 更早催它发。

工具

工具 作用
sticker_pick 挑图 + 频率闸。参数:mood(六个情绪之一)、query(中文关键词)、force(用户明确要)、count
sticker_add 入库一张图并分类。参数:imagePath、tag、caption、keywords
sticker_stats 只读:各分类数量 + 当前频率状态

典型链路:模型调 sticker_pick → 拿到 path → 调 IM 插件的发文件/发图工具。

添加表情包

① 让模型入库(推荐,能看图所以描述准) 把图发给机器人并说「收下」,模型会先看图,再调 sticker_add 填好分类和关键词。

② 丢文件

mkdir -p ~/.dsh/sticker-box/inbox
cp 我的表情包.png ~/.dsh/sticker-box/inbox/

机器人下一轮对话(或重启)时会扫描 inbox,按文件名关键词自动分类入库。

③ 命令行

npx dsh-shlr-emoji --list                 # 看库存
npx dsh-shlr-emoji 图.png                 # 按文件名自动分类
npx dsh-shlr-emoji 图.png angry           # 指定分类
npx dsh-shlr-emoji --inbox 图.png         # 丢进 inbox

分类靠文件名关键词,例如「生气.jpg」→ angry、「比心.png」→ happy、「晚安.gif」→ daily;认不出来的落到 daily(之后可让模型重新归类)。

目录结构

~/.dsh/sticker-box/
├── library/
│   ├── happy/  angry/  sad/  shy/  confused/  daily/
├── inbox/          # 丢这里 = 添加渠道
└── stickers.db     # SQLite:分类/描述/关键词/使用次数/发送记录

在机器人人设里怎么提

插件只提供工具,什么时候发还是靠提示词。推荐的写法:

发表情(sticker-box):轻松回合(打招呼、接梗、被夸、被调侃、道晚安)就该主动配一张。
做法:调 sticker_pick(mood 或 query)→ 拿它返回的绝对路径 → 交给发图工具发出去,每轮最多一张。
频率由工具箱硬控:ok:false 就是「现在别发」,用文字回;nudge:true 表示好几轮没发图了,发一张正好;用户明确要时传 force:true。
收图:发来图片说「收下」时,先看图,再调 sticker_add(tag/caption/keywords 填准)。

如果 IM 插件通过文本标记渲染表情(如 [表情: 描述]),记得在提示词里禁止写标记、改用图片消息。

命名说明

包名是 dsh-shlr-emoji,但插件内部标识沿用:

项 值
插件 id sticker-box(配置里写 - id: sticker-box)
工具名 sticker_pick / sticker_add / sticker_stats
数据目录 ~/.dsh/sticker-box/(可用 rootDir 或 STICKER_BOX_ROOT 改)
CLI sticker-add

许可

MIT