dsh-personal-center
v1.1.1
Published
DSH 个人中心:设置 →「个人配置」分区(Token 用量统计 + 个性化自定义指令 + 外观/全局字号 + 成本估算 + 桌面宠物 + 会话状态概览)
Maintainers
Readme
DSH 个人中心 · dsh-personal-center
DeepSeek Harness 的个人中心插件:设置 →「个人配置」分区,提供 Token 用量(含成本估算)/ 个性化自定义指令 / 外观(全局字号)/ 桌面宠物。
一个面向 DeepSeek Harness(DSH)桌面端 / Web 端的本地插件。在设置里新增「个人配置」分区,含四个外层 tab:
- Token 用量:真实用量统计 —— 今日/累计 Token、会话数、工具调用、Token 活动热力图(每日·每周·月度累计)、按模型分布、常用工具、会话回顾;内含子 tab(概览 / 回顾 / 模型成本);
- 个性化:全局自定义指令(等价于 ChatGPT / Codex 桌面端的「个性化 → 自定义指令」),对本机所有聊天生效;
- 外观:全局字号步进器(默认 14、范围 11–16、步进 1),一键缩放整套界面文字、改动即时预览、自动记忆;
- 宠物:圆滚滚小黑鲸 / 小蓝鲸(位图)+ 圆滚滚小黑 / 小蓝(矢量)皮肤 —— 由真实用量数据驱动 5 种情绪(开心/忙碌/疲惫/钱包痛/打盹),点击吐数据气泡、可拖拽记忆位置、右键快捷菜单,30 秒轮询;顶部「会话状态」卡可开关会话状态概览(实时列出运行中/失败/完成,双击某条直接进入对应会话)。
「模型成本」位于「Token 用量」的子 tab 内:按模型估算成本(支持峰谷分时、分币种、官方预设价),外加缓存命中率统计。
纯本地运行,不联网、不读取聊天正文,详见 PRIVACY.md。中英文双语界面,随 DSH 语言自动切换。
📸 截图
四大分区(v1.0)
| Token 用量 | 个性化 |
|---|---|
|
|
|
| 外观(全局字号) | 宠物 |
|---|---|
|
|
|
功能细节
| 浅色 · Token 用量 | 深色 · 回顾 |
|---|---|
|
|
|
| 浅色 · 宠物面板 | 深色 · 宠物面板 |
|---|---|
|
|
|
| 会话状态概览(双击进入会话) |
|---|
|
|
五种情绪动画(开心 / 忙碌 / 疲惫 / 钱包痛 / 打盹):
| 黑鲸 | 蓝鲸 |
|---|---|
|
|
|
新增动作( v0.8.0 )(思考中 / 等你回复 / 完成庆祝 / 拖拽 / 点击打招呼):
| 黑鲸 | 蓝鲸 |
|---|---|
|
|
|
| 模型成本 · 深色 |
|---|
|
|
| 个性化 · 按工作区(分层指令 + 模板库)|
|---|
|
|
✨ 功能
Token 用量(统计)
- 今日概览:Token 消耗 / 会话 / 工具调用;
- 累计数据:累计 Token / 最长聊天时长 / 会话总数 / 缓存命中率 / 估算成本;
- Token 活动:GitHub 贡献图风格热力图,支持 每日 / 每周 / 累计 三态切换;
- 按模型分布:按 provider + model 拆分 Token、请求数、每模型缓存命中率与成本(多模型对比一目了然);
- 常用工具:按调用次数排序(含
mcp__<server>__<tool>形式的 MCP 工具); - 会话回顾:最近会话列表(标题 / 日期 / 时长 / Token / 缓存命中率),自动排除已归档会话。
数据来源:扫描本机会话日志实时聚合,只读数字、不读正文。见 docs/common/DESIGN.md。
模型成本(估算)
- 按模型 × 每百万 token 单价估算成本,分币种(¥/$)分别合计;
- 支持 峰谷分时(DeepSeek 官方口径:北京 9:00-12:00、14:00-18:00 为高峰,空闲=高峰一半);
- 内置官方预设价(deepseek / kimi / gemini / gpt),提供「提供方→模型」联想添加,可自改;
- 展示:本周 / 本月 / 累计 成本。
个性化(分层指令:v0.7)
- 全局指令(身份基线):输入身份 / 工作原则 / 回答偏好,保存后本机所有会话的下一次请求自动带上;
- 按工作区指令(项目适配):为每个工作区配置专属指令,会话按 cwd 最长前缀匹配自动注入「全局 + 工作区」合并文本;未配置的工作区回退仅全局(与旧版行为一致);
- 指令模板库:内置 5 个高质量模板(产品经理 / 开发者 / 写作 / 翻译 / 通用助手),一键应用到全局或当前工作区;支持把当前指令「存为模板」、编辑、删除;
- 注入预览:底部实时显示「全局 + 当前工作区」合并后的最终指令 + ≈token 估算,切换工作区联动更新;
- 全部纯本地(settings.yaml)、零网络、不迁移现有
custom-instructions数据,中英文双语、DSH 设计令牌。
外观(全局字号:v1.0)
- 新增第 4 个 tab「外观」,提供全局字号步进器:默认 14、范围 11–16、步进 1,改动即时全局预览、自动记忆到本机
localStorage; - 引擎遍历所有可读样式表,收集 DSH 的
--dsw-font-*token 与硬编码字号规则,按「当前值 − 14」的差值整体偏移,经一个<style>覆盖层统一生效——默认 14 时覆盖层为空,界面 100% 原样; - 只做全局字号偏移、不触碰其它模块版式;纯本地、零网络。
桌面宠物(黑鲸 / 蓝鲸)
- 界面右下角圆滚滚小黑鲸(默认 S 尺寸),纯前端零依赖(素材为宿主托管的动画 WebP,真 alpha 透明,深色主题有描边光);
- 矢量皮肤「圆滚滚小黑 / 圆滚滚小蓝」(v1.1,皮肤 id
black-vector/blue-vector):纯 DOM 渲染(圆形渐变身体 + 胶囊眼),零素材;鼠标跟随四层(眼睛朝向 / 头位移 / 上下"驼"形变 / 渐变光源)+ 转向透视(转向侧眼睛变小 + 两眼间距压缩)+ 靠近眨眼 / 点眼眯线 / 点身挠痒 / 随机头放大;与位图皮肤并存、互斥,位图↔矢量切换销毁重建实例; - 宠物列表:圆滚滚小黑鲸 / 圆滚滚小蓝鲸各一张完整配置卡(预览 + 今日统计 + 不透明度 + 开关),开关互斥只能启用一只;左边形象图在面板打开期间交替随机播放小表情动画(每 10s 轮换一只,启用瞬间再动一次 = 唤醒);未启用的卡片保持静态(固定表情 + 占位统计);
- 常驻显示,平时静止不打扰(参考 Codex 宠物设计):待机时显示单帧静态表情,不做循环动作;情绪变化时会播放对应动画,约 2 秒后回到静止;鼠标悬停或点击也会按当前情绪做个小动作;
- 5 种数据驱动情绪,30 秒轮询
/personal-center/stats,优先级:钱包痛 > 疲惫 > 忙碌 > 打盹 > 开心;- 开心 = 缓存命中率 ≥ 70%;忙碌 = 今日工具调用 ≥ 400 次;疲惫 = 今日 Token ≥ 2 亿;钱包痛 = 今日成本 ≥ ¥10(需配置价格);打盹 = 无活动 ≥ 10 分钟(阈值已按本机真实数据校准);
- 点击弹出随机数据气泡(今日 Token / 缓存命中率 / 最常用工具 / 今日成本),3 秒后消失;
- 会话状态概览:宠物页顶部「会话状态」卡可开关状态概览(默认开);开启后悬停宠物右上角「会话状态」按钮(或点击宠物)→ 毛玻璃面板,实时列出会话状态(运行中 / 失败 / 已完成 / 待机 + 摘要计数,运行中/失败置顶);双击某条直接进入对应会话;失败如实标红(绝不伪装绿色成功);数据来自平台已有
sessions投影,事件驱动、零轮询;点面板外或 ESC 关闭;关闭会话状态时按钮隐藏、宠物情绪回到用量驱动; - 自由拖拽:拖到哪就停在哪,松手后位置记忆到宿主配置(刷新后恢复);窗口缩放按比例跟随(缩小/拉大都跟随,始终留在视口内不丢出);
- 右键快捷菜单:隐藏宠物;
- 「宠物」tab 极简面板:顶部「会话状态」卡(标题 + 开关 + 说明,宠物未启用时置灰)+ 下方两张宠物卡片(预览 + 宠物名 + ⓘ 提示 + 今日统计 + 不透明度档位(30%/60%/100%) + 启用开关);开关互斥、交互只靠开关(无 hover/选中视觉);
enabled:false时不创建任何 DOM、不轮询;接口失败保留上一状态不崩溃;- 只使用聚合数字(今日 Token/工具调用/成本、缓存命中率、最近活动时间),不读聊天正文。
🛠 安装
方式一:插件控制台 / CLI(推荐)
dsh plugin --profile web add github:PolinniZhong/dsh-personal-center或打开 Web GUI → 设置 → 插件 → 插件控制台,搜索「个人中心」安装。
方式二:本地开发(link 依赖,和 dsh-omi-voice 同款)
克隆本仓库到本地任意目录;
在 profile 的
package.json中加入依赖:"dsh-personal-center": "link:/绝对路径/DSH 个人中心"在 profile 的
dsh.profile.bundles列表中加入"dsh-personal-center";重启 DSH 应用。
注:重启后,若
node_modules中没有该包,可手动建立软链接:ln -s /绝对路径/DSH 个人中心 <DSH_HOME>/profiles/web/node_modules/dsh-personal-center
卸载
设置 → 插件 → 插件控制台,停用 / 删除 dsh-personal-center;或删除 package.json 中的依赖与 bundles 条目。
🗺 路线图
| 版本 | 内容 | 状态 | |---|---|---| | v0.1 | 个性化 → 自定义指令(全局注入) | ✅ 可用 | | v0.2 | 「个人」分区:统计(真实数据)+ 个性化 | ✅ 可用 | | v0.3 | 成本估算(峰谷分时/分币种/官方预设)、缓存命中率、会话回顾(排除归档)、Token 活动(每日/每周/月度累计) | ✅ 可用 | | v0.4 | 桌面宠物(5 情绪、常驻显示/平时静止/情绪变化动画、拖拽位置记忆、极简面板) | ✅ 可用 | | v0.5 | 宠物行为打磨 + 会话状态概览(动作级实时状态) | ✅ 可用 | | v0.6 | 宠物会话状态概览升级(动作级实时显示) | ✅ 可用 | | v0.7 | 个性化指令增强:全局 + 按工作区(分层自动注入)+ 模板库 + 注入预览 | ✅ 可用(v0.7) | | v0.8 | 桌宠 5 个新动作(思考/等待/庆祝/拖拽/打招呼)+ 会话状态情绪实时驱动 | ✅ 可用(v0.8.1) | | v0.9 | 「个人配置」改名、「宠物」单页(会话状态卡 + 宠物卡)、会话状态修复(运行中置顶/双击进入/悬停稳定)、i18n 补全、宠物随窗口按比例跟随 | ✅ 可用(v0.9.0) | | v1.0 | 「外观」Tab + 全局字号引擎(默认 14、11–16)、设置头部 sticky + 毛玻璃、i18n 模板库本地化、代码治理重构(4 模块类前缀 + SDD) | ✅ 可用(v1.0.0) |
后续规划(尚未实现):用量导出(JSON/CSV)、年度对比、更多皮肤/表情 —— 详见 docs/common/PLAN.md。
🤔 为什么做这个(立项评审摘要)
- 技术可行:DSH 是插件化架构(宿主插件 + 浏览器 bundle),本仓库即是范例;会话日志记录了每次请求的 token 用量与工具调用事件,MCP 工具以
mcp__<server>__<tool>命名可直接归类; - 符合用户心理:量化反馈(类似 GitHub 贡献图)、成本透明(按 token 计费)、差异化(官方暂无个人中心/全局统计)、隐私友好(只聚合数字);
- 风险与对策:安装门槛 → 一键安装;数据准确性 → 直接读权威日志;性能 → 宿主端聚合 + 60s 缓存。
📁 仓库结构
├── package.json # dsh.bundle.patch + dsh.client 声明
├── cordis.patch.yml # 插入插件行
├── lib/
│ ├── index.js # 宿主:设置命名空间 + 系统提示词注入 + 统计服务 + 环回路由(含宠物配置/素材)
│ ├── client.js # 浏览器:「个人配置」分区 UI(统计 + 成本 + 个性化 + 外观/字号 + 宠物面板/浮层)
│ └── pet-assets/ # 宠物动画素材(5×WebP,由 gif2webp.py 从 RGBA 帧合成)
├── docs/
│ ├── README.md # 项目知识地图(入口)
│ ├── SDD.md # 模块规格与边界契约(类前缀 / 易混淆点 / 新增模块 SOP)
│ ├── MODULE-MAP.md # 功能 → 代码/路由/文档/素材 映射
│ ├── common/ # 通用:DESIGN(架构决策)/ DESIGN-SYSTEM(UI 设计规范)/ PLAN / PLATFORM-NOTES / 发布与竞争力
│ ├── personal-profile/ # Token 用量:DATA-MODEL / COST-ESTIMATION
│ ├── personalization/ # 个性化:个性化指令增强 PRD
│ └── pet/ # 宠物:DESKTOP-PET / 状态概览设计规格
├── docs/screenshots/ # 截图
├── PRIVACY.md # 隐私说明
├── README.md
└── LICENSE # MIT想了解架构/踩坑/规范,从 docs/README.md 的知识地图开始。
📄 许可
🙏 致谢
架构参考 dsh-omi-voice(link 依赖 + bundle patch 模式)与 dsh-plugin-hub(插件控制台安装通道)。
