dsh-connect-teleagent:把中国电信天翼 AI 星辰超级智能体接入 DSH

前言

DSH 的定位是「一切皆插件」,推理 provider 也不例外。社区里早就有一个 TeleAgent 插件(dsh-codearts-auth),可以把中国电信天翼 AI「星辰超级智能体」接进 DSH。但它在登录态、签名协议上一直是坏的:请求发出去之后,用户只看到界面提示「API 密钥无效」,反复重填 token、反复检查积分都没用,因为问题根本不在密钥上。

2026 年 11 月云原生网关开始真正验签,这个问题从「偶尔失败」变成「全量 401」。本篇介绍的 dsh-connect-teleagent(维护者 alvinhuang0509-design,分类「联网工具」)就是针对这个痛点重写的独立插件:修正签名、复用已有凭据、补上积分签到与账号条。下面介绍它具体做了什么、怎么装、怎么用。

这是什么

dsh-connect-teleagent 是一个 DeepSeek Harness 独立插件,把中国电信天翼 AI「星辰超级智能体」接进 DSH。核心改动是把云网关的签名协议从错误的 local-v1 单轮方案,改成真正能通过校验的 v1 两轮 HMAC-SHA256 方案,并附带积分余额、每日签到、输入框内账号条等能力。

它与 dsh-codearts-auth 的 provider id 都是 teleagent,两者不能同时启用。

为什么必须改签名,而不是换密钥

原插件请求失败的现场是这样的:

teleagent: HTTP 401 — code=40104 unsupported sign version
→ DSH 把它归为 AUTH,界面显示「API 密钥无效」

「API 密钥无效」是误导性文案,来自 dsh-client-ui-trajectory 里 if (errorCode === "AUTH") return "API 密钥无效" 的硬编码。真实原因是签名协议错了,与密钥、积分、登录状态都无关。

旧的危险实现和本插件的修正对照如下:

旧插件(错误) 本插件(正确)
签名版本头 local-v1 v1
HMAC 密钥 本地随机 sign_key 登录 JWT 的第 3 段(签名段)
轮数 / 编码 单轮 / base64url 两轮嵌套 / 小写 hex
签名头 X-SA-* 与 X-SuperAgent-* 两组都发 只发 X-Superagent-*
时间戳 毫秒 / 秒混用 秒(10 位)
请求体 不参与签名 SHA256(body 原始字节) 参与第二轮签名

值得留意的一点:local-v1 加随机 sessionKey 其实是官方 App 本机内核(127.0.0.1:4397)的鉴权方式,原插件把它直接发给了云网关,网关自然不认。

核心功能

  • 修正的 v1 云网关签名:两轮嵌套 HMAC-SHA256,头版本 v1,方案常量 superagent-auth-v1。
  • 积分与签到:查询积分余额、套餐、今日签到 / 每日可领 / 累计天数与积分、活动标题,支持一键领取。
  • 输入框内账号条:模型名左侧渲染,点开是账号面板,仅在当前会话选中 teleagent 模型时出现,切到其它 provider 自动隐藏且不发请求。
  • 浏览器自动登录(1.2.0+):插件自己启动独立浏览器窗口,通过 CDP 拦截登录回调取 token,用户不需要从 Network 面板复制任何东西。
  • 斜杠命令:在 headless 环境也能完成登录、修复凭据等操作。
  • 复用已有凭据:不需要重新走一遍登录流程。

签名算法要点(给实现者)

正确的 v1 算法如下:

K        = X-Token 去掉 "<tenant>:" 后的 JWT 第 3 段
m1       = ["superagent-auth-v1", token, installId, tsSec, nonce].join("/")   # 斜杠
sig1     = hex(HMAC_SHA256(K, m1))
bodyHash = hex(SHA256(实际发送的请求体原始字节))
m2       = ["superagent-auth-v1", METHOD, signPath, tsSec, nonce,
            appVersion, bodyHash].join("\n")                                  # 换行
sig2     = hex(HMAC_SHA256(sig1, m2))   => X-Superagent-Signature

几条容易踩的坑:

  • signPath = /superCowork/sapi/api/v1/chat/completions
  • 头里版本是 v1,消息里的方案常量是 superagent-auth-v1,这是两个不同的字符串。
  • 第一轮用 /、第二轮用 \n,分隔符不同是最容易出错的地方。
  • ts 用秒;用毫秒会回 40103 时间不同步。
  • body 必须只序列化一次,签名与发送使用同一份字节,否则网关重算的 bodyHash 对不上。

本插件参考了 liao96312/teleagent-proxy 的 docs/signature-algorithms.md 与 scripts/teleagent-shim.js。按 README 说明,2026-11-04 已用真实账号单次签名请求验证 HTTP 200,另有本地 mock 网关的逐字节验签集成测试。

安装与启用

安装前先卸载 dsh-codearts-auth,否则 provider id 冲突。安装命令来自 README 原文,桌面端 CLI 路径为固定值:

DSH="/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh"

# 从 npm 安装
"$DSH" plugin --profile desktop add dsh-connect-teleagent

# 或从源码目录安装(开发)
"$DSH" plugin --profile desktop install /path/to/dsh-connect-teleagent

# 安装后重启 DeepSeek Harness

有一点需要说清楚:这个包不需要在安装时构建。lib/client.js(客户端面板)是预构建并随包发布的,因此没有 prepare / install / postinstall 脚本。dsh-codearts-auth 当初装不上,正是因为它的 prepare 会调用 pnpm,而 Desktop CLI 的 PATH 里没有 pnpm,报 spawn ENOENT。从 git 或 npm 安装本插件时不需要 pnpm,也不需要 allowBuilds 放行。

只有在你要修改 plugin-src/client/index.js 时才需要本地重建:npm i 后执行 npm run build:client,devDependency 里只有 esbuild。

凭据:装好即用

插件复用 dsh-codearts-auth 已写入 ~/.dsh/.credentials.yaml 的凭据:

  • TELEAGENT_ACCOUNT_<HEX>:账号池条目,从 ~/.dsh/jet-hub/state.json 里挑 enabled 的 teleagent 账号。
  • TELEAGENT_ACCESS_TOKEN:默认 ref,回退用。
  • TELEAGENT_DEVICE_ID:12 位 hex 设备标识。

新签名还要求一个稳定的 installId(UUID),旧凭据里没有。插件会在首次使用时生成并持久化到 TELEAGENT_INSTALL_ID,之后复用,也可以点面板里的「修复凭据」手动补齐。

注意:一旦 installId 生成,不要删除 TELEAGENT_INSTALL_ID 引用。改变设备身份会提高风控命中率。

典型用法

浏览器自动登录(推荐,1.2.0+)。在设置 → TeleAgent 或账号条里点「浏览器登录(推荐)」,插件会:

  1. 启动一个独立的 Chrome/Edge/Chromium 窗口,使用临时配置目录,不影响日常浏览器,也不读取 cookie。
  2. 打开官方登录页,你在窗口里正常登录。
  3. 通过 CDP 监听网络,从回调命中取 token。
  4. 自动保存、关闭窗口、清理临时目录。

手动登录的路径仍然保留,适合拿不到浏览器的机器:设置 → TeleAgent 里打开官方登录页,或把抓取到的 token / 回调 URL 粘贴进去。

斜杠命令在 headless 下同样可用:

/teleagent status                      # 登录状态
/teleagent login [回调URL或token]      # 不带参数则显示官方登录页
/teleagent repair                      # 补齐 installId / deviceId
/teleagent balance                     # 积分余额
/teleagent checkin                     # 签到状态
/teleagent claim                       # 领取积分
/teleagent user                        # 账号信息

模块选择器里选 teleagent provider 下的模型即可开始对话。

关于登录 token 的位置

这是 README 专门强调的一段,因为早期文档写错了指引,导致用户反复粘贴失败。授权完成后浏览器停在:

https://agent.teleai.com.cn/superCowork/sapi/cowork/auth?code=ucc.XXXXXX
                                            ↑ 只有 code,没有 token

token 实际走的是 teleai-cowork://auth?token=… 这条 deeplink,由官方桌面端拦截导航取走,从不出现在地址栏,浏览器也不会把跨协议导航打印到 Console。code 是一次性的,已被消费的 code 无法再兑换给插件,所以不存在「把 code 交给插件,插件去换 token」这条路。

插件接受四种输入:完整回调 URL、teleai-cowork:// deeplink、裸 token、夹带 token 的一句话。如果粘的是只有 code 的地址,插件会说明「这是授权 code,不是 token」,而不是笼统地报「未找到 token」。

适用场景与注意

适合这类开发者和用户:已经在 DSH 里配置过 TeleAgent provider、被 40104 挡住、或需要积分与签到入口的人。插件同时提供图形面板和斜杠命令,既能在桌面端用,也能在 headless 环境跑。

几条需要注意的:

  • 插件以当前 DSH 进程的权限运行,安装前应当先检查源码与许可证。许可证为 MIT,仓库地址见文末。
  • 它与 dsh-codearts-auth 的 provider id 冲突,装之前先卸载后者,不要同时启用。
  • 浏览器自动登录会启动一个独立浏览器进程,依赖本机存在 Chrome / Chromium / Edge / Brave / Vivaldi;拿不到浏览器时插件会明确报「未找到 Chrome / Edge / Chromium」,此时退回手动粘贴 token。
  • 一次只允许一个登录尝试,两个窗口会抢同一个一次性 code。
  • 运行时需要 Node 22.19.0 及以上(engines 声明),社区分类为「联网工具」。

结尾

这个插件的价值不在于多一个 provider,而在于把「签名协议不对」这件事定性清楚并修正掉,避免开发者在「API 密钥无效」的错误文案上浪费时间。装好后复用旧凭据、补一个 installId 就能用,日常以积分余额和签到入口为主。

  • 社区目录:https://www.skillhub.cn/plugins/alvinhuang0509-design/dsh-connect-teleagent
  • 仓库:https://github.com/alvinhuang0509-design/dsh-connect-teleagent
  • npm:https://www.npmjs.com/package/dsh-connect-teleagent
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜