蜂医桌宠:本地用量统计与养成系桌宠

前言

DeepSeek Harness 的日常开发中,最直观的反馈是每轮对话的 token 消耗:多了想知道原因,少了又怕漏统计。但现有工具往往只给出总量,缺乏「逐轮」的细粒度与「养成」的趣味性。本文介绍 dsh-medic-pet,一个基于本地投影的桌宠插件,它通过逐轮用量气泡与按天养成的 Q 版战地医护形象,把数据观察变成可交互、可成长的桌面体验。

插件定位

dsh-medic-pet 是一个 DeepSeek Harness 插件,维护者为 zeheng723,分类属于「趣味换装」。它不联网、不读凭据,只消费页面已经观察到的 tokenUsage / sessionStats 投影。角色形象以玩家社群表情包为风格参考,装备部分沿用了《三角洲行动》蜂医的气质,但所有画面均由本插件用 SVG 路径手画,没有使用、内嵌或分发任何官方素材或图片。

核心功能

逐轮用量与养成

  • 逐轮用量气泡:每轮回答结束后播报本轮「输入 / 输出」,有缓存时追加缓存读、缓存写。延迟 700 ms 结算以等尾部用量落定。
  • 本机累计:按本地日期分桶累计,气泡与面板都标注「本页观察累计」,不谎称账号全量。
  • 养成(按天):当天观察到至少一轮用量 → 计入 1 天。累计天数决定阶段:新兵 0 → 见习医护 2 → 战地医护 5 → 高级医护 10 → 医护队长 20 天。相邻日期连着算「连续 N 天」。
  • 阶段装备:肩章 → 针剂架 + 悬停医疗无人机 → 腰间棱纹罐 + 绿十字臂章 → 光环 + 金色头带饰。
  • 情绪:刚有动静时眯眼笑;两分钟无动静时犯困(闭眼 + z);其余为待机,眉眼带一点「?」的困惑感。

数据面板(齿轮里)

  • 累计与峰值:本机累计 tokens / 轮数,单轮最高、单日最高(含日期)。
  • 今日 vs 昨天:环比百分比;昨天没记录时直说「昨天没有记录」。
  • 趋势柱状图:7 天 / 30 天切换,逐日本地观察量;只保留最近 60 天。
  • 阶段进度条:当前阶段内已走的天数与下一阶所需天数。
  • 复制统计:把本机统计(天数、累计、峰值、勋章、历史)以 JSON 写进剪贴板;剪贴板不可用时退化成可全选复制的文本框。

每日任务与勋章

  • 每日任务:同一天目标由日期决定(不是随机):推进 N 轮(3/5/8)+ 用掉 M tokens(2万/5万/10万)+ 互动一次。三项齐 → 记 1 个「全勤日」。
  • 勋章 13 枚:第一天 / 连着三天 / 七日同行 / 十天 / 二十天 / 单轮破万 / 单日五万 / 累计百万 / 摸头五十 / 互动一百 / 三日全勤 + 事件两枚「夜班」(23:00–05:00 第一次用量)「起早」(05:00–07:00)。只由观察到的数字解锁,一旦拿到不回收。
  • 互动 5 种:摸头、补给(这两个每天各一次);分享、敬礼、搭话(可重复,搭话换一句情境台词)。只影响情绪、计数与勋章,永远不加成长值。
  • 情境台词:按当前时段(深夜/清晨/白天/夜里/收工)从台词池里挑一句,中英各一份。

守护与外观

  • 久坐提醒:连续在岗 ≥50 分钟且静置 ≥150 秒时提醒起身;真的离开过(≥5 分钟)就重新开始计时。
  • 喝水提醒:距上次 ≥45 分钟提醒补给一次。
  • 今日线(预算):预设 5万 / 10万 / 20万 / 50万 tokens,超过只提醒一次;— 为关闭。只是本地提示,不是余额、不是金额。
  • 提醒节流:两条提醒之间至少隔 20 分钟;正在出活(静置 <150 秒)时不打扰。
  • 主题换装:橄榄 / 沙色 / 夜巡 / 医护白,只改夹克、裤子、胸挂、臂章配色,人物特征(发色、瞳色、肤色)不动。
  • 改名:面板里直接改桌宠名字(≤12 字),出现在标题与面板抬头。
  • 隐藏:收成一个角落小圆点(白/绿十字),点它或再按一次快捷键唤回;隐藏期间不弹提醒。
  • 快捷键:Alt+Shift+M 开/关面板 · Alt+Shift+B 气泡开关 · Alt+Shift+H 隐藏/唤回 · Esc 关面板。
  • 拖拽吸附:按住拖动,距任一边 ≤64 px 自动吸边;吸到左边时形象镜像翻转,气泡/面板始终朝画面内侧。
  • 两步重置:「重置全部」需要点两次确认(第二次按钮变成「确认重置?」),确认才清天数、统计与勋章;「清空今日」只清当天。

明确不做

  • 不查询余额,不访问任何网络,不读取 DEEPSEEK_API_KEY / 登录态 / Cookie。
  • 不折叠原始会话事件:只消费 Host 已经接好的 tokenUsage / sessionStats 投影。
  • 不显示金额:没有官方单价依据,就不编造「花了多少钱」;「今日线」是 token 数,不是钱。
  • 不为了留存率造假:没有用量的一天就是没有成长——不补签、不倒计时、不发零;任务与勋章只认本机观察到的数字。

数据与持久化

数据存储在浏览器 localStorage 的插件自有键里,全部只在本机:

  • dsh.medicPet.v2.settings → { size, bubble, theme, name, budget, breaks, water, hidden }
  • dsh.medicPet.v2.state →
    { daysUsed, streak, lastActiveDay, pos{x,y,edge}, today{day,input,output,cacheRead,cacheWrite,turns,pat,feed,pats,feeds,treats,salutes,chats,night,early,warned,quests}, history[{d,t,n}](≤60 天), totalIn, totalOut, totalCache, totalTurns, bestTurn, bestDay, bestDayKey, badges{id:时间戳}, counts{pats,feeds,treats,salutes,chats,nudges}, perfectDays, lastPerfectDay, sitStart, waterAt, lastNudgeAt }

字段是增量式加进来的:读到旧记录时缺什么补什么(history 补空数组、counts 补 0、非法值夹回范围),不会另开新键,也不会因为版本升级丢位置。

从 v1(按轮好感)升级时:v1 的好感数不折算成天数(量纲不同),只把「今天已经用过」记为第 1 天,同时保留位置与设置;v1 的键读取后不再写入。

首次装载只立基线、不追溯历史,所以刚打开页面时不会把整段会话累计算成「本轮」。
跨日自动重开今日桶;结算窗口内若又推进了几轮,今日轮数按实际推进的轮数记,气泡显示「近 N 轮」。
投影缺失(该页面没有 useProjection)时面板会直接说明,而不是显示假的 0。

安装与启用

1. 让 DSH 助手装(最省事)

对你的 Harness 说一句:

用 plugin_manager 把 github:zeheng723/dsh-medic-pet 安装成 bundle(本地目录就给绝对路径),装完把结果告诉我。

它走的是 profile 自己的包管理器。Desktop profile 由应用独占管理,终端里的 dsh plugin 会被拒绝,所以别在命令行试这条路。

2. 命令行(非 Desktop profile)

dsh plugin --profile <profile名> add github:zeheng723/dsh-medic-pet
dsh plugin --profile <profile名> add "C:\path\to\dsh-medic-pet"   # 从本地 clone 装

3. 刷新页面

装完之后,刷新一次 Harness 页面。客户端半在浏览器里注册槽位,pnpm run dev:web 没在跑时不会热更新;替换已在跑的包需要重启才会换掉 JS 模块世代。
刷新后角落就该出现这只桌宠 —— 齿轮里是面板,按住可以拖动,距边 64 px 内自动吸边。

数据只存在浏览器 localStorage 的插件自有键里,卸载插件不会自动清它们;想清空就用面板里的「重置全部」(两步确认),或直接删键 dsh.medicPet.v2.state 与 dsh.medicPet.v2.settings。

开发自检

npm run check     # node --check:client.js / index.js 语法
npm test          # 无头冒烟 + 文案审计
npm run preview   # 生成 preview.html / preview.svg 对照图(生成物已 gitignore)
npm run banner    # 生成 docs/social-preview.png 的源页 banner.html(横幅成品已入库)

smoke.mjs 用桩替换 React / DOM / localStorage / 定时器 / Date,因此在无浏览器环境下也能把「51 分钟后久坐提醒会响、20 分钟内不重复响」这类时间逻辑跑成真断言;覆盖装载、按天养成、v1 迁移、逐轮结算、统计/勋章/任务、主题落盘并重绘、隐藏态、导出的两条路径、拖拽吸附、快捷键、两步重置,最后遍历一遍全部按钮确认没有处理器抛异常。
audit.mjs 检查 ZH/EN 键数对齐、无重复、无缺键、无死键、{占位符} 一致。

适用场景与注意

适合需要逐轮观察 token 用量、希望把数据变成桌面互动的开发者或长期使用者。插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。

插件理念是「数据诚实优先于留存率」:没有用量的一天就是没有成长,不会补签、不倒计时、不发零。所有统计只统计「这个页面开着时」观察到的轮次;刷新前、别的客户端里的消耗不在其中。

结尾

dsh-medic-pet 把 DeepSeek Harness 的本地用量统计变成了一只可养成、可互动的桌宠,适合需要细粒度观察与桌面陪伴的开发者。更多细节与源码见插件目录页与 GitHub 仓库。

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

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

Xiaoye