快速了解
它能做什么
为 dsh-router 添加 TRAE SOLO 聊天供应商的 DSH Bundle。
本站提供的是中文说明,不代表该项目或 Plugin 自身提供中文界面;语言支持请以上游文档为准。
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 增加什么
通过 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
为 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/checkin → checkinNow(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/status的checked_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 每日自动签到助手的参考。
许可证
免责声明
本项目仅用于学习与技术研究,请勿用于商业用途。
有意识地管理
安装与管理
前置条件与目标 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。
风险事实
证据与编辑审查Manifest、Bundle patch、分发与新鲜度
不可变证据
审查状态与源码活动
审阅或安装时请使用固定提交的 Git 源码。它是连接账号的路由扩展,不是独立聊天应用。
AI 审查于 2026/9/16 UTC 13:57。GitHub 事实核对日期: 2026/9/16 UTC 13:57。
自当前证据基线以来,没有记录到重要源码变化。