按语境自动收集群聊表情包,接梗时一键捞图发送
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
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 5 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
yingchaoyi/dsh-sticker-vault
按语境自动收集群聊表情包,接梗时一键捞图发送
相关插件 · 平台集成
智能体工程课walkinglabs/learn-harness-engineering
一门项目制课程,教你搭建环境、管理状态、做验证、加控制机制,让 AI 编程智能体稳定干活。
★ 21,155已汉化DSH
71.7
视频翻译配音liuzhao1225/YouDub-webui
开源视频本地化工作台:导入视频,识别、翻译并逐句克隆原声,生成字幕和配音成片。
★ 5,792已汉化Cordis
71.4
失败经验库Ikalus1988/MisakaNet
📚 零依赖、由 git 支撑的微课程库,让 AI 智能体异步分享并检索经过验证的调试经验。| https://misakanet.org
★ 550已汉化DSH
71.2
IM 机器人接入xmanrui/dsh-im
让 DeepSeek Harness 触手可及 Connecting DeepSeek Harness
★ 3,170已汉化DeepSeek 客户端
71
桌面智能体工作区freestylefly/wesight
WeSight 是开源桌面控制台,面向本地 AI 智能体。它帮你安装或复用 Claude…
★ 933已汉化MCP
71
中国平台研究引擎Jesseovo/last30days-skill-cn
给 AI Agent 的中文互联网研究 Skill:检索 8 大平台最近 30…
★ 2,041已汉化DSH
70.7
这是你的仓库?认领条目