treg

530Star47Fork12Issue2Watching

为 DSH agent 接入 treg 工具市场:提供约 2600 个外部 API 端点的访问能力,密钥在服务端注入,调用方无需持有凭证。

语言
Python
License
NOASSERTION
分支
main
agentsapi-keysclicredentialsdeveloper-toolsdsh-pluginmcpproxy

安装

$ dsh plugin --profile web add github:superdesigndev/treg

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

一句话定位

treg 是"OpenRouter for Tools"——一个 DSH 插件,把外部工具市场(~2600 个跨 40 个提供商的 API 端点)接入到你的 DSH agent;agent 用一个 token 调用,原始 API key 始终留在 treg 服务端,不发给调用方。

核心能力

  • 在 DSH agent 里暴露 5 个 MCP 工具:catalog_search / catalog_get / call / balance / my_tools,覆盖"按任务找工具 → 看价格 → 调用 → 查余额"的完整链路
  • 让 agent 访问约 2600 个目录端点:SEO 与外链、关键词与排名、AI 可见度、社交资料与趋势、人物/公司 enrichment、广告库与投放管理、网页抓取等
  • 服务端注入凭证:调用方只需持有 X-Treg-Token,原始 API key 由 treg 在网关侧注入,请求被原样转发给上游
  • 团队自己的 key 优先:若团队里有人已注册某 provider 的 key,调用走那把 key,不消耗 treg 余额,也不计费
  • 没有 token 时优雅降级:MCP 连接器自动禁用、SKILL 仍然加载并引导用户去获取 token,profile 不会因缺 token 而崩溃
  • 支持 HTTP URL-passthrough:构建"真实上游 URL 前缀 /call/"即可让 treg 自动识别工具并转发(agent 原生调用方式)

技术实现

  • 语言: TypeScript(dsh/ 目录,ESM 无构建步骤)+ Python 3.12-3.13(treg 注册表服务端,可选)
  • 关键依赖: @deepseek-ai/cordis(ctx.skills.registerProvider)、@deepseek-ai/dsh-mcp-client(MCP 连接器行)、node:fs/promises(读取打包的 SKILL.md)
  • 架构模式: Cordis 双 row 注入——treg-skill 行常开并注册 SKILL 提供器;treg-mcp 行用 !!js 表达式在 TREG_TOKEN 为空时禁用,避免"无 token 的连接器注册 5 个总是 401 的工具"
  • 入口文件: dsh/index.js(apply() 注册 skill provider,export name='treg-skill',inject=['skills'])

适用场景

DSH agent 需要查外部实时数据时——比如竞品 SEO 外链、关键词搜索量、TikTok/Instagram 资料、人物邮箱、对手广告素材——可让 agent 通过一个 token 按调用次数付费,不必再为每个数据源单独注册账号、申请 key、管理多个密钥。

适用对象是已经接好 DSH、但希望把 agent 的"动手能力"延伸到外部 SaaS 数据 API 的开发者;不适用只做本地对话、不需要外部数据查询的场景。

前置依赖与兼容性

依赖最低版本说明
DSH 宿主未声明通过 dsh.bundle.patch 注入 cordis,宿主需支持 cordis plugin 协议
Node.js未声明dsh/index.js 是纯 ESM、无构建步骤;具体下限取决于 DSH 宿主
Python(自托管 treg 服务端时)>=3.12,<3.14仅在自托管注册表时需要;使用托管版 https://treg.to 无此限制
平台跨平台pyproject.toml 中声明 "Operating System :: OS Independent"
原生模块dsh/ 目录只用 node:fs/promises、node:url、cordis API

安装方式

dsh plugin --profile web add github:superdesigndev/treg

配置项

配置类型说明默认值
TREG_TOKEN环境变量treg 账户 token;从 https://treg.to 登录后复制。设置后重启 dsh 才会让 MCP 连接器启用未设置(空)
TREG_TOKEN 缺失时行为MCP 行自动禁用,5 个 mcp__treg__* 工具不会出现;SKILL.md 仍加载并引导用户去获取 token

常见问题

Q: 没有 TREG_TOKEN 时会发生什么?

A: MCP 连接器行(treg-mcp)自动禁用,5 个 mcp__treg__* 工具不会出现在 agent 里;但 SKILL.md 仍加载并引导用户去 treg.to 注册获取 token,profile 不会因缺 token 而崩溃。

Q: 在哪里获取 TREG_TOKEN?

A: 在 https://treg.to 通过 GitHub / Google / 邮箱验证码登录后从账户页复制,新团队有 $1.00 免费额度。

Q: 需要为每个第三方 API 单独注册账号并申请 key 吗?

A: 不需要。treg 用自己的 key 调上游并按调用从团队预付余额扣费;团队里其他人已注册的 key 会优先使用且不计量。

Q: 调用方会拿到第三方 API 的 key 吗?

A: 不会。treg 代理是"忠实转发":只改 hop-by-hop header、自己的控制 header 和注入的凭证,其他字节原样转发;X-Treg-Token 在到达上游前就被剥离。

Q: 遇到 HTTP 402 怎么办?

A: 表示团队预付余额不足。调用方应查 mcp__treg__balance / treg balance 并提示用户去 https://treg.to 充值,或让团队为该 provider 注册自己的 key。

Q: 为什么 ~/.agents/skills/treg/ 下面会重复出现一份 SKILL.md?

A: treg 的 install.sh 会跑 treg skill bootstrap 把 SKILL.md 写到 ~/.agents/skills/treg/,与本 bundle 自带的版本重复,但内容相同、无害。

Q: 如何从 dsh 中彻底卸载?

A: 从 dsh profile 的插件列表中移除 treg-dsh 这条 bundle 即可,不需要再清理环境变量(TREG_TOKEN 是 treg 服务自己的,不是 dsh 的)。

Q: 第三方 API 升级了 treg 需要跟着改吗?

A: 不需要。treg 代理不解析上游 body、不缓存模型,原样转发请求和响应,所以上游 API 变动对 treg 透明。

上手难度

进阶 — DSH 宿主需要支持 cordis patch 协议,用户需先到 treg.to 注册并复制 token 再 export 到 dsh 的环境变量中并重启;SKILL.md 文档较长(约 260 行),agent 第一次调用时需引导它读完。

已知问题与限制

  • MCP 连接器在 TREG_TOKEN 缺失时不可用,需用户手动设置并重启 dsh 才会启用(dsh/cordis.patch.yml:26-28
  • treg install.sh 会把 SKILL.md 重复安装到 ~/.agents/skills/treg/,与本 bundle 自带版共存,内容相同、无害但冗余(dsh/skills/treg/SKILL.md:39-41
  • 自托管 treg 注册表时:treg run --server 尚未提供文件系统/网络级隔离,目前只有 rlimits + 命令白名单(SECURITY.md:36-41
  • 自托管时:CLI-login 握手状态保存在服务器进程内,多实例部署需要 sticky session(SECURITY.md:42-44
  • 目录端点若没有公开报价会被拒绝(refused),需要为该 provider 注册自己的 key;treg 不会自动选 provider 或 failover(README.md:103-108