dsh-plugin-devin-bridge:把 Devin 托管模型接入 DSH 模型提供者系统

前言

DSH 的智能体循环通常围绕其模型提供者系统工作。如果你的后端模型来自 Devin,例如 glm-5.2swe-1.7,而 dsh 内部需要以 provider 方式路由请求,就需要一个适配器把 Devin 的 Connect RPC API 映射到 dsh 的 LLM 接口。

dsh-plugin-devin-bridge 做的事情很具体:它注册 devin provider,让 dsh 可以把 Devin 托管模型作为后端调用,并把 Devin 的流式响应解码为 dsh 的 StreamChunk

这是什么

dsh-plugin-devin-bridge 是一个 dsh LLM adapter plugin,维护者为 Arborsm,许可证为 MIT

它解决的核心问题是:Devin 的模型 API 是 Connect RPC 形式,而 dsh 的模型提供者系统需要 GenerateOptionsStreamChunk 这类本地协议。这个插件在中间做协议转译,使 provider: devin 可以像其他 dsh provider 一样被模型选择器和程序化路由使用。

工作方式

插件在 dsh 的 LLM seam(LlmAdapter)上注册 devin provider 路由。当 dsh agent loop 把请求路由到 provider: devin 时,适配器执行以下流程:

  1. 将 dsh 的 GenerateOptions(messages、tools、system prompt、images)转译为 Devin 的 GetChatMessageRequest protobuf。
  2. 从 Devin Connect RPC endpoint 流式读取响应。
  3. 将每个 GetChatMessageResponse 帧解码为 dsh 的 StreamChunk 协议,包括 text deltas、reasoning deltas、tool-call deltas、usage 和 finish。

这里有两点比较关键:

  • 动态模型目录:通过 GetCascadeModelConfigs RPC 获取 Devin 实时模型列表,带 5 分钟 TTL 缓存,并合并用户配置模型作为回退。
  • 网络失败处理:动态目录请求失败时,会优雅回退到静态配置。

安装与启用

先确认运行环境满足 package 声明:

node ^22.19 || >=24
dsh >=0.1.0-rc.6

然后使用安装命令:

pnpm add https://github.com/Arborsm/dsh-plugin-devin-bridge.git

安装后,插件需要可用凭证。没有凭证时,它会在启动时抛出错误,而不是静默失败。

凭证与 token

该插件使用 Devin session token 认证,token 格式为:

devin-session-token$<...>

token 的解析优先级是:

  1. dsh 设置面板中的 token
  2. 插件 composition 中 entry config 的 config.token
  3. devin auth login 生成的 credentials.toml

自动读取 credentials.toml 的默认路径为:

Windows:
%APPDATA%\devin\credentials.toml

macOS/Linux:
~/.local/share/devin/credentials.toml
$XDG_DATA_HOME/devin/credentials.toml

也可以使用环境变量覆盖路径:

DEVIN_CREDENTIALS_PATH=/path/to/credentials.toml

token 字段被标记为 secret。在返回到 wire 表面的设置描述符中,它会自动 redacted。

可选配置

可选配置项包括:

token
baseUrl
proxy
forceHttp1
defaultContextWindow
defaultMaxTokens
models
retryPolicy

下面是示例配置。所有字段都是 optional;示例中的 baseUrlproxyforceHttp1 等值按 README 示例保留。

config:
  token: ""
  baseUrl: "https://server.codeium.com"
  proxy: ""
  forceHttp1: true
  defaultContextWindow: 128000
  defaultMaxTokens: 16384
  models:
    - id: "glm-5-2"
      name: "GLM-5.2"
      contextWindow: 128000
      maxTokens: 16384
      supportsImages: false
    - id: "swe-1-7"
      name: "SWE-1.7"
      contextWindow: 128000
      maxTokens: 16384
      supportsImages: true

其中 models 是示例模型目录。supportsImages 表示对应模型是否通过 dsh 附件系统接受图像输入。proxy 支持 http/https/socks5 形式的出站代理 URL。forceHttp1 示例值为 true

当 dsh settings service 可用时,上述配置可以通过设置面板在运行时调整,并且修改即时生效(live applies)。

典型用法

配置完成后,dsh 模型选择器会显示 Devin 作为 provider,并可看到可用模型。可以在 UI 中直接选择模型,也可以在程序里路由到:

provider: devin

从能力映射看,插件会把 Devin 的响应转成 dsh 能消费的块:

  • 文本流式:完整文本增量流与块组装。
  • 推理/思考内容:映射为 dsh reasoning 块。
  • 工具调用:将 Devin tool-call 增量转换为 dsh tool-call 块。
  • 图像输入:视觉能力模型通过 dsh 附件系统接受图像输入。
  • token 用量:向 dsh 报告输入/输出 token 用量。
  • 系统提示:做身份无关的系统提示重写,用于跨模型兼容。

适用场景与注意

适合以下场景:

  • 你已经有 Devin session token,并且希望在 dsh 中把 glm-5.2swe-1.7 等 Devin 托管模型作为后端。
  • 你希望 dsh 的模型选择器、运行时设置面板和程序化 provider 路由能直接工作。
  • 你使用 dsh 内部 agent loop,并且需要文本、推理、工具调用、图像附件和 token 用量映射。

使用前建议注意:

  • 插件会读取并传递 Devin session token,安装前应检查源码、依赖和许可证。
  • 插件以当前 dsh 进程权限运行,凭证文件、网络代理和出站请求都受你的环境控制。
  • 动态模型目录依赖网络请求;失败时会回退到静态配置,但这不等于 Devin 服务一定可用。
  • tokenbaseUrlproxy 等配置会影响实际认证和出站行为,生产环境建议显式配置并审查。

链接

源码仓库:

https://github.com/Arborsm/dsh-plugin-devin-bridge

目录页:

https://www.skillhub.cn/plugins/Arborsm/dsh-plugin-devin-bridge
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye