自定义侧边栏显示的用户名与头像,随时还原
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/21 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add xbbkok/dsh-user-profile该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · browser
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 15 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 8 处,展示前 8 条)
- 读取本地文件lib/index.js:90
const parsed = JSON.parse(readFileSync(file, 'utf8')) - 写入本地文件lib/index.js:117
mkdirSync(dirname(file), { recursive: true }) - 写入本地文件lib/index.js:119
writeFileSync(tmp, `${JSON.stringify(document, null, 2)}\n`, 'utf8') - 写入本地文件lib/index.js:120
renameSync(tmp, file) - 写入本地文件lib/index.js:260
mkdirSync(storageDir, { recursive: true }) - 写入本地文件lib/index.js:261
writeFileSync( - 读取本地文件lib/index.js:270
if (!existsSync(storageDir)) { - 发起网络请求lib/client.js:145
return fetch(ENDPOINT, Object.assign({
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
在 DeepSeek Harness 里改自己的显示名和头像,会显示在侧边栏账号区|DSH 插件:自定义用户名与头像。
README
由 DeepSeek 最新模型翻译生成dsh-user-profile
给 DeepSeek Harness 一个属于你自己的名字和头像。
在 设置 → 个人资料 里改用户名、传头像,保存后立刻显示在侧边栏左下角的账号位置。
A local display profile for DeepSeek Harness: set your own name and avatar, shown in the sidebar account chip.
中文 · English
为什么需要它
DSH 左下角的账号区域读的是 DeepSeek Platform 的登录资料——只读;没登录时更会退化成一个"更多"按钮。也就是说,这个位置显示的从来不是你愿意让它显示的东西。
dsh-user-profile 补上这一块:名字和头像存在本机,覆盖显示在同一个位置。账号菜单(设置 / 意见反馈 / 退出登录)照常工作,只是那张脸换成了你的。
展开完整文档(README 剩余 1 节)
dsh-user-profile
给 DeepSeek Harness 一个属于你自己的名字和头像。
在 设置 → 个人资料 里改用户名、传头像,保存后立刻显示在侧边栏左下角的账号位置。
A local display profile for DeepSeek Harness: set your own name and avatar, shown in the sidebar account chip.
中文 · English
为什么需要它
DSH 左下角的账号区域读的是 DeepSeek Platform 的登录资料——只读;没登录时更会退化成一个"更多"按钮。也就是说,这个位置显示的从来不是你愿意让它显示的东西。
dsh-user-profile 补上这一块:名字和头像存在本机,覆盖显示在同一个位置。账号菜单(设置 / 意见反馈 / 退出登录)照常工作,只是那张脸换成了你的。
| 🪪 用户名 | 最多 32 字符,中英文都行;留空即回到默认 |
| 🖼️ 头像 | 上传 PNG / JPG / WebP,自动居中裁方、缩到 192×192 再存;也可一键移除 |
| 👀 实时预览 | 改的同时就能看到最终效果,保存后侧边栏立即更新 |
| 🔄 可还原 | 点「重置」清空资料,侧边栏原样回到平台账号 |
| 🌐 跟随语言 | 中文界面显示「个人资料 / 用户名 / 头像」,英文界面显示 Profile / Username / Avatar |
| 💾 只存本机 | 不上传、不同步,数据就在你自己的 ~/.dsh 下 |
安装
方式一:作为 bundle 安装(推荐)
包内已声明 dsh.bundle.patch,官方 CLI 会顺带把插件行挂进 profile:
dsh plugin --profile web add github:xbbkok/dsh-user-profile
桌面版把 web 换成 desktop。装完重开一次 DSH 即可看到「设置 → 个人资料」。
方式二:从本地路径挂载(开发 / 离线)
在 profile 的 cordis.patch.yml 末尾加一行 insert(注意加载器用 import(),必须是 file:// URL,裸 Windows 路径会静默不加载):
- insert:
- id: dsh-user-profile
name: 'file:///C:/path/to/dsh-user-profile/lib/index.js'
profile 的 cordis.patch.yml 位置:
| 版本 | 路径 |
| 桌面版 | %USERPROFILE%\.dsh\profiles\desktop\cordis.patch.yml |
| Web 版 | %USERPROFILE%\.dsh\profiles\web\cordis.patch.yml |
这一行按 id 覆盖同名行,所以即使之后又用 bundle 方式安装,也不会重复挂载。
使用
1. 左下角头像 → 设置(快捷键 Ctrl+Alt+,;英文界面 Settings)。
2. 左侧第一项 个人资料(Profile)。
3. 填名字、选头像,点 保存。
4. 想恢复平台账号原样,点 重置。
它把数据放在哪
%USERPROFILE%\.dsh\plugins-data\dsh-user-profile\profile.json
{
"version": 1,
"name": "示例用户", "avatar": "data:image/png;base64,…", "updatedAt": "2026-01-01T00:00:00.000Z" }
同一个目录里的 heartbeat.txt 每次宿主插件挂载时重写——"插件到底加载了没有"可以直接查证,不用猜。
头像存成 data URL(PNG,192×192,通常 10–40 KB)。选图时在浏览器里裁剪压缩,不会原图落盘。
接口
宿主半边在 DSH 的 Web 服务上注册同一来源的两个方法:
| 方法 | 路径 | 说明 |
| GET | /user-profile | 返回 { ok, profile, storagePath } |
| POST | /user-profile | Body { name?, avatar? }(省略的字段保持原值;avatar: null 清空) |
写入做了三层约束:名字按 Unicode 码点限制 32 且去掉控制字符;头像只接受 PNG/JPEG/WebP 的 data: URL(拒绝 SVG——它是可执行标记,不是图片)并限长;带 Origin 且与本机 Host 不一致的写请求返回 403,避免被其他网页跨站改写。
实现
一个包、两半,跟 DSH 其他 UI 插件同构:
- lib/index.js(宿主 / Node) — 注册 /user-profile,做校验、原子落盘(临时文件 + rename)、写心跳。只依赖 node:fs,没有第三方运行时依赖。
- lib/client.js(浏览器) — 通过 ctx.slots.register({ name: 'settings.section', id: 'profile', order: -30 }) 注册设置页;再把头像和名字覆盖到 button[data-signed-out] 这个账号触发器上。
几个刻意的取舍:
- 不改别人的组件。 账号按钮属于 dsh-client-ui-settings-account,直接改包既脆弱又会被更新覆盖。这里只做 DOM 装饰:记住原生子节点的 display 后隐藏,插入自己的头像和名字;清空资料时原样还原。MutationObserver 负责在 React 重渲染后补回来,写入幂等——不会因为自己的改动把观察器喂成死循环(单测里专门验了)。
- 失败不外溢。 拿不到 webServer、目录不可写、路由注册抛错,都只写一条 warn;插件加载失败不会把整棵插件树带崩。
- 语言跟随应用。 字典用 ctx.locale.register('user-profile', { zh, en }) 注册,ctx.locale.bind() 取值,跟随 DSH 自己的语言设置。
- 零构建。 lib/*.js 就是可读的 ESM 源码,window.__ModuleLoader__.load() 的工厂格式由客户端模块系统直接消费,没有 bundler、没有 postinstall。
兼容性
- DSH 0.2.x(@deepseek-ai/dsh >= 0.1.2-rc.1)。
- 桌面版与 Web 版都适用;依赖的槽位 settings.section 与账号按钮的 data-signed-out 属性自 0.1.x 起未变。
- 只在侧边栏和设置页做展示覆盖,不碰登录态、计费、模型调用。
已知限制
- 改的是显示资料,不是 DeepSeek Platform 上的真实账号资料。
- 资料按机器保存,不跨设备同步。
- 若将来 DSH 改掉 button[data-signed-out] 这个属性,侧边栏覆盖会静默失效(设置页里的功能不受影响)。
- 侧边栏覆盖是对别人组件的 DOM 装饰,不是官方插槽;能做的防御都做了,但它本质上是"贴上去"的。
开发与测试
npm install # 只装 jsdom,用于无浏览器环境跑客户端半边
npm test
19 项检查:宿主校验、原子落盘、HTTP 处理器(GET / POST / 非法 JSON / 超长名 / SVG 伪装 / 跨站写入 / 错误方法)、客户端产物可加载、槽注册与中文标签、账号按钮的覆盖与还原、折叠态、观察器收敛。
改 lib/client.js 后页面会热换;改 lib/index.js(宿主半边)需要重启 DSH 才会重新 import。
卸载
删掉 profile cordis.patch.yml 里那行 dsh-user-profile(或从 dsh.profile.bundles 移除),再删 %USERPROFILE%\.dsh\plugins-data\dsh-user-profile\,刷新页面即可。
License
MIT © 2026 xbbkok预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
xbbkok/dsh-user-profile
自定义侧边栏显示的用户名与头像,随时还原
相关插件 · 浏览器
智能体插件框架deepseek-ai/deepseek-harness
DeepSeek Harnessdsh是由 DeepSeek AI 开发的开源 agent harness智能体框架。
★ 270,422已汉化DSH
71.9
多设备 Agent 看板YaoApp/yao
✨ 所有 Agent 和工作区集中管理,覆盖你的每一台设备。任务看板追踪进度,桌面端、移动端、浏览器、API…
★ 8,147已汉化DSH
71.2
可扩展侧边栏工作台omdsh-dev/DSH-better-sidebar
DSH 的双工作台:原生右侧栏 + 自绘底部面板,并把 ctx.betterSidebar 服务开放给所有插件
★ 4,761已汉化DSH
71.1
浏览器自动化桥Tencent/BrowserSkill
你的 Agent。你的浏览器。连接,就能协作。
★ 9,967已汉化DSH
71
AI 小说创作工作台EthanYoQ/AI-Novel-Writer
AI 小说作家 / AI Novel Writer
★ 1,591已汉化DSH
70.7
智能体浏览器引擎platonai/Browser4
DeepSeek Harness 集成
★ 1,175已汉化DSH
70.4
这是你的仓库?认领条目