dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
Import the models, providers, API keys and OAuth logins that other agent harnesses keep on your machine (opencode, Codex/ChatGPT, Claude Code, Gemini, Qwen, .env) into DeepSeek Harness, with a clean Settings page to manage them.
Import the models, providers, API keys and OAuth logins that other agent harnesses keep on this machine into DeepSeek Harness, then enable, disable and remove them from a Settings → Model Manager page.
| Source | File | Becomes |
|---|---|---|
| opencode | ~/.config/opencode/opencode.jsonc (providers, models, endpoints) | llm-pi-ai provider routes + API-key credentials |
| opencode auth | ~/.local/share/opencode/auth.json | API-key credentials (and routes when opencode declared a provider) |
| Codex / ChatGPT | ~/.codex/auth.json | openai-codex OAuth grant, or an OpenAI API-key route |
| Claude Code | ~/.claude/.credentials.json, ~/.claude/settings.json | anthropic OAuth grant or API key |
| Gemini CLI | ~/.gemini/oauth_creds.json | google OAuth grant |
| Qwen Code | ~/.qwen/oauth_creds.json | qwen-token-plan OAuth grant |
.env files | <cwd>/.env, ~/.env, ~/.dsh/.env, ~/.config/dsh/.env, ~/.config/opencode/.env | API-key credentials (keys are imported; endpoints are not guessed) |
Every secret is redacted before it reaches the browser or the model: the page only
sees hints like sk-ab…(51 chars). Imports re-read the source inside the Host, so a
key value never travels through the page.
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.plugin_manager install_bundle target: <path-to>/dsh-import-models
The bundle inserts one row:
- insert:
- id: model-manager
name: 'dsh-import-models'
Refresh the Web GUI once, then open Settings → Model Manager.
| Key | Default | Meaning |
|---|---|---|
enabled | true | Turn the plugin off without uninstalling. |
allowWrite | true | Refuse every import/toggle/add write (read-only page). |
announceToAgent | true | Add a short system-prompt section describing the tools. |
stateFile | ~/.dsh/model-manager/state.json | Where disabled routes/models and extra .env paths are remembered. |
Only first-class Host seams, never a hand-edited file:
configEditor.edit() on the live llm-pi-ai row
(falling back to settings.mutate('llm-pi-ai', …) when no editor is mounted);credentials.set(ref, value);llm-pi-ai/<route>
({ kind: 'grant', payload: { type: 'oauth', access, refresh, expires, accountId } }).Disabling a provider stashes its route config in the plugin state file and removes it
from the live config, so re-enabling restores it exactly. Model toggles rewrite the
route's models array the same way.
Origin/Host pair or Sec-Fetch-Site: same-origin..env keys that match no known provider are stored as credential references only.MIT