前言¶
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 仓库。