@citie114514/pi-connect-trae
将本机已登录的 Trae(国内版 / 国际版)模型接入 Pi coding agent,国内版与国际版双供应商并行;附额度查看与每日签到命令,复用 DSH 插件的协议与凭据逻辑。
Package details
Install @citie114514/pi-connect-trae from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@citie114514/pi-connect-trae- Package
@citie114514/pi-connect-trae- Version
2.3.5- Published
- Oct 22, 2026
- Downloads
- 221/mo · 26/wk
- Author
- citie114514
- License
- MIT
- Types
- extension
- Size
- 194.4 KB
- Dependencies
- 0 dependencies · 1 peer
Pi manifest JSON
{
"extensions": [
"./index.js"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
Pi Connect Trae
把本机已登录的 Trae(国内版 / 国际版)模型接入 Pi coding agent,国内版与国际版双供应商并行, 并提供额度查看与每日签到命令。
本包是 DeepSeek Harness 插件 dsh-connect-trae 的 Pi 移植版:凭据存储与刷新、设备身份、
回环 shim、SOLO 上游协议、远程模型目录与 SSE 桥全部复用原插件(lib/trae-core.js 由
build-core.mjs 从 DSH bundle 手术提取),只把 DSH 的 adapter/卡片/web 路由换成 Pi 的
registerProvider 原生供应商接口与斜杠命令。
供应商
| provider | 说明 |
|---|---|
trae |
国内版(CN 网关) |
trae-global |
国际版(trae.ai 网关) |
只注册本机实际已登录的区域;未登录的区域安静跳过,不会在模型列表里留下死路由。
工作原理
Pi 模型运行时(openai-completions API)
-> 回环 shim(127.0.0.1 随机端口 + 进程内随机 secret)
-> Trae SOLO 协议(llm_utils_chat / get_detail_param)
-> CN https://trae-api-cn.mchost.guru / 国际 https://coresg-normal.trae.ai
命令
| 命令 | 作用 |
|---|---|
/trae-usage |
查看各区域额度(CN 为 Work 积分,国际为订阅状态)与今日签到状态 |
/trae-checkin |
领取今日签到奖励(仅国内版;唯一会改动账号状态的操作,会先确认) |
签到守卫与原插件一致:先读状态,账号今日已领或本设备今日已签到就不发起领取请求。
安装
方式一 —— 直接放进 Pi 的扩展目录(推荐,自动发现):
Copy-Item <本包目录> $env:USERPROFILE\.pi\agent\extensions\pi-connect-trae -Recurse
方式二 —— 用 npm 源安装:
pi install npm:@citie114514/pi-connect-trae
两种方式不要同时使用,否则供应商会注册两次。
配置
| 环境变量 | 作用 |
|---|---|
TRAE_AUTH_FILE |
覆盖 storage.json 路径(可选) |
插件自有刷新后的凭据副本存放在 ~/.pi/agent/cache/dsh-connect-trae/(原 DSH 版放在 DSH home)。
使用
pi --list-models # 查看 trae 的模型
pi --provider trae --model DeepSeek-V4-Flash-Official --print "你好"
与 DSH 版的差异
- 模型目录有 30 分钟 TTL。 请求路径(
auth.apiKey.resolve)在目录过期后才重新发现; Pi 的显式模型刷新(refreshModels)传force,跳过 TTL 立即刷新。此前成功发现一次后modelsReady永不复位,进程存活期间不会再看上游的新增/下线。 - 目录并发刷新单飞。 多个请求或「请求 + 显式刷新」同时到达时共用同一趟发现, 既不会重复拉取,也不会让晚返回的旧结果覆盖新目录。
- 部分发现视为失败。 Trae 的目录分散在多个 function 下,任一 function 失败时整体抛错, 保留上一份完整目录并在下次请求重试;不再把缺模型的并集落盘并缓存 30 分钟。
- 模型目录会落盘缓存(
~/.pi/agent/cache/dsh-connect-trae/catalog-<region>.json)。TraeCatalog本身只在内存里、且以 4 条静态 fallback 起步,而实时目录是异步发现的 —— 任何在发现落地之前读模型清单的路径(新进程、pi --list-models、/scoped-models、 启动时的模型选择器)都只能看到那 4 条。表现就是「模型加载不全」(qwen3.8-max这类 模型不在列表里)和「scoped-models 重启后丢失」(保存的 id 拿 fallback 名单去匹配, 自然匹配不上)。现在每次发现成功都写盘,新进程首次读取是同步命中,和 Qoder 版一致。 - 默认不往控制台写东西。 Pi 的 TUI 独占终端,激活期一句
console.info就会打在输入行上 并把它弄乱。进度信息默认静默,需要时设PI_CONNECT_DEBUG=1;用户真正需要看到的失败走ctx.ui.notify(TUI 里是提示条,不是裸 stderr)。 - 移除了 DSH 的设置卡片与私有 web 路由;用量/签到改为上面的斜杠命令。
- 默认广告最大上下文窗口。 DSH 的卡片里有按模型选择 dev / Max 窗口的上下文预算,Pi
没有对应 UI,于是每行都停在目录的 dev 窗口(200K / 256K)。此处在 Trae 公布 Max 时
(实时目录的
context_window_tokens.max→maxContextWindow)广告该模型自己的 Max, 没公布 Max 的模型(如kimi-k2.6、Doubao-Seed-2.1-Turbo)仍保持 dev,不编造数值。 CN 静态 fallback 同步补上了已公布的 Max。 - 未包含 Trae 的 Raw Chat 回退通道(协议核心仍在
lib/trae-core.js,需要时可再接线)。 - 思考档位如实广告(三处修正):
- 不提供「关闭」是故意的:Trae 的 SOLO 请求体只有
reasoning_effort一个思考字段,没有 「关掉思考」的表达,所以推理模型一律off: null(不可选),与上游 DSH 插件一致 —— 而不是允选后静默回落成默认档位。 - 档位词表补全:Trae 自己的
reasoning_effort_options允许minimal / low / medium / high / xhigh,但旧的反向映射把不认识的档位一律写成high—— 上游给了medium也会被当成 high 显示、发成 high。现在EFFORT_MAP与TRAE_REASONING_WIRE是两张显式表(light → low、extra_high → xhigh仍保留)。 - CN 静态 fallback 补上已公布的窗口与档位(它在实时目录拉不到时就是模型清单):
DeepSeek-V4-Flash/Pro-Official 为 low/high/xhigh,glm-5.2 为 high/xhigh,
kimi-k2.6 上游未公布故保持无档位。此前 4 个 fallback 模型只有 dev 窗口、
且因为不带
reasoningEfforts被当成非推理模型(--list-models的 thinking 列显示no)。
- 不提供「关闭」是故意的:Trae 的 SOLO 请求体只有
- 模型描述符广告
maxTokens:Pi 的--list-models不做 undefined 保护,而该字段只约束 思考预算(请求上限走options.maxTokens),因此不会截断回复。
构建
lib/trae-core.js 是生成物,从 DSH bundle 重新生成:
# 需要在 <DSH_HOME>/profiles/desktop/node_modules/dsh-connect-trae 存在
node build-core.mjs
⚠️ 当前不要直接重建。 仓库里这份
lib/trae-core.js已经比build-core.mjs的产物多出 约 840 行(41 处差异),主要集中在模型multimodal标志驱动的图像输入(issue #16)等改动上 ——那些是直接改在产物上的,脚本还没有对应的补丁步骤。直接跑node build-core.mjs会把这些 改动抹掉。要重建,先把这些差异补进脚本,再对比产物确认无回退。脚本已经包含「删掉每请求调试输出」这一步(
4e),所以重建至少不会把 issue #1 里那条chat request received {...}带回来。
许可
MIT