# DSH 个人中心 (dsh-personal-center) > DeepSeek Harness 的个人中心插件:设置 → **「个人」分区**,提供 **个人资料统计 / 个性化自定义指令 / 成本估算 / 桌面宠物**。 一个面向 DeepSeek Harness(DSH)桌面端 / Web 端的本地插件。在设置里新增「**个人**」分区,含三个外层 tab: - **个人资料**:真实用量统计 —— 今日/累计 Token、会话数、工具调用、Token 活动热力图(每日·每周·月度累计)、按模型分布、常用工具、会话回顾;内含子 tab(概览 / 回顾 / 模型成本); - **个性化**:全局自定义指令(等价于 ChatGPT / Codex 桌面端的「个性化 → 自定义指令」),对本机所有聊天生效; - **宠物**:圆滚滚小黑鲸 —— 由真实用量数据驱动 5 种情绪(开心/忙碌/疲惫/钱包痛/打盹),点击吐数据气泡、可拖拽并记忆位置、右键快捷菜单,30 秒轮询;悬停右上角「会话状态」按钮可查看会话状态概览。 「模型成本」位于「个人资料」的子 tab 内:按模型估算成本(支持峰谷分时、分币种、官方预设价),外加缓存命中率统计。 纯本地运行,不联网、不读取聊天正文,详见 [PRIVACY.md](PRIVACY.md)。 ## 📸 截图 | 浅色 · 个人资料 | 深色 · 回顾 | |---|---| | ![个人资料 · 浅色](docs/screenshots/light-profile.png) | ![回顾 · 深色](docs/screenshots/dark-review.png) | | 浅色 · 宠物面板 | 深色 · 宠物面板 | |---|---| | ![宠物 · 浅色](docs/screenshots/light-pet.png) | ![宠物 · 深色](docs/screenshots/dark-pet.png) | | 会话状态概览 · 深色 | |---| | ![会话状态概览](docs/screenshots/pet-status-overview.png) | **五种情绪动画**(开心 / 忙碌 / 疲惫 / 钱包痛 / 打盹): | 黑鲸 | 蓝鲸 | |---|---| | ![黑鲸 · 五种情绪](docs/screenshots/pet-emotions.gif) | ![蓝鲸 · 五种情绪](docs/screenshots/pet-emotions-blue.gif) | **新增动作( v0.8.0 )**(思考中 / 等你回复 / 完成庆祝 / 拖拽 / 点击打招呼): | 黑鲸 | 蓝鲸 | |---|---| | ![黑鲸 · 新增动作](docs/screenshots/pet-new-actions-black-whale.gif) | ![蓝鲸 · 新增动作](docs/screenshots/pet-new-actions-blue-whale.gif) | | 模型成本 · 深色 | |---| | ![模型成本 · 深色](docs/screenshots/dark-model-cost.png) | | 个性化 · 按工作区(分层指令 + 模板库)| |---| | ![个性化 · 按工作区](docs/screenshots/workspace-instructions.png) | ## ✨ 功能 ### 个人资料(统计) - **今日概览**:Token 消耗 / 会话 / 工具调用; - **累计数据**:累计 Token / 最长聊天时长 / 会话总数 / **缓存命中率** / **估算成本**; - **Token 活动**:GitHub 贡献图风格热力图,支持 **每日 / 每周 / 累计** 三态切换; - **按模型分布**:按 provider + model 拆分 Token、请求数、**每模型缓存命中率**与成本(多模型对比一目了然); - **常用工具**:按调用次数排序(含 `mcp____` 形式的 MCP 工具); - **会话回顾**:最近会话列表(标题 / 日期 / 时长 / Token / 缓存命中率),**自动排除已归档会话**。 数据来源:扫描本机会话日志实时聚合,只读数字、不读正文。见 [docs/DESIGN.md](docs/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 设计令牌。 ### 桌面宠物(黑鲸 / 蓝鲸) - 界面右下角圆滚滚小黑鲸(默认 S 尺寸),纯前端零依赖(素材为宿主托管的动画 WebP,真 alpha 透明,深色主题有描边光); - **宠物列表**:圆滚滚小黑鲸 / 圆滚滚小蓝鲸**各一张完整配置卡**(预览 + 今日统计 + 不透明度 + 开关),**开关互斥只能启用一只**;左边形象图在面板打开期间**交替随机播放小表情动画**(每 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(推荐) ```sh dsh plugin --profile web add github:PolinniZhong/dsh-personal-center ``` 或打开 Web GUI → 设置 → 插件 → 插件控制台,搜索「个人中心」安装。 ### 方式二:本地开发(link 依赖,和 dsh-omi-voice 同款) 1. 克隆本仓库到本地任意目录; 2. 在 profile 的 `package.json` 中加入依赖: ```json "dsh-personal-center": "link:/绝对路径/DSH 个人中心" ``` 3. 在 profile 的 `dsh.profile.bundles` 列表中加入 `"dsh-personal-center"`; 4. 重启 DSH 应用。 > 注:重启后,若 `node_modules` 中没有该包,可手动建立软链接: > `ln -s /绝对路径/DSH 个人中心 /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) | > **后续规划(尚未实现)**:用量导出(JSON/CSV)、年度对比、更多皮肤/表情 —— 详见 [docs/PLAN.md](docs/PLAN.md)。 ## 🤔 为什么做这个(立项评审摘要) 1. **技术可行**:DSH 是插件化架构(宿主插件 + 浏览器 bundle),本仓库即是范例;会话日志记录了每次请求的 token 用量与工具调用事件,MCP 工具以 `mcp____` 命名可直接归类; 2. **符合用户心理**:量化反馈(类似 GitHub 贡献图)、成本透明(按 token 计费)、差异化(官方暂无个人中心/全局统计)、隐私友好(只聚合数字); 3. **风险与对策**:安装门槛 → 一键安装;数据准确性 → 直接读权威日志;性能 → 宿主端聚合 + 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 # 项目知识地图(入口) │ ├── DESIGN.md # 架构与设计决策 │ ├── PLAN.md # 实施规划与路线图 │ ├── PLATFORM-NOTES.md # DSH 平台要点与坑 │ ├── DESIGN-SYSTEM.md # 设计规范(间距/字号/色值) │ ├── DATA-MODEL.md # 会话日志数据模型 │ └── nav-icon-patch.md # 个人导航图标补丁说明 ├── docs/screenshots/ # 截图 ├── PRIVACY.md # 隐私说明 ├── README.md └── LICENSE # MIT ``` > 想了解架构/踩坑/规范,从 [docs/README.md](docs/README.md) 的知识地图开始。 ## 📄 许可 [MIT](LICENSE) ## 🙏 致谢 架构参考 [dsh-omi-voice](https://github.com/)(link 依赖 + bundle patch 模式)与 [dsh-plugin-hub](https://github.com/Noob-stupid/dsh-plugin-hub)(插件控制台安装通道)。