Back to home@asakumizy

dsh-trae-bridge

DSH和trae连接

Stars
2
Language
JavaScript
Created
Aug 17, 2026
Updated
Aug 17, 2026

Introduction

DSH ⇄ TRAE 互为 Subagent 桥接

DSH (DeepSeek Harness)TRAE (IDE agent) 可以互相委派任务。

  • TRAE → DSH:TRAE 说「让 DSH 执行…」→ 调用 bin/dsh-ask.cmd 无头跑 DSH,拿回最终回答
  • DSH → TRAE:DSH 的模型用 subagent_trae 工具 → 写文件队列 → TRAE 侧 /dsh skill 认领执行 → 写回结果
TRAE ──(dsh-ask.cmd 无头调用)──► DSH          交付物 1
DSH  ──(subagent_trae 工具→文件队列桥)──► TRAE  交付物 2

目录结构

dsh-trae-bridge/
├── dsh-subagent-trae/        # DSH 侧桥接插件(subagent provider: trae)
│   └── lib/index.js
├── bin/dsh-ask.cmd           # TRAE→DSH 无头 CLI 包装(自动探测 DSH 安装路径)
├── trae-skills/dsh/SKILL.md  # TRAE 侧 skill:处理 DSH 投递的任务(/dsh 触发)
├── trae-agents/dsh.md        # TRAE 侧 agent:把任务委派给 DSH(让 DSH 执行…)
├── profiles/                 # cordis.patch.yml 示例(desktop / headless)
├── test/                     # 4 套测试,45+ 项
├── OPTIMIZATION-NOTES.md     # 可靠性/压缩/安全设计记录
└── README.md

快速开始

0. 准备

  • DSH Desktop 已安装(本插件依赖 desktop-cli.js / headless profile)
  • TRAE 已安装,且可安装自定义 skill 与 agent(~/.trae-cn/skills~/.trae-cn/agents

1. 决定桥目录

桥目录默认 ~/.dsh-trae/bridge(即 %USERPROFILE%\.dsh-trae\bridge),也可用环境变量覆盖:

# 可选:自定义桥目录
setx DSH_TRAE_BRIDGE_DIR "D:/path/to/your/bridge"

2. 安装 DSH 侧插件

dsh-subagent-trae/ 目录放进 DSH 的 profile 依赖。desktop profile 手动布放:

$dst = "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\dsh-subagent-trae"
New-Item -ItemType Directory -Path "$dst\lib" -Force | Out-Null
Copy-Item "<REPO_DIR>\dsh-subagent-trae\package.json" "$dst\"
Copy-Item "<REPO_DIR>\dsh-subagent-trae\lib\index.js" "$dst\lib\"

# 用示例配置替换 cordis.patch.yml(先按下面第 3 步填好 <BRIDGE_DIR>)
Copy-Item "<REPO_DIR>\profiles\desktop-cordis.patch.yml" "$env:USERPROFILE\.dsh\profiles\desktop\cordis.patch.yml" -Force

3. 配置 cordis.patch.yml

参考 profiles/desktop-cordis.patch.yml,把 <BRIDGE_DIR> 换成你的桥目录:

- insert:
    - id: subagent-trae
      name: dsh-subagent-trae
      config:
        providerName: trae
        bridgeDir: "C:/Users/<you>/.dsh-trae/bridge"   # 或留空走默认/环境变量
        timeoutMs: 900000
        pollIntervalMs: 2000
        # 可选优化项:
        # maxConcurrent: 1
        # retryCount: 0
        # allowedCwdPrefixes: ["C:/Users/<you>"]
        # maxFileAgeDays: 7
        # sharedSecret: ""
        # maxPromptChars: 20000
        # maxResultChars: 20000

    - id: tool-subagent-trae
      name: "@deepseek-ai/dsh-tool-subagent"
      config:
        provider: trae
        toolName: subagent_trae
        enableRunInBackground: false
        maxDepth: provider-managed

必须重启 DSH Desktop 并新建会话subagent_trae 工具才会出现。

4. 安装 TRAE 侧 skill 与 agent

# skill:处理 DSH 投递的任务
Copy-Item -Recurse "<REPO_DIR>\trae-skills\dsh" "$env:USERPROFILE\.trae-cn\skills\dsh"

# agent:把任务委派给 DSH
Copy-Item "<REPO_DIR>\trae-agents\dsh.md" "$env:USERPROFILE\.trae-cn\agents\dsh.md"

trae-skills/dsh/SKILL.md 里的 <BRIDGE_DIR> 也换成你的桥目录。

5. 使用

DSH → TRAE(在 DSH 对话里):

用 subagent_trae 工具问 TRAE:<你的问题>

然后在 TRAE 里输入 /dsh(或说「处理DSH任务」)触发 skill 认领任务。

TRAE → DSH(在 TRAE 对话里):

让 DSH 执行:<你的任务>

TRAE 的 dsh agent 会调用 bin/dsh-ask.cmd 无头执行 DSH。

配置项一览

配置键默认值说明
providerNametraeprovider 名
bridgeDir~/.dsh-trae/bridge(或 DSH_TRAE_BRIDGE_DIR桥目录
timeoutMs900000单次超时;重试总预算 = timeoutMs×(retryCount+1)
pollIntervalMs2000轮询间隔上限(指数退避上限)
pollBackoffMs200轮询初始间隔
maxConcurrent1DSH 侧并发轮询上限
retryCount0error 后自动重投递次数
allowedCwdPrefixes[]cwd 白名单(空=不限制)
maxFileAgeDays7过期文件清理天数
sharedSecret""非空则写 HMAC 签名(防伪造)
maxPromptChars20000DSH→TRAE prompt 压缩上限
maxResultChars20000TRAE→DSH 结果截断上限

上下文防爆炸

桥两端只传任务指令文本,不传对方完整会话。DSH→TRAE 超限时走滑动窗口压缩(窗口 5/step 1/min 1,最多 3 个语义窗口),关键行按权重标记(路径 +10、指令词 +5/个)全部前置且永不丢失。TRAE→DSH 方向 dsh-ask.cmd 拒绝超 15000 字符的指令。详见 OPTIMIZATION-NOTES.md

测试

node test/optimize-check.mjs        # 20 项
node test/review-fixes-check.mjs    # 6 项
node test/context-guard-check.mjs   # 7 项
node test/sliding-window-check.mjs  # 12 项

测试从 %USERPROFILE%\.dsh\profiles\desktop\node_modules\dsh-subagent-trae 导入插件(按 README 布放后即可运行)。

已知限制

  • 队列桥需 TRAE 侧触发(/dsh),非全自动
  • TRAE 执行任务消耗 TRAE 积分;retryCount>0 会成倍消耗
  • 桥目录明文可见;sharedSecret 只防伪造不防窥
  • DSH 侧插件改动需重启 DSH Desktop 生效

故障排查速查

现象排查
queue 有 pending 但 results 永不出现TRAE 是否运行?是否输入 /dsh?cwd 是否被白名单丢弃?
DSH 报 errorresults/*.jsonstopReason;带 lastFailure 则是重试仍失败
任务 failed + orphaned上次进程 claimed 后崩溃,启动自愈(正常)
队列文件半截 JSON撕裂写;双方重试,日志出现一次 corrupt 告警后恢复
结果缺尾truncated: true 被压缩——向对端索取缺失上下文