dsh-connect-trae
dingminhua/dsh-connect-trae加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你桌上装着一台跑 DeepSeek Harness(DSH)的开发机。DSH 本身不提供模型,它只是一个「模型外壳」——负责会话编排、工具调用(bash / read / write / edit)、权限控制。你缺的是一个能真正干活的模型后端。
市面上的常规做法是去 OpenRouter、Anthropic、DeepSeek 官方各买一份 API Key,按 token 计费。项目文件一多,账单就开始心疼。
但另一种可能你没想到:你电脑里已经装了一台 Trae IDE,而你的 Trae 账号已经付过费了——国内版是积分制(Work 积分 / 通用积分),国际版是订阅制(Pro / Free 套餐)。你为 AI 编码助手付的钱,现在只换来了 IDE 里的一个聊天框。
dingminhua/dsh-connect-trae 就是那根转接线。它读取本机已登录的 Trae 凭据,把 Trae SOLO 通道里的模型(DeepSeek-V4-Flash、DeepSeek-V4-Pro、GLM-5.2/5.3、Kimi-K3、MiniMax-M3、Qwen3.8-Max、Doubao-Seed 等)注册进 DSH 的模型选择器。模型只负责生成结构化 tool_calls,工具仍然由 DSH 在本地执行——分工干净,不存在两套 Agent runtime 打架。

理解这个项目的关键,是分清「区域」和「面板」这两个概念。
插件同时维护 三个并行供应商:
| 供应商 | 网关 | 计费方式 |
|---|---|---|
trae | trae-api-cn.mchost.guru | 个人通用积分 |
trae-enterprise | console.enterprise.trae.cn | 企业租户额度 |
trae-global | coresg-normal.trae.ai | 订阅状态 |
「区域」是凭据自带的 userRegion 声明自动判定的(host 后缀与 edition 标签兜底),用户不需要手动指定。而「面板」是设置卡片上的 UI 概念——三个 tab,各自独立的账号绑定、模型目录、勾选状态和上下文预算。企业版复用国内版的凭据池,但计费到另一个账户、供另一份名录,所以必须有自己的面板。
这个设计背后有个相当硬核的约束:企业网关要求每次调用携带 session_id,而消费网关会拒绝带它的请求体。路由在构建 provider 客户端时就固定死了,shim 为每个 provider 分配独立 bearer 路由,未知 token 直接 401,绝不「猜着回退」。
安全设计上有一处值得称赞:每个区域开一个随机端口的 loopback shim,进程内带随机 secret,真实 Trae token 绝不交给 pi-ai。pi-ai 只能看到本地 shim,看不到上游凭据。
这个项目最值得学习的不是功能,而是克制。
插件明确声明「不与任何其它插件联动」:不共享状态、不做跨插件账号调度、不协商 UI 插槽、不共享开关。理由作者写得很直白——插件之间一旦互相依赖,任何一个的升级、卸载或版本线变化都会悄悄改变另一个的行为,而 DSH 的加载顺序、多版本并存和用户自定义 profile 让这种耦合无法可靠表达。立住这条边界,「出问题的是谁」永远可以定位到一个插件,而不是一串。
类似的克制还有几处:
4011 是限流不是「模型不可用」(额度耗尽走 4008),所以「额度还有很多却报 4011」两句话可以同时成立。账号池(默认关闭,显式选择) 是最有争议也最有价值的设计。开启后插件会先排除不可用账号(凭据被拒、额度耗尽、限流未到重试时间),再在可用账号里优先用快到期的那点额度,最后比总额、token 新鲜度,并以账号 id 兜底成全序——同样的输入永远得到同样的顺序。真实请求失败会换号重试(最多 3 个),但只换账号级失败(401 / 额度耗尽 / 限流 / 上游 5xx),模型 id 写错不换号,因为那不是账号的问题。
之所以默认关闭,是因为「换账号等于换人计费」,这种事只能由用户点头。
积分临近到期提醒 分 7 天 → 24 小时 → 已过期三级递进。剩余额度只回答「还有多少」,回答不了「哪一笔先到期」。
每日签到 是插件唯一会改变账号状态的操作,且按 Trae 的「每台设备每天一次」规则——换账号不重置当天名额,所以逐账号签到始终是主路径;账号池里的「全部签到」遇到上游回 9095 会立刻停止整批并把剩余账号标成「本机已签」,产出真相而不是一排假失败。
输入框读数 在编辑器工具栏显示当前区域状态:国内版显示通用积分,国际版显示套餐名。可点击弹出表格,本区域每个账号一行,点行即切换账号。

安装极简:dsh plugin --profile desktop add dsh-connect-trae,或直接 npm install dsh-connect-trae。要求 DSH ≥ 0.1.7-rc.1,peer 上界 <0.3.0-0。
前置条件是本机必须已装并登录 Trae(国内版 / TRAE SOLO / 国际版任一),凭据从 Trae 桌面应用的登录文件读取。
有一个兼容性坑值得留意:插件同时支持 pi-ai 的两代上下文协议,判据是插件自己解析到的那份包的版本(不是宿主版本),因为嵌套的旧副本会盖过宿主的新副本。启动日志里有一行 dsh-connect-trae: pi-ai <版本> (<代数>),legacy 表示解析到了 ≤0.85 旧代。分界线是 0.86——按 0.87 划分会把 0.86.x 误判成旧代而错误折返,反而丢掉系统提示与全部工具声明。
项目健康度:TypeScript 为主(2.33MB)+ JavaScript(160KB),302 个文件,90 个测试文件(vitest),CI 在 ubuntu 与 windows 双平台跑完整 typecheck / test / build / npm pack 校验。当前版本 4.5.2,最近三次发布都在 10 月 24–25 日,迭代极其密集。贡献者 7 人,MIT 协议,npm 月下载量 12362。

这是灰区工具,必须说清楚。 插件读取 Trae 桌面应用的登录凭据、调用的是 Trae 未公开给第三方的 llm_utils_chat 接口。本质上是把官方 IDE 的私有 API 包装成通用 provider。虽然作者在 docs/ 下留了大量取证文档(PROTOCOL_EVIDENCE.md、CN_MODEL_DIRECTORY_EVIDENCE.md、WINDOWS_TOKEN_PROBE.md 等),技术上是严谨的,但上游一旦调整接口或风控策略,插件可能随时失效——这不是代码质量能解决的问题。
其次,它把「订阅」当成了「API 额度」,这两者语义并不等价。Trae 的积分包有有效期、有倍率折扣、有套餐档位限制,与按 token 计费的 API 完全是两套经济模型。账号池「优先消耗快到期额度」的逻辑虽然实用,但也意味着不同用户拿到的实际成本完全不同。
第三,安全面并不天然更宽。loopback shim + 随机 secret 的设计挡住了 token 泄漏给 pi-ai,但本地凭据文件仍是明文 JSON,导出功能产出的也是有效 Token 文件(作者自己提醒「请当作密码保管」)。
第四,模型阵容受上游套餐档位门禁。可调用名单按账号档位下发,free 账号看到的模型比 Pro 少很多,这也是「目录里有但暂时不可调用」的根本原因。
这个项目折射出 2026 年 AI 工具生态的一个真实趋势:AI 编码订阅正在从「一个 IDE 的特权」变成「一份可复用的模型额度」。用户为 Cursor、Trae、Claude Code 付的月费,本质上买的是模型调用权,而这些调用权完全可以在不同 harness 之间流动。
DSH 选择了「模型外壳 + 可插拔 provider」的架构,把模型供给完全开放给第三方插件,于是出现了「DSH Connect」这一族插件(Trae、WorkBuddy 等)。插件之间互不联动、只学不联——这种设计哲学比功能本身更有长期价值。
从数据看,插件 2026 年 8 月底创建,两个月做到 160 star、npm 月下载 1.2 万、7 位贡献者,版本号到 4.5.x,发布日志全是「issue #NN 的诊断 → 修复 → 复盘」结构。每一版都在修一个具体 issue,每一版都留下诊断文档——这种节奏在开源插件里并不常见。
结论:一个工程纪律极高、边界感清晰、但本质上依赖上游私有接口的模型接入插件。适合已经在用 Trae 且订阅有余额、同时需要更强 harness 能力的开发者;不适合追求稳定 SLA 的生产团队。