前言¶
在 DeepSeek Harness 的插件生态中,订阅登录通常由多个插件分别实现,每个插件都硬编码了支持的提供商列表。这种方式维护成本高,且难以适配新增的提供商。
dsh-subscription-login 解决了这一问题。它通过读取 Harness 的 ctx.authorization 接缝,动态获取当前注册的 OAuth 登录流程。这允许它提供一个统一的控制台,展示所有可用的登录流程,而无需修改代码。
插件简介¶
- 名称:
dsh-subscription-login - 所有者:woodfood111
- 许可:MIT
- 类别:客户端
核心功能¶
- 动态流程列表:不从代码中硬编码提供者,而是从
ctx.authorization读取 OAuth 流程列表。当dsh-llm-pi-ai注册新的登录流程时,插件无需修改即可显示。 - 安全防护:所有请求均通过
ctx.connection.requestRejection()检查。这包括 Host/Origin 防护(防止 DNS 重绑定)和浏览器认证。裸请求会返回 401,而不是 200。 - 密钥管理:插件不处理密钥,仅调用
describeRecord()。所有流程在dsh-llm-pi-ai内部运行并写入 Harness 凭证存储。 - 未认领记录清理:提供未认领记录的清理功能,用于处理那些不再被任何流程认领的
llm-pi-ai作用域记录。 - 统一管理界面:在
Settings → Plugins → Subscriptions提供统一的登录管理入口。
安装与启用¶
安装命令如下:
dsh plugin --profile web add dsh-subscription-login
安装后必须重启 dsh web 才能生效。这是因为在 Bundle Patch 中插入了授权接缝(authorization seam)和此插件本身,热重载无法可靠加载这种文件写入的变更。
重启后,访问 Settings → Plugins → Subscriptions 即可进入管理界面。
使用说明¶
在插件界面中,每一行代表一个可登录的账号:
- 登录:点击登录后,流程会引导用户打开指定页面并输入验证码。插件支持随时取消登录尝试。
- 登出:点击登出会删除本地记录。此操作需要二次确认。
- 删除未认领记录:针对不再被任何流程认领的过期记录,可以直接点击删除。
登录成功后,Settings → Models 页面会显示对应的提供商行及其凭证状态。
注意事项¶
- 请求体限制:请求体大小限制为 64 KiB。非 JSON 请求体会返回 400 错误。
- 功能范围:不支持服务器端撤销(仅删除本地记录)。不支持可恢复的登录尝试(刷新页面需重新开始)。不包含推荐、配额跟踪或健康检查。
- 作用域限制:仅处理和删除
llm-pi-ai/<provider>作用域的记录。
技术细节¶
- 无构建步骤:
lib/client.js是直接运行的客户端模块格式(window.__ModuleLoader__.load工厂模式),无需编译。 - 测试覆盖:包含 52 个离线测试,涵盖注册、路由、信任围栏和客户端交互。
参考资源¶
- GitHub:https://github.com/woodfood111/dsh-subscription-login
- 插件目录:https://www.skillhub.cn/plugins/woodfood111/dsh-subscription-login