证据快照复核于 2026-09-16GitHub 数据核对日期: 2026-08-21
证据已验证Plugin Bundle模型与路由Web Profile

dsh-router-traework

为 dsh-router 添加 TRAE SOLO 聊天供应商的 DSH Bundle。

快速了解

它能做什么

为 dsh-router 添加 TRAE SOLO 聊天供应商的 DSH Bundle。

本站提供的是中文说明,不代表该项目或 Plugin 自身提供中文界面;语言支持请以上游文档为准。

使用场景
模型与路由模型路由配置集成
适配技术
dsh-routerdsh-router-coretraworkdeepseek-harnesscordis
兼容性

Web Profile
DSH 0.1.5-rc.1+; Node >=20; @deepseek-ai/cordis ^4.0.2; cordis ^4.0.0-rc.7

可信度与状态

证据已验证
核对日期 2026/9/16 UTC 13:56

有代码证据的贡献

它为 DSH 增加什么

dsh-router 的 TRAE SOLO 供应商

通过 router.suppliers Cordis 服务向 dsh-router 注册 traework 供应商。

机制证据

选择前先看

与 dsh-router-core 一起安装后,它会让 dsh-router 的“供应商”面板出现 traework。该包负责单个 TRAE SOLO 账号的上游聊天协议、令牌刷新、签到和积分上报;选账号、冷却、回退及持久化仍由 dsh-router 核心负责。

适合谁

已经在使用 dsh-router、希望接入 TRAE SOLO 账号作为聊天供应商的 DSH 用户。

常见任务

  • 在 dsh-router 的“供应商”面板中添加 traework 卡片。
  • 接入 TRAE SOLO 账号处理路由后的聊天请求。
  • 通过 dsh-router 核心流程触发账号签到并查看上报的积分。

权限与数据

该 Bundle 通过 dsh-router 使用 TRAE SOLO 账号并与其上游服务通信。

权限
  • 需要 DSH web profile、dsh-router-core 及声明的 Cordis peer 依赖。
  • 使用供应商时,需要在 dsh-router 核心流程中配置 TRAE SOLO 账号凭证。
数据处理
  • 处理账号凭证、令牌刷新状态、聊天请求、签到状态和上报的积分数值。
  • README 表示供应商配置持久化由 dsh-router 核心负责,而非本 Bundle。
外部服务
  • TRAE SOLO 上游聊天、签到和积分端点。
  • 用于分发的软件包 npm registry 或固定提交的 Git Bundle。
凭据
  • 使用该供应商需要 TRAE SOLO 账号凭证。

局限

  • 单独安装没有作用;它只为 dsh-router 注册供应商。
  • 它不做自动签到或账号选择;这些行为由 dsh-router 核心负责。
  • 发布者说明项目仅供学习和技术研究,并提示不要用于商业用途。
  • 提供的证据未独立执行安装、账号登录、上游请求或运行时行为。

DSHub 已核对

  • 已验证固定源提交、包身份、DSH Bundle patch 和 Git 分发路径。
  • 包声明 Node >=20、@deepseek-ai/cordis ^4.0.2 与 cordis ^4.0.0-rc.7。
  • README 记录了 DSH 0.1.5-rc.1+ 及 web profile 安装流程。

DSHub 未核对

  • 未审计 npm tarball 内容。
  • 未测试其与本地 DSH、dsh-router-core 版本、TRAE SOLO 账号或上游服务的实际兼容性。
  • README 中关于签到和积分语义的说明属于发布者声明,未在此独立验证。

固定版本安装

安装 dsh-router-traework

这个Plugin Bundle没有 DSH Plugin 安装操作,请根据源码文档使用真实交付方式。

访问源码项目

维护者原文

项目 README

查看 commit bbe3d11 对应的 README
维护者编写的上游内容原文于 2026/9/16README.md 获取,正文和仓库相对媒体固定到 commit bbe3d119ffa8,内容哈希为 327fe8ea204b。以下是未经 DSHub 翻译的上游原文,语言可能与当前页面不同;第三方托管的 badge 可能独立更新。
<h1 align="center">dsh-router-traework</h1><p align="center">dsh-router 的 TRAE SOLO 供应商插件</p><p align="center"> <a href="https://www.npmjs.com/package/dsh-router-traework"><img src="https://img.shields.io/npm/v/dsh-router-traework?style=flat-square&logo=npm&label=npm" alt="npm version"></a> <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-10b981?style=flat-square" alt="MIT license"></a> <a href="https://www.npmjs.com/package/@deepseek-ai/dsh?activeTab=versions"><img alt="支持的 DSH 版本:0.1.5-rc.1+" src="https://img.shields.io/badge/DSH-0.1.5--rc.1%2B-4d6bfe" /></a> </p><p align="center"> <a href="#快速安装">快速安装</a> · <a href="#签到判定">签到判定</a> · <a href="https://github.com/CARVIN94/dsh-router#readme">dsh-router 核心</a> </p>

dsh-router 提供 traework 供应商(免费 SOLO 聊天通道)。 单独装它没用——它只是向核心注册一个供应商,面板、账号池、组合回退都在核心里。

本项目是 traework2api 的 DSH 插件版, 上游协议与签到语义参考 wild-work

快速安装

需要 DSH 0.1.5-rc.1 及以上。先装核心,再装本插件,然后重启 dsh web

dsh plugin --profile web add dsh-router-core
dsh plugin --profile web add dsh-router-traework

dsh plugin add 会在 profile 里 pnpm add,并自动把声明了 dsh.bundle.patch 的包加入 dsh.profile.bundles(本插件即声明了,即 cordis.patch.yml)。

重启后本插件以 cordis service router.suppliers 向 dsh-router 注册 traework 供应商,面板「供应商」出现 traework 卡片,加账号即用。

本地开发版:不用 npm,直接 dependencies"dsh-router-traework": "link:/path/to/dsh-router-traework" 指向本地仓库。

与核心的分工

本插件只管对单个账号调通上游:SOLO 协议、token 刷新、SSE 转换、签到、积分。

策略全在核心AccountPool):选号、冷却、禁用、连续错误累计、遍历回退、 响应写入。所以:

  • chatOnce(uid, req) 一次只服务一个账号,不遍历账号、不维护冷却表、不写响应
  • 失败时返回语义状态(rate_limit / quota / session_dead / unavailable / transport / unknown),由核心决定冷却多久、是否禁用、要不要换号
  • status() 只报「现在状态」(凭证 + 积分),冷却/禁用由核心叠加后给面板
  • 积分只报,不落盘(持久化归核心 supplier-config.json):启动时用核心 缓存预热,拿不到时报 -1(不是 0),核心保留上次持久化的值

本插件不做自动调度:不挂后台定时器。签到是核心在用户点「签到」时逐个 链接触发的(POST /suppliers/:id/checkincheckinNow(uid)),token 刷新走 chatOnce 触发式路径。曾移植自 traework2api 的每日自动签到 Scheduler 已删除 (核心没有定时入口,放着是死代码)。

完整契约见 dsh-router 的 docs/suppliers.md

签到判定

上游 checkin_credits/* 一律返回 HTTP 200,成败只藏在 body 的 code 里:

code 含义 处理
0 成功 ok(注意:已签到后重复调用也返回 0,是幂等、不加积分)
9095 今日已签到 already(幂等成功,不是失败)
9074 「当前参与用户太多」 账号级稳定拒绝,不是抖动——只重试一次(等 1s)就判失败
1001 token/会话失效 session_dead(与 chat 401 同义)

据此定下的判定规则:

  • 不能只看 HTTP 状态(一律 200,会误报成功)
  • 不能只看 code 0 就以为签上了 —— claim 后要回查 checkin_credits/statuschecked_in 才算数
  • 不能拿积分当签到凭据 —— ide_user_ent_usage 是所有包的聚合剩余额度, 签到前后可能是同一个数
  • checked_in当前登录态设备的读数,换 deviceId 会短暂变 false, 那是缓存假象,不代表「这个账号今天还能再签一次」
  • 判重维度是账号不是设备:换 deviceId 后 checked_in 依然是 true (所以存量凭证把 deviceId 一次性迁到真实形态是安全的,不会重复签到)

剩余积分的计算

ide_user_ent_usage 返回 user_entitlement_pack_list,剩余 = Σ(credits_limit

  • credits_amount)。实测要点:

  • 请求体必须是 {"require_usage":true,"req_source":2},发 {} 拿不到完整 usage

  • 过期包必须跳过:签到积分是当日发放、31 天后过期的独立包 (entitlement_id 形如 checkin_20260902_<uid>,每个 200 额度)。不滤掉 就是把历史所有签到包累加进「剩余」,面板越签越多、永远用不完

  • 请求头与 chat 链路不是同一套身份:签到/积分走 VSCode 插件进程 (UA VSCode 1.107.1 (TRAE SOLO CN)),chat 走 IDE 主进程

  • x-device-id 必须是 16 位纯数字(真实客户端实测值如 1711320556112436), 发 hex32 / UUID 在风控眼里不是设备号

9074 的真相(账号级稳定拒绝,不是抖动)

9074 不是短时抖动,是账号级稳定拒绝。诊断实验(直连上游):

  • 同一账号 40 余次请求(间隔 0~15s 递增)全部 9074,一次没过
  • 刷新 token、换全新 deviceId、换 UA/region/请求体 均无效
  • 决定性对照:把失败账号的 deviceId 借给成功账号 → 成功账号照样 code 0; 把成功账号的 deviceId 借给失败账号 → 失败账号仍 9074 —— 失败跟着账号走,不跟着设备走

所以保留的 1s 重试只是兜「上游万一恢复成真抖动」,落空即判失败、不空耗 8s。 从 ide_user_ent_usage 的「签到奖励」包看,被拒账号会整段缺签(可能连续多天没 签上)——这是上游对账号的发放策略,客户端绕不过,只能如实报失败,别谎报成功。

架构

通过 cordis service router.suppliers 向 dsh-router 注册 traework 供应商工厂。

src/
  index.ts       插件入口(提供 router.suppliers service)
  contract.ts    供应商契约
  types.ts       类型定义
  api/           供应商实现(上游客户端、账号凭证池、登录、签到能力等)

开发

pnpm install
pnpm build        # lib/index.js
pnpm typecheck
pnpm test         # node --test "src/**/*.test.ts"

致谢

  • Sliverkiss/traework2api —— 本插件的 直接移植来源:上游客户端、登录流程与常量表都来自它(其内置的每日自动签到 Scheduler 因本插件不做自动调度已删除);
  • rockswang/wild-work —— 签到语义的参考: checkin_credits 的业务码含义、以及「成败只看 body code、积分不能当凭据」 这些判定规则的来源;
  • star620/TRAE-Automatic-sign-in —— TRAE 每日自动签到助手的参考。

许可证

MIT

免责声明

本项目仅用于学习与技术研究,请勿用于商业用途。

有意识地管理

安装与管理

前置条件与目标 Profile

目标 Web Profile

交付方式 Git Bundle — CARVIN94/dsh-router-traework#bbe3d119ffa8b2a96b14ae2598b7d8e4c40db327

验证、更新与移除

显示生命周期命令
验证
dsh plugin --profile web list

兼容性与访问范围

DSH 0.1.5-rc.1+; Node >=20; Cordis peers declared DSH 0.1.5-rc.1+; Node >=20; @deepseek-ai/cordis ^4.0.2; cordis ^4.0.0-rc.7

检查兼容性证据

风险事实

credentials_and_upstream_requests

Uses TRAE SOLO account credentials and sends chat, token-refresh, check-in, and credit requests to its upstream service.

证据
license

MIT-licensed and provided without warranty.

证据
证据与编辑审查Manifest、Bundle patch、分发与新鲜度

不可变证据

审查状态与源码活动

AI 已审查

审阅或安装时请使用固定提交的 Git 源码。它是连接账号的路由扩展,不是独立聊天应用。

AI 审查于 2026/9/16 UTC 13:57GitHub 事实核对日期: 2026/9/16 UTC 13:57

自当前证据基线以来,没有记录到重要源码变化。

下一步

按 Plugin 安装流程操作

订阅重要变化: dsh-router-traework