跳到主要内容

dsh-account-authorization

已验证

dsh-account-authorization · v0.1.0 · MIT · Web 界面

Provider-neutral account authorization UI for DeepSeek Harness

安装

dsh plugin add dsh-account-authorization

用 dsh --profile default --dump-config 确认 layer 已生效 —— 参见安装指南。

源码

标签

作者

说明文档

DSH 账号连接

English | 简体中文

dsh-account-authorization 是 DeepSeek Harness 的 Provider-neutral 模型账号登录插件。它拥有原生“设置 → 模型登录”入口,只显示当前 Harness 已注册的模型授权流程。在具备“授权记录投影为 Provider 路线”能力的 Harness 构建中,授权成功后同一个 Provider 路线直接供 IDE 模型选择器调用;插件不复制凭证、不维护 Provider 名单、不创建模型目录,也不实现任何 Provider 协议。

边界

  • Harness ctx.authorization 是授权流程和状态的唯一事实来源。
  • Provider 自己的 Flow 是凭证唯一写入者;本插件从不读取或返回 OAuth Token。
  • 浏览器只接收脱敏连接状态、官方登录 URL、设备验证码和非敏感选择项。
  • 要求用户输入文本或秘密的流程会被安全拒绝;浏览器登录附带的可取消手动回退只在 Host 内等待官方回调,不显示、不接收也不转发回退内容。API 密钥继续在原生“模型”页输入。
  • 账号页只投影至少提供一种非 api-key 授权方法的 Flow;仅支持 API Key 的 Provider 不会生成空账号卡。
  • “移除本机连接”只调用 Harness credentials 的删除接口,不宣称远端授权已撤销。
  • 请求幂等记录只在当前 Host 进程的有限保留窗口内有效;重启或记录淘汰后,旧请求 ID 不再提供去重保证。
  • 插件内的登录和移除会互斥;Harness 0.1.1-rc.2 没有跨设置界面的凭证 CAS,因此其他界面直接发起授权时仍可能与移除竞争,真实账号操作应保持单一入口。
  • 插件只增加一个原生设置 section,不替换设置外壳、模型页或 Provider/模型目录,也不使用 DOM Patch、固定端口、固定路径或按钮坐标。

兼容性

账号页与授权流程已在 Harness 0.1.1-rc.2 上验收。DSH Desktop 2.0.3 会接收 Flow 的 target,但从 list() 和 describe() 输出中丢弃它。Profile 尚无授权服务时,本包挂载一个兼容子类,只恢复这项不透明元数据投影,其余 Flow、尝试和凭证行为继续使用官方服务实现;已有支持投影的授权服务时直接复用;已有不支持投影的旧服务时保持其唯一所有权,并安全隐藏模型账号,不创建第二个服务。Desktop 正式包含核心提交 732a504 的投影修复后,应删除这个兼容入口。登录后直接激活模型路线仍要求 LLM Adapter 包含 authorized-route projection。其他 Desktop 或 Harness 版本尚未验收。

兼容入口不维护第二份 Flow、凭证、Provider 或模型目录;它在单一 authorization 服务中保存 Connector 注册时附带的 target,并把该字段原样补回只读条目。缺少 target 或目标类型未知的 Flow 会安全隐藏,不会作为模型账号启动或移除。

安装

发布后使用官方 Profile Bundle 命令安装:

dsh plugin --profile desktop add [email protected]

重启该 Profile 后生效。卸载:

dsh plugin --profile desktop remove dsh-account-authorization

该包也会作为 Provider Connector 的运行依赖安装。普通用户应优先安装具体 Connector;只有开发其他账号 Connector 或单独验收通用账号界面时,才需要直接安装本包。

Provider 支持

代码没有支持名单。OpenAI、Kimi、xAI/Grok、Anthropic 或后续 Connector 是否出现,只取决于当前 Harness 组合是否注册了授权 Flow。GLM/Z.ai 若只提供 API Key/套餐 Key,则仍属于原生“模型”页,不会被伪装成账号 OAuth。