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
羽毛球分组比赛记分
小程序二维码

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

小夜