🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

表情包库 yingchaoyi/dsh-sticker-vault

DeepSeek Harness
yingchaoyi5 天前有提交已提供中文文档扫描:含敏感能力

按语境自动收集群聊表情包,接梗时一键捞图发送

30.8/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/29 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add yingchaoyi/dsh-sticker-vault
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · platform
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 5 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 49 处,展示前 18 条)
  • 写入本地文件
    lib/index.mjs:78
    mkdirSync(ROOT, { recursive: true })
  • 读取本地文件
    lib/index.mjs:79
    if (existsSync(LOG_PATH) && statSync(LOG_PATH).size > 256 * 1024) truncateSync(LOG_PATH, 0)
  • 读取本地文件
    lib/index.mjs:79
    if (existsSync(LOG_PATH) && statSync(LOG_PATH).size > 256 * 1024) truncateSync(LOG_PATH, 0)
  • 写入本地文件
    lib/index.mjs:79
    if (existsSync(LOG_PATH) && statSync(LOG_PATH).size > 256 * 1024) truncateSync(LOG_PATH, 0)
  • 写入本地文件
    lib/index.mjs:80
    writeFileSync(LOG_PATH, `[${new Date().toISOString()}] ${msg}\n`, { flag: 'a' })
  • 读取本地文件
    lib/index.mjs:196
    const raw = JSON.parse(readFileSync(STORE_PATH, 'utf8'))
  • 写入本地文件
    lib/index.mjs:215
    mkdirSync(ROOT, { recursive: true })
  • 写入本地文件
    lib/index.mjs:217
    writeFileSync(tmp, JSON.stringify(data, null, 2))
  • 写入本地文件
    lib/index.mjs:218
    renameSync(tmp, STORE_PATH)
  • 读取本地文件
    lib/index.mjs:255
    const fd = readFileSync(file).subarray(0, 64).toString('latin1')
  • 读取本地文件
    lib/index.mjs:267
    if (existsSync(cached) && statSync(cached).mtimeMs >= statSync(src).mtimeMs) return cached
  • 读取本地文件
    lib/index.mjs:267
    if (existsSync(cached) && statSync(cached).mtimeMs >= statSync(src).mtimeMs) return cached
  • 删除本地文件
    lib/index.mjs:351
    if (existsSync(p)) unlinkSync(p)
  • 删除本地文件
    lib/index.mjs:1141
    if (!used) { try { const p = inboxPath(cand.hash, cand.ext); if (existsSync(p)) unlinkSync(p) } catch { } }
  • 删除本地文件
    lib/index.mjs:1173
    if (!used) { try { const p2 = inboxPath(cand.hash, cand.ext); if (existsSync(p2)) unlinkSync(p2) } catch { } }
  • 删除本地文件
    lib/index.mjs:1185
    if (!used) { try { const p = inboxPath(cand.hash, cand.ext); if (existsSync(p)) unlinkSync(p) } catch { } }
  • 发起网络请求
    client.js:19
    const jget = async (path) => parse(await fetch(API + path, { credentials: 'same-origin' }))
  • 发起网络请求
    client.js:20
    const jpost = async (path, body) => parse(await fetch(API + path, {
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tools
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DSH 插件 · 表情包库:群友发图先落盘,重复到 N 次自动入库,记作者/语境/标签,对喷接梗时按语境捞出来发。

README

由 DeepSeek 最新模型翻译生成
dsh-sticker-vault 群友发的图、表情包,先落到本地;同一张被反复发,计数到了就自动进库;每张图带着「谁发的、什么语境用的、能拿来接什么话」。 跟群友对喷、接梗、遇到同样的语境时,用 sticker_pick 按语境把图捞出来发。 全部本地:图片存在 ~/.dsh/sticker-vault/,不联网、不调模型。 它怎么跑 群友发图 ──► 落盘(按 sha256 去重)──► 计数 ├─ 到 5 次 ──► 入库(带作者 + 语境) └─ 没到 ──► 候选区里躺着入库后 ──► 每张最多记 6 条语境 ──► sticker_pick 按语境/关键词/人搜索 └─► 命中就发 图 - 重复就计数:同一张图(sha256 相同)被谁发都各算各的,A 发 3 次、B 发 2 次互不干扰。 - 每人只留高频的几张:默认每人最多 3 张,新图挤进来时挤掉这人计数最低、且没上锁的那张。 - 总容量 50 张:超了从全库挑计数最低、没上锁的挤掉。 - 计数会清:默认每 5 天清一次——候选归零,已入库的也重置成 2(从这个数重新攒,库里的老图因此比新候选多一点起跑优势,不会被刚冒出来的挤掉)。 - 上锁:锁住的图谁也挤不掉、也不能删,得先解锁。
展开完整文档(README 剩余 1 节)
dsh-sticker-vault

群友发的图、表情包,先落到本地;同一张被反复发,计数到了就自动进库;每张图带着「谁发的、什么语境用的、能拿来接什么话」。

跟群友对喷、接梗、遇到同样的语境时,用 sticker_pick 按语境把图捞出来发。

全部本地:图片存在 ~/.dsh/sticker-vault/,不联网、不调模型。

它怎么跑

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

- 重复就计数:同一张图(sha256 相同)被谁发都各算各的,A 发 3 次、B 发 2 次互不干扰。
- 每人只留高频的几张:默认每人最多 3 张,新图挤进来时挤掉这人计数最低、且没上锁的那张。
- 总容量 50 张:超了从全库挑计数最低、没上锁的挤掉。
- 计数会清:默认每 5 天清一次——候选归零,已入库的也重置成 2(从这个数重新攒,库里的老图因此比新候选多一点起跑优势,不会被刚冒出来的挤掉)。
- 上锁:锁住的图谁也挤不掉、也不能删,得先解锁。

装

插件页里填 dsh-sticker-vault,或者命令行:

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

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

装完刷新页面,设置里会多一个 表情库。

面板

- 库:每张图 + 描述 + 标签 + 谁发的 + 用过几次;描述/标签直接改,回车保存;可以上锁、删除、展开看语境。
- 候选:还没到次数的图,能「现在就收」或「扔了」。
- 上传:自己加的图,填昵称、描述、标签。
- 搜索:按描述、标签、昵称、语境过滤。
- 面板每 4 秒自己刷新,采集是实时的。

参数都在面板顶上:达标次数、每人最多几张、总容量、计数周期(天)、清后库内从几次算。

工具

| 工具 | 干什么 |
| sticker_pick | 按语境 / 关键词 / 群友找图,返回 Markdown 图片行 + 作者 + 语境 |
| sticker_note | 改描述/标签、上锁、删除,或把本地图片手动加进库 |
| sticker_stats | 看占用:库里几张、候选几张、上限多少、几天清一次 |

sticker_pick 的用法就是:找到合适的就把返回的 ... 原样放进回复;没合适的它会说「别硬发」。

数据在哪

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

删掉整个目录 = 清空重来。store.json 也可以直接看、直接改。

自测

DSH_HOME=/tmp/sv node test/smoke.mjs # 采集/计数/淘汰/上锁/清计数/路由/工具,32 项
node test/client-smoke.mjs # 面板渲染,20 项

已知限制

- 只认完全相同的文件(sha256)。同一张图被压缩过、换了格式再发,会被当成新图。
- 只抓带附件的群消息:图片得是 DSH 附件(QQ 桥转进来的就是),纯链接图不抓。
- 淘汰是「谁的计数低挤谁」,不看关系;所以重要的图记得上锁。

License

MIT © 2026 yingchaoyi
预览分享卡片长什么样 ↓yingchaoyi/dsh-sticker-vault
分享 · DeepSeek Harness Hub
yingchaoyi/dsh-sticker-vault

按语境自动收集群聊表情包,接梗时一键捞图发送

这是你的仓库?认领条目

回到顶部