dsh-import-models:把其他 Agent Harness 的模型与凭证导入 DeepSeek Harness

前言

在本地开发智能体时,往往会使用多个 Agent Harness:有的用 OpenCode,有的用 Codex/ChatGPT,有的用 Claude Code,有的用 Gemini CLI 或 Qwen Code。这些工具各自维护模型列表、Provider 路由、API Key 和 OAuth 登录信息,切换到 DeepSeek Harness(DSH)时,这些配置需要重新录入。手工迁移不仅耗时,而且容易遗漏。

dsh-import-models(又名 dsh-import-models)是一个 DSH 插件,把其它 Agent Harness 存储在本地机器上的模型、Provider、API Key 和 OAuth 登录导入到 DSH,并在 Settings → Model Manager 页面中统一管理。

插件定位

  • 名称:dsh-import-models(GitHub 仓库:vit-cerny/dsh-model-manager)
  • 维护者:vit-cerny
  • 分类:admin-security
  • 核心价值:把 opencode、Codex/ChatGPT、Claude Code、Gemini CLI、Qwen Code 以及本地 .env 文件中的模型、Provider、API Key 与 OAuth 登录导入 DSH,并在设置页中统一启用/禁用与管理。

支持的数据源

插件从以下路径读取配置:

源 文件路径 导入内容
opencode ~/.config/opencode/opencode.jsonc providers、models、endpoints,转为 llm-pi-ai provider 路由 + API Key
opencode auth ~/.local/share/opencode/auth.json API Key 凭证(当 opencode 声明 provider 时,路由一并导入)
Codex / ChatGPT ~/.codex/auth.json openai-codex OAuth 授权或 OpenAI API Key 路由
Claude Code ~/.claude/.credentials.json、~/.claude/settings.json anthropic OAuth 授权或 API Key
Gemini CLI ~/.gemini/oauth_creds.json google OAuth 授权
Qwen Code ~/.qwen/oauth_creds.json qwen-token-plan OAuth 授权
.env 文件 <cwd>/.env、~/.env、~/.dsh/.env、~/.config/dsh/.env、~/.config/opencode/.env API Key 凭证(只导入 key 值,不猜测 endpoint)

所有敏感值在到达浏览器或模型之前都会脱敏,仅显示如 sk-ab…(51 chars) 这样的提示。导入时,凭证写入由 Host 内部重新读取源文件,不会在页面或日志中暴露完整密钥。

可执行操作

  • 导入:扫描各源,勾选要导入的内容,预览导入计划,执行导入。每个源都有独立的导入按钮,可只导入某一个 harness 的配置。
  • Provider 管理:禁用(路由暂存,不删除)、重新启用或移除 Provider。
  • 模型管理:打开某个路由的模型列表,搜索、禁用或重新启用单个模型。
  • 添加 Provider:支持任意 OpenAI 兼容或 Anthropic 兼容的 endpoint,可写入 key 到凭证存储。
  • Agent 工具:插件向 Agent 暴露以下工具:
  • model_manager_sources
  • model_manager_plan
  • model_manager_import
  • model_manager_routes
  • model_manager_toggle_route
  • model_manager_toggle_model
  • model_manager_add_route
  • model_manager_remove_route
  • model_manager_set_secret

安装与启用

安装时,使用插件管理器安装 bundle:

plugin_manager install_bundle target: <path-to>/dsh-import-models

安装后,bundle 会插入一行配置:

- insert:
    - id: model-manager
      name: 'dsh-import-models'

刷新 Web GUI 后,在 Settings → Model Manager 中即可看到导入与管理的入口。

配置项

Key 默认值 含义
enabled true 关闭插件但不卸载。
allowWrite true 拒绝所有导入/启用/添加写入操作,页面变为只读。
announceToAgent true 在系统提示中添加一段简短说明,介绍上述 Agent 工具。
stateFile ~/.dsh/model-manager/state.json 记录已禁用的路由/模型以及额外 .env 路径。

写入机制

插件只通过 Host 的官方接口写入,不直接修改文件:

  • Provider 路由:通过 live llm-pi-ai 行的 configEditor.edit()(若编辑器未挂载,则回退到 settings.mutate('llm-pi-ai', …))。
  • API Key:写入 credentials.set(ref, value)。
  • OAuth 登录:写入凭证记录 llm-pi-ai/<route>,格式为 { kind: 'grant', payload: { type: 'oauth', access, refresh, expires, accountId } }。

禁用 Provider 时,路由配置会被暂存到插件状态文件,并从 live config 移除;重新启用时,原路由配置会恢复。模型启用/禁用通过重写路由的 models 数组实现。

安全性

  • HTTP 路由仅允许 loopback;写入操作额外要求同源的 Origin/Host 或 Sec-Fetch-Site: same-origin。
  • 响应、日志、插件状态文件中均不出现完整密钥。
  • 其他 harness 的文件仅读取,不修改 DSH 以外的任何内容。

限制

  • OAuth 授权以复制方式导入。若其他 harness 已轮换 refresh token,需重新导入。
  • .env 中无法识别 provider 的 key 仅作为凭证引用存储,不自动创建路由。
  • 插件不提供自己的交互式登录,登录应在 DSH 的 Models 页面完成。
  • 非对话模型(embeddings、TTS、图像生成)会被过滤,不计入导入计划。

适用场景与注意

  • 适合从 opencode、Codex/ChatGPT、Claude Code、Gemini CLI、Qwen Code 或本地 .env 迁移到 DSH 的用户。
  • 插件以当前 DSH 进程的权限运行,安装前建议检查源码与许可证(MIT)。
  • 若使用 allowWrite: false,页面为只读,适合只查看导入计划。

结尾

dsh-import-models 把其它 Agent Harness 的模型与凭证导入 DSH,并提供统一的 Settings 页面进行管理。如果你正在使用多个本地 Agent harness,这个插件可以减少重复录入,保持配置的一致性。

  • 目录页:https://www.skillhub.cn/plugins/vit-cerny/dsh-model-manager
  • GitHub:https://github.com/vit-cerny/dsh-model-manager
羽毛球分组比赛记分
小程序二维码

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

小夜