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

鲸鱼娘人格 hulibuld/dsh-pet-cuteness-plugin

DeepSeek 客户端
hulibuld3 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

给桌面挂件配上角色口吻、中文思考与每日日记

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

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

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/hulibuld/dsh-pet-cuteness-plugin.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
暂无时间戳·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/06·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 3 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 72 处,展示前 41 条)
  • 读取本地文件
    index.js:161
    for (const profile of readdirSync(join(home, 'profiles'))) {
  • 读取本地文件
    index.js:198
    const parsed = JSON.parse(readFileSync(file, 'utf8'))
  • 读取本地文件
    index.js:451
    text = readFileSync(file, 'utf8')
  • 写入本地文件
    index.js:470
    writeFileSync(backup, text, 'utf8')
  • 写入本地文件
    index.js:478
    writeFileSync(tmp, next.text, 'utf8')
  • 写入本地文件
    index.js:479
    renameSync(tmp, file)
  • 删除本地文件
    index.js:482
    unlinkSync(tmp)
  • 写入本地文件
    index.js:487
    writeFileSync(file, text, 'utf8')
  • 读取本地文件
    index.js:502
    after = readFileSync(file, 'utf8')
  • 写入本地文件
    index.js:509
    writeFileSync(file, text, 'utf8')
  • 读取本地文件
    index.js:644
    const text = readFileSync(TOGGLE_FILE, 'utf8')
  • 写入本地文件
    index.js:660
    mkdirSync(DATA_DIR, { recursive: true })
  • 读取本地文件
    index.js:1575
    return statSync(path).isDirectory()
  • 删除本地文件
    index.js:2310
    if (targetDocPath !== loaded.docPath && statSync(targetDocPath).isFile()) unlinkSync(targetDocPath)
  • 删除本地文件
    index.js:2328
    if (targetDocPath !== loaded.docPath && statSync(targetDocPath).isFile()) unlinkSync(targetDocPath)
  • 删除本地文件
    index.js:2360
    if (existsSync(staleMarker)) unlinkSync(staleMarker)
  • 删除本地文件
    index.js:2418
    unlinkSync(oldPath)
  • 发起网络请求
    client.js:990
    return fetch(BRIDGE + path, requestOptions)
  • 发起网络请求
    client.js:1846
    fetch(BRIDGE + '/pet', { method: 'GET' })
  • 发起网络请求
    client.js:2000
    fetch(url, controller ? { method: 'GET', signal: controller.signal } : { method: 'GET' })
  • 读取本地文件
    scripts/build-client.mjs:164
    const code = readFileSync(join(SRC, file), 'utf8')
  • 读取本地文件
    scripts/build-client.mjs:3860
    existing = readFileSync(OUT, 'utf8')
  • 写入本地文件
    scripts/build-client.mjs:3871
    writeFileSync(OUT, output, 'utf8')
  • 写入本地文件
    src/diary-store.mjs:190
    const mkdir = io.mkdir ?? ((path) => mkdirSync(path, { recursive: true }))
  • 读取本地文件
    src/diary-store.mjs:230
    const read = io.read ?? ((path) => readFileSync(path, 'utf8'))
  • 读取本地文件
    src/diary-store.mjs:327
    const read = io.read ?? ((path) => readFileSync(path, 'utf8'))
  • 写入本地文件
    src/diary-store.mjs:331
    const mkdir = io.mkdir ?? ((path) => mkdirSync(path, { recursive: true }))
  • 读取本地文件
    src/diary-store.mjs:385
    const read = io.read ?? ((path) => readFileSync(path, 'utf8'))
  • 读取本地文件
    src/diary-store.mjs:405
    const read = io.read ?? ((path) => readFileSync(path, 'utf8'))
  • 读取本地文件
    src/diary-store.mjs:457
    const read = io.read ?? ((path) => readFileSync(path, 'utf8'))
  • 读取本地文件
    src/diary-store.mjs:594
    const read = io.read ?? ((path) => readFileSync(path, 'utf8'))
  • 写入本地文件
    src/diary-store.mjs:627
    const mkdir = io.mkdir ?? ((path) => mkdirSync(path, { recursive: true }))
  • 读取本地文件
    scripts/check-manifest.mjs:35
    pkg = JSON.parse(readFileSync(join(ROOT, 'package.json'), 'utf8'))
  • 读取本地文件
    scripts/check-manifest.mjs:45
    check(existsSync(join(ROOT, pkg.main ?? '')), `main 文件实际存在(${pkg.main})`)
  • 读取本地文件
    scripts/check-manifest.mjs:51
    check(existsSync(patchPath), `patch 文件存在(${pkg.dsh.bundle.patch})`)
  • 读取本地文件
    scripts/check-manifest.mjs:52
    if (existsSync(patchPath)) {
  • 读取本地文件
    scripts/check-manifest.mjs:53
    const patch = readFileSync(patchPath, 'utf8')
  • 读取本地文件
    scripts/check-manifest.mjs:62
    check(existsSync(clientPath), `client 文件实际存在(${pkg.exports['./client']})`)
  • 读取本地文件
    scripts/sync-data.mjs:28
    srcText = readFileSync(SRC, 'utf8')
  • 读取本地文件
    scripts/sync-data.mjs:37
    dstText = readFileSync(DST, 'utf8')
  • 写入本地文件
    scripts/sync-data.mjs:48
    copyFileSync(SRC, DST)
扫描于 2026/11/6(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

由 DSH 上传:AI娘化插件

README

由 DeepSeek 最新模型翻译生成
dsh-pet-cuteness-plugin · 大肥鱼的后台 dsh plugin --profile desktop add dsh-pet-cuteness-plugin · 遇到问题开 issue 给右下角那只鲸鱼娘配上「人」:让模型按角色口吻说话、用中文思考、在挂件头顶冒一两句心里话,每晚替你写一篇日记。 要配合 @linxin666/dsh-pet(右下角那只鲸鱼娘)用。没有它也能装、设置页也能开,但没人出镜、没有气泡可挂。 项目名是 dsh-pet-cuteness plugin,包名只能写成 dsh-pet-cuteness-plugin,市场里显示「大肥鱼的后台」,三个名字指同一个东西。 装 dsh plugin --profile desktop add dsh-pet-cuteness-plugin 装完重启 DSH。重启后输入框左边多三颗胶囊,挂件头顶能冒台词,设置里多一页「大肥鱼的后台」。 第一次用这么走:打开 设置 → 大肥鱼的后台,选一个日记本文件夹,在输入框左边点亮「语气」,再把同一句话问一遍。她换口吻回答,就是生效了。 装完多出什么 | 在哪 | 是什么 | | 输入框左边 | 三颗胶囊:语气、中文思考、台词。
展开完整文档(README 剩余 1 节)
dsh-pet-cuteness-plugin · 大肥鱼的后台

dsh plugin --profile desktop add dsh-pet-cuteness-plugin · 遇到问题开 issue

给右下角那只鲸鱼娘配上「人」:让模型按角色口吻说话、用中文思考、在挂件头顶冒一两句心里话,每晚替你写一篇日记。

要配合 @linxin666/dsh-pet(右下角那只鲸鱼娘)用。没有它也能装、设置页也能开,但没人出镜、没有气泡可挂。

项目名是 dsh-pet-cuteness plugin,包名只能写成 dsh-pet-cuteness-plugin,市场里显示「大肥鱼的后台」,三个名字指同一个东西。

装

dsh plugin --profile desktop add dsh-pet-cuteness-plugin

装完重启 DSH。重启后输入框左边多三颗胶囊,挂件头顶能冒台词,设置里多一页「大肥鱼的后台」。

第一次用这么走:打开 设置 → 大肥鱼的后台,选一个日记本文件夹,在输入框左边点亮「语气」,再把同一句话问一遍。她换口吻回答,就是生效了。

装完多出什么

| 在哪 | 是什么 |
| 输入框左边 | 三颗胶囊:语气、中文思考、台词。各自管当前这个会话 |
| 挂件头顶 | 台词气泡,从模型的思考过程里摘人话,跟着挂件走 |
| 设置 → 大肥鱼的后台 | 日记设置、挂件状态、亲密度、小鱼干 |
| 日记本文件夹 | 每晚一篇 <日期>.md,标题和结尾都带日期 |

几个默认值先说清楚,免得以为坏了。语气默认关,人设段每个 model step 都要重算、占约 2 KB token,不让所有人默认多花钱。中文思考默认关,同样为省 token。台词默认开,它零成本,只读模型自己的思考,不额外请求。亲密度和小鱼干默认收起,不点开就一个请求都不发。

日记

日记直接读 DSH 自己的会话日志,用 Node 自带的 zstd,不引第三方依赖,也不需要装任何记忆插件。

会话归档了照样能写。归档只是往工作区配置里记一份会话 ID 名单,用来在侧边栏藏起来,会话文件本身还在磁盘上,日记扫的是文件,不查那份名单。

每天 21:00 切日。21:00 之前算当天,之后算第二天。所以 22:30 的对话写进明天的日记,而 21:00 定时触发的那一篇,写的是刚刚结束的那一天。

日记本文件夹里还有个 AI娘日记记录.md,那是账本,存你的设置、今天聊了多少段、最近写过哪几篇。真正的日记是按日期单独存的 Markdown。账本给程序看,手改它她就认不出来了。

日记由你选的那条 DeepSeek 模型写。默认「自动」= 用你登录的账号那条 API。换成非 DeepSeek 的模型会直接被打回,不会悄悄换别的东西去跑。

排障

先看 http://127.0.0.1:<端口>/api/dsh-pet-cuteness-plugin/debug:stage 是不是 ready,attached 里有没有当前会话,scheduler 有没有在跳。

再硬刷新一次(⌘⇧R)。插件更新后浏览器里跑的可能是旧 bundle。

白屏多半是组件渲染时抛错,把 overlay 那条 entry 搞挂了。模型名读不到,是读错了创建时的默认值,应该读 modelSelection.next.model。人设段落没生效,可能是这版宿主取不到 DEPLOYMENT_PERSONA_PREFIX 的顺序,这种情况下插件选择不注册,不猜数字。

边界

不改 dsh-pet,挂件是别人的包,只出现在它允许的位置。不代装 dsh-pet,只在 peerDependencies 里声明加运行期探测,没装就提示。不碰系统提示词里的时间、随机数、会话 id,那会打穿前缀缓存。不往 document.body 追加节点,不用 iframe。亲密度和小鱼干只在你说要改的时候写,写前备份,写完回读核对,对不上就还原。

开发

cd probe
npm run build
npm run verify

改逻辑改 src/ 下的 .mjs,不要改 client.js,那是构建产物。改素材改上游真源再同步。提交前 npm run verify 必须绿。

已知问题与修复记录

累计的修复、现象、原因与修法记在 docs/FIXES.md。以后每修一次加一行,别攒着。

许可

MIT。
预览分享卡片长什么样 ↓hulibuld/dsh-pet-cuteness-plugin
分享 · DeepSeek Harness Hub
hulibuld/dsh-pet-cuteness-plugin

给桌面挂件配上角色口吻、中文思考与每日日记

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部