reactive-resume
reactive-resume
A one-of-a-kind resume builder that keeps your privacy in mind. Completely secure, customizable, portable, open-source and free forever. Try it out today!
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:yembors64632/dsh-trae-connect
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
把 Trae(SOLO CN) 订阅里的模型接入 DeepSeek Harness。
⚠️ 只对我自己的机器有效。 本插件读取的是宿主侧导出的明文凭据快照, 里面的 token 是我自己账号的。别人 clone 下来直接用会连不上——需要自己导出凭据, 并按自己的环境改常量。改法见下方自用改法。
在 DSH 里以 OpenAI 兼容端点暴露 Trae 的 preset 模型,让模型选择器里出现 Trae 分组,
可直接对话。
DSH ──OpenAI──▶ 本插件的回环 shim ──Trae SSE──▶ trae-api-cn.mchost.guru
shim 只绑 127.0.0.1 随机端口 + 32 字节随机 bearer(timingSafeEqual 比对),
只服务 /healthz、/v1/models、/v1/chat/completions,无写接口。区别在于上游不是
OpenAI 形状,所以要把 Trae 的 SSE 逐事件翻译成 OpenAI 的 chat.completion.chunk。
Trae 的推理入口不是 /api/ide/v2/llm_raw_chat。那条路属于 BYOK / 自定义模型通道
(dylib 里叫 llm_raw_chat_custom_model),要服务端按 (user, env, function) 预置一份
app config,外部调用只会拿到:
2001 failed to do chat: failed to get app config: record not found
| 入口 | 结果 |
|---|---|
/api/ide/v2/llm_raw_chat |
✗ BYOK / 自定义模型专用,外部调用恒 2001 |
/api/ide/v1/llm_raw_chat |
✗ 4001 param is invalid,请求 schema 与 v2 不同 |
/api/agent/v3/llm_utils_chat |
✓ 可用(Go 服务,内部名 llm_raw_chat_v2) |
真正能用的是 agent 服务。它只要求三样东西:
app_id + app_version_code(int64) —— 来自 product.json 的 bootConfig,是
产品级常量,不是账号级;同一串也被硬编码在 libai_agent.dylib 里。function —— 必须是服务端为该 appId 注册过的名字(见 TRAE_FUNCTIONS)。
给错名字会回 no function config found for appId=..., function=...。messages[].content 必须是对象数组 [{type:"text",text:"..."}],不是字符串。
给字符串会回 cannot unmarshal string into Go struct field LLMRawMessage.messages.content。拿到一个有效 function 之后,任意 preset 模型都可用(实测 9×19=171 组合全过)。
容器看不到宿主 macOS 的 ~/Library/Application Support/TRAE SOLO CN/。因此由宿主侧
脚本解密 byteCrypto 信封后,写明文快照到:
$DSH_HOME/trae/credential.json # appId / appVersionCode / 会话 token
$DSH_HOME/trae/models.json # 模型目录
(~/.dsh 已 bind mount 成容器里的 /root/.dsh。)
本插件只读这两份快照,绝不碰桌面 App 自己的目录。
前置:已安装并登录 Trae(SOLO CN)桌面版,且已导出上述快照。
dsh plugin --profile web add github:yembors64632/dsh-trae-connect
Desktop / TUI 把 --profile 换成 desktop / tui。
cordis.patch.yml 会注册 llm-trae 这个 provider id,不改动 profile 当前的默认模型。
插件是照着我自己的机器写死的。你在自己环境改的时候,把下面这段连同插件目录交给 AI:
我在用 DeepSeek Harness(DSH),装了你写的 dsh-trae-connect 插件。
这个插件是照着原作者的环境硬编码的,我要改成适配我自己的环境。
请你:
1. 先通读插件目录下的 lib/index.js,找出所有硬编码的路径、端点、常量;
2. 对照我下面的实际环境,逐项告诉我每一处需要改成什么,并给出修改后的完整代码;
3. 改完给我一条自检命令,用来验证凭据能读到、上游能连通。
我的实际环境:
- 我用的是(Linux / macOS / Windows WSL),DSH 数据目录 $DSH_HOME 是:<填你的路径>
- Trae 桌面版装在:<填 App 的安装/数据目录>
- 我的账号情况:<个人号 / 企业号>
- 插件报的错是:<贴报错>
注意:只改凭据读取路径和上游端点,不要动 SSE 翻译、OpenAI 兼容层这些
协议实现——那部分是验证过能用的。
| 差异点 | 位置 |
|---|---|
| 快照路径 | lib/index.js 里凭据解析段(默认读 $DSH_HOME/trae/) |
| 网关域名 | 顶部 DEFAULT_GATEWAY(默认 https://trae-api-cn.mchost.guru) |
| 账号/计费网关 | DEFAULT_ACCOUNT_BASE(默认 https://api.trae.cn) |
appId / appVersionCode |
随 Trae App 版本变化,需从你的 product.json 取 |
默认 function |
FUNCTION_FIELD,可选值见 TRAE_FUNCTIONS |
不要动 SSE 翻译层与 OpenAI 兼容层——那部分已验证可用。
| 项 | 版本 |
|---|---|
| 插件 | 0.1.0 |
| DSH 核心 | 0.1.5 / 0.1.6 / 0.1.7 alpha 线 |
| 上游 | Trae(SOLO CN)桌面版 |
| Node.js | ^22.19.0 \|\| >=24.0.0 |
| 界面 | Web / Desktop / TUI |
DSH 核心版本不匹配会导致 DSH 启动失败,不是静默降级。装之前先对表。
依赖 @deepseek-ai/* 系列包(cordis、dsh-llm、dsh-llm-pi-ai、dsh-home-paths、
dsh-host-webserver、schemastery)与 @earendil-works/pi-ai。
现在是单点适配——我验证通过的那一套环境能跑,换个版本就可能挂。这是有意的取舍: 在没确认有多少人用之前,为每个 DSH 版本做兼容矩阵的性价比不高。
如果这个仓库 star 多了(说明确实有人在用),作者会考虑做以下工作:
0.1.5-rc.x / 0.1.6-alpha.x / 0.1.6 / 0.1.7 各代的
peer range 与配置入口差异整理成表,插件加载时按宿主实际能力自适应。想要哪个,开 issue 说一声——用的人多就先做哪个。
上游是私有实现,没有稳定契约。Trae 服务端一改,插件就可能失效。
app_id / function 这类产品级常量随 App 版本变化,升级 App 后可能需要同步更新。
这不是 bug,是这类方案的固有风险。
本项目仅供个人学习与研究,驱动你自己账号在你自己的机器上使用。 使用者需自行遵守 Trae 的服务条款。因使用本项目产生的任何后果 (包括但不限于账号受限、积分消耗、服务中断),由使用者自行承担。 仓库不含任何真实账号、凭据或密钥。
MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: model-provider、openai-compatible。