# dsh-claude-provider

> 为 DSH 模型设置增加独立的 Claude 提供方类型，按模型配置思考档位，并支持 Anthropic 原生模型探测与已知模型容量预填。

## Metadata

- Author: [@MoFeng2223](https://github.com/MoFeng2223)
- Repo: <https://github.com/MoFeng2223/dsh-claude-provider.git>
- GitHub: [MoFeng2223/dsh-claude-provider](https://github.com/MoFeng2223/dsh-claude-provider)
- Stars: 26
- Language: JavaScript
- License: [MIT](https://spdx.org/licenses/MIT.html)
- Topics: `anthropic`, `claude`, `deepseek-harness`, `dsh-plugin`
- Forks: 1
- Open Issues: 0
- Last push: 2026-08-20T15:14:21.000Z
- Added: 2026-08-15T00:00:00.000Z

## Install

```bash
dsh plugin --profile web add github:MoFeng2223/dsh-claude-provider
```

## Wiki

## 一句话定位
为 DeepSeek Harness 的模型设置页增加独立的 Claude 提供方类型，自动写入 RC8 原生配置，并补充 Anthropic 原生模型探测与常用 Claude 模型的容量预填。

## 核心能力
- 在模型设置页新增“Claude 提供方”入口，与普通自定义提供方分开管理，可创建多个 Provider ID
- 为每个模型单独选择思考档位预设：五档（低/中/高/超高/最大）、四档（低/中/高/最大）或开关（开/关）
- 通过 Anthropic 原生的 `GET /v1/models` 接口探测模型列表，支持游标分页，可指向任意兼容网关
- 探测命中已记录的 Claude 模型 ID 时，自动填写上下文窗口、最大输出长度和档位预设
- 仅作用于明确登记为 Claude 提供方的 Provider ID，不改动内置提供方或其他 anthropic-messages 自定义路由

## 技术实现
- **语言**: JavaScript（ESM，`"type": "module"`）
- **关键依赖**: `@deepseek-ai/dsh-settings`（注入 `settings` 与 `llm` 服务）、`@deepseek-ai/schemastery`（声明 settings schema）、`@deepseek-ai/dsh-client-ui-settings-models`（仅 devDependency，用于构建前端补丁客户端）
- **架构模式**: 后端通过 `apply(ctx)` 向 `ctx.settings` 注册命名空间、向 `ctx.llm` 注册可配置提供方，并包装 `llm.discoverModels` 让 Claude 提供方走原生 Anthropic 探测；前端通过 `cordis.patch.yml` 停用内置 `ui-settings-models`，改用 `lib/client.js`（由 `scripts/build-client.mjs` 编译时对上游 `dsh-client-ui-settings-models` 做 AST 文本替换得到）
- **入口文件**: `src/index.js`（后端 apply/export）、`lib/client.js`（前端打包产物）、`scripts/build-client.mjs`（构建脚本）

## 适用场景
当用户希望把 Anthropic Claude 系列模型（包括通过自建或第三方 Anthropic 兼容网关接入的版本）作为 DSH 中的“专类提供方”来管理，并按模型选择思考强度时使用这个插件。它替代手工编辑 settings.yaml，并补齐 DSH 内置 UI 暂未提供的 Anthropic 原生模型探测和已知模型的容量默认值。

## 前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| Node.js | >=22.19 | `engines.node` 声明 |
| DSH | 0.1.0-rc.8+ | 依赖 `@deepseek-ai/dsh-settings@0.1.0-rc.8`；前端补丁基于 `dsh-client-ui-settings-models@0.1.0-rc.8`，未在 manifest 中显式指定 dsh 版本下限 |
| 平台 | 跨平台 | 通过 cordis 注入 web 客户端，无平台限制 |
| 原生模块 | 无 | 未引入 node-pty、node:sqlite 等原生模块 |

## 安装方式
```bash
dsh plugin --profile web add github:MoFeng2223/dsh-claude-provider
```

## 配置项
本插件无需额外配置。已记录的 Claude 模型及其默认容量在源码中固化（`CLAUDE_KNOWN_MODELS`，包含 Fable 5、Opus 5/4.8/4.7/4.6、Sonnet 5/4.6、Haiku 4.5 等），新建提供方和模型时自动套用。

## 常见问题

**Q: 安装后还需要手动编辑 settings.yaml 吗？**

A: 不需要。Claude 提供方在前端保存时，插件会调用 DSH 原生配置写入接口，把 `reasoning`、`reasoningEfforts`、`compat.forceAdaptiveThinking` 等字段落到 settings.yaml。

**Q: 它会影响 DSH 内置 Anthropic 提供方或普通自定义提供方吗？**

A: 不会。插件在 `llm.discoverModels` 包装器里做了分流：只有当 Provider ID 在 `dsh-claude-provider` 命名空间下被显式登记为 `claude-adaptive` 类型时，才走原生 Anthropic 探测；内置 `anthropic` 路由继续用上游目录，其他 anthropic-messages 自定义路由也不被改写。

**Q: 可以用自建或第三方 Anthropic 兼容网关吗？**

A: 可以。模型探测从你填写的 Messages API baseURL 派生 `/v1/models` 端点，支持任意 HTTP(S) 地址；API 密钥从请求直接传入，或从凭据引用解析。响应体超过 4 MiB 自动中止，最多翻 100 页。

**Q: 每个模型能选哪些思考档位？**

A: 提供三套预设：五档（low/medium/high/xhigh/max）、四档（low/medium/high/max）、开关（off/high）。新增模型默认五档，Claude 提供方默认 `reasoning: high`。

**Q: 卸载插件会丢数据吗？**

A: 不会。卸载不会删除 `~/.dsh/settings.yaml` 和已保存的凭据，已有 Claude 提供方降级为普通 anthropic-messages 路由，原生字段继续生效；只是失去专用 Claude UI、模型探测和容量预填。

**Q: 命令行模式（无 Web 界面）能用吗？**

A: 插件同时支持 `--profile headless`，但模型探测与专用 UI 依赖 Web 客户端，前端能力在 headless 下不会生效。

**Q: 安装后没看到“添加 Claude 提供方”按钮怎么办？**

A: cordis 补丁同时把内置 `ui-settings-models` 置为 `disabled: true`，由本插件打包出的 `lib/client.js` 替代。如果按钮缺失，请确认前端客户端已被替换并重启 DSH 进程。

## 上手难度
入门 — 安装即在设置页看到新入口，使用时只需填写 baseURL、API 密钥并选择模型，无需理解 schema 细节。

## 已知问题与限制
- 模型探测对单一响应有 4 MiB 大小限制，对分页有 100 页硬上限（`src/index.js:18-19`），超出会直接报错
- 只对显式登记为 `claude-adaptive` 的 Provider ID 生效；用户在普通自定义提供方里勾选 anthropic-messages 协议，不会获得档位与容量预填
- 内置 `anthropic` 提供方不走本插件的探测，仍使用上游目录（`src/index.js:217`）
- 仅在 Web 客户端启用前端能力，headless 安装只保留后端 schema 注册和拦截点

---

This document is auto-generated by [deepseek-plugin.org](https://deepseek-plugin.org). HTML page: [dsh-claude-provider](https://deepseek-plugin.org/plugins/MoFeng2223/dsh-claude-provider)
Wiki generated by AI (model: `MiniMax-M3`)
