dsh-custom-profile
给 DeepSeek Harness 换掉左下角那块「头像 + 昵称」,顺手把设置 → 账号与余额卡片里的头像也一起换掉。
只改本机浏览器的显示,不动账号资料,不联网,不上报任何数据。
功能
- 昵称:任意文字,留空恢复宿主的默认显示
- 头像:上传本地图片(自动缩到 512px 内)或填图片 URL
- 构图:拖动预览或滚轮缩放;也能用滑杆精确调整
- 缩放:只缩放头像里的图片
- 左右 / 上下:图片在圆内的位移
- 尺寸:只调整左下角那个圆框的大小(账号卡里的头像不跟着变)
- 保存:所有改动先在面板里预览,点「保存」才写入本地存储并应用到界面
- 两处同步:左下角与账号卡使用同一份配置
支持 PNG / JPG / WebP / GIF / BMP / AVIF / SVG。图片会先等比缩到 512px 以内再存成 data URL,所以不必手动压图。
安装
方式一(本地包):按 profile 的 file: 依赖方式装进 dsh.profile.bundles,重启宿主。
方式二(已发布到 npm 的话):
dsh plugin --profile web add dsh-custom-profile
装完重启 DSH 生效(客户端插件改动需要整机重启,刷新页面不够)。
使用
设置 →「个人资料」:
- 填昵称、选头像
- 用预览拖动、滚轮缩放,或拉滑杆微调
- 点「保存」
「重置昵称」「重置头像」会立刻写盘并生效,不需要再点保存。
工作原理
宿主组件的类名是 CSS Modules 生成的哈希(每次构建都会变),所以定位靠的是稳定的结构特征,不是写死的类名:
- 左下角:
[aria-label="账号菜单"]里的[class*="_avatar"](头像)与[class*="_label"](昵称)。CSS Modules 的哈希前缀会变,_avatar/_label后缀不变。 - 账号页:
[role="dialog"]里[class*="_card"] [class*="_avatar"]。
头像的注入方式是往圆块里塞一个绝对定位的 <img>(object-fit: contain,保留整张原图),原图标用内联样式隐藏,清空配置时还原。
MutationObserver 只监听 childList,并且只看账号按钮 / 设置弹窗内部的变化——聊天输入框里的每次按键都不会惊动插件(早期版本监听全文档,曾把输入拖死)。窗口内连续变化有节流,避免自我触发。
已知边界
- 依赖宿主的类名后缀与
aria-label。DSH 升级若改名,插件会静默失效:表现为「没生效」,头像回到宿主默认,不会把界面弄坏。 - 「尺寸」只作用于左下角的圆框;账号卡头像不跟随,两处大小可能不一致。
contain意味着非正方形图片会在圆里留白——这是「保留整张原图」的代价。- 只影响显示层,换设备、换 profile 都要重新设置。
卸载
停用插件后,配置仍留在 localStorage['dsh-custom-profile']。要彻底清干净,在宿主页面控制台执行:
localStorage.removeItem('dsh-custom-profile')
License
MIT
No comments yet. Be the first to write one.