前言¶
在本地开发智能体时,往往会使用多个 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_sourcesmodel_manager_planmodel_manager_importmodel_manager_routesmodel_manager_toggle_routemodel_manager_toggle_modelmodel_manager_add_routemodel_manager_remove_routemodel_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