dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DSH 插件:左下角账户入口不再显示手机号前2后3位,改用自定义 id,可在「插件」页配置 | DSH plugin: use a custom id instead of the server-masked phone number in the sidebar account entry
让 DeepSeek Harness 左下角账户入口不再显示你手机号的前 2 后 3 位,改用你自己设定的 id——并且可以在界面里随时改。
装完重启一次,侧边栏那一行和「设置 → 账号」资料卡片里都不会再出现服务端下发的脱敏手机号/邮箱。

上图是侧栏底部区域(3 倍放大):原本会显示
13*****678的位置,现在显示设定的自定义 id。 原始尺寸:docs/account-entry.png
侧边栏底部的账户入口由官方包 @deepseek-ai/dsh-client-ui-settings-account 渲染,标签算法是:
profile.name ?? profile.contact ?? t("signedIn")
而 contact 并不是前端算出来的,是宿主侧 @deepseek-ai/dsh-deepseek-account-platform
对 Platform 响应的投影:
contact: mobile || mobile_number || email || null
也就是 Platform 已经脱敏过的手机号(形如 13*****678)或邮箱。前端只是原样显示,
所以没有设置昵称的账号,左下角必然出现手机号的前 2 后 3 位。同一个字段也出现在
「设置 → 账号」的资料卡片里。
本插件把显示换成你自定义的 id。
dsh plugin --profile web add github:PrismScopes/dsh-account-alias
装完重启 DeepSeek Harness(宿主只在启动时读取 profile)。
也可以在「设置 → 插件市场」里搜索 dsh-account-alias 一键安装。
Windows 上如果你是从本地源码目录安装(
link:方式),请用仓库里的install.ps1:它会做一次真实副本安装并做加载自检。原因见下方「为什么本地源码安装要额外一步」。
打开 侧栏「插件」→ dsh-account-alias → 行 account-alias → 配置,可以改三项:
| 字段 | 默认 | 说明 |
|---|---|---|
| 自定义 id | User | 左下角账户入口与账号设置页显示的内容。留空 = 保留服务端昵称;支持 {uid} 占位符,展开成账号 UID |
| 脱敏联系方式 | 不显示 | 服务端下发的就是已脱敏手机号或邮箱。选「不显示」后两处界面都不再出现它 |
| 占位文本 | 空 | 「不显示」时用这段文字顶上;留空则该字段直接不出现 |
保存后即时生效,不需要重启(配置字段以 volatile 形式下发)。
等价的配置文件写法(profile 的 cordis.patch.yml):
- id: account-alias
name: dsh-account-alias
config:
alias: PrismScope
contact: hide
contactText: ''
这条链路上只有一个共享注入点:
Platform HTTP
→ dsh-deepseek-account-platform 实现 ctx.deepseekAccount
→ dsh-api-account-controller getProfile() → ctx.deepseekAccount.getProfile(client)
→ client ui-settings-account settings.launcher 标签 + 设置页资料卡片
插件把宿主的 ctx.deepseekAccount.getProfile 包一层,只改写返回值里的 name / contact:
id)绝不改动。平台用它隔离赠金通知(identityOf),
getPlatformSession 也复用它,改掉会串号。getProfile 的原始响应
仍由官方包获取,插件只在返回路径上改两个字符串。uid prefill 都不受影响。@deepseek-ai/dsh-settings 落盘,插件不自己写文件。@deepseek-ai/schemastery(用于生成设置表单)。
拿不到它时,插件仍然工作,只是设置表单消失并在日志里说明原因。ctx.deepseekAccount(Desktop 登录态)。未登录时侧边栏显示的是
「更多」行,本来就没有手机号。0.2.x 系列构建,使用 @deepseek-ai/schemastery ≥ 3.18.4。如果你用 link: 方式安装(源码目录 + 符号链接),插件里的 bare 导入
@deepseek-ai/schemastery 不会被解析到宿主副本,而是沿真实路径命中你机器上可能存在的
旧版本(3.18.2 没有 Schema.prototype.volatile),模块在求值期抛错、条目静默失效。
平台规则见 @deepseek-ai/dsh-app-boot 的 routeLinked():linked 包里的 bare 导入,
只有在该包 manifest 的 peerDependencies 里列出这个名字时才会被拦截到宿主副本。
本包已经声明了 @deepseek-ai/schemastery peer,并且 install.ps1 会把包复制成
profile 层包(真实目录),此时无论走拦截还是普通解析,命中的都是正确那份。
从插件市场(git)安装则天然是 profile 层包,不需要这一步。
| 文件 | 作用 |
|---|---|
index.js | 宿主半边:导出 Config(三个 volatile 字段)+ apply,包装 getProfile |
profile-alias.js | 纯逻辑:配置归一化、volatile 现读、资料改写、补丁与还原(无外部依赖,便于单测) |
client.js | 客户端半边:注册 plugins.row.config 的设置表单(手写 __ModuleLoader__ 模块,无需打包) |
cordis.patch.yml | bundle 补丁行与默认配置 |
install.ps1 | 可选:Windows 本地源码安装 / 卸载,自带加载自检 |