大肥鱼 / GPT娘表情包知识库,适用于 DeepSeek Harness(dsh)、MCP 和各类聊天机器人
52.3/100
综合分
59
GitHub 星标
20,437
npm 周下载
—/5
用户评分
数据截至 2026/10/27 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-nekowhale-stickersnpm 源 · dsh-nekowhale-stickers 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · platform
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 7 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/10/24) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-nekowhale-stickers @ 1.1.1
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/3 09:18:09
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 59 处,展示前 52 条)
- 读取本地文件lib/index.js:87
const VERSION = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8')).version; - 读取本地文件lib/index.js:174
const ref = await attachments.saveImage({ data: await readFile(path), mediaType: 'image/gif', name: path.split(/[ /]/u).pop() }); - 读取本地文件lib/index.js:382
const { meta } = splitSkill(await readFile(SKILL_FILE, 'utf8')); - 读取本地文件lib/index.js:390
const { body } = splitSkill(await readFile(SKILL_FILE, 'utf8')); - 读取本地文件lib/index.js:470
const info = await stat(file); - 读取本地文件lib/index.js:479
createReadStream(file).on('error', () => res.destroy()).pipe(res); - 发起网络请求lib/client.js:211
const pull = () => fetch(CONFIG_URL, { cache: 'no-store' }) - 发起网络请求lib/client.js:288
return fetch(`${local}/balance.json?${qs}`, { cache: 'no-store' }).then((r) => r.json()) - 读取本地文件lib/cli.js:74
const image = flags.image ? await readFile(String(flags.image)) : undefined; - 写入本地文件lib/cli.js:77
await writeFile(String(flags.o), r.data); - 发起网络请求lib/balance.js:86
res = await fetch(KEY_ENDPOINT, { - 发起网络请求lib/core/kit.js:104
const remote = JSON.parse((await this.fetch(this.o.metaPath)).toString('utf8')); - 读取本地文件lib/core/kit.js:245
const buf = await readFile(path); - 写入本地文件lib/core/kit.js:263
await mkdir(join(this.o.dataDir, 'packs', s.pack), { recursive: true }); - 写入本地文件lib/core/kit.js:265
await writeFile(tmp, buf); - 写入本地文件lib/core/kit.js:266
await rename(tmp, path); - 读取本地文件lib/core/kit.js:283
await stat(target); - 写入本地文件lib/core/kit.js:287
await mkdir(join(this.o.dataDir, 'byhash'), { recursive: true }); - 写入本地文件lib/core/kit.js:292
await copyFile(path, target).catch(() => { }); - 读取本地文件lib/core/kit.js:299
await stat(archived); - 写入本地文件lib/core/kit.js:343
await mkdir(this.o.dataDir, { recursive: true }); - 读取本地文件lib/core/kit.js:436
return JSON.parse(await readFile(path, 'utf8')); - 发起网络请求lib/core/sync.js:13
const res = await fetch(url, init); - 读取本地文件lib/core/sync.js:30
return JSON.parse(await readFile(path, 'utf8')); - 读取本地文件lib/core/sync.js:49
const [source, etag] = (await readFile(metaPath, 'utf8')).split('\n'); - 写入本地文件lib/core/sync.js:68
await mkdir(dir, { recursive: true }); - 写入本地文件lib/core/sync.js:69
await writeFile(cachePath + '.tmp', text); - 写入本地文件lib/core/sync.js:70
await rename(cachePath + '.tmp', cachePath); - 写入本地文件lib/core/sync.js:73
await writeFile(metaPath, `${source}\n${newTag}`); - 读取本地文件lib/core/sync.js:92
if (sha1prefix(await readFile(path)) === it.hash) - 写入本地文件lib/core/sync.js:111
await mkdir(dirPath, { recursive: true }); - 写入本地文件lib/core/sync.js:113
await writeFile(tmp, buf); - 读取本地文件lib/core/sync.js:129
files = await readdir(join(o.dir, 'packs', pack)); - 删除本地文件lib/core/sync.js:135
await rm(join(o.dir, 'packs', pack, f), { force: true }); - 读取本地文件lib/core/fetcher.js:21
cached = await readFile(path); - 读取本地文件lib/core/fetcher.js:33
v = JSON.parse(await readFile(vpath, 'utf8')); - 写入本地文件lib/core/fetcher.js:53
await mkdir(dirname(path), { recursive: true }); - 写入本地文件lib/core/fetcher.js:55
await writeFile(vpath, JSON.stringify({ ...v, checked: Date.now() })); - 写入本地文件lib/core/fetcher.js:71
await writeFile(tmp, buf); - 写入本地文件lib/core/fetcher.js:72
await rename(tmp, path); - 写入本地文件lib/core/fetcher.js:73
await writeFile(vpath, JSON.stringify({ - 发起网络请求lib/core/image-input.js:39
const res = await fetch(url, { redirect: 'manual', signal: opts.signal }); - 读取本地文件lib/core/image-input.js:54
if ((await stat(src)).size > MAX_BYTES) - 读取本地文件lib/core/image-input.js:56
buf = await readFile(src); - 发起网络请求lib/meme/templates.js:25
const idx = JSON.parse((await fetch('meme/index.json')).toString('utf8')); - 发起网络请求lib/meme/templates.js:48
async meta(tpl) { return JSON.parse((await this.fetch(this.path(`${tpl}.json`))).toString('utf8')); } - 发起网络请求lib/meme/templates.js:49
async gif(file) { return decodeGif(await this.fetch(this.path(file))); } - 发起网络请求lib/meme/templates.js:51
const img = await loadImage(await this.fetch(this.path(file))); - 发起网络请求lib/meme/fonts.js:19
const css = (await state.fetch(`fonts/${dir}/fonts.css`)).toString('utf8'); - 发起网络请求lib/meme/fonts.js:37
const data = await state.fetch(rel); - 读取本地文件lib/mcp.js:8
const VERSION = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8')).version; - 读取本地文件lib/mcp.js:47
out.content.push({ type: 'image', mimeType: 'image/gif', data: (await readFile(path)).toString('base64') });
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-home-paths@deepseek-ai/dsh-tools@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
最近更新
在 GitHub 查看全部 →v1.1.12026-10-27
双击桌宠查 DeepSeek 余额 · Double-click the pet for your DeepSeek balance
· 双击网页桌宠,头顶弹出余额卡片(和 kiriyuki.com 桌面版大肥鱼同一套手绘卡片),大肥鱼换上 ¥ 眼,余额用完时眼泪汪汪
· 余额来自 dsh 里已登录的 DeepSeek 账号或已设置的 API Key,两样都有时优先账号;都显示充值余额和一行赠送余额
· 只在双击时由本机 dsh 向 deepseek.com 查询,凭据不会发往别处,也只有本机页面能拿到结果;设置里「双击桌宠查 DeepSeek 余额」(petBalance)可关闭
· 双击时不再叠出「吃啥?」等对话气泡:卡片等气泡收起后再出现
· 设置页下拉菜单跟随 dsh 深浅色主题(深色主题下原来是白底白字)
· 在 dsh 0.2.1-rc.2 上实测
Install / update: dsh plugin --profile web add dsh-nekowhale-stickers@1.1.1 · MCP / CLI: npx dsh-nekowhale-stickers
表情包作者:B站 可以叫我云大人/雾雪 ·
v1.1.02026-10-23
完整适配 dsh 0.2 · Full dsh 0.2 support
· dsh 0.2 的插件设置改到侧栏 插件 → 大肥鱼表情包 页面(0.2 去掉了旧设置页用的服务):同一张表单,保存后立即生效;dsh 0.1.x 仍在 设置 → 插件 → 大肥鱼表情包
· 插件页卡片显示中文名、简介和大肥鱼图标
· 在 dsh 0.2.1-rc.2 与 0.1.5 上实测:安装、工具、技能、表情图片、桌宠、设置保存与恢复默认
Install / update: dsh plugin --profile web add dsh-nekowhale-stickers@latest · MCP / CLI: npx dsh-nekowhale-stickers
表情包作者:B站 可以叫我云大人/雾雪 ·
v1.0.12026-10-23
适配 dsh 0.2 · Support dsh 0.2
· 支持 dsh 0.2:之前声明的版本范围只到 0.1.x,dsh 0.2 安装时会拒绝本插件;现在声明 engines.dsh >=0.1.5-rc.1,0.1.5 与 0.2 均可安装,今后的版本也不会因为版本范围被拒
· 新增 2 张表情:大肥鱼 特殊01、特殊02(梗:《鸣潮》清宵),共 322 张;已安装的用户会自动同步线上知识库
· sticker_send 对没有标题的表情改用文件名作图片说明
Install / update: dsh plugin --profile web add dsh-nekowhale-stickers · MCP / CLI: npx dsh-nekowhale-stickers
表情包作者:B站 可以叫我云大人/雾雪 ·
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成大肥鱼哈基米表情包 · dsh-nekowhale-stickers
给 DeepSeek Harness 的表情包知识库逐张标注的使用场景、画面描述、梗出处与互动方向 · 按需检索 · 本地出图
中文 · English
表情包作者:B站 可以叫我云大人/雾雪 · kiriyuki.com 制作 · 欢迎约原稿同款表情包!
套组:大肥鱼 · 大肥鱼和GPT娘
✨ 特性
📚 表情知识库逐张标注:场景标签、动作描述、关联梗,双人表情含对象方向,对模型自身视觉依赖低。常驻上下文占用约 60 token。
🔍 情绪检索按情绪和场景词打分,支持中文部分匹配;含随机去重。
🎨 本地模板想 / 举牌 / 葱卷 / 上联 / 下联 / 抱,本地制作文字表情包。
🔄 增量同步资源更新后自动拉取最新;默认懒下载。
🎛️ 自选表情允许 agent 可以自己浏览、开关,或只用挑中的一小组;用户配置的黑 / 白名单始终优先。
🔌 通用接口 cordis 服务 stickers、[sticker:名字] 回复标记、MCP server、CLI 与公开 JSON,不绑定框架。
🐋 网页桌宠
dsh 网页界面右下角会出现 kiriyuki.com 的 大肥鱼网页桌宠。桌宠在独立的跨域 iframe 里运行,不接触 dsh 的会话;配置 pet: false 可关闭。
展开完整文档(README 剩余 1 节)
大肥鱼哈基米表情包 · dsh-nekowhale-stickers
给 DeepSeek Harness 的表情包知识库逐张标注的使用场景、画面描述、梗出处与互动方向 · 按需检索 · 本地出图
中文 · English
表情包作者:B站 可以叫我云大人/雾雪 · kiriyuki.com 制作 · 欢迎约原稿同款表情包!
套组:大肥鱼 · 大肥鱼和GPT娘
✨ 特性
📚 表情知识库逐张标注:场景标签、动作描述、关联梗,双人表情含对象方向,对模型自身视觉依赖低。常驻上下文占用约 60 token。
🔍 情绪检索按情绪和场景词打分,支持中文部分匹配;含随机去重。
🎨 本地模板想 / 举牌 / 葱卷 / 上联 / 下联 / 抱,本地制作文字表情包。
🔄 增量同步资源更新后自动拉取最新;默认懒下载。
🎛️ 自选表情允许 agent 可以自己浏览、开关,或只用挑中的一小组;用户配置的黑 / 白名单始终优先。
🔌 通用接口 cordis 服务 stickers、[sticker:名字] 回复标记、MCP server、CLI 与公开 JSON,不绑定框架。
🐋 网页桌宠
dsh 网页界面右下角会出现 kiriyuki.com 的 大肥鱼网页桌宠。桌宠在独立的跨域 iframe 里运行,不接触 dsh 的会话;配置 pet: false 可关闭。
双击桌宠查 DeepSeek 余额:用的是 dsh 里已登录的 DeepSeek 账号,或已设置的 API Key(两样都有时优先账号)。只在双击时由本机 dsh 向 deepseek.com 查询,Key 和登录凭据不会发到别处,也只有本机页面能拿到结果;petBalance: false 可关闭。
🖼️ 模板示例
大肥鱼想 下班大肥鱼举牌 今天也要摸鱼大肥鱼上联 代码一遍过大肥鱼抱 + 头像
👥 角色
大肥鱼形象基于 ZipZipPipe 与 上善无形 提供的形象;GPT娘形象基于 ZipZipPipe。
大肥鱼:拟人化的 DeepSeek 鲸鱼娘。深蓝长发、呆毛、女仆头饰。
GPT娘:拟人化的 ChatGPT,双人套组里的白色角色,白发龙娘,有龙角和 OpenAI 发饰。
双人表情的 dir 字段记录方向,例如 大肥鱼→GPT娘。
🚀 安装
dsh plugin --profile web add dsh-nekowhale-stickers
重启 dsh web 即可。dsh 0.2 也可以在网页侧栏 插件 → 添加插件 里填 dsh-nekowhale-stickers。也可以安装本地打包的 .tgz(pnpm pack)。
⚙️ 配置
最简单的方式:dsh 网页侧栏打开 插件 → 大肥鱼表情包(dsh 0.1.x 在 设置 → 插件 → 大肥鱼表情包),改完点保存,立即生效、无需重启。
也可以在 profile 的 cordis.patch.yml 里写默认值,网页里的设置会覆盖它:
- id: nekowhale-stickers
config:
promptMode: hint # skill | hint | index | off
frequency: normal # rare | normal | often
blacklist: [tag:舌吻] # id、文件名、编号、名字,或 pack: / tag: / emotion: / group: 前缀
| 项 | 默认 | 说明 |
| packs | 两套 | 要使用的套组 |
| autoSync | lazy | startup 启动时后台全量同步 · lazy 用到才下载 · off 完全离线 |
| persona | self | self:模型就是大肥鱼,表情是它自己的表情(适合 DeepSeek);neutral:当作第三方表情包 |
| promptMode | skill | 常驻提示的多少;index 会列出已启用表情,适合配合 allowlist 只挑几十张 |
| agentCuration | true | 允许智能体用 sticker_manage 自选表情 |
| templates / banwords | true | 模板开关;与网站一致的屏蔽词过滤 |
| returnImageToModel | false | 把图片附给模型看(消耗图像 token) |
| pet | true | 网页界面里显示大肥鱼桌宠;false 关闭 |
| petHeight / petBubbles | 211 / true | 桌宠大小(高度,像素)、对话气泡(关掉可少加载约 1.5 MB) |
| petBalance | true | 双击桌宠查 DeepSeek 余额;false 关闭 |
🧰 工具
| 工具 | 作用 |
| sticker_search | 按情绪 / 场景找表情,每条一行:名字|情绪|标签|方向 |
| sticker_send | 返回一行 Markdown 图片,模型原样放进回复;传情绪词则随机取一张 |
| meme_render | 用模板生成表情 |
| sticker_manage | 浏览、详情、开关、模式、出处、同步 |
🤝 在其他插件和框架里使用
提供四种通用接口:
- cordis 服务(dsh 内的其他插件,如 QQ 桥接):inject: ['stickers'],然后 ctx.stickers.search() / .file() / .url() / .render()。
- 回复标记:纯文本回复里写 [sticker:名字],或 [sticker:开心] 这类情绪词(同类随机取一张),桥接插件用 parseReply() 拆成文字与图片。NapCat / OneBot 发 GIF 时给图片段加 sub_type: 1 才会按表情显示。
- MCP(LangBot、NoneBot / AstrBot 的 LLM 插件、Claude / Cursor 类客户端等): { "command": "npx", "args": ["-y", "dsh-nekowhale-stickers", "mcp"] }
工具返回本地路径和公网 URL,由宿主自己发文件。
- 数据与 CLI(任何语言):meta/nekowhale.json(线上 https://kiriyuki.com/meme/kit/nekowhale.json),或
npx dsh-nekowhale-stickers search 摸鱼
npx dsh-nekowhale-stickers index
npx dsh-nekowhale-stickers render 大肥鱼举牌 今天也要开心 -o sign.gif
亦可基于本仓库重新开发。
🛠️ 开发
pnpm install && pnpm build
node tools/dev/smoke.mjs /tmp/data # 用假 ctx 跑一遍全部工具
- tools/annotate/:标注流程,抽帧拼图 → 多模态模型逐张标注 → build_meta.py 合并成 meta/nekowhale.json。
- tools/art/:头图与展示图的合成脚本(背景底板 + 真实表情帧 + Live2D 立绘);成品图片由 kiriyuki.com 托管。
📄 许可
代码采用 Apache-2.0:允许对代码进行二次修改,修改或重新发布同类功能必须保留 NOTICE,即标明本仓库地址与表情包作者链接。
知识库数据(meta/ 等,见 LICENSE-ASSETS)采用 CC BY-NC 4.0:允许对资源进行二次分发,但必须保留原作者链接和网址,且禁止付费提供或用于其他商业用途。
表情包基础形象和模板由 可以叫我云大人/雾雪 制作;网页桌宠由 kiriyuki.com 提供。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Loping151/dsh-nekowhale-stickers
大肥鱼 / GPT娘表情包知识库,适用于 DeepSeek Harness(dsh)、MCP 和各类聊天机器人
相关插件 · 平台集成
智能体工程课walkinglabs/learn-harness-engineering
一门项目制课程,教你搭建环境、管理状态、做验证、加控制机制,让 AI 编程智能体稳定干活。
★ 21,155已汉化DSH
71.7
视频翻译配音liuzhao1225/YouDub-webui
开源视频本地化工作台:导入视频,识别、翻译并逐句克隆原声,生成字幕和配音成片。
★ 5,778已汉化Cordis
71.4
失败经验库Ikalus1988/MisakaNet
📚 零依赖、由 git 支撑的微课程库,让 AI 智能体异步分享并检索经过验证的调试经验。| https://misakanet.org
★ 550已汉化DSH
71.2
桌面智能体工作区freestylefly/wesight
WeSight 是开源桌面控制台,面向本地 AI 智能体。它帮你安装或复用 Claude…
★ 933已汉化MCP
71
IM 机器人接入xmanrui/dsh-im
让 DeepSeek Harness 触手可及 Connecting DeepSeek Harness
★ 3,110已汉化DeepSeek 客户端
70.9
中国平台研究引擎Jesseovo/last30days-skill-cn
给 AI Agent 的中文互联网研究 Skill:检索 8 大平台最近 30…
★ 2,031已汉化DSH
70.7