前言¶
DeepSeek Harness(DSH)是用于构建智能体的工作流平台。在官方 UI 中,一次只能保持一个账号处于登录状态。切换账号通常需要退出当前账号并重新登录,这会导致 Token 被注销。dsh-account-switch 插件解决了这个环节:它将多个账号的 Token 存入凭证库,支持在不重启 Harness 的情况下热切换账号,并能在额度用尽时自动切换。
核心功能¶
该插件通过 CLI 和插件 API 提供多账号管理能力,主要功能包括:
- 多账号共存:任意多个账号的 Token 同时存在于凭证库中,互不覆盖、互不顶号。
- 热切换:执行
dsh-account use <账号>命令后立即生效,无需重启 Harness 或重新登录。 - 额度自动换号:当当前账号额度用尽时,插件自动切换到下一个可用账号,并让失败的那一步在当前会话中原地重跑。
- 账号冷却:刚被判额度不足的账号进入冷却期(默认 5 分钟),冷却期间不再被选中,避免账号在额度恢复前被反复切换。
- 切换留痕:每次自动换号都会在日志中记录一行 JSON,包含切到的账号、错误原因和会话步骤。
- 指纹化存档:账号 ID 由
sha256(token)前缀派生,同一 Grant 永远映射同一槽位,归档天然幂等。 - 昵称管理:支持给账号起中文名,使用时输入
use 主号比use acct-af3bded5更直观。 - CLI + 插件 API:提供
dsh-account命令行工具,同时暴露ctx.accountSwitch接口供其他插件调用。 - 零内核改动:全部利用公开的 seam,不修改官方包内核,Harness 升级不会冲突。
- 不额外存秘密:
registry.json中只存储指纹,list --json命令不输出 Token 明文。
安装与启用¶
安装时,脚本会将插件文件复制为真实目录而非目录联接,以确保 Harness 能正确加载。请使用以下命令:
powershell -NoProfile -File scripts/sync-install.ps1
安装完成后,需要在 profile 的 patch 文件中启用该插件。编辑 $DSH_HOME/profiles/desktop/cordis.patch.yml,在末尾追加配置:
- insert:
- id: dsh-account-switch
name: dsh-account-switch
config:
enabled: true
autoArchiveOnStart: true
autoCaptureOnSignIn: true
verbose: false
修改后需要重启 Harness 才能使插件生效。
使用方法¶
查看与管理账号¶
首先查看当前已归档的账号列表:
dsh-account list
如果官方 UI 处于登录状态,可以使用 park 命令将当前账号撤下(不注销 Token,仅腾出 UI 槽位):
dsh-account park --label 主号
此时在官方 UI 中登录新账号,插件会自动将其归档。
切换账号¶
归档完成后,可以使用昵称或 ID 切换活跃账号:
dsh-account use 主号
dsh-account use acct-af3bded5
切换是全局的,下一个模型请求将立即使用新账号的 Token。
自动换号与日志¶
插件会监听模型请求错误。当遇到 ACCOUNT_QUOTA 或 QUOTA 错误时,会自动切换到下一个可用账号并重试当前步骤。所有切换行为都会记录在 $DSH_HOME/accounts/quota-switch.log 中。
注意事项¶
- 切换是全局的:
ctx.deepseekAccount是进程级的单例。切换账号会影响当前 Harness 实例下的所有会话,无法实现 A 会话用账号 1、B 会话用账号 2 同时跑。 - 目录结构要求:
node_modules必须是真实目录,不能用目录联接,否则插件无法加载。 - 注销行为:在官方 UI 中点击退出登录会向平台注销 Token。
总结¶
dsh-account-switch 通过管理凭证库中的多个 Grant 槽位,解决了 DeepSeek Harness 官方 UI 单账号限制的问题。它提供了热切换、自动额度换号和留痕功能,适合需要长期运行且额度有限的智能体工作流。