dsh-sticker-vault:群聊表情包本地采集与按语境检索

前言

在 QQ 群或类似通道里跑 DSH 智能体时,群友常发图、表情包。若只靠模型「记住」某张梗图,既不稳定,也谈不上按「谁发的、什么语境用过」去复用。常见做法是手工整理文件夹或写死路径,群一换语境就难对上。

dsh-sticker-vault 是 DeepSeek Harness 下的记忆类插件:群消息里的附件图先落到本地,同一张图被反复发送时按 sha256 计数,达到阈值后自动入库,并记录作者、语境与标签;对喷、接梗时通过工具按语境把图捞出来,以 Markdown 图片行形式返回。图片与元数据全部在 ~/.dsh/sticker-vault/,不联网、不调模型。

维护者为 yingchaoyi,源码与说明见 GitHub 仓库,社区目录页为 SkillHub 插件页。当前 package 版本为 0.1.14,许可证 MIT。

这是什么

一句话:群友发的图先落盘去重计数,重复到 N 次自动进库,记作者/语境/标签;需要接梗时用 sticker_pick 按语境搜索并返回可发送的本地图片 Markdown。

数据流可以概括为:

群友发图 ──► 落盘(按 sha256 去重)──► 计数
                                    ├─ 到 5 次 ──► 入库(带作者 + 语境)
                                    └─ 没到   ──► 候选区里躺着
入库后 ──► 每张最多记 6 条语境 ──► sticker_pick 按语境/关键词/人搜索
                                    └─► 命中就发 ![图](本地路径)

(默认「到 5 次」等数值可在 Web 面板顶部改。)

核心功能

采集与入库

  • 重复就计数:同一张图(sha256 相同)被谁发各算各的,A 发 3 次、B 发 2 次互不干扰。
  • 每人只留高频的几张:默认每人最多 3 张,新图挤进来时挤掉该用户计数最低且未上锁的那张。
  • 总容量 50 张:超出后从全库挑计数最低、未上锁的淘汰。
  • 计数周期:默认每 5 天清一次——候选归零,已入库的计数重置为 2(从此数重新攒,已入库图相对新候选有起跑优势)。
  • 上锁:锁住的图不会被淘汰挤掉,也不能删,需先解锁。

Web 面板「表情库」

装完并刷新 DSH Web 后,设置里会出现 表情库 面板:

  • 库:每张图及描述、标签、发送者、使用次数;描述/标签可改,回车保存;可上锁、删除、展开看语境。
  • 候选:未达入库次数的图,可「现在就收」或「扔了」。
  • 上传:自行加图,填昵称、描述、标签。
  • 搜索:按描述、标签、昵称、语境过滤。

面板约每 4 秒刷新;采集为实时。达标次数、每人上限、总容量、计数周期(天)、清计数后库内起始次数等参数在面板顶部配置。

工具(给智能体调用)

工具 作用
sticker_pick 按语境 / 关键词 / 群友找图,返回 Markdown 图片行 + 作者 + 语境
sticker_note 改描述/标签、上锁、删除,或把本地图片手动加进库
sticker_stats 查看库里/候选数量、上限、清计数周期等占用信息

sticker_pick 找到合适结果时,把返回的 ![...](...) 原样放进回复;没有合适图时会提示不要硬发。

发送日志

面板中的「发送日志」用于核对概率掷骰与是否真正发出:

  • 每次掷骰记一条:概率、随机值(0~1)、是否命中、群号。
  • 桥插件发出图后会标记「已发出」;停留在「命中·等确认」表示掷中但出口未发出。
  • 顶部汇总当日掷骰次数、命中次数、确认发出次数、命中率;支持搜索与清空日志(清空时一并清除约 5 分钟内复用掷骰结果的缓存)。
  • 默认只保留最近 logMax(300)条。

安装与启用

插件页填写 dsh-sticker-vault,或命令行安装(须与 README 一致):

# 从 GitHub 装
dsh plugin --profile web add github:yingchaoyi/dsh-sticker-vault

# 本地开发(软链)
dsh plugin --profile web add link:/path/to/dsh-sticker-vault

装完后刷新页面,在设置中打开 表情库 即可管理参数与库存。运行环境要求 Node.js >= 22(见 package.json engines)。

典型用法

智能体在需要接梗、对喷或复用群语境时,调用 sticker_pick,传入与当前对话相关的语境或关键词;若返回 Markdown 图片行,将其原样写入回复。需要维护库存时调用 sticker_note;需要看容量与周期时调用 sticker_stats。

数据目录结构如下,便于备份或排查:

~/.dsh/sticker-vault/
├── store.json        # 库 + 候选 + 参数
├── images/           # 入库的图
├── inbox/            # 候选的图(原始落盘)
└── sticker.log       # 调试日志,256KB 自动截断

删除整个目录即清空重来;也可直接查看或编辑 store.json(自行承担风险)。

适用场景与注意

适合:在 DSH + QQ 桥等场景里,希望智能体本地积累群梗图、按语境检索复发,且不希望图片上传外网或走模型记忆的用户。

限制(README 已说明):

  • 只认 完全相同文件(sha256);压缩、换格式后再发会被当作新图。
  • 只抓 带附件的群消息(DSH 附件;QQ 桥转进来的符合),纯链接图不抓。
  • 淘汰按计数低者优先,不看社交关系;重要图请 上锁。

安全:插件以当前 DSH 进程权限读写 ~/.dsh/sticker-vault/ 并处理群附件。安装前请阅读 源码 与 MIT 许可证,确认符合你的部署策略。DSH 社区插件目录(如 SkillHub)为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-sticker-vault 把「群友反复发的图」变成可检索的本地表情库:采集、计数、入库、语境记录一条龙,接梗时用 sticker_pick 按语境捞出 ![图](本地路径)。详情与 issue 见 GitHub,安装入口见 SkillHub 目录页。

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

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

小夜