Merge pull request #5895 from deepseek-harness/worktree/fix-deepseek-v4-1-flash-name
fix(llm-deepseek): correct V4.1 Flash display name
This commit is contained in:
commit
c17df5dbac
13 files changed
+18
-18
No files matched your search
@@ -29,7 +29,7 @@
|
||||
- text: deepseek-flash
|
||||
- textbox "显示名称 1":
|
||||
- /placeholder: 显示名称
|
||||
- text: DeepSeek-V41-Flash
|
||||
- text: DeepSeek-V4.1-Flash
|
||||
- button "模型选项 1"
|
||||
- button "删除模型 1"
|
||||
- textbox "模型 ID 2":
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
- text: deepseek-flash
|
||||
- textbox "显示名称 1":
|
||||
- /placeholder: 显示名称
|
||||
- text: DeepSeek-V41-Flash
|
||||
- text: DeepSeek-V4.1-Flash
|
||||
- button "模型选项 1" [expanded]
|
||||
- button "删除模型 1"
|
||||
- text: 上下文窗口
|
||||
|
||||
@@ -208,7 +208,7 @@ describe.skipIf(MODE === 'record')('web e2e: first-run DeepSeek credential setup
|
||||
await deepSeek.locator('xpath=ancestor::li').getByRole('button', { name: '编辑' }).click()
|
||||
await settings.getByText('自定义设置').click()
|
||||
expect(await settings.getByLabel('模型 ID 1').inputValue()).toBe('deepseek-flash')
|
||||
expect(await settings.getByLabel('显示名称 1').inputValue()).toBe('DeepSeek-V41-Flash')
|
||||
expect(await settings.getByLabel('显示名称 1').inputValue()).toBe('DeepSeek-V4.1-Flash')
|
||||
expect(await settings.getByLabel('模型 ID 2').inputValue()).toBe('deepseek-v4-pro')
|
||||
expect(await settings.getByRole('button', { name: /删除模型/ }).count()).toBe(2)
|
||||
await settings.getByRole('button', { name: '模型选项 1' }).click()
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
en: 3bd37b85139d2fa7
|
||||
zh: ba86c807eb83866e
|
||||
/deepseek-ai-dsh-web-app/use-this-package/starting-the-web-gui:
|
||||
en: b7ab01cfe9fed40f
|
||||
zh: 23703ab7727c3ab5
|
||||
en: e3cac911f080d8ef
|
||||
zh: 60749e9f5c39c1bc
|
||||
/deepseek-ai-dsh-web-app/use-this-package/configuration:
|
||||
en: a9ee366c5af68a6c
|
||||
zh: 2711d7a3926e1101
|
||||
|
||||
@@ -40,7 +40,7 @@ dsh --profile web --no-open --port 8080
|
||||
|
||||
After startup you see a `dsh web:` line whose root URL carries a fresh process token. Unless `--no-open` or an SSH session suppresses it, the default browser opens that URL, receives a signed cookie, and redirects to the same directory without the token. You know it worked when the page loads and you can chat with the agent. Two failures to expect: if the frontend is not built, startup stops with a build hint (`pnpm run build` in a checkout); if the browser cannot be opened, a credential-free diagnostic prints to stderr while the server keeps running — open the printed startup URL yourself.
|
||||
|
||||
**Settings → Models** displays **DeepSeek**, using `DEEPSEEK_API_KEY`. The default is `deepseek-official` / `deepseek-flash` (DeepSeek-V41-Flash). The [DeepSeek plugin](../../llm/llm-deepseek/README.md#endpoint-and-wire-format) uses the Messages API.
|
||||
**Settings → Models** displays **DeepSeek**, using `DEEPSEEK_API_KEY`. The default is `deepseek-official` / `deepseek-flash` (DeepSeek-V4.1-Flash). The [DeepSeek plugin](../../llm/llm-deepseek/README.md#endpoint-and-wire-format) uses the Messages API.
|
||||
|
||||
Saved model selections override the composition default. The settings card accepts a Messages-compatible API address and a credential reference.
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ dsh --profile web --no-open --port 8080
|
||||
|
||||
启动后你会看到 `dsh web:` 行,其根 URL 携带新的进程 token。除非 `--no-open` 或 SSH 会话抑制,否则默认浏览器会打开该 URL、取得签名 cookie,再重定向到不含认证参数的同一目录。页面加载且你可以与 agent 对话,就说明成功了。两种可预期的失败:前端未构建时,启动会以构建提示停止(checkout 中运行 `pnpm run build`);浏览器无法打开时,stderr 会打印不含凭据的诊断,但服务器会继续运行——请自行打开已打印的启动 URL。
|
||||
|
||||
**设置 → 模型**显示 **DeepSeek**,使用 `DEEPSEEK_API_KEY`。默认模型为 `deepseek-official` / `deepseek-flash`(DeepSeek-V41-Flash)。[DeepSeek 插件](../../llm/llm-deepseek/README.zh.md#endpoint-and-wire-format)使用 Messages API。
|
||||
**设置 → 模型**显示 **DeepSeek**,使用 `DEEPSEEK_API_KEY`。默认模型为 `deepseek-official` / `deepseek-flash`(DeepSeek-V4.1-Flash)。[DeepSeek 插件](../../llm/llm-deepseek/README.zh.md#endpoint-and-wire-format)使用 Messages API。
|
||||
|
||||
已保存的模型选择覆盖组合默认值。设置卡接受兼容 Messages 的 API 地址与凭据引用。
|
||||
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
en: cbeb14a9a602c2c9
|
||||
zh: c78c0d26c5791085
|
||||
/deepseek-ai-dsh-llm-deepseek/use-this-package/minimal-configuration:
|
||||
en: 2248932972465067
|
||||
zh: d1e4b7988d80d3b2
|
||||
en: cfc2de7ef728dbf9
|
||||
zh: 2ce1a406061a71aa
|
||||
/deepseek-ai-dsh-llm-deepseek/use-this-package/endpoint-and-wire-format:
|
||||
en: fce88d2ebad6296c
|
||||
zh: 0c351f26b472d521
|
||||
|
||||
@@ -58,7 +58,7 @@ A request selects the route with `provider: deepseek-official`; the model id pas
|
||||
| `reasoningEffort` | `high` | Default effort: `off`, `low`, `high`, or `max` |
|
||||
| `maxTokens` | `256,000` | Per-request output cap; a model's own cap and explicit request values win |
|
||||
| `defaultContextWindow` | `1,000,000` | Capacity fallback for models without an exact value |
|
||||
| `models` | V41 Flash + V4 Pro | Advisory catalog shown by discovery consumers |
|
||||
| `models` | V4.1 Flash + V4 Pro | Advisory catalog shown by discovery consumers |
|
||||
| `streamIdleTimeoutMs` | `300,000` | Maximum provider idle time per outstanding stream read |
|
||||
| `maxRequestFilesBytes` | `128 MiB` | File-mode request-image byte budget; a request whose retained images exceed it fails with `IMAGE_OFFLOAD_REQUIRED` |
|
||||
| `maxInlineRequestImageBytes` | `20 MiB` | Independent base64 fallback high watermark |
|
||||
|
||||
@@ -58,7 +58,7 @@ kind: "package-reference"
|
||||
| `reasoningEffort` | `high` | 默认强度:`off`、`low`、`high` 或 `max` |
|
||||
| `maxTokens` | `256,000` | 单次请求输出上限;模型自身上限与显式请求值优先 |
|
||||
| `defaultContextWindow` | `1,000,000` | 无精确值模型的容量回退 |
|
||||
| `models` | V41 Flash + V4 Pro | 供发现消费方查看的建议性目录 |
|
||||
| `models` | V4.1 Flash + V4 Pro | 供发现消费方查看的建议性目录 |
|
||||
| `streamIdleTimeoutMs` | `300,000` | 单次流读取未完成的最大提供方空闲时间 |
|
||||
| `maxRequestFilesBytes` | `128 MiB` | file 模式请求图片字节预算,保留图片超过时请求以 `IMAGE_OFFLOAD_REQUIRED` 失败 |
|
||||
| `maxInlineRequestImageBytes` | `20 MiB` | 独立的 base64 回退高水位 |
|
||||
|
||||
@@ -26,7 +26,7 @@ export interface Config {
|
||||
maxTokens: Volatile<number>
|
||||
/** Positive context capacity used when the selected model has no exact value (default 1,000,000). */
|
||||
defaultContextWindow: Volatile<number>
|
||||
/** Advisory models shown by discovery consumers; defaults to V41 Flash and V4 Pro. */
|
||||
/** Advisory models shown by discovery consumers; defaults to V4.1 Flash and V4 Pro. */
|
||||
models: Volatile<DeepSeekCatalogModel[]>
|
||||
/** Maximum provider idle time while one stream read is outstanding (default five minutes). */
|
||||
streamIdleTimeoutMs: Volatile<number>
|
||||
|
||||
@@ -6,7 +6,7 @@ import type { DeepSeekCatalogModel } from './types.ts'
|
||||
export const DEFAULT_MODELS: DeepSeekCatalogModel[] = [
|
||||
{
|
||||
id: 'deepseek-flash',
|
||||
name: 'DeepSeek-V41-Flash',
|
||||
name: 'DeepSeek-V4.1-Flash',
|
||||
contextWindow: DEFAULT_CONTEXT_WINDOW,
|
||||
inputModalities: ['text', 'image'],
|
||||
systemPromptUpdate: 'in-history',
|
||||
|
||||
@@ -141,7 +141,7 @@ describe('direct Messages HTTP', () => {
|
||||
expect(llm.providerInfo('deepseek-official')).toEqual({ id: 'deepseek-official', name: 'DeepSeek' })
|
||||
expect(await llm.listModels('deepseek-official')).toEqual([])
|
||||
expect(await llm.resolveModel('deepseek-official', 'deepseek-flash')).toMatchObject({
|
||||
name: 'DeepSeek-V41-Flash', inputModalities: ['text', 'image'], systemPromptUpdate: 'in-history',
|
||||
name: 'DeepSeek-V4.1-Flash', inputModalities: ['text', 'image'], systemPromptUpdate: 'in-history',
|
||||
})
|
||||
expect(await llm.resolveModel('deepseek-official', MODEL)).toMatchObject({ id: MODEL })
|
||||
expect(llm.imageRequestPricing('deepseek-official', MODEL)).toBeDefined()
|
||||
|
||||
@@ -1788,7 +1788,7 @@ describe('plugin registration and config', () => {
|
||||
await ctx.plugin(LlmDeepSeek, { baseURL: 'http://127.0.0.1:1' })
|
||||
expect(ctx.llm.listProviders()).toEqual([{ id: 'deepseek-official', name: 'DeepSeek' }])
|
||||
await expect(ctx.llm.listModels('deepseek-official')).resolves.toEqual([
|
||||
{ provider: 'deepseek-official', id: 'deepseek-flash', name: 'DeepSeek-V41-Flash', inputModalities: ['text', 'image'] },
|
||||
{ provider: 'deepseek-official', id: 'deepseek-flash', name: 'DeepSeek-V4.1-Flash', inputModalities: ['text', 'image'] },
|
||||
{
|
||||
provider: 'deepseek-official',
|
||||
id: 'deepseek-v4-pro',
|
||||
@@ -1801,7 +1801,7 @@ describe('plugin registration and config', () => {
|
||||
.resolves.toMatchObject({
|
||||
provider: 'deepseek-official',
|
||||
id: 'deepseek-flash',
|
||||
name: 'DeepSeek-V41-Flash',
|
||||
name: 'DeepSeek-V4.1-Flash',
|
||||
inputModalities: ['text', 'image'],
|
||||
systemPromptUpdate: 'in-history',
|
||||
context: { contextWindow: 1_000_000 },
|
||||
@@ -1916,7 +1916,7 @@ describe('plugin registration and config', () => {
|
||||
await ctx.plugin(LlmRuntime)
|
||||
LlmDeepSeek.apply(ctx, LlmDeepSeek.Config({ baseURL: 'http://127.0.0.1:1' }))
|
||||
await expect(ctx.llm.listModels('deepseek-official')).resolves.toEqual([
|
||||
{ provider: 'deepseek-official', id: 'deepseek-flash', name: 'DeepSeek-V41-Flash', inputModalities: ['text', 'image'] },
|
||||
{ provider: 'deepseek-official', id: 'deepseek-flash', name: 'DeepSeek-V4.1-Flash', inputModalities: ['text', 'image'] },
|
||||
{
|
||||
provider: 'deepseek-official',
|
||||
id: 'deepseek-v4-pro',
|
||||
@@ -2308,7 +2308,7 @@ describe('plugin registration and config', () => {
|
||||
const adapter = adapterOf()
|
||||
expect(adapter).toBeInstanceOf(DeepSeekAdapter)
|
||||
await expect(adapter.listModels('deepseek-official')).resolves.toEqual([])
|
||||
await expect(adapter.resolveModel('deepseek-official', 'deepseek-flash')).resolves.toMatchObject({ name: 'DeepSeek-V41-Flash' })
|
||||
await expect(adapter.resolveModel('deepseek-official', 'deepseek-flash')).resolves.toMatchObject({ name: 'DeepSeek-V4.1-Flash' })
|
||||
})
|
||||
|
||||
it('resolves connection facts and the credential exactly once per stream call', async () => {
|
||||
|
||||
Reference in new issue
Block a user