DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

SwufeFox /

SwufeFox/dsh-no-login

Verified

dont login for dsh

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@fe975650

dsh-no-login

License: MIT

DSH(DeepSeek Harness)插件:移除 DeepSeek 账号登录功能。

A DeepSeek Harness plugin that removes DeepSeek account sign-in: no account menu, no account settings page, no first-run sign-in step, no DeepSeek Account model route.

装好之后,界面上不再有任何登录入口:

  • 侧边栏底部的账号菜单(头像 / 登录 / 退出登录)
  • 设置 → 「账号与余额」整页(充值余额、赠金余额、查询用量、充值)
  • 首次启动引导里的「登录 DeepSeek 账号 / 添加 API Key」选择与额度引导
  • 模型选择器里的 DeepSeek Account 路由(用平台账号余额计费的那条)
  • 浏览器 OAuth 回调路由 /oauth/callback、赠金到账弹窗、登录失效提示

API Key 路由与第三方/网关路由完全不受影响。

实现方式

账号功能在 Harness 里不是一个开关,而是分散在四个出厂插件行里(Host 的 OAuth 提供者、RPC 控制器、模型路由,以及浏览器端的账号界面),没有任何一个对外暴露"关闭登录"的配置项。因此本插件是一个 bundle:

  1. cordis.patch.yml 把四个账号行置为 disabled: true:

    行 id 插件
    deepseek-account @deepseek-ai/dsh-deepseek-account-platform
    account-controller @deepseek-ai/dsh-api-account-controller
    llm-deepseek-account @deepseek-ai/dsh-llm-deepseek-account
    ui-settings-account @deepseek-ai/dsh-client-ui-settings-account
  2. 同一补丁插入本包的行 no-login,lib/index.js 向 Cordis 提供一个永远未登录的 deepseekAccount 替身服务:读操作直接返回 { status: 'signed-out', attempt: null, links: {} } 且不发任何网络请求,startSignIn() 抛 SIGN_IN_DISABLED,resolveToken() 恒为 undefined。

之所以需要替身而不是让服务消失:@deepseek-ai/dsh-client-product-analytics(产品遥测)对 deepseekAccount 是硬注入,服务彻底消失会让它一直停在 pending。该行只在 desktop profile 启用,Web profile 下本来就不加载,所以替身在 Web 上是纯保险。替身只在内存里,遥测拿到的 getDeviceIdentity() 只有 osVersion,没有 deviceId 与 userId。

  1. 插件加载时删除凭证库里遗留的 deepseek-account-platform/default 授权记录——登录入口既已不存在,那份仍可用的平台会话 token 只会扩大暴露面。设备标识(deepseek-account-platform/device)与所有 API Key 一律不动。

安装

plugin_manager install_bundle  target=<本目录绝对路径>

安装后插件行出现在设置 → 插件中,名称为「禁用登录」。改完无需重启:profile 的补丁层是 live reload 的,浏览器端刷新一次页面即可看到账号入口消失。

从 GitHub 安装:

git clone https://github.com/SwufeFox/dsh-no-login.git

再把 plugin_manager install_bundle 的 target 指向克隆下来的目录(profile 里是目录链接,之后 git pull 即更新)。

测试

node --test test/no-login.test.mjs

测试用假的 Cordis context 加载 lib/index.js,断言:

  • deepseekAccount 被提供,且 getState / getProfile / getBalance / getUnnotifiedBonuses / ackBonusNotified / cancelSignIn / signOut / getPlatformSession / resolveToken / rejectToken 全部按"未登录"返回;
  • startSignIn() 以 SIGN_IN_DISABLED 拒绝,任何路径都无法发起授权;
  • watch() 只吐一次未登录状态后结束;
  • 只删除 deepseek-account-platform/default,不碰其它凭证。

已验证

在 DSH 0.2.1-rc.5 / web profile 上装好后实测:

  • dsh --profile web --dump-config:四行均为 disabled: true,no-login 行在列;
  • 插件清单里本 bundle 的 overrides 正好是那四行,installed / enabled 均为 true;
  • Host 运行态:四个账号行状态 inactive,no-login 行已加载;
  • 浏览器运行态(Client Slot 查询):settings.launcher 占用者为空(账号菜单消失)、settings.section 不再包含账号页、settings.models.sign-in 占用者为空;
  • GET /oauth/callback 返回 404,回调路由确实没有注册。

已知取舍

  • profile 级插件:装进某个 profile 后对该 profile 的所有会话生效。

  • 首次启动引导与登录界面写在同一个 Client 插件里,所以装了这个 bundle 之后整条 onboarding 都没有了(欢迎页、额度引导一并消失),不只是登录那一步。

  • 移除登录不等于移除模型:模型选择器里仍有 API Key 与第三方路由的模型,只是没有 DeepSeek Account 那一组。

  • 只覆盖 Web / 桌面这类带 profile 的组合。上游若把账号功能拆成新的行 id,需要同步更新 cordis.patch.yml。

  • 不要单独停用插件行 no-login:它本身不创建任何界面,但停用后 deepseekAccount 服务会一起消失。恢复登录请按 bundle 级别停用或直接卸载:

    plugin_manager remove_bundle target=dsh-no-login
    

    移除后四行恢复启用,登录入口回归;账号相关的本地授权记录已在安装时清掉,需要重新登录一次。

文件

文件 作用
package.json 包清单:dsh.bundle.patch 指向补丁
cordis.patch.yml 禁用四个账号行并插入本包行
lib/index.js Host 侧未登录替身服务 + 清理遗留授权
locale/*.json 插件列表中的标题与描述
icon.svg 插件图标
test/no-login.test.mjs 替身服务的单元测试

License

MIT © Magixyne

—/ 5

No ratings yet

Verified DSH bundle

Commit fe975650958c

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout